インターフェイスで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に変わります。)

関連情報