TCP ラッパーを構成するか、iptables を使用してネットワーク トラフィックをフィルタリング (ファイアウォール) することにより、接続できるホストを制限できます。クライアント IP アドレスに応じて異なる認証方法を使用する場合は、代わりに SSH デーモンを構成します (オプション 3)。
オプション 1:IPTABLES によるフィルタリング
iptables ルールは、最初に一致するまで順番に評価されます。
たとえば、192.168.0.0/24 ネットワークからのトラフィックを許可し、それ以外の場合は (ポート 22 への) トラフィックをドロップします。 DROP
iptables のデフォルト ポリシーが DROP
に設定されている場合、ルールは必要ありません .
iptables -A INPUT -p tcp --dport 22 --source 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
ドロップ ルールの前にさらにルールを追加して、より多くのネットワーク/ホストに一致させることができます。多くのネットワークまたはホスト アドレスがある場合は、ipset を使用する必要があります。 モジュール。 iprange もあります 任意の範囲の IP アドレスを使用できるようにするモジュール
iptables は再起動後は永続的ではありません。ブート時に iptables を復元するメカニズムを構成する必要があります。
iptables
IPv4 トラフィックにのみ適用されます。 IPv6 アドレスをリッスンする ssh を持つシステムでは、必要な構成を ip6tables
で行うことができます .
オプション 2:TCP ラッパーを使用する
注:tcpwrappers のサポートが OpenSSH 6.7 から削除されたため、これは最新のディストリビューションではオプションではない可能性があります
TCP ラッパーを使用して接続できるホストを構成することもできます。 TCP ラッパーでは、IP アドレスに加えて、ルールでホスト名も使用できます。
デフォルトでは、すべてのホストを拒否します。
/etc/hosts.deny
:
sshd : ALL
次に、許可されたホストを hosts.allow にリストします。たとえば、ネットワーク 192.168.0.0/24 を許可するには および localhost .
/etc/hosts.allow
:
sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]
オプション 3:SSH デーモン構成
クライアントのアドレス/ホスト名に応じて異なる認証方法を使用するように、sshd_config で ssh デーモンを構成できます。他のホストの接続のみをブロックしたい場合は、代わりに iptables または TCP ラッパーを使用する必要があります。
最初にデフォルトの認証方法を削除します:
PasswordAuthentication no
PubkeyAuthentication no
次に、Match Address
の後に目的の認証方法を追加します。 ファイルの最後に。 Match
を配置する それ以降のすべての構成行は、次の Match
まで条件付きブロック内に配置されるため、ファイルの最後にあることが重要です。 ライン。例:
Match Address 127.0.0.*
PubkeyAuthentication yes
他のクライアントは引き続き接続できますが、使用可能な認証方法がないため、ログインは失敗します。
一致する引数と許可される条件付き構成オプションは、sshd_config man ページに記載されています。一致パターンは ssh_config man ページに記載されています。
前の回答を拡張するための SSH デーモンの追加設定:
-
AllowUsers
でユーザー フィルタリングを追加しますsshd_config
のオプション ファイル:AllowUsers [email protected]* [email protected]* otherid1 otherid2
これにより、johndoe が許可されます および admin2
192.168.1.*
からのみ アドレスと otherid1 、otherid2 どこからでも。 -
ssh キーまたは CA ベースのキーを
.ssh/authorized_keys
内の一連のアドレスに制限します 特定のユーザーのホーム ディレクトリのファイル:from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
この例では、useralias の公開鍵は、指定されたアドレスからのみ有効になります。