사용자는 WAN 측에서 Ubuntu 서버에 대한 셸 액세스가 필요합니다. 간단한 비밀번호를 사용하는 쉘 계정이 많이 있습니다. 그래서 셸 포트(포트 22)는 방화벽에서 차단됩니다. WAN 측 사용자를 위해 Debian chroot에서 SSH 서버를 실행하고 방화벽에서 해당 포트를 열 계획입니다. 이 설정이 가능하다면 이를 구현하는 가장 좋은 방법은 무엇입니까?
답변1
단일 SSH 서버
chroot에서 SSH 서버를 실행하려는 유일한 이유가 비밀번호 인증을 특정 사용자로 제한하는 것이라면 이 작업을 수행할 필요가 없습니다. sshd에 화이트리스트에 있는 사용자에게만 비밀번호를 허용하도록 지시할 수 있습니다. 존재하다/etc/ssh/sshd_config
, Match
다음 명령을 사용하십시오.
PasswordAuthentication No
Match User trusted_user_1,trusted_user_2
PasswordAuthentication yes
실제로 일부 사용자를 chroot하려는 경우에도 단일 ssh 데몬을 실행하고 ChrootDirectory
지시문을 sshd_config
(지시문 범위 내에서 Match
) 사용할 수 있습니다.
서로 다른 주소를 수신하는 두 개의 SSH 서버
두 개의 SSH 데몬이 서로 다른 주소를 수신하는 경우 동일한 포트에서 수신하도록 할 수 있습니다. 각 지시문에 ListenAddress
지시문 을 넣습니다./etc/ssh/sshd_config
, 각각 서버가 수신할 IP 주소가 있습니다(수신존재하다,듣지 마도착하다, 즉 서버의 네트워크 인터페이스 주소입니다. 이 방법은 서버 컴퓨터가 LAN/WAN 필터링을 수행하는 노드인 경우에만 적용이 제한됩니다. 이는 또한 이와 같은 작업이 ssh localhost
투명하지 않음을 의미합니다(localhost를 수신하지 않는 데몬에 대한 액세스는 계속 사용할 수 있습니다 ssh -b
).
서로 다른 포트에서 수신 대기하는 두 개의 SSH 서버
Port
다음 지시문을 사용하여 chroot의 ssh 데몬이 다른 포트에서 수신하도록 할 수 있습니다./etc/ssh/sshd_config
. 방화벽 외부에서 포트 22를 계속 차단하고 chroot sshd에 대해 선택한 다른 포트는 차단하지 마십시오.
2개의 SSH 서버, 방화벽에 의해 라우팅 수행
위에서 언급한 것처럼 두 개의 데몬이 서로 다른 포트에서 수신 대기하는 경우 둘 다 포트 22에서 수신 대기 중인 것처럼 보일 수 있습니다. 예를 들어, chrooted ssh 데몬이 포트 2201에서 수신하도록 만들고 포트 22에서 eth1
포트 2201로 트래픽을 리디렉션합니다.
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 22 -j REDIRECT --to-ports 2201
그런 다음 localhost에서 또는 eth0을 통해 포트 22로의 ssh 연결은 chroot가 아닌 서버에 도달하고, eth1을 통해 포트 22로의 ssh 연결은 chroot 서버에 도달합니다. 포트 2201의 연결은 chroot된 서버에 도달합니다. -i eth
예를 들어 ! -s 10.1.0.0/16 ! -s 127.0.0.0/8
소스 주소를 10.1.xy 또는 루프백을 제외한 모든 항목과 일치시키는 등의 다른 기준을 사용할 수 있습니다 .