CONTENTS


Lastmodified 2013-03-29 (金) 12:34:22


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

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

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

設定の確認

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 があれば稼働中

root@ns1:/root # kldstat
Id Refs Address    Size     Name
 1    3 0xc0400000 fd35e8   kernel
 2    1 0xc5e50000 33000    pf.ko

pf の設定内容を確認する。

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のコントロール

http://bakuretsu.atso-net.jp/bakuretsu/freebsd/router-pf.html

/etc/pf.conf を変更したときは,以下のコマンドで新しいルールが有効になる.

# pfctl -f /etc/pf.conf 

現在のルールを表示させるには以下のコマンドを使用する.

# pfctl -s rules 

ログは /var/log/pflog として作られるが,テキストファイル形式ではないので,以下のコマンドで見る.

# tcpdump -n -e -ttt -r /var/log/pflog 

ログをリアルタイムで監視するには,以下のようにする.なおpflog0はデバイスである.

# tcpdump -n -e -ttt -i pflog0 

DDOS Web

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 3042:本日 1:昨日 0

Counter: 3042, today: 1, yesterday: 0

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS