カテゴリー
FreeBSD Software

FreeBSD (sshd & hosts.allow)

サーバーをインタネットに公開するとsshの扉を叩く人がかなりいます。それも手持ちの鍵(idとパスワード)を順番に片っ端から試していく奴が結構沢山。

そこで、Maxloginsを使ってみる。このツールはsyslogでsshアクセス失敗回数を監視し、一定の基準を超えたアクセス禁止のIPアドレスリストを吐き出す。そのリストをhosts.allowに取り込んでsshのアクセスを禁止する仕組み。
ツールの実体はここにある。 テキストファイルだけど、”maxlogins.pl”とかの名前で/usr/local/bin に保存すし、次のようにしてsyslogから実行できるようにしておく。

# 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 # ←この行を追加

このmaxlogins.pl にはオプションを追加指定できる。

-e: アクセス禁止の解除時間の指定。デフォルトは12時間。

-e=1d, -e=24h, -e=1440m, -e=86400s という感じで指定する。この場合いづれも1日の意味。

-a: IPアドレスがブロックされるまでの最大試行回数。 デフォルトは3回。

-a=5 という風に指定する。

-l: ログレベルの指定。 ログはデフォルトで /var/log/auth.logに記録される。

-l=1: informational (e.g., new blocks)
-l=2: above, plus IP expirations
-l=9: verbose logging

/etc/hosts.allow をいじって「アクセス禁止のIPアドレスリスト」を読み込むようにする。

#ALL : ALL : allow
sshd : 127.0.0.1 : allow
sshd : /var/log/maxlogins : deny
sshd : ALL : allow

ちなみに、これをやったらpopとかimapとかの設定も忘れずに。

ftpd : localhost : allow
ftpd : ALL : allow
ipop3d : ALL : allow
imapd : localhost : allow
imapd : ALL : deny

最後に、 syslog を再起動。

# kill -HUP (syslogのpid)

ブロックされたIPアドレスは /var/log/maxlogins に記録される。

参考リンク: 1

カテゴリー
FreeBSD Software

FreeBSD Memo

FreeBSD 5.5β4-i3866.1-RC1-i386をDELL SC430にインストール。

インストール後に真っ先に設定したのはsshd_config。

TeraTERM+ttsshでそのまま使いたいのでsshd_configに

Protocol 2,1
PasswordAuthentication yes

を追加。