SSブログ

OpenBSD本家でpfを動かす その2(OpenBSD 6.6R、2019/11/10) [OpenBSD]

pfはログ確認方法がちょっと特殊であり、テキストログに吐き出されたものをcatやlessで見るといったよく形ではありません。
簡単に言うと、tcpdumpのバイナリキャプチャ形式で吐き出されるため、tcpdumpによって見やすいようにデコードします。取っ付きにくいように感じるかもしれませんが、tcpdumpのフィルタオプションがそのまま使えるので、慣れればむしろ便利だったりします。

インタフェースを監視してリアルタイムのログを表示させるには、
 tcpdump -n -e -ttt -i pflog0

蓄積されたバイナリログを表示させるには、
 tcpdump -n -e -ttt -r /var/log/pflog

といった形で確認可能です。

先日のpf.confをもうちょっとスマートな形に書き換えてみました。
openbsd# cat /etc/pf.conf
#       $OpenBSD: pf.conf,v 1.55 2017/12/03 20:40:04 sthen Exp $
#
# See pf.conf(5) and /etc/examples/pf.conf

set skip on lo

#block return   # block stateless traffic
#pass           # establish keep-state

# By default, do not permit remote connections to X11
block return in on ! lo0 proto tcp to port 6000:6010

# Port build user does not need network
block return out log proto {tcp udp} user _pbuild

# my rules
set block-policy drop

/* 許可するサービス、ブロックするサービスなどを事前に定義 */
tcp_pass      = "{ smtp, submission, xxxx }"   /* sshのポートをxxxxに変更 */
tcp_block_log = "{ telnet }"
tcp_block     = "{ domain, ntp, 445, 1433, mysql, rdp }"
udp_pass      = "{ }"
udp_block     = "{ domain, ntp, snmp, ldap, sip }"

# scrub
match in all scrub (no-df)

block log all
block return in log quick proto tcp to any port ssh   /* もともとのsshポートは偽装応答。sshdの設定も変更 */
block in log quick proto tcp to any port $tcp_block_log   /* 変数を利用して集約 */
block in quick proto tcp to any port $tcp_block   /* 変数を利用して集約 */
block in quick proto udp to any port $udp_block   /* 変数を利用して集約 */
block in quick inet6 all

# blacklist   /* ブラックリストはファイルで管理 */
table <my_blacklist> persist file "/etc/pf.blacklist"
block in quick from <my_blacklist>

# pass rules
pass in log proto tcp to any port $tcp_pass modulate state
pass in proto icmp all keep state

pass out proto tcp all modulate state
pass out proto udp all keep state
pass out proto icmp all keep state



タグ:PF
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。