イーサネット、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に変わります。)