IPTABLES 軟防火墻
防火墻是做什么的:
在生活中顧名思義防火墻即是為了防止火勢、火情蔓延而設立的一道屏障,那么這道屏障在設置在那里后就可以保障內外兩地將無情火分隔,保證我的內地不受外地的火情影響,從而安全的生活下去;查看下圖幫助理解防火墻;
圖1-1
圖1-1可以看出當數據流量從外網主機訪問內網主機時,因為網絡中有一道防火墻存在,而組織了惡意攻擊,并且將數據包直接丟棄在門外,這就是防火墻了;
在網絡環境中都有哪些防火墻 :
我們可以把iptables叫做防火墻;因為防火墻有兩種,分為硬件防火墻和軟防火墻;
硬件防火墻就是一個網絡設備,比如CISCO公司生產的ASA系列產品就屬于硬件防火墻了,那么軟件防火墻呢,軟件防火墻即是將防火墻的功能集成到系統之上,例如windos的防火墻,linux的iptables,這些都屬于軟件防火墻,但是我們稱軟件防火墻叫做軟防火墻;本文檔中只介紹軟防火墻iptables;
iptables和netfilter的關系:
這是第一個要說的地方,Iptables和netfilter的關系是一個很容易讓人搞不清的問題。很多的知道iptables卻不知道netfilter。其實iptables只是Linux防火墻的管理工具而已,位于/sbin/iptables。真正實現防火墻功能的是netfilter,它是Linux內核中實現包過濾的內部結構。
iptables的實現:
iptables是集成在linux發行版本內核中的一個IP包過濾系統,以數據包過濾的方式來決定數據包的留去,怎么定義呢;通過表單查詢方式;在iptables中默認有以下幾表,表下面分為幾個鏈,鏈下面分了幾個2個規則:
表:filter、nat、mangle、raw
鏈:(filter的鏈)INPUT、OUTPUT、FORWARD
規則:ACCEPT、DROP
INPUT鏈:從別的主機訪問我的主機才被INPUT鏈匹配
OUTPUT鏈:從我的主機訪問別的主機才被OUTPUT鏈匹配
FORWARD鏈:經過我的主機才被FORWARD鏈匹配
把他們理解在一個平面上是這樣的:
filter表 |
|||||
INPUT鏈 |
ACCEPT/DROP規則 |
||||
ACCEPT |
Tcp |
1.1.1.1 |
1.1.1.2 |
23 |
23 |
OUTPUT鏈 |
ACCEPT/DROP規則 |
||||
規則 |
協議 |
源ip |
目ip |
源端口 |
目端口 |
FORWARD鏈 |
ACCEPT/DROP規則 |
||||
ACCEPT |
Tcp |
1.1.1.2 |
1.1.1.1 |
23 |
23 |
表1-1
同表1-1表示所示:這張表中設定了兩個規則;
當數據流量進入linux,linux會將數據包給到iptables,讓iptables進行解封數據包封裝,得出數據包中的源ip地址、目ip地址、源端口、目端口,進行對iptables的表進行比對;
舉例:
主機A的ip地址1.1.1.1 向主機2的ip地址1.1.1.2發送了一個telnet連接,數據包格式大概為:
源IP |
目ip |
協議 |
源端口 |
目端口 |
1.1.1.1 |
1.1.1.2 |
Tcp |
23 |
23 |
表1-2
在主機2中,Iptables解封數據包得出大概得出表1-2內容,獲取到這些基本信息后,對比iptables表單,這表單中有四個表,這里查看filter表,這個表中有三個鏈,因為這里是主機1發送給我的數據包,是進入主機的數據包,所以從INPUT這個進入鏈來查看規則;這些源ip,目ip能被iptables的filter表單INPUT鏈的規則中的項所匹配后,才允許放行,缺一不可;
源IP |
目ip |
協議 |
源端口 |
目端口 |
1.1.1.2 |
1.1.1.1 |
Tcp |
23 |
23 |
表1-3
數據包講究有去有回,在主機1的數據包到達主機2后,主機2需要將數據包返回給主機1,當返回主機1的時候數據包源目發生該表,如圖1-3
所以在iptables的filter表中將由兩條規則;
Iptables的配置
Itables –t filter –P INPUT DROP
-t:指明表單
-P:指明哪個鏈
#指明filter表的INPUT鏈默認規則修改為DROP
Itables –t filter –P OUTPUT DROP
#指明filter表的OUTPUT鏈默認規則修改為DROP
Iptables –t filter –A INPUT –p tcp –s 1.1.1.1 –d 1.1.1.2 –sport 23 –dport 23 –j ACCEPT
-p:指明協議所用tcp協議
-s:指明表中匹配項的源端口地址
-d:指明表中匹配項的目的端口地址
–sport:指明匹配項的源端口地址
–dport:指明匹配項的目端口地址
-j:指明若數據包被這條規則所匹配后是ACCEPT放行還是DROP丟棄
#設置filter表中的INPUT鏈中匹配到源ip為1.1.1.1目ip為1.1.1.2的telnet數據允許放行
Iptables –t filter –A OUTPUT –p tcp –s 1.1.1.2 –d 1.1.1.1 –sport 23 –dport 23 –j ACCEPT
#設置filter表中的OUTPUT鏈中匹配到源ip為1.1.1.2目ip為1.1.1.1的telnet數據允許放行
-m:指明所匹配項所用的模塊
原創文章,作者:system,如若轉載,請注明出處:http://www.www58058.com/66344