BlueOnyx-5209R (CentOS7) のデフォルトはこうだと思うのだが

# cat /etc/security/pam_abl.conf
db_home=/var/lib/pam_abl
host_db=/var/lib/pam_abl/hosts.db
host_purge=1d
host_rule=*:30/1h
#user_db=/var/lib/pam_abl/users.db
user_purge=1d
user_rule=*:3/1h
host_clear_cmd=[logger] [clear] [host] [%h]
host_block_cmd=[logger] [block] [host] [%h]
user_clear_cmd=[logger] [clear] [user] [%u]
user_block_cmd=[logger] [block] [user] [%u]
limits=1000-1200
host_whitelist=127.0.0.1/32
user_whitelist=admin

host_block_cmd はデフォルトで機能していない

下のようにしないと、loggerの起動ができていないようだ。
host_block_cmd=[/bin/logger] [block] [host] [%h]

追記: BlueOnyx-5208R (CentOS6) でも同様だった

-w と -f

-f は失敗をシミュレートするだけで、blacklistに入れる訳ではないようだ。(マニュアルの通りなんだけど)

# cat /etc/security/pam_abl.conf
...
host_rule=*:3/1h
host_clear_cmd=[/bin/logger] [clear] [host] [%h]
host_block_cmd=[/bin/logger] [block] [host] [%h]
...

# tail -f /var/log/message | perl -nlE '/block|clear/ and print'
...

# pam_abl -f -H xxx-xxx-xxx-xxx.isp.jp
# pam_abl -f -H xxx-xxx-xxx-xxx.isp.jp
# pam_abl -f -H xxx-xxx-xxx-xxx.isp.jp <- ここで Mar 21 10:16:50 host1 root: block host xxx-xxx-xxx-xxx.isp.jp
# pam_abl -w -H xxx-xxx-xxx-xxx.isp.jp <- ここで Mar 21 10:16:50 host1 root: clear host xxx-xxx-xxx-xxx.isp.jp

pam_abl.conf の変更を反映させるには service sshd restart などとする必要はない

試してみた限り、そうっぽい。

マッチが PTR か IP かは service 依存

ssh の場合は PTR。ftp の場合は IP だった。以下はsshの場合。

IP 123.123.123.123
逆引き 123.123.123.123.isp.jp だとすると
IPが blacklist に入っていていても通過する。

ユーザーが存在しない場合に -f されるかは service 依存

ssh の場合は 存在しないユーザー@host しても -f はカウントされる。
ftp の場合は 存在しないユーザー@host しても -f はカウントされない。

service | IP or PTR | 存在しないユーザーの場合
--------+-----------+-------------------------
ssh     | PTR       | カウントされる
ftp     | IP        | カウントされない
pop3    | IP        | カウントされる
imap    | IP        | カウントされる

SMTP-AUTH でカウントされない問題

smtp_auth は pam_abl が効いていないようだ。
saslauthd を shadow -> pam にしてもだめだ。
どうやら 2011年 ぐらいから指摘されているようだけど、まだ取り込まれていないようだ。。。
https://github.com/cyrusimap/cyrus-sasl/issues/346

sendmail の LogLevel を上げれば ip は拾えるようだ。userは拾えないけど。。。
https://unix.stackexchange.com/questions/480000/how-is-sendmail-smtp-authentication-logging-controlled

CentOS7 からは postfix なので BlueOnyx(sendmail) の場合だけど
そもそも1コネクションで複数回 AUTH PLAIN 文字列 が試行されていても、ログに残らない。。。試行にラグは強制されるけど

fail2ban の filter.d/sendmail-reject.conf で aggressive を使えば
[xxx.xxx.xxx.xxx] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
が拾えるようではある。

コメントする

perl adv
perl adv