iptables (一)

Netfilter組件前端

運行在內核空間,集成在linux內核中,擴展各類網絡服務的結構化底層框架。linux

在內核中選取五個位置放了五個hook(勾子) function(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING),而這五個hook function向用戶開放。安全

而咱們常說iptables(Centos 6)和firewalld(Centos 7)只是配置Netfilter的前端工具。網絡


iptables由四個表和五個鏈以及一些規則組成併發


四個表框架

tcp

(tables)ide

工具

(chains)性能

filter

這是默認表,過濾規則表,根據預約義的規則過濾符合條件的數據包

應用場景:主機防火牆

INPUT

過濾全部目標是本機地址的數據包

FORWARD

轉發流經本機的數據包。起到轉發的做用

OUTPUT

處理全部源地址本機地址的數據包,就是處理從主機發出的數據包

nat

負責網絡地址轉換

應用場景:局域網共享上網

FREROUTING

在數據包到達防火牆時,進行路由判斷以前執行的規則,

做用是改變數據包的目的地址、目的端口等

OUTPUT

與主機流出去的數據包有關,改變主機發出數據包的目的地址

POSTROUTING

在數據包離開防火牆時進行路由判斷以後執行的規則,

做用改變數據包的源地址,源端口等。

mangle

這個表專門用於改變數據包的結構(通常改變數據包首部格式)

修改數據標記位規則表

INPUT

進入到設備自己的包

FORWARD

對路由後的數據包信息進行修改

FREROUTING

在路由以前更改傳入的包

OUTPUT

本地建立的數據包在路由以前改變

POSTROUTING

在數據包即將離開時更改數據包信息

raw

關閉NAT表上啓用的鏈接跟蹤機制,加快封包穿越防火牆速度

PREROUTING

for packets arriving via any network interface

OUTPUT

for packets  generated by local processes

1.png

五個內置鏈chain


Centos 6

表(tables

鏈(chains

INPUT

FORWARD

OUTPUT

PREROUTING

POSTROUTING

filter

O

O

O

×

×

nat

×

×

O

O

O

mangle

O

O

O

O

O

raw

×

×

O

O

×

說明:O 表示有,× 表示無。


Centos 7

表(tables

鏈(chains

INPUT

FORWARD

OUTPUT

PREROUTING

POSTROUTING

filter

O

O

O

×

×

nat

O

×

O

O

O

manale

O

O

O

O

O

raw

×

×

O

O

×

說明:O 表示有,× 表示無。


iptables工做流程


內核中數據包的傳輸過程

當一個數據包進入網卡時,數據包首先進入PREROUTING鏈,內核根據數據包目的IP判斷是否須要轉發出去

若是數據包就是進入本機的,數據包就會沿着圖向上移動,到達INPUT鏈。數據包到達INPUT鏈後,任何進程都會收到它。本機上運行的程序能夠發送數據包,這些數據包通過OUTPUT鏈,而後到達POSTROUTING鏈輸出

若是數據包是要轉發出去的,且內核容許轉發(net.ipv4.ip_forward=1),數據包就會向右移動,通過FORWARD鏈,而後到達POSTROUTING鏈輸出

1.png

一、iptables主要工做在OSI七層的2.3.4層。

二、防火牆是一層層過濾的。實際是按照配置規則的順序從上到下,從前到後進行過濾的。全部順序 很重要。

三、若是匹配上了規則,即明確代表是阻止仍是經過,此時數據包就不在向下匹配新規則了。

四、若是全部規則中沒有匹配規則,則向下進行匹配,直到匹配默認規則。通常最後的默認規則是拒絕全部。

五、防火牆的默認規則是對應鏈的全部的規則執行完之後纔會執行的(最後執行的規則)。

六、生產中根據具體狀況啓用服務。大併發的狀況不能開iptables,影響性能,iptables是要消耗CPU的,大併發的狀況下,使用硬件防火牆。

七、規則要添加在鏈chain上,才生效;添加在自定義上不會自動生效。只有Hook鉤子調用自定義鏈時才生效。


iptables添加要點


iptables規則添加時考量點

 要實現哪一種功能:判斷添加在哪張表上

 報文流經的路徑:判斷添加在哪一個鏈上

 報文的流向:判斷源和目的地址

 匹配規則:根據業務須要


規則優化

任何不容許的訪問,應該在請求到達時給予拒絕

規則在連接上的次序即爲其檢查時的生效次序

1 安全放行全部入站和出站的狀態爲ESTABLISHED狀態鏈接

2 謹慎放行入站的新請求

3 有特殊目的限制訪問功能,要在放行規則以前加以拒絕

4 同類規則(訪問同一應用),匹配範圍小的放在前面,用於特殊處理

5 不一樣類的規則(訪問不一樣應用),匹配範圍大的放在前面

6 應該將那些可由一條規則可以描述的多個規則合併爲一條

7 設置默認策略,建議白名單(只放行特定鏈接)

1) iptables -P 設置默認策略爲拒絕,不建議。由於iptables -F 連本身都沒法遠程了。悲劇。

2) 建議在規則的最後定義規則作爲默認策略


在Centos7上,iptables和firewalld只能2選一


iptables工具

iptables v1.4.7  (Centos 6)

iptables v1.4.21 (Centos 7)

參數

參數說明

保存配置

方法一:/etc/init.d/iptables save  或 service iptables save

方法二:iptables-save > /etc/sysconfig/iptables

載入配置文件

方法一:iptables-restore  < /etc/sysconfig/iptables

方法二:service iptables reload 或 service iptables restart

-n:不清除原有規則

顯示相關參數

-n

以數字的方式顯示地址或端口信息

-L

列出一個鏈或全部鏈中的規則信息

-S

以iptables-save 命令格式顯示鏈上規則

--line-number

顯示規則的序號

-v 或 -vv

顯示詳細信息

-x

顯示計數器結果的精確值,而非單位轉換後的易讀值

鏈管理相關參數

iptables -X

刪除自定義的空的規則鏈

iptables -Z

鏈的計數器清零(數據包計數器與數據包字節計數器)

iptables -N

建立新的用戶定義鏈

iptables -P

設置默認策略;對filter表中的鏈而言,其默認策略有:

ACCEPT:接受

DROP:丟棄

iptables -E

重命名自定義鏈;引用計數不爲0的自定義鏈不可以被重命名,也不能被刪除

規則管理經常使用參數(在前面加感嘆號,表示是取反)

-t 表名稱

指定配置哪一個表(4表),指定配置表名稱。

-A 鏈名稱

追加到指定鏈(鏈名稱必須大寫)默認將配置的規則插入到當前規則最後一條

-I 鏈名稱

插入相應規則策略,到指定鏈上,默認將配置的規則插入到第一條

(能夠根據規則序號插入到指定位置)

-D 鏈名稱

刪除指定的規則(能夠根據如下方法刪除

(1) 指明規則序號

(2) 指明規則自己)

-R 鏈名稱 規則編號

替換指定鏈上的指定規則編號

例:iptables -R INPUT 2

-C

檢查規則是否存在

-F

清除全部規則,不會處理默認的規則

-Z

置零計數器

iptables的每條規則都有兩個計數器

(1) 匹配到的報文的個數

(2) 匹配到的全部報文的大小之和

[!] -p 協議名稱

指定規則的協議名稱,可使用協議表明的數字表示

常見值爲all ,tcp, udp, icmp,

參看:/etc/protocols

-j 動做

匹配數據包後的動做    

ACCEPT

容許

DROP

丟棄(沒有響應)推薦使用

REJECT

拒絕(迴應請求者明確的拒絕)

MASQUERADE

假裝上網時使用

SNAT

共享地址上網

DNAT

目的地址改寫

RETURN

返回調用鏈,繼續判斷其餘規則

REDIRECT

端口重定向

MARK

作防火牆標記

LOG

記錄日誌,dmesg

[!] -i

報文流入的接口;只能應用於數據報文流入環節,

只應用於INPUT、FORWARD、PREROUTING鏈

[!] -o

報文流出的接口;只能應用於數據報文流出的環節,

只應用於FORWARD、OUTPUT、POSTROUTING鏈

[!] -s

指定源IP地址或源網段信息

address[/mask][,...]

[!] -d

指定目標IP地址或目標網段信息

address[/mask][,...]

擴展參數

須要加載擴展模塊(/usr/lib64/xtables/*.so),方可生效

查看幫助 man iptables-extensions

隱式擴展

在使用 -p 選項指明瞭特定的協議時,無需再用-m選項指明擴展模塊的擴展機制,

不須要手動加載擴展模塊

TCP/UDP協議的擴展選項

--dport

匹配報文目標端口,可爲端口範圍

--sport

匹配報文源端口,可爲端口範圍

顯式擴展

必須使用-m選項指明要調用的擴展模塊的擴展機制

要手動加載擴展模塊

-m 模塊

表示加載擴展功能的參數(能夠加載擴展參數)

multiport

以離散方式定義多端口匹配,

最多指定15個端口

iprange

指明連續的ip地址範圍

(但通常不是整個網絡)

icmp

使用icmp的擴展

mac

指明源MAC地址

time

根據將報文到達的時間與指定的時間範圍

進行匹配

string

對報文中的應用層數據作字符串模式匹配檢測

connlimit

根據每客戶端IP作併發鏈接數數量匹配

可防止CC(Challenge Collapsar挑戰黑洞)***

limit

基於收發報文的速率作匹配

state

根據」鏈接追蹤機制「去檢查鏈接的狀態,

較耗資源

示例請看iptables (二)

更多說明:

man 8 iptables        iptables-extensions(8) (Centos 7纔有)

相關文章
相關標籤/搜索