作者:marple_feng 出處:Unix愛好者家園unix-cd.com
在網(wǎng)上找了很長時間,發(fā)現(xiàn)相關文件很少,但最后還是基本實現(xiàn)了這個功能:
下載地址:
ftp://ftp.sco.com/pub/TLS/tls709.tar.Z
ftp://ftp.sco.com/pub/TLS/tls709.ltr
第一步:按照tls709_ltr.htm文件進行安裝:
INSTALLATION:
- Place tls709.Z in /, then run the following commands:
# cd /
# uncompress tls709.Z
# tar xvf tls709
This will install the files:
/tmp/ipfilter/README
/tmp/ipfilter/ip/space.c
/tmp/ipfilter/ip/Driver.o
/tmp/ipfilter/tcp/Driver.o
/tmp/ipfilter/tcp/space.c
/tmp/ipfilter/ipl-bin/ipf
/tmp/ipfilter/ipl-bin/ipfstat
/tmp/ipfilter/ipl-bin/ipmon
/tmp/ipfilter/ipl-bin/ipnat
/tmp/ipfilter/ipl-driver/Driver.o
/tmp/ipfilter/ipl-driver/Master
/tmp/ipfilter/ipl-driver/Node
/tmp/ipfilter/ipl-driver/System
/tmp/ipfilter/ipl-man/ipf.4
/tmp/ipfilter/ipl-man/ipf.5
/tmp/ipfilter/ipl-man/ipf.8
/tmp/ipfilter/ipl-man/ipfilter.5
/tmp/ipfilter/ipl-man/ipfstat.8
/tmp/ipfilter/ipl-man/ipftest.1
/tmp/ipfilter/ipl-man/ipl.4
/tmp/ipfilter/ipl-man/ipmon.8
/tmp/ipfilter/ipl-man/ipnat.1
/tmp/ipfilter/ipl-man/ipnat.4
/tmp/ipfilter/ipl-man/ipnat.5
/tmp/ipfilter/ipl-man/mkfilters.1
- Make backup copies of the 'ip' and 'tcp' driver files in /etc/conf/pack.d,
then copy the new versions from /tmp/ipfilter to their respective locations
under /etc/conf/pack.d:
ip/Driver.o
ip/space.c
tcp/Driver.o
tcp/space.c
- Add the IP Filter driver ("ipl"):
cd /tmp/ipfilter/ipl-driver
/etc/conf/bin/idinstall -k -a ipl
- Copy the IP Filter configuration binaries:
cd /tmp/ipfilter/ipl-bin
cp * /etc
- Relink the kernel by running '/etc/conf/cf.d/link_unix -y', and reboot
your system.
//以上都是照著做,沒什么特殊的。
See the man pages in /tmp/ipfilter/ipl-man for configuration information.
//這個偶技術太差,看不懂。
Also see the IP Filter home page: http://coombs.anu.edu.au/~avalon
And the IP Filter mailing list: mailto://majordomo@coombs.anu.edu.au
with "subscribe ipfilter" in the body
第二步:然后又在網(wǎng)上找到在freebsd上實現(xiàn)ipf的文章,又借鑒了一下:
原文:為設置和使用ipfilter ( http://www.sina.com.cn 2000
年1月20日 15:30 王波 )
雖然ipfw/natd已經(jīng)是相當強大的網(wǎng)絡地址轉換及防火墻系統(tǒng),然而它還是有
一定的缺點存在。其中最重要的一個缺點是natd是使用守護進程的方法來進行地
址轉換,因為它沒有運行在內核中,而是通過divert socket 來和內核通信,這
種方式雖然比較靈活,但效率顯然要低一些。
另外,natd的功能還不能滿足有些要求,natd能做靜態(tài)地址轉換和使用一個
偽裝地址為多個內部地址服務,但其不能從一個給定的地址池中,為內部地址自
動分配IP地址。畢竟natd是一個較早的網(wǎng)絡地址轉換工具,當前的發(fā)展已經(jīng)比較
遲緩。但是由于ipfw是FreeBSD系統(tǒng)的一部分,并且過濾和地址轉換是由不同的部
分來完成的,結構清晰,因此對于大部分情況都很適合,因此一般仍應使用ipfw
/natd。
如果ipfw/natd不能滿足使用者的需要,能避免ipfw/natd缺點的另一個網(wǎng)絡
地址轉換和數(shù)據(jù)包過濾的工具是ipfilter。雖然FreeBSD是其支持的主要系統(tǒng),但
它其實是一個支持多平臺的獨立軟件,不僅能運行在FreeBSD上,也能運行在其他
多種Unix系統(tǒng)中。由于它被包括進FreeBSD基本系統(tǒng)中,因此在FreeBSD 下配置i
pfilter同樣也非常輕松。
由于ipfilter與ipfw同為在內核級對IP數(shù)據(jù)包進行處理的系統(tǒng),因此他們相
互沖突,不能同時并存在一個內核內,否則內核的TCP/IP功能就不能正常執(zhí)行。
為了使用ipfilter,就需要重新定制內核,刪除所有 IPFIREWALL的設置,而添加
IPFILTER的設置。
#options IPFIREWALL
#options IPDIVERT
options IPFILTER
options IPFILTER_LOG
當前使用-C參數(shù)用于清除現(xiàn)有的轉換規(guī)則,-f用于從配置文件中讀取轉換規(guī)
則。設置了轉換規(guī)則之后,就可以使用-l參數(shù)查看當前設置的轉換規(guī)則和已經(jīng)激
活的轉換關系。
# ipnat -l
List of active MAP/Redirect filters:
map fxp1 192.168.3.0/24 -> 202.102.245.0/26 portmap tcp/udp 10000:65
000
map fxp1 192.168.3.0/24 -> 202.102.245.0/26
rdr fxp1 202.102.245.60/32 port 21 -> 192.168.3.2 port 21 tcp
List of active sessions:
RDR 192.168.3.2 21 202.102.245.60 21 [202.102.245.25
35635] 863
992 0 407
MAP 192.168.3.2 1024 202.102.245.60 10000 [202.102.245.25
9999] 8639
93 0 1f09
設置包過濾
ipfilter也能很好的完成包過濾任務,它的過濾規(guī)則相當復雜。下面為一些
簡單的過濾設置例子,一般這些過濾規(guī)則可以保存在/etc/ipf.conf文件中。
block in log quick all with short
block in log quick all with ipopts
block參數(shù)用于屏蔽符合過濾條件的數(shù)據(jù)包,in代表數(shù)據(jù)包的方向,標識從網(wǎng)
絡上或其他網(wǎng)絡界面上發(fā)送到某個網(wǎng)絡界面上的數(shù)據(jù)包,log用于指出該規(guī)則過濾
的數(shù)據(jù)包應被記錄下來,quick指示ipfilter進行快速過濾處理,符合這個規(guī)則的
數(shù)據(jù)包將立即丟棄,all with short標識不完整的IP數(shù)據(jù)包,數(shù)據(jù)包的長度太小
就沒有包含合法的源地址或目標地址,從而無法被ipfilter識別,all with ipo
pts標志本身帶有路由數(shù)據(jù)的IP數(shù)據(jù)包,這些IP數(shù)據(jù)包由于包含自己的路由信息,
因此可能會帶來網(wǎng)絡安全問題。
這兩句設置用于過濾可能會帶來安全問題的短數(shù)據(jù)包或具備路由信息的數(shù)據(jù)
包。
pass in on fxp0 all
pass out on fxp0 all
pass in on lo0 all
pass out on lo0 all
pass用于指定數(shù)據(jù)包可以通過,out與in相反,標識從網(wǎng)絡界面向網(wǎng)絡上或其
他網(wǎng)絡界面發(fā)送的數(shù)據(jù)包,而on fxp0或on lo0標識進行處理的網(wǎng)絡界面。這里的
設置允許內部網(wǎng)絡界面、loopback網(wǎng)絡界面可以自由發(fā)送和接收數(shù)據(jù)包。
block in log on fxp1 all
block out log on fxp1 all
為了安全起見,除了明確指定可以發(fā)送和接收的數(shù)據(jù)包之外,屏蔽其余的外
部網(wǎng)絡界面進行數(shù)據(jù)發(fā)送和接收。
block in log quick on fxp1 from 10.0.0.0/8 to any
block in log quick on fxp1 from 192.168.0.0/16 to any
block in log quick on fxp1 from 172.16.0.0/12 to any
block in log quick on fxp1 from 127.0.0.0/8 to any
上面的設置明確屏蔽具備內部網(wǎng)絡地址的數(shù)據(jù)包被轉發(fā)到外部網(wǎng)絡去,由于
ipfilter中地址轉換和包過濾是在同一個系統(tǒng)中完成的,因此不必擔心它們會發(fā)
生沖突問題。
pass out log on fxp1 proto icmp all keep state
pass out log on fxp1 proto tcp/udp from any to any keep state
proto用于指定不同的協(xié)議,通?梢栽O置為tcp, udp和icmp。這兩行設置允
許TCP, UDP, ICMP協(xié)議的數(shù)據(jù)包可以向外發(fā)送出去,keep state用于標識建立TC
P連接之后的數(shù)據(jù)包,或者ICMP、UDP的回應數(shù)據(jù)包,以允許回應數(shù)據(jù)包能發(fā)送回
內部網(wǎng)絡。
pass in quick on fxp1 proto tcp from any to any port = ftp-data keep s
tate
pass in quick on fxp1 proto tcp from any port = ftp-data to any port >
1023 keep state
ftp中將打開額外的端口以進行數(shù)據(jù)傳輸,這兩個設置允許對ftp數(shù)據(jù)端口的
數(shù)據(jù)包能夠進行轉發(fā)。
block return-rst in log on fxp1 proto tcp from any to any flags S/SA
block return-icmp(net-unr) in log on fxp1 proto udp from any to any
為了不讓ipfilter的記錄發(fā)送到/var/log/messages等其他日志文件中,可以
在/var/log/messags設置行中添加一個記錄local.none。
此后,使用touch創(chuàng)建ipfilter.log文件,并重新啟動syslogd,就能在/var
/log/ipfilter.log中正確記錄過濾記錄了。當一切都設置完畢之后,就能將ipf
和ipnat這兩個設置命令放入系統(tǒng)啟動文件rc.local,以便每次系統(tǒng)自動啟動都能
執(zhí)行防火墻設置。
第三步:我斷章取意,在/etc 下新建了ipf.conf文件,
block in log quick all with short
block in log quick all with ipopts
block in log quick all with frag
block in log quick all with opt lsrr
block in log quick all with opt ssrr //以上表示將不合格的數(shù)據(jù)攔截。
pass out on net1 all
pass in on net1 all //表示net1網(wǎng)卡上的數(shù)據(jù)都可以通過
pass in quick on net1 from 192.168.1.0/24 to any
pass in quick on net0 proto tcp from any to any port = 80 flags S/SA keep state
pass in quick on net0 proto tcp from any to any port = 23 flags S/SA keep state //表示只允許net1網(wǎng)卡80和23斷口的數(shù)據(jù)通過
block in quick on net0 all //net1網(wǎng)卡上其他數(shù)據(jù)都攔截。
第四步:在/etc/rc2.d/目錄中創(chuàng)建 S99ipf文件,
ipf -F a
ipf -f /etc/ipf.conf
并執(zhí)行 /etc/S99ipf
第五步:用ipfstat命令查看
其他的nat,日志我都沒有裝。怎么樣,高手給點意見。