{"id":11378,"date":"2026-07-07T15:32:26","date_gmt":"2026-07-07T06:32:26","guid":{"rendered":"https:\/\/www.k-in.co.jp\/niwakan\/?p=11378"},"modified":"2026-07-07T15:32:39","modified_gmt":"2026-07-07T06:32:39","slug":"pf%e9%80%81%e3%82%8a%e3%81%aeip%e3%82%92%e3%81%95%e3%82%89%e3%81%ab%e7%b4%b0%e3%81%8b%e3%81%8f%e8%a8%ad%e5%ae%9a%e3%81%97%e7%9b%b4%e3%81%99%e3%81%93%e3%81%a8%e3%81%ab%e3%81%97%e3%81%9f","status":"publish","type":"post","link":"https:\/\/www.k-in.co.jp\/niwakan\/archives\/2026\/07\/11378\/","title":{"rendered":"pf\u9001\u308a\u306eip\u3092\u3055\u3089\u306b\u7d30\u304b\u304f\u8a2d\u5b9a\u3057\u76f4\u3059\u3053\u3068\u306b\u3057\u305f"},"content":{"rendered":"<p><a href=\"https:\/\/www.k-in.co.jp\/niwakan\/archives\/2026\/07\/11295\/\">postfix\u3092\u66f4\u306b\u5805\u7262\u306b<\/a>\u306b\u3082\u66f8\u3044\u305f\u306e\u3060\u304c\u3001Packet Filter\u306b\u9001\u308b\u30bf\u30a4\u30df\u30f3\u30b0\u7b49\u306e\u8abf\u6574\u304c\u5fc5\u8981\u305d\u3046\u3060\u3002<br \/>\n\u305d\u3053\u3067\u30bf\u30a4\u30df\u30f3\u30b0\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u306b\u3057\u305f\u3002<br \/>\n<!--more--><\/p>\n<p>\u307e\u305a\u306fcrontab\u3002<\/p>\n<pre class=\"height:300 lang:default decode:true\" title=\"crontab\">#min\thour\tday\tmounth\tweekday\tcommand\r\n0\t5\t*\/3\t*\t*\t\/usr\/local\/sbin\/resetPF.sh >\/dev\/null 2>&1\r\n30\t5\t*\/1\t*\t*\t\/usr\/local\/sbin\/dayliyPF.sh >\/dev\/null 2>&1\r\n40\t*\/1\t*\t*\t*\t\/usr\/local\/sbin\/add_pf_unknown.sh >\/dev\/null 2>&1<\/pre>\n<p>\u3053\u3093\u306a\u611f\u3058\u30673\u65e5\u306b\u4e00\u5ea6\u3001resetPF.sh\u304c\u6bce\u65e5dayliyPF.sh\u304c\u30011\u6642\u9593\u306b\u4e00\u5ea6add_pf_unknown.sh\u304c\u52d5\u304f\u3002<br \/>\n\u305d\u308c\u305e\u308c\u306e\u5185\u5bb9\u3092\u898b\u3066\u307f\u3088\u3046\u3002<br \/>\nresetPF.sh\u306f\u3001\u4e00\u5ea6blacklist\u3092\u30af\u30ea\u30a2\u3057\u3066\u56fd\u5225\u306e\u30c7\u30fc\u30bf\u3092\u653e\u308a\u8fbc\u3093\u3067\u3044\u308b\u3002<br \/>\n\u51fa\u305f\u81ea\u8eab\u306fwww.ipdeny.com\u304c\u516c\u958b\u3057\u3066\u3044\u308b\u3082\u306e\u3002<br \/>\n\u3053\u308c\u306f\u56fd\u6bce\u306b\u4f7f\u7528\u3059\u308bip range\u304c\u7d50\u69cb\u5909\u308f\u308b\u304b\u3089\u3060\u3002<\/p>\n<pre class=\"height:300 lang:default decode:true\" title=\"resetPF.sh\">#!\/bin\/sh\r\n\r\ncd \/tmp\r\n\r\n# 1. \u30d6\u30ed\u30c3\u30af\u3057\u305f\u3044\u56fd\u540d\u30b3\u30fc\u30c9\uff08\u30b9\u30da\u30fc\u30b9\u533a\u5207\u308a\u3067\u4e26\u3079\u308b\u3060\u3051\uff01\uff09\r\nCOUNTRIES=\"cn kp kr ru nl sg fr lu lt\"\r\n\r\n# 2. \u521d\u671f\u5316\u5f8c\u3001\u30eb\u30fc\u30d7\u3092\u56de\u3057\u3066\u3001\u4e00\u6483\u3067 Murus\uff08PF\uff09\u3078\u6d41\u3057\u8fbc\u307f\uff01\r\npfctl -t murus.blacklist -T flush\r\nfor COUNTRY in $COUNTRIES; do\r\n    curl -s \"https:\/\/www.ipdeny.com\/ipblocks\/data\/aggregated\/${COUNTRY}-aggregated.zone\" | pfctl -t murus.blacklist -T add -f -\r\ndone<\/pre>\n<p>\u6b21\u306bdayliyPF.sh\u306a\u3093\u3060\u304c\u3001\u3053\u308c\u306f\u30ed\u30b0\u304b\u3089ip\u3092\u62bd\u51fa\u3057pf\u306b\u767b\u9332\u3059\u308b\u3002<\/p>\n<pre class=\"height:300 lang:default decode:true\" title=\"\"dayliyPF.sh >#!\/bin\/sh\r\n#\r\n# dayliyPF.sh\r\n#\r\n\r\n# 1. postfix.log\u304b\u3089submission\u306b\u76f4\u63a5access\u304d\u305f\u5974\u3089\u3092pf\u306b\u767b\u9332\u3057\u3066\u66ab\u304f\u5f3e\u304f\r\n\/usr\/local\/sbin\/add_pf_unknown.sh\r\n\r\n# 2. postfix.log\u304b\u3089authentication failed\u3092\u62fe\u3063\u3066pf\u306b\u767b\u9332\u3059\u308b\r\n\/usr\/local\/sbin\/add_pf_authFailed.sh\r\n\r\n# 3. dovecot\u306einfo.log\u304b\u3089dovecot\u306bscan\u3057\u3066\u304d\u305f\u5974\u3089\u3092pf\u306b\u767b\u9332\u3057\u3066\u5f3e\u304f\r\n\/usr\/local\/sbin\/add_pf_dovecot.sh\r\n\r\n# last. \u4eca\u56de\u66f8\u304d\u8fbc\u3093\u3060\u30d6\u30ed\u30c3\u30af\u6570\u3092\u30ed\u30b0\u306b\u66f8\u304d\u51fa\u3059\r\necho \"$(date) - Current blocklist count: $(sudo pfctl -t murus.blacklist -T show | wc -l)\" >> \/opt\/local\/var\/log\/pf\/pf_update_history.log<\/pre>\n<p>\u5358\u7d14\u306b3\u3064\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u52d5\u304b\u3057\u3001\u7dcf\u6570\u3092\u30ed\u30b0\u306b\u66f8\u304d\u51fa\u3057\u3066\u3044\u308b\u3002<br \/>\n\u3053\u306e\u4e2d\u3067\u547c\u3070\u308c\u3066\u3044\u308badd_pf_unknown.sh\u306f\u6b21\u306e\u3088\u3046\u3002<\/p>\n<pre class=\"height:300 lang:default decode:true\" title=\"add_pf_unknown.sh\">#!\/bin\/sh\r\n#\r\n# postfix.log\u304b\u3089submission\u306b\u76f4\u63a5access\u304d\u305f\u5974\u3089\u3092pf\u306b\u767b\u9332\u3057\u3066\u66ab\u304f\u5f3e\u304f\r\n# \u9069\u5fdc\u3059\u308b\u6642\u671f\u306f\u6b21\u306epf\u3092\u66f4\u65b0\u3059\u308b\u307e\u3067\u306e1\u301c3\u65e5\u9593\r\n#\r\ngrep \"postfix\/smtpd\" \/opt\/local\/var\/log\/postfix\/postfix_log | grep \"connect from unknown\" | grep -v \"192\\.168\\.0\\.[0-9]{1,3}\" | grep -v \"49.96.23[2-9]\\.[0-9]{1,3}\" | grep -oE \"\\b([0-9]{1,3}\\.){3}[0-9]{1,3}\\b\" | sort -u | pfctl -t murus.blacklist -T add -f -<\/pre>\n<p>\u3053\u3053\u3067\u5f3e\u304b\u308c\u308bip\u306f&#8221;connect from unknown&#8221;\u3068bot\u3067\u3042\u308b\u3002<br \/>\n\u4e00\u5fdc\u3001\u3069\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u3082local netwark\u3068docomo\u306e\u643a\u5e2f\u96fb\u8a71\u4f7f\u7528\u90e8\u5206\uff08\u591a\u5206\uff09\u306f\u5916\u3057\u3066\u3044\u308b\u3002<br \/>\n\u305d\u3057\u3066\u3001add_pf_authFailed.sh\u306fsubmission\u306b\u76f4\u63a5\u3084\u3063\u3066\u304f\u308b\u3001\u30d4\u30f3\u30dd\u30f3\u30c0\u30c3\u30b7\u30e5\u7d44\u3002<\/p>\n<pre class=\"height:300 lang:default decode:true\" title=\"add_pf_authFailed.sh\">#!\/bin\/sh\r\n#\r\n# add_pf_authFailed.sh\r\n# SASL LOGIN authentication failed\u3092\u62fe\u3063\u3066pf\u3067\u30d6\u30ed\u30c3\u30af\u3059\u308b\r\n#\r\ngrep \"postfix\/smtpd\" \/opt\/local\/var\/log\/postfix\/postfix_\r\n\u539f\u7a3f\u3053\u308c\u3067\u5c11\u3057log | grep \"SASL LOGIN authentication failed\" | grep -v \"192\\.168\\.0\\.[0-9]{1,3}\" | grep -v \"49.96.23[2-9]\\.[0-9]{1,3}\" | grep -oE \"\\b([0-9]{1,3}\\.){3}[0-9]{1,3}\\b\" | sort -u | pfctl -t murus.blacklist -T add -f -<\/pre>\n<p>\u6700\u5f8c\u306bdovecot\u306e\u65b9\u306b\u3084\u3063\u3066\u304f\u308bport scanner\u305f\u3061\u3092add_pf_dovecot.sh\u3067\u8ffd\u3044\u51fa\u3059\u3002<\/p>\n<pre class=\"height:300 lang:default decode:true\" title=\"add_pf_dovecot.sh\">#!\/bin\/sh\r\n#\r\n# add_pf_dovecot.sh\r\n# dovecot\u306elog\u304b\u3089scan\u3057\u306b\u304f\u308b\u3084\u3064\u3092\u6392\u9664\r\n#\r\ngrep \"failed\" \/opt\/local\/var\/log\/dovecot\/info.log | grep -v \"192\\.168\\.0\\.[0-9]{1,3}\" | grep -v \"49.96.23[2-9]\\.[0-9]{1,3}\" | grep -oE \"\\b([0-9]{1,3}\\.){3}[0-9]{1,3}\\b\" | sort -u | pfctl -t murus.blacklist -T add -f -<\/pre>\n<p>&#8220;failed&#8221;\u3060\u3051\u306a\u306e\u306f\u3001\u4ed6\u306b\u3072\u3063\u304b\u3051\u3088\u3046\u304c\u306a\u3044\u304b\u3089\u3002<br \/>\n\u3053\u306e3\u3064\u30921\u65e5\u6bce\u306b\u52d5\u304b\u3057\u3066\u3044\u305f\u306e\u3060\u304c\u3001unknown\u3067postscreen\u306b\u5f3e\u304b\u308c\u3066\u3064\u5974\u3089\u304c\u591a\u904e\u304e\u3066\u3001\u809d\u5fc3\u306a\u30ed\u30b0\u304c\u8aad\u307f\u8f9b\u304f\u3066\u4ed5\u65b9\u304c\u306a\u304f\u306a\u3063\u305f\u3002<br \/>\n30\u5206\u306713\u4ef6\u8ffd\u52a0\u3063\u3066\u306a\u308b\u3093\u3058\u3083\u3001\u3086\u3063\u304f\u308a\u30ed\u30b0\u3092\u9451\u8cde\u3067\u304d\u306a\u3044\u3082\u306e\u3002<br \/>\n\u3063\u3066\u3053\u3068\u3067\u73fe\u57281\u6642\u9593\u306b\u4e00\u5ea6\u52d5\u304b\u3059\u3088\u3046\u306b\u3057\u305f\u3002<br \/>\n\u539f\u7a3f\u3053\u308c\u3067\u8abf\u5b50\u3092\u898b\u3066\u307f\u308b\u3053\u3068\u306b\u3057\u3088\u3046\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>postfix\u3092\u66f4\u306b\u5805\u7262\u306b\u306b\u3082\u66f8\u3044\u305f\u306e\u3060\u304c\u3001Packet Filter\u306b\u9001\u308b\u30bf\u30a4\u30df\u30f3\u30b0\u7b49\u306e\u8abf\u6574\u304c\u5fc5\u8981\u305d\u3046\u3060\u3002 \u305d\u3053\u3067\u30bf\u30a4\u30df\u30f3\u30b0\u306e\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b\u3053\u3068\u306b\u3057\u305f\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[246,115],"tags":[177,245,175],"class_list":["post-11378","post","type-post","status-publish","format-standard","hentry","category-my-macmini-server","category-software","tag-dovecot","tag-packet-filter","tag-postfix"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.k-in.co.jp\/niwakan\/wp-json\/wp\/v2\/posts\/11378","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.k-in.co.jp\/niwakan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.k-in.co.jp\/niwakan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.k-in.co.jp\/niwakan\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.k-in.co.jp\/niwakan\/wp-json\/wp\/v2\/comments?post=11378"}],"version-history":[{"count":1,"href":"https:\/\/www.k-in.co.jp\/niwakan\/wp-json\/wp\/v2\/posts\/11378\/revisions"}],"predecessor-version":[{"id":11380,"href":"https:\/\/www.k-in.co.jp\/niwakan\/wp-json\/wp\/v2\/posts\/11378\/revisions\/11380"}],"wp:attachment":[{"href":"https:\/\/www.k-in.co.jp\/niwakan\/wp-json\/wp\/v2\/media?parent=11378"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.k-in.co.jp\/niwakan\/wp-json\/wp\/v2\/categories?post=11378"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.k-in.co.jp\/niwakan\/wp-json\/wp\/v2\/tags?post=11378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}