netfilter/iptables(簡稱爲iptables)組成Linux平臺下的包過濾防火牆,與大多數的Linux軟件一樣,這個包過濾防火牆是免費的,它可以代替昂貴的商業防火牆解決方案,完成封包過濾、封包重定向和網絡地址轉換(NAT)等功能。
iptables採用“表”和“鏈”的分層結構,在linux中iptables主要有三張表五條鏈:
三張表即filter表、nat表、mangle表,分別用於實現包過濾,網絡地址轉換、包重構(修改)功能
filter表有三個鏈:INPUT、FORWARD、OUTPUT
作用:過濾數據包
Nat表有三個鏈:PREROUTING、POSTROUTING、OUTPUT
作用:用於網絡地址轉換(IP、端口)
Mangle表有五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改數據包的服務類型等
其中每條鏈的意思分別爲:
INPUT鏈:進來的數據包應用此規則鏈中的策略
OUTPUT鏈:出去的數據包應用此規則鏈中的策略
FORWARD鏈:轉發數據包時應用此規則鏈中的策略
PREROUTING鏈:對數據包作路由選擇前應用此鏈中的規則
(記住!所有的數據包進來的時侯都先由這個鏈處理)
POSTROUTING鏈:對數據包作路由選擇後應用此鏈中的規則
(所有的數據包出去的時侯都先由這個鏈處理)
管理表和鏈的命令格式如下:
iptables [-t 表名] 命令選項 [鏈名] [條件匹配] [-j 目標動作或跳轉]
說明:表名、鏈名用於指定 iptables命令所操作的表和鏈;命令選項用於指定管理iptables規則的方式(比如:插入、增加、刪除、查看等;條件匹配用於指定對符合什麼樣 條件的數據包進行處理;目標動作或跳轉用於指定數據包的處理方式(比如允許通過、拒絕、丟棄等)
處理包的三種方式:
ACCEPT:允許數據包通過
DROP:直接丟棄數據包,不給任何迴應信息
REJECT: 拒絕數據包通過,會給數據發送端一個響應的信息
常用相關參數有:-A 在指定鏈的末尾添加一條新的策略
-D 刪除指定鏈中的某一條策略,可以按規則序號和內容刪除
-I 在指定鏈中插入一條新的策略,默認在第一行添加
-E 重命名用戶定義的鏈,不改變鏈本身策略
-F 清空所有策略
-N 新建一條用戶自己定義的鏈
-X 刪除指定表中用戶自定義創建的鏈(對默認鏈無效)
-P 設置指定鏈的默認策略
下面簡單介紹一下一些iptables命令的使用:
1.如圖,輸入iptables -nL 可以看到filter表中的默認策略:
2.輸入service iptables save 可將當前的策略自動保存到/etc/sysconfig/iptables目錄下:
3.cat /etc/sysconfig/iptables 可以看到保存的策略:
4.iptables -F 可清除當前策略,再用iptables -nL查看已經沒有策略了:
5.iptables -P INPUT DROP 可將INPUT鏈的默認策略修改爲DROP:
6.iptables -P INPUT ACCEPT 將INPUT鏈的默認權限改爲允許
然後添加INPUT鏈下的策略: iptables -A INPUT -p tcp --dport 22 -s 172.25.254.121 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
表示只允許ip爲172.25.254.121的主機可以使用SSH遠程登陸本機
ip爲172.25.254.121的主機在輸入ip172.25.254.221主機的root用戶密碼後可以登陸:
ip爲172.25.254.88的主機無法使用ssh服務遠程登陸ip爲172.25.254.221的主機:
7.iptables -D INPUT 1 刪除INPUT鏈中的第一條策略,可以看到第一條策略已經被刪除:
8.iptables -N WESTOS 自定義添加一條新鏈WESTOS
iptables -X WESTOS 刪除自定義添加的鏈WESTOS
網絡地址轉換和ip僞裝功能的實現設定:
1.首先,給ip爲172.25.254.221的主機添加一塊網卡eth1,設定ip爲172.25.21.221:
將之前ip爲172.25.254.121的主機ip改爲172.25.21.121,網關設置爲172.25.21.221:
ip爲172.25.254.88的主機不做更改
2.在雙網卡主機上面寫入iptables策略,如圖所示:
POSTROUTING鏈下的策略表示:當ip爲172.25.21.121的主機在使用ssh服務遠程連接ip爲172.25.254.88主機時,ip僞裝爲
172.25.254.221(ip172.25.254.88的主機看到的是ip172.25.254.221主機登陸痕跡):
PREROUTING鏈下的策略表示:當ip爲172.25.254.88的主機使用ssh服務遠程連接ip爲172.25.254.221的主機時,被ip爲172.25.254.221
的主機通過路由轉換功能轉到ip爲172.25.21.121的主機上(ip172.25.254.88的主機雖然連接的是172.25.254.221,但實際看到是ip172.25.21.121):
然後編輯文件:vim /etc/sysctl.conf 輸入下圖字符,打開內核路由功能:
sysctl -p 將更改刷新:
3.測試:POSTROUTING鏈下的策略
ip爲172.25.21.121的主機使用ssh服務成功連接172.25.254.88的主機
然後在ip爲172.25.254.88的主機上查看登陸痕跡,看到的是172.25.254.221
說明ip僞裝策略設置生效
接着測試PREROUTING鏈下的策略
ip172.25.254.88的主機使用ssh服務遠程登陸ip172.25.254.221的主機,輸入密碼登陸成功後,看到的主機
ip爲172.25.21.121,網絡地址轉換策略生效: