이더넷, Wi-Fi, WWAN 등과 같은 여러 네트워크 인터페이스가 있습니다.
root
이더넷 인터페이스를 제외한 모든 인터페이스에서 SSH 로그인을 차단하고 싶습니다 .
sshd
의 일부 설정과 같은 인터페이스 기반 구성이 있습니까 /etc/ssh/sshd_config
?
설정 매뉴얼에서 인터페이스 기반 설정을 찾을 수 없습니다. https://man.openbsd.org/sshd_config
내 WWAN 인터페이스에서 다음 침입자의 공격을 받고 있으며 이를 방지하고 싶습니다.
systemd[1]: Condition check resulted in OpenSSH Key Generation being skipped.
systemd[1]: Started OpenSSH Per-Connection Daemon (195.133.18.24:45650).
sshd[704]: Invalid user user from 195.133.18.24 port 45650
sshd[704]: error: Could not get shadow information for NOUSER
sshd[704]: Failed password for invalid user user from 195.133.18.24 port 45650 ssh2
sshd[704]: Received disconnect from 195.133.18.24 port 45650:11: Normal Shutdown, Thank you for playing [preauth]
sshd[704]: Disconnected from invalid user user 195.133.18.24 port 45650 [preauth]
systemd[1]: [email protected]:22-195.133.18.24:45650.service: Succeeded.
답변1
SSH 데몬이 /etc/ssh/sshd_config의 일부 설정과 같은 "인터페이스" 기반 구성을 가질 수 있습니까?
예, /etc/ssh/sshd_config에서 sshd 서비스가 수신할 인터페이스를 지정할 수 있습니다. 이 설정을 "ListenAddress"라고 합니다.
구성에 ListenAddress 설정이 없으면 기본값은 모든 로컬 주소를 수신하는 것입니다.
불행하게도 이 설정은 인터페이스 이름을 사용할 수 없지만 인터페이스 IP 주소(및 포트)를 사용할 수 있으므로 문제가 해결됩니다. 예:
echo "ListenAddress 192.168.55.101:40022" >>/etc/ssh/sshd_config
/etc/rc.d/rc.sshd restart
답변2
nftables 또는 iptables와 같은 방화벽 규칙을 사용합니다. (Firewalld는 "영역"을 통해서도 이 작업을 수행할 수 있습니다.) 이는 nftables와 iptables 모두 와일드카드를 지원하며 실제로 연결을 차단하는 가장 일반적인 옵션입니다.~에서잘못된 인터페이스(인터넷 로봇과 관련이 없지만 wlan0의 악의적인 로컬 사용자로부터 보호할 때 관련될 수 있음).
예를 들어 nftables에서는 다음과 같이 작성할 수 있습니다.
table inet filter { chain input { [...] tcp dport 22 iifname "eth*" accept tcp dport 22 reject [...] } }
iptables
.rules
파일에서도 동일합니다:[...] -A INPUT -p tcp --dport 22 -i eth+ -j ACCEPT -A INPUT -p tcp --dport 22 -j REJECT [...]
시스템은 일반적인 독립 실행형 데몬 대신 연결별 sshd 인스턴스("inetd 스타일" 또는 "소켓 활성화")를 사용합니다. 이 모드에서 수신 주소는 sshd가 아니라 감독자(수퍼 서버)에 의해 결정됩니다.
systemd 소켓을 통해 활성화하려면 실행하여 systemctl edit --full sshd.socket
수신 주소를 정의하고 기존 ListenStream= 옵션을 다음으로 바꿉니다.
[Socket]
ListenStream=192.168.55.101:22
또는 전역 ListenStream=을 유지하면서 소켓을 특정 인터페이스에만 바인딩할 수 있습니다(정확한 이름만 가능, 와일드카드는 허용되지 않음).
[Socket]
ListenStream=0.0.0.0:22
ListenStream=[::]:22
BindToDevice=eth0
그런 다음 재부팅하여 sshd.socket
변경 사항을 적용하십시오.
이 inetd 모드는 일반적으로 sshd와 함께 사용하는 것이 권장되지 않습니다. 무차별 대입 봇으로 인해 systemd의 속도 제한이 시작되어 합법적인 연결을 방해할 수 있기 때문입니다. sshd.socket을 비활성화하고 "독립형" sshd.service를 활성화하는 것을 고려해야 합니다. (이렇게 하면 Listening Address가 /etc/ssh/sshd_config
Control로 변경됩니다.)