1. 介紹
防火墻就是實現(xiàn)Linux下訪問控制功能的,分為軟件防火墻和硬件防火墻兩種。
我們需要得定義防火墻的規(guī)則和策略去實現(xiàn)網絡的IP翰灾,數(shù)據的檢測厂画。
目前市場上常見的有3凸丸,4層的防火墻,叫做網絡層的防火墻袱院,還有7層的防火墻屎慢,其實是代理層的網關瞭稼。
對于TCP/IP的七層模型來講,我們知道第三層是網絡層腻惠,三層的防火墻會在這層對源地址和目標地址進行檢測环肘。但是對于七層的防火墻,不管你源端口或者目標端口集灌,源地址或者目標地址是什么悔雹,都將對你所有的東西進行檢查。所以欣喧,對于設計原理來講腌零,七層防火墻更加安全,但是這卻帶來了效率更低唆阿。所以市面上通常的防火墻方案益涧,都是兩者結合的。而又由于我們都需要從防火墻所控制的這個口來訪問酷鸦,所以防火墻的工作效率就成了用戶能夠訪問數(shù)據多少的一個最重要的控制饰躲,配置的不好甚至有可能成為流量的瓶頸。
2. iptables的工作機制
netfilter的五個規(guī)則鏈
- PREROUTING(路由前)
- INPUT(數(shù)據包流入口)
- FORWARD(數(shù)據包轉發(fā))
- OUTPUT(數(shù)據包流出口)
- POSTROUTING(路由后)
任何一個數(shù)據包只要經過本機臼隔,必須經過這五個鏈中的其中一個鏈
3. 防火墻策略
防火墻策略一般分為兩種:
- 通策略:必須定義誰可以進
- 堵策略:必須有身份認證嘹裂,否則不能進
當我們定義的策略的時候,要分別定義多條功能摔握,其中:定義數(shù)據包中允許或者不允許的策略寄狼,filter過濾的功能,而定義地址轉換的功能的則是nat選項氨淌。為了讓這些功能交替工作泊愧,我們制定出了“表”這個定義,來定義盛正、區(qū)分各種不同的工作功能和處理方式删咱。
我們比較常用的功能主要有三個:
- filter:定義允許或者不允許
- nat:定義地址轉換
- mangle:修改報文原數(shù)據
filter:INPUT,F(xiàn)ORWARD豪筝,OUTPUT
nat:PREROUTING痰滋,OUTPUT,POSTROUTING
mangle:PREROUTING续崖,INPUT敲街,F(xiàn)ORWARD,OUTPUT严望,POSTROUTING
iptables/netfilter(這款軟件)是工作在用戶空間的多艇,它可以讓規(guī)則進行生效的,本身不是一種服務像吻,而且規(guī)則是立即生效的峻黍。而我們iptables現(xiàn)在被做成了一個服務复隆,可以進行啟動,停止的奸披。啟動昏名,則將規(guī)則直接生效,停止阵面,則將規(guī)則撤銷轻局。
注意:規(guī)則的次序非常關鍵,誰的規(guī)則越嚴格样刷,應該放的越靠前仑扑,而檢查規(guī)則的時候,是按照從上往下的方式進行檢查的置鼻。
iptables定義規(guī)則的方式比較復雜:
格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION
-t table :filter nat mangle
COMMAND:定義如何對規(guī)則進行管理
chain:指定你接下來的規(guī)則到底是在哪個鏈上操作的
CRETIRIA:指定匹配標準
-j ACTION :指定如何進行處理
iptables命令詳解
當然可以通過man iptables來查看詳細的解釋镇饮。常用的命令選項有:
-P:設置默認策略的(設定默認門是關著的還是開著的)如:iptables -P INPUT (DROP|ACCEPT)
-F: FLASH,清空規(guī)則鏈的(注意每個鏈的管理權限)
-N:NEW 支持用戶新建一個鏈,比如:iptables -N inbound_tcp_web 表示附在tcp表上用于檢查web的箕母。
-X:用于刪除用戶自定義的空鏈
-Z:清空鏈
-A:追加
-I num : 插入储藐,把當前規(guī)則插入為第幾條
-R num:Replays替換/修改第幾條規(guī)則
-D num:刪除,明確指定刪除第幾條規(guī)則
-L:查看規(guī)則詳細信息嘶是,比如"iptables -L -n -v"