CONTENTS #contents ---- Lastmodified &lastmod; ---- http://gd.tuwien.ac.at/.vhost/www.openbsd.org/xxx/faq/pf/ja/tables.html https://www.google.co.jp/webhp?sourceid=navclient&hl=ja&ie=UTF-8#hl=ja&sclient=psy-ab&q=freebsd+pf+conf+%E8%A8%AD%E5%AE%9A&oq=freebsd+pf+settei+&gs_l=serp.1.1.0i4i10i30j0i8i4i30.28737.30059.1.35376.7.7.0.0.0.0.126.701.4j3.7.0...0.0...1c.1.7.psy-ab.jXOIku2g7yc&pbx=1&bav=on.2,or.r_qf.&fp=7d16cb3d3f4a36aa&biw=1134&bih=1428 *PF [#cf3189f7] http://www.konata.net/freebsd/204_pf.php /etc/rc.conf # pf pf_enable="YES" pf_rules="/etc/pf.conf" pflog_enable="YES" # touch /etc/pf.conf root@ns1:/root # /etc/rc.d/pf start Enabling pfNo ALTQ support in kernel ALTQ related functions disabled No ALTQ support in kernel ALTQ related functions disabled . root@ns1:/root # **# vi /etc/pf.conf [#b359818b] http://d.hatena.ne.jp/littlebuddha/20100118/1263785513 #macros # インターネットと通信する側の NIC 名 ext_if = "fxp0" # LAN 側に接続されている NIC 名 # このサーバがNATやゲートウェイとして稼動する際に使われる # int_if = "bge0" # インターネットからの接続を許可するポート番号をまとめて変数に登録する tcp_services = "{22, 80, 443, ****}" # プライベートアドレスとして登録されているアドレス空間をまとめて変数に登録する priv_nets = "{127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, 0.0.0.0, 255.255.255.255}" # options # 許可していないパケットはすべて破棄する # 拒否の応答を返したい場合は「drop」ではなく[return」に変更する set block-policy drop # PF の着信/送出バイト数や通過/ブロックパケット数などの統計情報を # 収集すべきインターフェイスを設定 set loginterface $ext_if # scrub # see at http://gd.tuwien.ac.at/.vhost/www.openbsd.org/xxx/faq/pf/ja/scrub.html # パケットの正規化を行う scrub in all # default rules # まずは全ての接続を拒否する block all # ループバックアドレスは全て許可する pass quick on lo0 all # 詐称されたパケットをブロックする #antispoof log-all quick for $ext_if inet antispoof quick for $ext_if inet # ゲートウェイの役割がある場合は下記を有効にするか判断する # see at http://gd.tuwien.ac.at/.vhost/www.openbsd.org/xxx/faq/pf/ja/example1.html#options # block drop in quick on $ext_if from $priv_nets to any # block drop out quick on $ext_if from any to $priv_nets # filter rules # 外部からの ICMP の特定のプロトコルに応答する pass in quick on $ext_if inet proto icmp from any icmp-type echoreq keep state # 外部からの接続は tcp_services に登録したポートへの許可する pass in on $ext_if inet proto tcp from any to ($ext_if) port $tcp_services flags S/SA keep state # pass out all -> ext # 内部から外部への接続で、下記のプロトコルを許可する pass out quick on $ext_if proto tcp all modulate state flags S/SA pass out quick on $ext_if proto {udp, icmp} all keep state ** 設定の確認 [#ca421116] root@ns1:/root # pfctl -nf /etc/pf.conf /etc/pf.conf:34: syntax error root@ns1:/root # root@ns1:/root # root@ns1:/root # pfctl -nf /etc/pf.conf root@ns1:/root # ** pf.ko があれば稼働中 [#w201a0e8] root@ns1:/root # kldstat Id Refs Address Size Name 1 3 0xc0400000 fd35e8 kernel 2 1 0xc5e50000 33000 pf.ko ** pf の設定内容を確認する。 [#a0d5aa38] root@ns1:/root # pfctl -sr No ALTQ support in kernel ALTQ related functions disabled scrub in all fragment reassemble block drop all pass quick on lo0 all flags S/SA keep state block drop in quick on ! fxp0 inet from 218.44.228.144/28 to any block drop in quick inet from 218.44.228.146 to any pass in quick on fxp0 inet proto icmp all icmp-type echoreq keep state pass in on fxp0 inet proto tcp from any to (fxp0) port = ssh flags S/SA keep state pass in on fxp0 inet proto tcp from any to (fxp0) port = http flags S/SA keep state pass in on fxp0 inet proto tcp from any to (fxp0) port = https flags S/SA keep state pass in on fxp0 inet proto tcp from any to (fxp0) port = 9997 flags S/SA keep state pass out quick on fxp0 proto tcp all flags S/SA modulate state pass out quick on fxp0 proto udp all keep state pass out quick on fxp0 proto icmp all keep state root@ns1:/root # ** PFのコントロール [#j8ce5b67] http://bakuretsu.atso-net.jp/bakuretsu/freebsd/router-pf.html ***/etc/pf.conf を変更したときは,以下のコマンドで新しいルールが有効になる. [#hcb40287] # pfctl -f /etc/pf.conf ***現在のルールを表示させるには以下のコマンドを使用する. [#v7d66ded] # pfctl -s rules ***ログは /var/log/pflog として作られるが,テキストファイル形式ではないので,以下のコマンドで見る. [#ged2d4e2] # tcpdump -n -e -ttt -r /var/log/pflog ***ログをリアルタイムで監視するには,以下のようにする.なおpflog0はデバイスである. [#zfc91a67] # tcpdump -n -e -ttt -i pflog0 **DDOS DNS [#lb55bde6] /etc/pf.conf table <ddos> persist file "/etc/ddos" block in log quick on $ext_if from <ddos> to any /etc/ddos 178.32.36.67 **pf log rotation [#z1302602] http://gd.tuwien.ac.at/.vhost/www.openbsd.org/xxx/faq/pf/ja/logging.html http://bakuretsu.atso-net.jp/bakuretsu/freebsd/newsyslog.html /etc/newsyslog.conf /var/log/pflog 600 3 100 * JB /var/run/pflogd.pid なんだか、初めっからアルっぽい **DDOS Web [#ef8cf1a7] http://forums.freebsd.org/showthread.php?t=21692 pf Code: table <ddos> persist # stop ddos block in log quick on $ext_if proto tcp from <ddos> to $web_ip port { 80, 443 } label ddos-block # http ddos prevention # I would lower these limits as they are high pass in quick on $ext_if proto tcp to $web_ip port { 80, 443 } flags S/SA label http keep state \ (max-src-conn 120, max-src-conn-rate 180/60, overload <ddos> flush global) ---- Total access &counter(total);:本日 &counter(today);:昨日 &counter(yesterday); #counter([total|today|yesterday]);