linux中的iptables服務

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,網絡地址轉換策略生效:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章