你在找一個完整的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