特定のプライベートIPのセットをSSHログイン(RSAキーペア)を介してLinuxサーバーに入力するにはどうすればよいですか?
/etc/ssh/sshd_config
特定のプライベートIPのセットをSSHログイン(RSAキーペア)を介してLinuxサーバーに入力するにはどうすればよいですか?
/etc/ssh/sshd_config
回答:
TCPラッパーを構成する か、iptablesを使用してネットワークトラフィックをフィルタリング(ファイアウォール)することにより、接続できるホストを制限できます。クライアントIPアドレスに応じて異なる認証方法を使用する場合は、代わりにSSHデーモンを構成します(オプション3)。
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モジュールを使用する必要があります。任意の範囲のIPアドレスを使用できるiprangeモジュールもあります。
iptablesは再起動後も持続しません。起動時にiptablesを復元するためのメカニズムを設定する必要があります。
iptables
IPv4トラフィックにのみ適用されます。IPv6アドレスをリッスンするsshが必要な設定を行うシステムは、で行うことができますip6tables
。
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]
sshd_configでsshデーモンを構成して、クライアントのアドレス/ホスト名に応じて異なる認証方法を使用できます。他のホストの接続のみをブロックする場合は、代わりにiptablesまたはTCPラッパーを使用する必要があります。
最初にデフォルトの認証方法を削除します。
PasswordAuthentication no
PubkeyAuthentication no
次にMatch Address
、ファイルの最後にaの後に目的の認証方法を追加します。Match
ファイルの最後に配置することは重要です。なぜなら、それ以降のすべての設定行は、次のMatch
行まで条件ブロック内に配置されるからです。例えば:
Match Address 127.0.0.*
PubkeyAuthentication yes
他のクライアントは引き続き接続できますが、利用可能な認証方法がないため、ログインは失敗します。
一致する引数と許可される条件付き設定オプションは、sshd_configのマニュアルページに記載されてい ます。一致パターンはssh_configのマニュアルページに記載されています。
#ListenAddress ::
で/etc/ssh/sshd_config
は、これらのネットワークのいずれかからの着信を受け入れるようにSSHサーバーに指示します。それ以外の場合ListenAddress <ip address>
、<ip address>
許可するNICポートの場所を指定します。私はeth0
ある192.168.3.4
ので、ListenAddress 192.168.3.4
唯一のネットワークはeth0上で192.168.3.4に取り組んでSSHでの結果。eth1 eth2 eth3は拒否されます。
ここで、以前の回答を拡張するためのSSHデーモンのいくつかの追加構成:
ファイル内のAllowUsers
オプションでユーザーフィルタリングを追加しsshd_config
ます。
AllowUsers johndoe@192.168.1.* admin2@192.168.1.* 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の公開キーは指定されたアドレスからのみ有効になります。