【78 FreeBSD連載:設(shè)置和使用ipfw/natd】net.inet.ip.forwarding: 0 -> 1ipfw過濾規(guī)則
IPFIREWALL的過濾規(guī)則是由ipfw命令來設(shè)置的,例如下面的規(guī)則允許所有127.0.0.1的數(shù)據(jù)傳輸 。
# /sbin/ipfw add 1000 pass all from 127.0.0.1 to 127.0.0.1ipfw命令中,首先指定對這個規(guī)則的處理方式,ipfw add為向內(nèi)核中的過濾規(guī)則中添加,此外,ipfw delete用于刪除一條規(guī)則,ipfw list用于顯示當(dāng)前定義的所有過濾規(guī)則,ipfw flush將清除所有的過濾規(guī)則,而ipfw file用于從文件file中讀取定義的過濾規(guī)則 。
此外,ipfw定義的規(guī)則都有自己的序號,其序號可以在處理方式之后指定,如ipfw delete 1000就是刪除第1000條過濾規(guī)則,內(nèi)核中可以同時支持65535條過濾規(guī)則 。有時可以不使用規(guī)則的序號,那么ipfw就處理當(dāng)前規(guī)則,而處理過一次規(guī)則之后,就立即將當(dāng)前規(guī)則序號增加100,這樣就對于添加過濾規(guī)則時十分方便,不必指定序號,ipfw add將每隔100添加一條過濾規(guī)則 。
每個過濾規(guī)則中,要首先給出這條規(guī)則的處理指令,allow指令(或者使用同義詞pass, permit,accept)為許可某類數(shù)據(jù)包通過;deny指令(或同義詞drop)為不允許某類數(shù)據(jù)包通過,將該類數(shù)據(jù)包丟棄;reject指令與deny指令有所不同,但它不是簡單的將數(shù)據(jù)包丟棄,而是在丟棄原有數(shù)據(jù)包的同時,回應(yīng)ICMP host unreachable,通知發(fā)送計算機不能通過它與目的計算機進(jìn)行通信,這樣就免得發(fā)起連接請求的計算機一直發(fā)送連接請求,造成不必要的數(shù)據(jù)流量 。使用count指令能對該類數(shù)據(jù)包進(jìn)行簡單記數(shù),這個功能主要用于對網(wǎng)絡(luò)使用進(jìn)行記帳 。log指令用于將連接發(fā)送到系統(tǒng)的日志記錄中 。
其中count和log指令與其他指令不同,其他指令都是對數(shù)據(jù)包進(jìn)行處理的指令,因此每個數(shù)據(jù)包只要匹配這個指令,就立即將數(shù)據(jù)包或轉(zhuǎn)發(fā),或丟棄,不再進(jìn)行其他處理,而count和log只是記錄指令,只是將記錄下這個數(shù)據(jù)包,而數(shù)據(jù)包本身還將繼續(xù)受到其他過濾規(guī)則的處理 。
過濾規(guī)則的第二部分是規(guī)定數(shù)據(jù)包的協(xié)議類型,指定規(guī)則是用于處理哪種數(shù)據(jù)包的,F(xiàn)reeBSD可以處理TCP,UCP,ICMP類型的數(shù)據(jù),以及在/etc/protocols文件中定義的其他數(shù)據(jù)包的類型,上例中使用all,匹配所有類型的數(shù)據(jù)包 。對于TCP或UDP,還可以在后面定義地址時指定應(yīng)用的端口號(可以使用數(shù)字或/etc/services中定義端口名字),進(jìn)一步增加過濾能力 。
過濾規(guī)則的第三部分是規(guī)定過濾規(guī)則適用的地址范圍,這可以通過指定源和目的計算機的IP地址范圍或數(shù)據(jù)包通過的網(wǎng)絡(luò)界面來進(jìn)行指定 。
用from規(guī)定數(shù)據(jù)包的來源地址,可以是主機地址或網(wǎng)絡(luò);
用to規(guī)定數(shù)據(jù)包的目的地址,可以是主機地址或網(wǎng)絡(luò);
用in或out規(guī)定數(shù)據(jù)包是流向本機,還是向外發(fā)送的;
用via、recv、xmit規(guī)定數(shù)據(jù)包經(jīng)過、接收、發(fā)送的網(wǎng)絡(luò)介面,rece可以是接收本地發(fā)送的數(shù)據(jù)包,而xmit一定是向外發(fā)送,因此應(yīng)該和out選項合用;
例如:屏蔽任何來自192.168.1.5的數(shù)據(jù)的指令為:
# ipfw add deny all from 192.168.1.5而許可來自192.168.1.0網(wǎng)絡(luò)上的遠(yuǎn)程登錄的指令為:
# ipfw add allow tcp from 192.168.1.0/24 telnet應(yīng)用過濾規(guī)則的順序是按照過濾規(guī)則的序號,從小到大進(jìn)行匹配,一旦一個數(shù)據(jù)包匹配一個過濾規(guī)則,就立即按照該規(guī)則轉(zhuǎn)發(fā)或丟棄,不再需要繼續(xù)考慮以下的規(guī)則(count和log規(guī)則除外) 。因此在前面的例子中,192.168.1.5就不能使用telnet連接,因為首先碰到的是不允許的規(guī)則,如果兩個命令次序相反,則它就能夠進(jìn)行telnet連接 。
最后一條過濾規(guī)則,第65535條規(guī)則,缺省被設(shè)為”deny all from any to any”時,為不允許對任何連接,此時在沒有定義其他規(guī)則之前,不允許所有的網(wǎng)絡(luò)連接 。但是編譯內(nèi)核時使用IPFIREWALL_DEFAULT_TO_ACCEPT選項,就能將這條規(guī)則改為”allow all from any to any”,允許轉(zhuǎn)發(fā)不符合其他規(guī)則的所有數(shù)據(jù) 。這兩種不同的設(shè)置屬于兩種不同的考慮方式,一種適用于安全性要求較高的系統(tǒng)中,缺省情況不允許外界連接,另一種主要限制部分節(jié)點的訪問,缺省情況允許任意網(wǎng)絡(luò)連接,普通系統(tǒng)使用這樣的設(shè)置更多些 。
推薦閱讀
- 66 FreeBSD連載:安裝samba
- FreeBSD Lastcomm介紹
- 一加7pro設(shè)置游戲模式的簡單操作教程
- 掌緣漫畫設(shè)置密碼操作過程
- FreeBSD 常用名詞概述
- 一加7pro中設(shè)置翻轉(zhuǎn)靜音的操作步驟
- 兩臺路由器連接方法
- 63 FreeBSD連載:集成Unix和Windows的方式
- Reno Ace中設(shè)置自由收藏的簡單操作教程
- 紅米note7設(shè)置sos緊急求助操作過程
