インストールまで。標準の設定では sshd と ftpd しか有効にならない。
古い Qpopper が動いているサーバでPOP3サービスに対する攻撃を防御する必要が生じたので、POP3用の設定を追加した。
blockhosts.cfgの設定
LOGFILES に maillog のパスを追加。
LOGFILES = [ "/var/log/secure","/var/log/maillog", ]
ALL_REGEXS にログパターンを追加。qpopper用のパターンは標準で含まれてはいるが、実行ファイルの名称(=ログに記録されるプログラム名)が異なっていたのと、不正パスワード以外の失敗パターンも捕捉したかったので、下記のように追加した。
# "qpopper-Fail":
# r'{LOG_PREFIX{qpopper}} .* \({HOST_IP}\): -ERR \[AUTH] Password supplied ',
"qpopper-Fail-Password":
r'{LOG_PREFIX{in.qpopper}} .* \({HOST_IP}\): -ERR \[AUTH] Password supplied ',
"qpopper-Fail-Access":
r'{LOG_PREFIX{in.qpopper}} .* \({HOST_IP}\): -ERR \[AUTH] Access is blocked ',
"qpopper-Fail-PAM":
r'{LOG_PREFIX{in.qpopper}} .* \({HOST_IP}\): -ERR \[AUTH] PAM authentication failed ',
ENABLE_RULES の正規表現を修正して、先ほど追加した qpopper 用ルールを有効にしておく。この設定を明示的に行わないと sshd と ftpd しか有効にならないので注意が必要。
ENABLE_RULES = r'(?i)(sshd|.*ftpd|qpopper).*'
テスト
dry-run オプションを付けて実行。
sudo blockhosts.py --verbose --dry-run
hosts.allowの修正
blockhosts.py の行にqpopperを追加する。
in.qpopper, in.proftpd: ALL: spawn /usr/bin/blockhosts.py --verbose --echo "%c-%s" >> /var/log/blockhosts.log 2>&1 : allow