Personal tools
You are here: Home KtJ's Blog SSHの辞書攻撃対策

SSHの辞書攻撃対策

by ktj posted at 2008-10-25 21:53 last modified 2010-05-31 19:42

今日外から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 というメッセージが辞書攻撃の前に出力されている。ぐぐってみたところ、「学生と職員の狭間に」という日記サイトを発見。そこのサイトによれば、このメッセージはポートスキャンの痕跡とのこと。そこで、このメッセージに書いてあるIPを問答無用で拒否すべく、同サイトにあるmaxloginsのパッチを適用した。

Category(s)
BSD and Linux

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: