iptables 原來這麼簡單

    你在找一個完整的iptables教程嗎?在本文中,我們將向您展示如何在linux系統上安裝和使用iptables。通過了解這個Linux防火牆工具,您可以使用命令行界面更好的保護Linux,免受攻擊。

一、什麼是iptables ,它是如何工作的?

    簡單地說,iptables是一個Linux防火牆程序。它將使用表(tables)來監視服務器發送及接收的數據包。這些表包含一組稱爲鏈(chains)的規則,這些規則將過濾發送和接收的數據包。

    當數據包與規則匹配時,將爲其指定一個目標,該目標可以是另一個鏈或下面這些特殊值之一:

  • ACCEPT- 允許數據包通過。
  • DROP -不允許數據包通過。
  • RETURN–阻止數據包穿過某一個鏈,並它返回到上一個鏈。

在繼續學習之前,請確保您對您的計算機具有SSH root 或sudo訪問權限。強調一點,iptables規則僅適用於ipv4。如果要爲ipv6協議設置防火牆,則需要使用ip6tables。

 

二、如何安裝和使用Iptables Linux防火牆

    我們將把這個iptables教程分爲三個步驟。首先,你將學習如何在Cent OS上安裝這個工具。其次,我們將向您展示如何定義規則。最後,我們將指導您在iptables中進行持久的更改。

(一) 安裝防火牆

    Iptables在大多數Linux發行版中都是預先安裝的。但是,如果默認情況下在Cent OS系統中沒有,請執行以下步驟:    

1、通過SSH連接到服務器“”

2、逐個執行以下命令:

sudo yum update
sudo yum install iptables

3、通過運行以下命令檢查當前iptables配置的狀態:

sudo iptables -L -v

    在這裏,-L選項用於列出所有規則,-v用於以更詳細的格式顯示信息。

    下面是輸出示例:

    

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination    

    現在您已經安裝了Linux防火牆。如上圖,您可以注意到所有的鏈都被設置爲接受並且沒有規則。這是不安全的,因爲任何包都無需過濾,可以通過。接下來將講解如何在iptables教程中定義規則。

 (二)定義 chain 規則 

    定義規則意味着將其附加到鏈中。爲此,需要在iptables命令後面插入-A選項(Append),如下所示:  

sudo iptables -A

    它會提醒iptables您正在向鏈中添加新規則。然後,可以將該命令與其他選項相結合,例如

  • -i(interface)-要過濾其流量的網絡接口,如eth0、lo、ppp0等。
  • -p(protocol)-過濾需要過濾的網絡協議。包括tcp、udp、udplite、icmp、sctp、icmpv6等等。或者,您可以鍵入all來選擇每個協議。
  • -s(source)-流量來自的地址。您可以添加主機名或IP地址。
  • –dport(目標端口)-協議的目標端口號,如22(SSH)、443(https)等。
  • -j(target)-目標名稱(ACCEPT、DROP、RETURN)。每次制定新規則時都需要插入此項。

    如果要使用所有命令,則必須按以下順序編寫命令:

sudo iptables -A <chain> -i <interface> -p <protocol (tcp/udp) > -s <source> --dport <port no.>  -j <target>

    一旦您瞭解了基本語法,就可以開始配置防火牆,爲您的服務器提供更多的安全性。對於這個iptables教程,我們將以輸入鏈(Input Chain)爲例。

    1 在本地主機上啓用通信:要允許本地主機上的通信,請鍵入以下命令

sudo iptables -A INPUT -i lo -j ACCEPT

    對於這個iptables教程,我們使用lo或loopback接口。它用於本地主機上的所有通信。上面的命令將確保數據庫和同一臺計算機上的web應用程序之間的連接正常工作。

    2  在HTTP、SSH和SSL端口上啓用連接

    接下來,我們希望http(端口80)、https(端口443)和ssh(端口22)連接正常工作。爲此,我們需要指定協議(-p)和相應的端口(–dport)。您可以逐個執行這些命令:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

    現在是檢查規則是否已附加到iptables的時候了:

sudo iptables -L -v

    它應返回以下結果,這意味着將接受來自指定端口的所有TCP協議連接:

3    基於源的包過濾

    Iptables允許您根據一個IP地址或一系列IP地址過濾數據包。您需要在-s選項之後指定它。例如,要接受來自192.168.1.3的數據包,命令將是:

sudo iptables -A INPUT -s 192.168.1.3 -j ACCEPT

您還可以通過將ACCEPT目標替換爲DROP來拒絕來自特定IP地址的數據包。

sudo iptables -A INPUT -s 192.168.1.3 -j DROP

    如果要從一系列IP地址中DROP數據包,必須使用-m選項和IP range模塊。然後,使用–src range指定IP地址範圍。記住,連字符應該分隔沒有空格的ip地址範圍,如下所示:

sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP

4  拒絕所有其它的流量

    定義–dport規則後,對所有其他流量使用DROP目標是至關重要的。這將防止未經授權的連接通過其他打開的端口訪問服務器。爲此,只需鍵入:

sudo iptables -A INPUT -j DROP

    現在,指定端口之外的連接將被斷開。

    5  刪除規則

    如果要刪除所有規則,進行防火牆配置初始化,可以使用-F選項(flush)

sudo iptables -F

    此命令將刪除所有當前規則。但是,要刪除特定規則,必須使用-D選項。首先,您需要輸入以下命令來查看所有可用的規則:

sudo iptables -L --line-numbers

    您將得到一個包含數字的規則列表:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  anywhere             anywhere            
2    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
3    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
4    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
5    ACCEPT     all  --  192.168.1.3          anywhere            
6    DROP       all  --  anywhere             anywhere             source IP range 192.168.1.100-192.168.1.200
7    DROP       all  --  anywhere             anywhere            

   要刪除規則,請從列表中插入相應的鏈和編號。假設對於這個iptables教程,我們想要去掉輸入鏈中的第三條規則。命令應該是:

sudo iptables -D INPUT 3

三、保存更改

    我們創建的iptables規則保存在內存中。這意味着我們必須在重啓時重新定義它們。要使這些更改在重新啓動服務器後保持不變,可以使用以下命令:

sudo /sbin/iptables-save

    它會將當前規則保存在系統配置文件中,每次服務器重新啓動時都會使用該文件重新配置表。

    請注意,每次更改規則時都應始終運行此命令。例如,如果要禁用iptables,則需要執行以下兩行:

sudo iptables -F
sudo /sbin/iptables-save

您將看到以下結果:

# Generated by iptables-save v1.4.21 on Sat Mar 21 16:26:27 2020
*filter
:INPUT ACCEPT [18:2344]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [17:2206]
COMMIT
# Completed on Sat Mar 21 16:26:27 2020

四、結論

    Iptables是一個強大的防火牆程序,您可以使用它來保護您的Linux服務器或 虛擬專用服務器(VPS)。最棒的是你可以根據自己的喜好定義各種規則。

   在本iptables教程中,您已經學習瞭如何安裝和使用該工具。現在,我們希望您可以管理您的規則集來過濾傳入和傳出的數據包。

    是你自己測試的時候了,祝你好運!

參考:

    https://www.hostinger.com/tutorials/iptables-tutorial

 

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