中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iptables 基本配置詳解

發布時間:2020-07-17 16:01:13 來源:網絡 閱讀:548 作者:yankai2o16 欄目:安全技術

什么是防火墻

       隔離本地網絡與外界網絡之間的一道防御系統,通俗的說,防火墻就是防火的墻,主要目的就是隔離火并建立安全區域,所以防火墻對于互聯網或計算機而言可能是工作在主機或網絡的邊緣(計算機的邊緣可能是一塊網卡,而網絡邊緣可能是路由),對于進出數據的報文事先定義好的規則中的標準進行檢查、監控,一旦符合標準的話,我們就采取由這個規則定義的處理動作,我們稱為主機防火墻或網絡防火墻。

   Linux的網絡防火墻:


     有兩組框架,實現防火功能的主要是netfilter,

       Netfilter:是內核中的過濾框架,是網絡過濾器

       Iptables:是一個生產防火規則的并且能夠將其附加在netfilter上,真正實現數據報文過濾的工具,當然這只是其中的一種功能,NAT、mangle等規則生成的工具。而它本身并不能防火,真正起到防火墻功能的是規則,規則只有放到netfilter上才能生效。規則包括處理標準和處理辦法防火墻可以是硬件也可以是軟件,無論硬件還是軟件需要定義規則之后,讓其生效,才能真正工作起來工作域  
netfilter工作在內核空間(可以放規則的位置),iptables工作在用戶空間,可以寫規則,通過系統調用將規則放置在與它對應的位置上,只有生效以后這個應用程序就沒有用處了
1.   鏈到表的演化

ipfw-->ipchains-->iptables

       每一個鏈看做每一列的演化

iptables/netfilter:網絡過濾器

       netfiler:kernel中啟用的時才具有作用

              hookfunction(鉤子函數):或稱為鏈

              以理解為把某一個目標端口進程勾選出來,進行過濾規則的匹配

wKioL1ce-3qysfRNAACDSFO5xZw518.jpg

wKiom1ce-uOjVVwnAAcgYH62j1I503.png

[擴展]:使用參考,使用man,對于iptables來講,是一個多模塊的命令,可以使用maniptables;man iptables-extensions
iptables

防火墻功能的實現主要根據其中的一些規則,而這些規則的實現就是由iptables這個工具來寫入的
報文流向

(1)  從外部到主機內部—>流入

(2)  本機內部的報文到外面的—>流出

(3)  報文的轉發

只要有報文經過,它必須要從其中的一個位置經過,而路由表中的目標IP可以判定它應該走哪條路這叫路由決策,路由決策發生在一個報文被本機的網卡接收進來以后,送到TCP/IP協議棧上的那一刻就要做出路由決策。上面三種流向是工作在TCP/IP協議棧上的三個鉤子函數,任何一個報文經過其中的任何一個流向時都會被檢查一遍如果被其中的某條規則匹配到,就會執行其中的處理方法

hook:鉤子函數,自上而下逐個檢查。五個規則:
   prerouting:路由之前
   input:本地進來
   output:本地出去
   forward:轉發
   postrouting:路由之后
而這每個規則組合起來就是一個鏈,叫規則鏈,每一個鉤子對應的函數都應該有一個鏈
五個規則鏈:
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING

wKiom1ce-3CydLNNAAFPBoC38FU548.jpg
iptables結構:

wKiom1ce-7iicyKiAABrr3KcSVA460.jpg
Iptables內置鏈與自定義鏈

內置鏈:(大寫):對應于一個鉤子函數

       PREROUTING,INPUT,FORWARD,OUTPUT, POSTROUTING

自定義鏈:

       可以使用自定義的鏈,但只能在被調用時才能發揮作用,而且如果沒有被自定義鏈中的任何規則匹配,還應該有返回機制;用戶可以刪除自定義的空鏈,默認鏈無法刪除。每一條規則 都有兩個內置的計數器,一個記錄被匹配的報文個數,另一個記錄被匹配的報文大小之和 ;
Iptables規則的運作模式

wKiom1ce--KgC8JxAADDIH1CWGQ393.jpg
路由功能發生的時刻

報文進入本機后:

              判斷目標主機是否為本機?

                     是:input

                     否:forward

wKioL1ce_NmQOQ1cAABvjZOtC4E327.jpg

報文離開本機之前:

       判斷經由哪一個接口送往下一跳?
Iptables的規則:

組成部分:根據規則的匹配條件嘗試匹配報文,對匹配成功的報文根據規則定義的處理動作做出處理

       匹配條件:

              基本匹配:

                     擴展匹配:

              處理動作:

                     基本處理動作

                     擴展處理動作

                     自定義處理動作
iptables添加規則時的考量點:

1、       要實現何種功能:判斷添加規則至哪個表上

2、       報文流經的位置:判斷添加規則至那個鏈上
IP首部

wKiom1ce_D3SetbRAADxM52lB10026.jpg
Iptables規則實現命令
防火墻開機處理模式

不同版本系統上的開機自啟方式

       Centos7

       ~]# Systemctl stop firewalld.service

       ~]# Systemctl disabled fireealld.service

       Centos6

       ~]# Service iptables stop

       ~]# Chkconfig iptables off
Iptables規則命令語法

命令格式:iptables [-ttable] SUBCOMMAND chain(鏈) [matches…] [-j target]

參數:                    

–t table:表示要操作的表

四個:Raw,mangle,nat,filter

SUBCOMMAND:操作的命令

Chain:要操作的鏈

Match:匹配的條件,可以是多個

-j:指定匹配到以后的執行動作

       鏈管理:

              -N:new 新增一條自定義鏈

                     Iptables –N testchain(添加一個空鏈(引用計數為0))

                     Iptables –nL查看

[root@bogon ~]# iptables -Ntestchain

[root@bogon ~]# iptables -nL

ChainINPUT (policy ACCEPT)

target     prot opt source               destination        

ChainFORWARD (policy ACCEPT)

target     prot opt source               destination        

ChainOUTPUT (policy ACCEPT)

target     prot opt source               destination        

Chaintestchain (0 references)

target     prot opt source               destination   

-X:delete,刪除自定義的空鏈

[root@bogon ~]# iptables -Xtestchain

[root@bogon ~]# iptables -nL

ChainINPUT (policy ACCEPT)

target     prot opt source               destination        

ChainFORWARD (policy ACCEPT)

target     prot opt source               destination        

ChainOUTPUT (policy ACCEPT)

target     prot opt source               destination    

-P:policy,<鏈名><動作>設置某個鏈的默認規則

       默認的策略有以下幾種:

              ACCEPT:接受

              Drop:丟棄

              Reject:拒絕

[root@localhost ~]# iptables-t filter -P FORWARD DROP

設置filter表的默認規則是DROP

       注意:當數據包沒有被規則列表里的任何規則匹配到時,按此默認規則的處理,動作前面不能加-j,這也是唯一一種匹配動作前面不加-j的情況

[擴展]如果把Input為drop的話遠程連接不上,解決方案:寫一個@定時(周期)計劃,清除規則

現象:全部改為drop遠程以及ping都連接不上但是22號ssh端口仍然在監聽

-E:rename 重命名自定義的未被引用(引用計數為0)的鏈

[root@bogon ~]# iptables -Ntestchain

[root@bogon ~]# iptables -Etestchain mychain

[root@bogon ~]# iptables -nL

ChainINPUT (policy ACCEPT)

target     prot opt source               destination        

ChainFORWARD (policy ACCEPT)

target     prot opt source               destination        

ChainOUTPUT (policy ACCEPT)

target     prot opt source               destination        

Chainmychain (0 references)

target     prot opt source               destination        

[root@bogon ~]#

規則管理:

-A :append 追加一條規則,(默認是放在最后)

[root@localhost ~]# iptables–t filter –A INPUT –j DROP

在filter表的input鏈里追加一條規則,(作為最后一條規則,匹配所有訪問本機ip的數據包,匹配到的丟棄)比如ssh登錄的偽終端也被終止

-I :insert <鏈名> [規則號碼] 插入一條規則

[root@localhost ~]# iptables -IINPUT -j DROP

在filter表的INPUT鏈里插入一條規則(插入成第一條)

[root@localhost ~]# iptables -IINPUT 3 -j DROP

在 filter 表的 INPUT 鏈里插入一條規則(插入成第 3 條)

注意: 1、-t filter 可不寫,不寫則自動默認是 filter 表

2、-I 鏈名 [規則號碼],如果不寫規則號碼,則默認是 1

3、確保規則號碼 ≤(已有規則數 + 1),否則報錯

-D <鏈名> <規則號碼|具體的規則內容>

       Delete 刪除一條規則

[root@localhost ~]# iptables–D INPUT 3

(按照號碼匹配)刪除filter表INPUT鏈中第三條規則

              注意:刪除3號后,原來的四號此時變成3號

[root@localhost~]#iptables–D INPUT –s 192.168.1.1 –jDROP

 (按照內容匹配)刪除filter表INPUT鏈中內容為“–s 192.168.1.1 –j DROP”的規則(不管其位置在哪里)

       注意:.

              1、若規則列表中有多條相同的規則時,按內容匹配只刪除序號最小的一條

2、按號碼匹配刪除時,確保規則號碼≤已有規則數,否則報錯

3、按內容匹配刪除時,確保規則存在,否則報錯

-R :<鏈名><規則號碼><具體規則內容>

       Replace 替換一條規則

[root@localhost ~]# iptables –RINPUT 3 –j ACCEPT

將原來編號為3的規則內容替換為“–j ACCEPT”

       注意:確保規則號碼<=已有規則數,否則報錯

-F :[鏈名]

       Flush 清空規則

[root@localhost ~]# iptables –FINPUT

清空filter 表INPUT 鏈中的所有規則

[root@localhost ~]# iptables –tNET –F FORWARD

清空nat 表PREROUTING 鏈中的所有規則

-Z :zero 置零

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

              有本規則匹配到的所有的packets

              由本規則匹配到的所有的bytes

-S顯示指定鏈上的所有的規則

[root@localhost ~]# iptables-t filter -S INPUT

-P INPUT ACCEPT

顯示的是命令的格式

查看:(不能改變順序)

-L:[鏈名]

       List 列出規則

-n:numeric表示只顯示IP地址和端口號碼,不顯示域名和服務名[不反解]

[root@localhost ~]# iptables-L INPUT

Chain INPUT (policyACCEPT)

target     prot opt source               destination    

-v:verbose,詳細信息(v越多,顯示的越詳細)

[root@localhost ~]# iptables -vLINPUT

Chain INPUT (policyACCEPT 454 packets, 44317 bytes)

 pkts bytes target     prot opt in     out    source              destination

[root@localhost ~]# iptables -vvvLINPUT

Chain INPUT (policyACCEPT 478 packets, 46257 bytes)

 pkts bytes target     prot opt in     out    source              destination        

libiptcvlibxtables.so.10. 632 bytes.

Table `filter'

Hooks:pre/in/fwd/out/post = ffffffff/0/98/130/ffffffff

Underflows:pre/in/fwd/out/post = ffffffff/0/98/130/ffffffff

Entry0 (0):

SRCIP: 0.0.0.0/0.0.0.0

DSTIP: 0.0.0.0/0.0.0.0

Interface:`'/................to `'/................

Protocol: 0

Flags: 00

Invflags: 00

Counters: 478packets, 46257 bytes

Cache: 00000000

Target name: `' [40]

verdict=NF_ACCEPT

 

Entry 1 (152):

SRC IP: 0.0.0.0/0.0.0.0

DST IP: 0.0.0.0/0.0.0.0

Interface: `'/................to`'/................

Protocol:0

Flags:00

Invflags:00

Counters:0 packets, 0 bytes

Cache:00000000

Targetname: `' [40]

verdict=NF_DROP

-x:exactly,在v的基礎上,禁止自動的單位換算

[root@localhost~]# iptables -vxL INPUT

ChainINPUT (policy ACCEPT 559 packets, 53847 bytes)

    pkts     bytes target     prot opt in     out    source               destination

--line-numbers:顯示鏈上的規則的編號;

              Iptables –nL(n:表示以數字格式顯示地址和端口)

              組合:-nvL

[root@localhost~]# iptables -L INPUT --line-numbers

ChainINPUT (policy ACCEPT)

num  target    prot opt source              destination  

列出filter表中所有的鏈及所有的規則

Iptables –t NAT–vnL:

用詳細方式列出nat 表所有鏈的所有規則,只顯示IP 地址和端口號

       Iptables –t NAT –vnL PREROUTING:用詳細方式列出nat 表PREROUTING 鏈的所有規則以及詳細數字,不反解

匹配條件: [!]表示可以取反

       基本匹配:netfilter自帶的匹配機制

 [!] -s, <匹配源地址>

       可以是ip,NET,DOMAIN,也可以是空(空表示任何地址)

[root@localhost~]# iptables -t filter -A INPUT -s 192.168.0.0/16 -j ACCEPT

[root@localhost~]# iptables -t filter -vnL

ChainINPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out    source              destination        

    6  428 ACCEPT     all  --  *      *      192.168.0.0/16      0.0.0.0/0          

ChainFORWARD (policy DROP 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out    source              destination        

ChainOUTPUT (policy ACCEPT 4 packets, 528 bytes)

 pkts bytes target     prot opt in     out    source               destination

在filter表的INPUT鏈最后追加一條接受匹配來自172.18.0.0/16網絡的數據包

[!] –d <匹配目的地址>

       可以是ip,NET,DOMAIN,也可以是空(空表示任何地址)

[root@localhost~]# iptables -A OUTPUT -d 192.168.1.1/16 -j ACCEPT

[root@localhost~]# iptables -t filter -vnL

ChainINPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out    source              destination        

  133 10048 ACCEPT     all --  *      *      192.168.0.0/16      0.0.0.0/0          

 

ChainFORWARD (policy DROP 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out    source              destination        

 

ChainOUTPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out    source              destination        

    4  576 ACCEPT     all  --  *      *      0.0.0.0/0            192.168.0.0/16

在filter表的OUPUT鏈最后追加一條匹配接受去往172.18.0.0/16網絡的數據包

Iptables –A OUTPUT –d www.linuxedu.top匹配去往www.linuxedu.top的數據包

[!] -i, --in-interface name 限制報文流入的接口,只能用于prorouting,input及forward

 [!] -o, --out-interface name限制報文流出的接口,只能用于output,forward,及postrouting

              擴展匹配:經由擴展模塊引入的匹配機制,-m matchname

隱式擴展:可以不用使用-m選項專門加載相應的模塊,前提是要使用-P選項可匹配何種協議

[!]-p <匹配協議類型>

可以指明只開放某一種協議

協議:tcp,udp,icmp,icmpv6,esp,sh,sctp,mh or <空>

自己ping別人:出去的是8,回來的是0

別人ping自己:進來的是8,出去的是0

       0:echo-replay回顯應答

              8:echo-request回顯請求

[!] –sport<匹配源端口>

       可以是個別端口,也可以是端口范圍

       --sport 1000  匹配源端口是1000的數據包

       --sport 1000-3000匹配源端口是1000-3000的端口

       --sport :3000  匹配源端口是小于3000的端口

       --sport 1000:  匹配源端口是大于1000的端口

[!]--dport <匹配目的端口>

可以是個別端口,可以是端口范圍

例如:

--dport 80 匹配目的端口是80 的數據包

--dport 6000:8000 匹配目的端口是6000-8000 的數據包(含6000、8000)

--dport :3000 匹配目的端口是3000 以下的數據包(含3000)

--dport 1000: 匹配目的端口是1000 以上的數據包(含1000)

注意:--sport 和--dport 必須配合-p 參數使用

匹配組合:

       1、端口匹配

-p udp --dport 53

匹配網絡中目的端口是53 的UDP協議數據包

2、地址匹配

-s 10.1.0.0/24 -d 172.17.0.0/16

匹配來自10.1.0.0/24 去往172.17.0.0/16 的所有數據包

3、端口和地址聯合匹配

-s 192.168.0.1 -d www.abc.com -p tcp --dport80

匹配來自192.168.0.1,去往www.abc.com 的80 端口的TCP協議數據包

注意:

1、--sport、--dport 必須聯合-p 使用,必須指明協議類型是什么

2、條件寫的越多,匹配越細致,匹配范圍越小

處理動作”

       -j targetanme [per-target-iptions]

       ACCEPT:通過,允許數據包通過本鏈而不攔截它,類似Cisco 中ACL 里面的permit

              Iptables –A INPUT –j ACCEPT:允許所有訪問本機IP 的數據包通過

DROP:丟棄,阻止數據包通過本鏈而丟棄它,類似Cisco 中ACL 里的deny

Iptables –A FORWARD –s 172.18.0.1/16 –j DROP阻止來源地址為192.168.80.39 的數據包通過本機

REJECT

       RETURN|:返回調用的鏈

       REDIRECT:端口重定向

       LOG:日志

       MARK:防火墻標記

       DNAT:目標地址轉換

              -j DNAT --to IP[-IP][:端口-端口](nat 表的PREROUTING 鏈)

目的地址轉換,DNAT 支持轉換為單IP,也支持轉換到IP 地址池(一組連續的IP 地址)

例如:

iptables -t nat -A PREROUTING -i ppp0 -p tcp--dport 80 -j DNAT --to 192.168.0.1

解釋:把從ppp0 進來的要訪問TCP/80 的數據包目的地址改為192.168.0.1

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 81 -jDNAT --to 192.168.0.2:80

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -jDNAT --to 192.168.0.1-192.168.0.10

       SNAT:源地址轉換

-j SNAT --to IP[-IP][:端口-端口](nat表的POSTROUTING 鏈)源地址轉換,SNAT 支持轉換為單IP,也支持轉換到IP 地址池(一組連續的IP 地址)

例如:

iptables -t nat -A POSTROUTING -s192.168.0.0/24 -j SNAT --to 1.1.1.1

將內網192.168.0.0/24 的原地址修改為1.1.1.1,用于NAT

iptables -t nat -A POSTROUTING -s 192.168.0.0/24-j SNAT --to 1.1.1.1-1.1.1.10

同上,只不過修改成一個地址池里的IP

       MASQERADE:地址偽裝

              -j MASQUERADE

動態源地址轉換(動態IP 的情況下使用)

例如:

iptables -t nat -A POSTROUTING -s192.168.0.0/24 -j MASQUERADE

將源地址是192.168.0.0/24 的數據包進行地址偽裝

匹配條件:

       顯示擴展

       Multiport:多端口匹配

              以離散方式死你故意多端口匹配,最多可以指定15個端口,但是必須與-p參數一起使用

       Iptables –A INPUT –p tcp –m multiport–dports 21,22,25,80,110 –j ACCEPT

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

齐河县| 罗江县| 台安县| 汝阳县| 通许县| 岱山县| 本溪市| 房产| 广河县| 达州市| 浠水县| 衡水市| 长武县| 江阴市| 林周县| 凤台县| 桂东县| 久治县| 五原县| 平和县| 巫山县| 攀枝花市| 宁陕县| 昌吉市| 乌兰察布市| 明溪县| 上杭县| 监利县| 吴江市| 通榆县| 那坡县| 隆安县| 吉林市| 沙河市| 长治市| 大埔区| 黄梅县| 龙胜| 英德市| 辛集市| 资中县|