Freebsd PF 安裝使用詳解

Freebsd PF 安裝使用
FreeBSD下的PF
FreeBSD下的包過(guò)濾工具有IPFW,IPF以及PF,它們各有特點(diǎn)。PF原本是OpenBSD下的包過(guò)濾工具,F(xiàn)reeBSD開(kāi)發(fā)人員已經(jīng)把PF移植到了FreeBSD上了。如果要在FreeBSD上使用PF,需如下操作:
1. 編譯內(nèi)核:
cd /usr/src/sys/i386/conf
cp GENERIC LOULAN
編輯 LOULAN加入以下內(nèi)容
device pf
device pflog
device pfsync
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_CDNR
options ALTQ_PRIQ
options ALTQ_NOPCC
options ALTQ_DEBUG
config LOULAN
make depend&& make && make install && reboot
2. 編寫防火墻規(guī)則pf.conf
具體可以參考 man pf.conf ,根據(jù)實(shí)現(xiàn)需求編寫防火墻規(guī)則。
pfctl -f pf.conf 應(yīng)用pf.conf的規(guī)則
pfctl -sr 查看訪問(wèn)規(guī)則
pfctl -sn 查看NAT規(guī)則
pfctl -sa 查看所有PF信息
pfctl -Rf pf.conf 重新加載訪問(wèn)規(guī)則
pfctl -Nf pf.conf 重新加載NAT規(guī)則
pfctl -Fa -f pf.conf 重新加載所有規(guī)則
Freebsd PF 安裝使用
要在 FreeBSD 6.2 上使用 PF 防火墻,有二個(gè)方式,一個(gè)是編譯進(jìn)入核心,另外是以動(dòng)態(tài)模塊方式加載。
編譯進(jìn)入核心的方式
#FreeBSD log traffic,如果有使用 pflog,就要編譯進(jìn)核心
device bpf
#啟動(dòng) PF Firewall
device pf
#啟動(dòng)虛擬網(wǎng)絡(luò)設(shè)備來(lái)記錄流量(經(jīng)由 bpf)
device pflog
#啟動(dòng)虛擬網(wǎng)絡(luò)設(shè)備來(lái)監(jiān)視網(wǎng)絡(luò)狀態(tài)
device pfsync
以動(dòng)態(tài)模塊加載
vi /etc/rc.conf
加入下面四行
#啟用 PF
pf_enable="YES"
#PF 防火墻規(guī)則的設(shè)定文件
pf_rules="/etc/pf.conf"
#啟用 inetd 服務(wù)
inetd_enable="YES"
#啟動(dòng) pflogd
pflog_enable="YES"
#pflogd 儲(chǔ)存記錄檔案的地方
pflog_logfile="/var/log/pflog"
#轉(zhuǎn)送封包
gateway_enable="YES"
#開(kāi)啟 ftp-proxy 功能
vi /etc/inetd.conf
把下面這一行最前面的 # 刪除
ftp-proxy stream tcp nowait root /usr/libexec/ftp-proxy ftp-proxy
使用 sysctl 做設(shè)定(也可以重新開(kāi)機(jī)讓設(shè)定生效)
sysctl -w net.inet.ip.forwarding=1
vi /etc/pf.conf
#對(duì)外的網(wǎng)絡(luò)卡
ext_if = "sis0"
#對(duì)內(nèi)的網(wǎng)絡(luò)卡
int_if = "rl0"
#頻寬控管
#定義 std_out 總頻寬 512Kb
#altq on $ext_if cbq bandwidth 512Kb queue { std_out }
#定義 std_out 隊(duì)列頻寬 256Kb,使用預(yù)設(shè)隊(duì)列
#queue std_out bandwith 256Kb cbq (default)
#定義 std_in 總頻寬 2Mb
#altq on $int_if cbq bandwidth 2Mb queue { std_in }
#假設(shè)頻寬足夠的話,可以從父隊(duì)列借用額外的頻寬
#queue std_in bandwidth 768Kb cbq (brrrow)
#對(duì)外開(kāi)放的服務(wù)
open_services = "{80, 443}"
#內(nèi)部私有的 IP
priv_nets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"
# options
#設(shè)定拒絕聯(lián)機(jī)封包的處理方式
set block-policy return
#
set optimization aggressive
#紀(jì)錄 $ext_if
set loginterface $ext_if
# scrub
#整理封包
scrub in all
#nat
#NAT 地址轉(zhuǎn)譯處理
nat on $ext_if from $int_if:network to any -> $ext_if
#ftp-proxy
#ftp-proxy 重新導(dǎo)向
rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021
#rdr on $ext_if proto tcp from any to 140.111.152.13 port 21 -> 192.168.13.253 port 21
#Transparent Proxy Server
rdr on rl0 proto tcp from 192.168.13.0/24 to any 80 -> 127.0.0.1 port 3128
#阻擋可疑封包在 $ext_if 網(wǎng)卡進(jìn)出
antispoof log quick for $ext_if
#阻擋所有進(jìn)出的封包
block all
#開(kāi)放 loopback
pass quick on lo0 all
#拒絕內(nèi)部私有 IP 對(duì) $ext_if 網(wǎng)絡(luò)卡聯(lián)機(jī)
block drop in quick on $ext_if from $priv_nets to any
block drop out quick on $ext_if from any to $priv_nets
#開(kāi)放對(duì)外的 80, 443 埠
pass in on $ext_if inet proto tcp from any to $ext_if port $open_services flags S/SA keep state
#只容許 140.111.152.0/24 網(wǎng)段對(duì)本機(jī)做 22 埠聯(lián)機(jī)
pass in on $ext_if inet proto tcp from 140.111.152.0/24 to $ext_if port 22 flags S/SA keep state
#開(kāi)放內(nèi)部網(wǎng)絡(luò)對(duì)外聯(lián)機(jī)
#pass in on $inf_if proto rcp from any to any queue std_in
pass in on $int_if from $int_if:network to any keep state
pass out on $int_if from any to $int_if:network keep state
#開(kāi)放對(duì)外網(wǎng)絡(luò)的聯(lián)機(jī)
#pass out $ext_if proto tcp from any to any queue std_out
pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state
啟動(dòng) PF,并讀取 pf 規(guī)則
pfctl -e;pfctl -f /etc/pf.conf
PF 指令的用法
#啟動(dòng) PF
pfctl -e
#加載 PF 規(guī)則
pfctl -f /etc/pf.conf
#檢查 PF 語(yǔ)法是否正確 (未加載)
pfctl -nf /etc/pf.conf
#停用 PF
pfctl -d
#重讀 PF 設(shè)定檔中的 NAT 部分
pfctl -f /etc/pf.conf -N
#重讀 PF 設(shè)定檔中的 filter rules
pfctl -f /etc/pf.conf -R
#重讀 PF 設(shè)定文件中的選項(xiàng)規(guī)則
pfctl -f /etc/pf.conf -O
#查看 PF 信息
#顯示現(xiàn)階段過(guò)濾封包的統(tǒng)計(jì)資料
pfctl -s info
pfctl -si
pfctl -s memory
#顯示現(xiàn)階段過(guò)濾的規(guī)則
pfctl -s rules
pfctl -sr
pfctl -vs rules
#顯示現(xiàn)階段過(guò)濾封包的統(tǒng)計(jì)資料
pfctl -vsr
#顯示現(xiàn)階段 NAT 的規(guī)則
pfctl -s nat
pfctl -sn
#檢視目前隊(duì)列
pfctl -s queue
#顯示現(xiàn)階段所有統(tǒng)計(jì)的數(shù)據(jù)
pfctl -s all
pfctl -sa
#清除 PF 規(guī)則
#清空 NAT 規(guī)則
pfctl -F nat
#清空隊(duì)列
pfctl -F queue
#清空封包過(guò)濾規(guī)則
pfctl -F rules
#清空計(jì)數(shù)器
pfctl -F info
pfctl -F Tables
#清空所有的規(guī)則
pfctl -F all
#PF Tables 的使用
#顯示 table 內(nèi)數(shù)據(jù)
pfctl -t ssh-bruteforce -Tshow
pfctl -t table_name -T add spammers.org
pfctl -t table_name -T delete spammers.org
pfctl -t table_name -T flush
pfctl -t table_name -T show
pfctl -t table_name -T zero
過(guò)濾掃描偵測(cè)軟件
block in quick proto tcp all flags SF/SFRA
block in quick proto tcp all flags SFUP/SFRAU
block in quick proto tcp all flags FPU/SFRAUP
block in quick proto tcp all flags /SFRA
block in quick proto tcp all flags F/SFRA
block in quick proto tcp all flags U/SFRAU
block in quick proto tcp all flags P
如果防火墻和 Proxy Server 不在同一臺(tái)主機(jī)
Proxy Server:192.168.13.250
no rdr on rl0 proto tcp from 192.168.13.250 to any port 80
rdr on rl0 proto tcp from 192.168.13.0/24 to any port 80 -> 192.168.13.250 port 3128
相關(guān)文章
Freebsd+IPFW結(jié)合使用防小規(guī)模DDOS攻擊的配置方法
使用Freebsd+IPFW 防小規(guī)模DDOS攻擊筆者公司共有10臺(tái)Web服務(wù)器,使用Redhat Linux 9作為操作系統(tǒng),分布在全國(guó)各大城市,主要為用戶提供HTTP服務(wù)。曾經(jīng)有一段時(shí)間不少用戶反2013-05-25使用U盤安裝FreeBSD系統(tǒng)的簡(jiǎn)單教程
這篇文章主要介紹了使用U盤安裝FreeBSD系統(tǒng)的教程,順帶介紹了Ubuntu系統(tǒng)下U盤文件變成只讀的問(wèn)題的解決方法,需要的朋友可以參考下2016-02-23- 安裝了 FreeBSD 后,您一定還會(huì)需要安裝其它非 FreeBSD 內(nèi)附的軟件。在 FreeBSD 上安裝軟件有許多種方法,我們將一一為各位介紹。 本章包含了下列軟件安裝必備的課2008-09-08
- FreeBSD作為BSD的主要分支之一,具有健壯、穩(wěn)定的優(yōu)點(diǎn),因此有一些系統(tǒng)管理員尤其鐘愛(ài)FreeBSD。本文總結(jié)了一些FreeBSD的常用指令,讀者們可以用于做一個(gè)檢索2008-09-08
- 安裝了 FreeBSD 后,您一定還會(huì)需要安裝其它非 FreeBSD 內(nèi)附的軟件。在 FreeBSD 上安裝軟件有許多種方法,我們將一一為各位介紹。 本章包含了下列軟件安裝必備的課題:2008-09-08
- FreeBSD 的版本命名規(guī)則 A-主要版本編號(hào) B-次要版本編號(hào) C-修正版本編號(hào) TAG-名稱標(biāo)簽,如 RELEASE、STABLE、CURRENT install.iso 安裝時(shí)用這一片即可!mini.iso 也是2008-09-08
- 更新 INDEX 對(duì)照表 4.x 的 INDEX 位於 /usr/ports/INDEX,5.x 位於 /usr/ports/INDEX-5。 INDEX 是對(duì)照 ports 所有相依等資訊的對(duì)照表,若長(zhǎng)期未更新的話,會(huì)導(dǎo)致p2008-09-08
- 安裝 packages 目前 FreeBSD 的 packages 是由 .tgz 所打包。如果想安裝一個(gè) packages ,可使用 pkg_add,如安裝一個(gè) joe 的 tgz: pkg_add joe-{version}.tgz2008-09-08