首頁  >  文章  >  運維  >  linux下的軟體防火牆iptables-規則的定義與刪除

linux下的軟體防火牆iptables-規則的定義與刪除

齐天大圣
齐天大圣原創
2020-11-18 15:22:531951瀏覽

關於ipitables防火牆的介紹,以及如何查看規則及清理規則等,在之前的一篇文章中已經講述了,今天這裡是演示如何制定防火牆的規則。因為工作中,主要會對filter鏈制定規則,所以這裡我們主要也以fitler鏈做示範。

準備工作

制定規則前,我們先關閉firewalld服務、開啟iptables服務,然後清除現有的規則。

# systemctl stop firewalld
# systemctl start iptables
# iptables -F
# iptables -X
# iptables -Z

新增規則鏈

關於iptables的新增規則鏈,選項非常繁多,下面我們看基本用法:

iptables [-t tables] -A|I 链名 [-i|o 网络接口] [-m state] [--state 数据包状态] \
> [-p 网络协议]  [-s 源地址 --sport 端口范围] [-d 目标地址 --dport 端口范围] \
> -j [ACCEPT|DROP|REJECT]

選項與參數:

  • -A|I 鏈名       A表示在已規則後面加上規則,而I則是在最前面插入規則

  • -i|o 網路介面      i表示封包進入的那個網路接口,需要和INPUT或PREROUTING鏈配合使用;o表示封包出去的那個接口,需和OUTPUT鏈配合使用

  • #-p 網路協定  常見的有tcp、upd、icmp以及all

  • -m state 封包的狀態

  • #--state 封包狀態 常見的狀態有INVALID(無效的封包)、ESTABLISHED(已成功連線的狀態)、NEW(新建立的封包)、RELATED(新連線與現有連線相關聯)

  • -s 來源位址 位址可以是ip位址,如192.168.1.110 或網路位址192.168.1.0/24

  • -d 目的位址

  • -j 後面接著操作,常見的有ACCEPT(接受)、DROP(丟棄)、REJECT(拒絕)

針對ip、網路、網卡介面的規則制定

下面,給出幾個規則鏈案例。我們允許從192.168.1.110發來的資料、拒絕192.168.1.111發來的資料。

# iptables -A INPUT -s 192.168.1.110 -j ACCEPT
# iptables -I INPUT -s 192.168.1.111 -j DROP

# iptables -vnL
Chain INPUT (policy ACCEPT 33 packets, 3048 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      *       192.168.1.111        0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       192.168.1.110        0.0.0.0/0           
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 18 packets, 1844 bytes)
 pkts bytes target     prot opt in     out     source               destination

允許192.168.1.0/24網路位址存取

# iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
# iptables -vnL
Chain INPUT (policy ACCEPT 29 packets, 2328 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       all  --  *      *       192.168.1.111        0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       192.168.1.110        0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       192.168.1.0/24       0.0.0.0/0           
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 15 packets, 1460 bytes)
 pkts bytes target     prot opt in     out     source               destination

思考一個問題,192.168.1.111的封包是會被接受還是會拒絕。從INPUT第一條規則看是會被拒絕,但從最後一條看,會接受。答案是會被拒絕,當滿足其中一條規則時,就不會再走下面的規則了,所以說規則鏈的順序也是非常重要的。

繼續看案例:只要是本機回環位址lo都允許

# iptables -A INPUT -i lo -j ACCEPT

#針對連接埠的規則制定

##將進入本地的21埠封包都阻擋掉

# iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP

將1024至65534之間的連接埠都開放,可以用連接埠號碼:連接埠號碼來表示一段連續的連接埠號碼

# iptables -A INPUT -i eth0 -p tcp --dport 1024:65534 -j ACCEPT

下面來看兩個個綜合性的規則

本機的3306端口,不對192.168.1.0/24這個網絡開放。

本機的ssh服務,不接受192.168.1.0/24這個網路的1024:65535埠的封包

# iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --dport 3306 -j DROP
# iptables -A INPUT -i etc0 -p tcp -s 192.168.1.0/24 \
> --sport 1024:65535 --dport 22 -j DROP

#針對封包的連線狀態的規則制定

資料包常見的狀態有INVALID(無效的資料包)、ESTABLISHED(已經成功連線的狀態)、NEW(新建立的資料包)、RELATED(新連線與現有連接相關聯)。

針對ESTABLISHED以及RELATED狀態的封包全都接受,針對INVALID狀態的封包全部丟棄

# iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
# iptables -A INPUT -m state --state INVALID -j DROP

刪除規則鏈

#刪除規則鏈基本上和添加規則鏈一致,只不過-A換成-D即可,下面我們一起來刪除幾條規則。

# iptables-save
# Generated by iptables-save v1.4.21 on Sun Nov 15 22:36:41 2020
*filter
:INPUT ACCEPT [4:1920]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [16:1380]
-A INPUT -s 192.168.1.111/32 -j DROP
-A INPUT -s 192.168.1.110/32 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -j ACCEPT
……

# iptables -t filter -D INPUT -s 192.168.1.111/32 -j DROP
# iptables -D INPUT -s 192.168.1.110/32 -j ACCEPT

註:以上關於iptables的設定只會儲存到記憶體中去,重新啟動服務後系統後,這些設定將會消失。所以,只要不把自己阻擋在外情況下,請儘管練習吧

若想保存規則的話,請輸入/usr/libexec/iptables/iptables.init save來保存。

相關推薦:《

linux影片教學

以上是linux下的軟體防火牆iptables-規則的定義與刪除的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn