documents:freebsd:freebsd-031
文書の過去の版を表示しています。
FreeBSDのIPFW2を使う 運用編
2026-04-30
まだ書いてなかったなと思い出して作成
https://docs.freebsd.org/en/books/handbook/firewalls/index.html#firewalls-ipfw
日本語の記述はまだない模様です。
先にFreeBSDのIPFW2を使う 設定編を参照して設定を済ませましょう。
使い方
例えばhttpサーバのログにこんな記録がある場合。
168.110.210.99 - - [30/Apr/2026:04:50:51 +0900] "GET /cdn-cgi/trace HTTP/1.1" 404 9817161 "-" "CFFinderSwiftBackend/1.0" 47.83.253.13 - - [30/Apr/2026:05:01:13 +0900] "-" 408 - "-" "-" 3.131.220.121 - - [30/Apr/2026:05:20:42 +0900] "GET / HTTP/1.0" 400 402 "-" "-" 3.131.220.121 - - [30/Apr/2026:05:20:47 +0900] "GET / HTTP/1.0" 400 402 "-" "-" 3.131.220.121 - - [30/Apr/2026:05:21:59 +0900] "GET / HTTP/1.1" 200 229 "-" "visionheight.com/scan Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 9.234.8.125 - - [30/Apr/2026:05:26:47 +0900] "GET /developmentserver/metadatauploader HTTP/1.1" 404 212992 "-" "Mozilla/5.0 zgrab/0.x" 20.14.81.42 - - [30/Apr/2026:05:27:02 +0900] "GET / HTTP/1.0" 400 402 "-" "-"
168.110.210.99、3.131.220.121 および 9.234.8.125 にはアクセスをご遠慮いただきたい、とします。
ipfwコマンドでBANするアドレスを登録します。
root@bsdgate:~ # ipfw table 80 add 168.110.210.99 0 3.131.220.121 0 9.234.8.125 0 added: 168.110.210.99/32 0 added: 3.131.220.121/32 0 added: 9.234.8.125/32 0 root@bsdgate:~ # ipfw table 80 list 3.131.220.121/32 0 9.234.8.125/32 0 168.110.210.99/32 0 192.168.0.0/32 0 root@bsdgate:~ #
ダミーで登録していた 192.168.0.0 を消し忘れていたので消しましょう。
root@bsdgate:~ # ipfw table 80 delete 192.168.0.0/32 deleted: 192.168.0.0/32 0 root@bsdgate:~ # ipfw table 80 list 3.131.220.121/32 0 9.234.8.125/32 0 168.110.210.99/32 0 root@bsdgate:~ #
httpサービスにアクセスが発生する前に叩き落すので、アクセスログが汚れずに済みますね。
事前に問題あるIPアドレス(例えば慎みの無いアクセスで有名なクローラーのIPアドレス/IPアドレスのブロック)が
分かっていれば先に登録してしまえばよいし、このテーブルへの自動登録を行う仕組みを作れればだいぶ気楽になれます。
#こんな定義も可能。これは168.110.210.0/24の範囲を登録する指定 ipfw table 80 add 168.110.210.0/24 0
IPアドレスの後ろの“0”はこのままにしてていいです。この値を見て振る舞いを変えられるのだけどそこまで複雑にはしたくないので。
他の例としては SSHGuard + IPFW2(IPFW) の運用があります。
SSHのアクセスログを監視して、ログイン失敗回数等を見てIPFW2のテーブルへBAN対象の登録を行うものです。
documents/freebsd/freebsd-031.1777505029.txt · 最終更新: by k896951
