SSHの辞書攻撃対策

今日外からSSHトンネルが使えるかどうかを試すため、22番ポートを開けてみたら、さっそく /var/log/auth.log にいろんなユーザ名でアクセスを試みた形跡がたくさん。基本的に鍵方式のみでパスワードでのログインは認めていないからどーってことないとは思うのだが、ログが無駄に増えるのはちと困る。

ということで、調べて見たところ、maxloginsというperlスクリプトを使うのがいいらしいということが分かった。これは、繰り替えしsshにアクセスしようとするIPをブラックリストとして /var/log/maxlogins に書き込むというスクリプトで、 /etc/hosts.allow/var/log/maxlogins に記載のIPを拒否させることによって、SSHへのアタックを防止する、というもののようだ。

てことで導入してみる。ドキュメント通りに、 /usr/local/bin にコピーしたmaxlogins.plに対して、

# chown root:wheel /usr/local/bin/maxlogins.pl
# chmod 750 /usr/local/bin/maxlogins.pl

を実行し、ついで /etc/syslog.conf

auth.info;authpriv.info        /var/log/auth.log

という行の下に

auth.info;authpriv.info        |exec /usr/local/bin/maxlogins.pl

を追加。最後に、 /etc/hosts.allowALL : ALL : allow という行の前に、

sshd : /var/log/maxlogins : deny

を追加する。なお、ログを見ていると、 Did not receive identification string from xxx.xxx.xxx.xxx というメッセージが辞書攻撃の前に出力されている。ぐぐってみたところ、「学生と職員の狭間に[archive]」という日記サイトを発見。そこのサイトによれば、このメッセージはポートスキャンの痕跡とのこと。そこで、このメッセージに書いてあるIPを問答無用で拒否すべく、同サイト[archive]にあるmaxloginsのパッチを適用した。

コメント(0)



Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。