いれなくてもいいっちゃいいんだけど、お試し。アクセスあるだけでも嫌だしねっ。
o 導入
対応しているファイアウォール類は以下。素晴らしい。ipfだけexperimental.
* PF (OpenBSD, FreeBSD, NetBSD, DragonFly BSD)
* netfilter/iptables (Linux)
* IPFIREWALL/ipfw (FreeBSD, Mac OS X)
* IPFILTER (Experimental) (FreeBSD, NetBSD, Solaris)
* tcpd's hosts.allow (boxes without a network-layer firewall)
FreeBSD で pf を使っているので以下のコマンドでいれる。
% sudo portinstall security/sshguard-pf
man がインストールされなかった。。けど気にしない。
o pf 設定
pfの設定ファイルに下記追加
table のところに
table
フィルタリングルールのところに
block in quick on $ext_if from
($ext_if を設定してない場合は適宜 interface 名を)
pfctl で読み込み直す。
% sudo pfctl -Fa -f [pfの設定ファイル]
o 動作確認
テストしてみる。auth.log をパイプで sshguard に流し込む。
# tail -n0 -F /var/log/auth.log | /usr/local/sbin/sshguard
ちなみに以下のログフォーマットに対応している。
* syslog entries
* syslog-ng entries
* metalog entries
* multilog entries
* raw log entries
てきとーなホストから何度もsshでつないで認証に失敗してみる。
するとそのホストからはつながらなくなっているはず。
# pfctl -Tshow -tsshguard
で追加されたアドレスを確認。
o syslog.conf 設定
ログインのたびにtail してもいいけども
root で実行しなきゃなんね
それかsshguard をsetuid root しなきゃなんね
ので、syslog.conf で設定して流し込む。下記を追加。
auth.info;authpriv.info |exec /usr/local/sbin/sshguard
他に auth.info;authpriv.info なエントリがある場合
(通常、auth.info;authpriv.info /var/log/auth.log が存在)
はそれより上に書く。
とりあえずこれだけでOK
するとまぁこんなかんじでブロックしてくれる、と。
sshguard[10351]: Releasing 221.8.79.168 after 454 seconds.
sshguard[20597]: Blocking 218.104.51.58: 4 failures over 5 seconds.
sshguard[20597]: Releasing 218.104.51.58 after 465 seconds.
ブロックしたアドレスのリリースまでの秒、アタックと認識する間隔も設定可能。
0 件のコメント:
コメントを投稿