GNU/Linux >> Linux の 問題 >  >> Linux

SSH アクセスを IP アドレスで特定のクライアントに制限する

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.* からのみ アドレスと otherid1otherid2 どこからでも。

  • ssh キーまたは CA ベースのキーを .ssh/authorized_keys 内の一連のアドレスに制限します 特定のユーザーのホーム ディレクトリのファイル:

    from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
    

    この例では、useralias の公開鍵は、指定されたアドレスからのみ有効になります。


Linux
  1. Posixの検索を特定の深さに制限しますか?

  2. Ssh – Ssh / scp / sftpユーザーをディレクトリに制限しますか?

  3. リモートSSHアクセスを許可しますか?

  1. SSH経由で特定のユーザーのすべてのプロセスを強制終了します

  2. iptables でパケットをレート制限する必要がありますか?

  3. iptables または tc を使用してクライアントごとのパケットを制限する方法。

  1. Ssh – Sshアクセス試行のログ?

  2. SSH リモート アクセス VPN トンネル

  3. ユーザーごとにパスワードベースの SSH アクセスを制限しますが、キー認証は許可します