ここ数日、SSHへのアタックが急激に増加した関係で特定のIPアドレスからだけログインできるよう対応しました。結論から言うと以下の設定を行うだけです。
特定のIPアドレスのみログインできる
$ sudo vi /etc/hosts.allow
sshd: (許可したいIPアドレス)
$ sudo vi /etc/hosts.deny
sshd: all
/etc/hosts.allowで許可を、/etc/hosts.denyで拒否の設定を行います。これはSSHだけではなく「TCP Wrapper」を利用しているサーバソフトウェアは同じ要領で設定が可能です。
特定のIPアドレスをブロックする
逆にブロックしたい場合には以下のように設定します。
$ sudo vi /etc/hosts.allow
sshd: all
$ sudo vi /etc/hosts.deny
sshd: (拒否したいIPアドレス)
hosts.allow|denyの書式
IPアドレスは半角スペースで区切り複数同時に記述することや、サブネットマスクなどで指定することもできます。
sshd: 192.168.1.1 192.168.1.2
sshd: 192.168.1.1/255.255.255.0
以下のようにIPアドレスの途中までを記述した場合は前方一致となります。
sshd: 192.168.1.
IPアドレスだけではなく.example.com
など接続元のドメインで許可(拒否)もできます。以下の例では後方一致となります。ただしドメインを指定した場合はIPアドレスのみの場合と比べてドメインを調べる処理が加わりますので多少重くなります(よほど大量に来なければ気にするほどではありませんが)
sshd: .ocn.ne.jp
行末にバックスラッシュ()を付けると途中で改行することも可能です。
sshd: 192.168.1.1 192.168.1.2 \
.ocn.ne.jp
注意点
いずれもファイルに保存した瞬間に設定が適用されるため、間違えた設定をしてしまうと自分でも二度とログインできなくなる可能性があります。設定する際には十分に注意してください。
続きを読む