許可されたIPを持つマシンのみがssh経由でシステムにログインできるようにしたい。
たとえば、userA
はipxx.xx.xx.xx
またはyy.yy.yy.yy
のみを使用してssh経由でログインでき、他のipはuserA
としてログインできません。また、userB
はipzz.zz.zz.zz
のみを使用してssh経由でログインでき、zz.zz.zz.zz
以外のipはuserB
としてログインできません。
これを実現するには、Linuxをどのようにセットアップする必要がありますか?
あなたはiptablesを介してそれを行うことができます。
アドレス1.2.3.4からSSH(ポート22)へのすべての接続:
iptables -A INPUT -p tcp -m state --state NEW --source 1.2.3.4 --dport 22 -j ACCEPT
他のすべてのSSH接続を拒否します。
iptables -A INPUT -p tcp --dport 22 -j DROP
1つのアプローチ(認証にPAMを使用している場合)は、pam_rhosts
を/etc/pam.d/ssh
のrequired
モジュールとして指定することです。これにより、各ユーザーは自分の.rhosts
ファイルで接続を許可する場所を指定できます。
pam.d
ファイル内の認証モジュールはpubkeyログインについて参照されないことに注意してください(たとえば、マシンでのパスワードログインを防ぐためにauth required pam_deny.so
があります)。他のモジュール(account
、session
など)は引き続き使用されます。