ログが空いてくると、色々なものが見えてくる。
例えばこう言ったの。
|
1 2 3 |
2026/07/10 12:01:19 (165.154.41.232)- "GET / HTTP/1.1" 200 334 "-" "curl/7.29.0" 2026/07/10 12:04:20 (47.250.82.134)- "GET / HTTP/1.1" 200 334 "-" "curl/7.64.1" 2026/07/10 12:04:25 (47.250.82.134)- "GET / HTTP/1.1" 200 334 "-" "curl/7.74.0" |
なので、何時もの様に、こうやって対応することにした。
|
1 2 3 4 5 6 7 8 9 10 11 |
#!/bin/sh # # add_pf_curl.sh # curl使ってくるような連中を排除する # grep "200 .* curl" /opt/local/var/log/apache2/access_log | \ grep -v "192\.168\.0\.[0-9]{1,3}" | grep -v "49.96.23[2-9]\.[0-9]{1,3}" | \ grep -oE "\(([0-9]{1,3}\.){3}[0-9]{1,3}\)" | \ sed 's/[()]//g' | \ sort -u | pfctl -t murus.blacklist -T add -f - |
これでcurlで来る連中を弾ける。
これで問題なければ良いのだけれど。
それと、daylyPF.shが随分と太ってしまった。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#!/bin/sh # # dayliyPF.sh # # 1. postfix.logからsubmissionに直接accessきた奴らをpfに登録して暫く弾く /usr/local/sbin/add_pf_unknown.sh > /var/tmp/daylyPF.tmp # 2. postfix.logからauthentication failedを拾ってpfに登録する /usr/local/sbin/add_pf_authFailed.sh >> /var/tmp/daylyPF.tmp # 3. dovecotのinfo.logからdovecotにscanしてきた奴らをpfに登録して弾く /usr/local/sbin/add_pf_dovecot.sh # 4. postfix.logからDNSBL rankで弾く /usr/local/sbin/add_pf_DNSBLrank.sh # 5. postfix.logからPREGREETで弾く /usr/local/sbin/add_pf_pregreet.sh # 6. apache2のaccess_logからstatus code "400 224"を弾く /usr/local/sbin/add_pf_http.sh # 7. curl使ってくるような連中を排除する /usr/local/sbin/add_pf_curl.sh # last. 今回書き込んだブロック数をログに書き出す echo "$(date '+%Y年%m月%d日 %H時%M分%S秒') - Current blocklist count: $(sudo pfctl -t murus.blacklist -T show | wc -l)" >> /opt/local/var/log/pf/pf_update_history.log |
毎回pfctlを動かしている(まぁ大した負荷じゃないんだけれど)から、統一するのも良さそうだ。
tmp fileに書き出して、それを一括でpfctlに送り込むことも考えよう。
ログも単体(daylyPF.shの抽出分)で判るし。(但し、全部登録されたかは判らない)

