IPTables
實現包過濾,
基於硬件實現的防火牆
主機防火牆:工作在主機邊沿,網卡上
netfilter,就是一內核空間的framework即框架
iptables,用戶空間的管理規則的工具
防火牆根據工作的層不同分爲:
⑴包過濾型:根據OSI模型中2,3,4層首部信息特徵進行處理的。封閉端口,提取地址
①簡單包過濾 靜態
⑵應用層網關防火牆
默認的5種規則鏈
INPUT:處理入站數據包
FORWARD:處理轉發數據包
OUTPUT:處理出站數據包
PREROUTING鏈:在進行路由選擇前處理數據包
POSTROUTING鏈:在進行路由選擇後處理數據包
爲了代理內網用戶上網:源地址轉換,在路由決策後,要離開網卡之前做。而目標地址轉換,在路由決策前做。
四種功能:每種功能代表對數據包的處理機制不同。有四個表:
①filter過濾 內含的鏈:INPUT,FORWARD,OUTPUT
②nat地址轉換 OUTPUT,PREROUTING,POSTROUTING
③mangle對數據包的首部特徵做更改,添加標記等。 含有5條鏈。
④raw
自上而下做檢查,若被第一條鏈匹配到,則直接處理;沒被匹配到,就向下繼續匹配……直到第五條鏈,如果都沒被匹配到,就由默認規則鏈處理。(定義規則鏈時要注意,要把限制範圍小的鏈放上面)
iptables語法結構:
iptables [–t table] command CHAIN [num] criteria -j target
-t table指定修改的表,
對鏈做什麼管理,有以下子命令:
rules(管理規則的命令):
-A追加規則,在鏈的尾部加入規則
-I [num]插入規則
-D [num]刪除規則
-R [num]替換規則
chains(管理鏈的命令):
-N chain_name 新建一條鏈
-X chain_name 用來刪除用戶自定義的空鏈
-F [chain_name] 用來清空所有的規則鏈
-P chain_name {DROP|ACCEPT} 對某條鏈設置默認策略
-Z chain_name 清零計數器
-E oldchain_name newchain_name重命名用戶自定義的規則鏈
view(顯示規則的命令):
-L (list)
-v,-vv,-vvv v越多顯示的越詳細
-n 以數字形式而不是主機名顯示信息
--line-numbers 給每條規則編號後顯示
criteria(匹配條件):
l 通用匹配
n -s,--src,--source用來匹配源地址
n -d,--dst 用來匹配目標地址
n -i [interface]用來匹配數據包的流入接口
n -o [interface]用來匹配數據包的流出接口
n -p {tcp|udp|icmp}用來匹配協議
l 擴展匹配
n -p tcp
u --sport
u --dport
u --tcp-flags syn,ack,rst syn 檢查表中每位必須爲0,檢查syn必須爲1。--syn就可實現此目的
(SYN,ACK,FIN,RST,URG,PSH)
n -p udp
u --sport
u --dport
n -p icmp
u -icmp-type 進來是8,出去是0
-m {state|multiport|limit|string|…}
--state
--ports
tcp 21命令連接端口,
tcp 20數據連接
控制連接沒打開時就不會打開數據連接
NEW:新建立的連接
ESTABLISHED:響應之前連接的
RELATED:一個協議的兩個連接之間
INVALID:無法識別的
若主機中有兩塊網卡,實現轉發功能的話要先打開主機的路由轉發功能。
在firewall上做日誌,在做規則之前做日誌,只記錄請求的不記錄相應的。
eg. iptables -I FORWARD 1 -s 192.168.0.0/24 -d 192.168.10.2 -p tcp --dport 80 -j LOG –log-prefix “Web Server:”
在做firwall的源地址轉換時,既要在nat表中的POSTROUTING鏈上定義,還要在filter表中的FORWARD鏈上定義。
-j 處理辦法
-s,-d不指定時就是所有地址