인터페이스에서 OpenSSH 데몬을 활성화/비활성화합니다.

인터페이스에서 OpenSSH 데몬을 활성화/비활성화합니다.

이더넷, 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_configControl로 변경됩니다.)

관련 정보