每個Linux管理員都應該知道的20條有用的iptables防火牆規則
作為一名Linux管理員,維護安全穩定的網路最重要的方面之一是實施有效的防火牆。Iptables是一個強大的防火牆工具,預裝在大多數Linux發行版中。在本文中,我們將探討每個Linux管理員都應該知道的20條有用的iptables防火牆規則。這些規則將幫助您保護您的網路並防止未經授權的訪問,同時允許合法流量透過。
阻止所有傳入流量,除了SSH
第一條規則是阻止所有傳入流量,除了SSH。SSH是遠端訪問伺服器的一種安全方式,重要的是允許訪問它,同時阻止所有其他流量。要實現此規則,請輸入以下命令:
sudo iptables -P INPUT DROP sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT
這將把傳入流量的預設策略設定為DROP,這意味著所有流量都將被阻止,除了22埠(SSH)上的流量。
允許傳出流量
重要的是允許伺服器的傳出流量,因為許多應用程式和服務的正常執行都需要此功能。要允許所有傳出流量,請輸入以下命令:
sudo iptables -P OUTPUT ACCEPT
這將把傳出流量的預設策略設定為ACCEPT,這意味著所有傳出流量都將被允許。
阻止特定埠上的傳入流量
如果要阻止特定埠上的傳入流量,可以使用以下命令:
sudo iptables -A INPUT -p tcp --dport <port_number> -j DROP
將<port_number>替換為您要阻止的埠號。例如,要阻止80埠(HTTP)上的傳入流量,請輸入以下命令:
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
阻止特定IP地址的傳入流量
要阻止特定IP地址的傳入流量,可以使用以下命令:
sudo iptables -A INPUT -s <ip_address> -j DROP
將<ip_address>替換為您要阻止的IP地址。例如,要阻止IP地址192.168.1.100的傳入流量,請輸入以下命令:
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
允許特定IP地址的流量
要允許特定IP地址的流量,可以使用以下命令:
sudo iptables -A INPUT -s <ip_address> -j ACCEPT
將<ip_address>替換為您要允許的IP地址。例如,要允許IP地址192.168.1.100的流量,請輸入以下命令:
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
阻止特定網路介面上的傳入流量
如果您的伺服器上有多個網路介面,並且您想阻止特定介面上的傳入流量,可以使用以下命令:
sudo iptables -A INPUT -i <interface_name> -j DROP
將<interface_name>替換為您要阻止的介面名稱。例如,要阻止eth0介面上的傳入流量,請輸入以下命令:
sudo iptables -A INPUT -i eth0 -j DROP
允許特定網路介面上的傳入流量
要允許特定網路介面上的傳入流量,可以使用以下命令:
sudo iptables -A INPUT -i <interface_name> -j ACCEPT
將<interface_name>替換為您要允許的介面名稱。例如,要允許eth0介面上的傳入流量,請輸入以下命令:
sudo iptables -A INPUT -i eth0 -j ACCEPT
阻止到特定目標IP地址的流量
要阻止到特定目標IP地址的流量,可以使用以下命令:
sudo iptables -A OUTPUT -d <ip_address> -j DROP
將<ip_address>替換為您要阻止的IP地址。例如,要阻止到IP地址192.168.1.100的流量,請輸入以下命令:
sudo iptables -A OUTPUT -d 192.168.1.100 -j DROP
允許到特定目標IP地址的流量
要允許到特定目標IP地址的流量,可以使用以下命令:
sudo iptables -A OUTPUT -d <ip_address> -j ACCEPT
將<ip_address>替換為您要允許的IP地址。例如,要允許到IP地址192.168.1.100的流量,請輸入以下命令:
sudo iptables -A OUTPUT -d 192.168.1.100 -j ACCEPT
阻止特定協議上的流量
要阻止特定協議上的流量,可以使用以下命令:
sudo iptables -A INPUT -p <protocol_name> -j DROP
將<protocol_name>替換為您要阻止的協議名稱。例如,要阻止UDP協議上的流量,請輸入以下命令:
sudo iptables -A INPUT -p udp -j DROP
允許特定協議上的流量
要允許特定協議上的流量,可以使用以下命令:
sudo iptables -A INPUT -p <protocol_name> -j ACCEPT
將<protocol_name>替換為您要允許的協議名稱。例如,要允許TCP協議上的流量,請輸入以下命令:
sudo iptables -A INPUT -p tcp -j ACCEPT
阻止特定埠範圍上的流量
要阻止特定埠範圍上的流量,可以使用以下命令:
sudo iptables -A INPUT -p tcp --dport <starting_port_number>:<ending_port_number> -j DROP
將<starting_port_number>和<ending_port_number>替換為您要阻止的範圍的起始和結束埠號。例如,要阻止8000到9000埠上的流量,請輸入以下命令:
sudo iptables -A INPUT -p tcp --dport 8000:9000 -j DROP
允許特定埠範圍上的流量
要允許特定埠範圍上的流量,可以使用以下命令:
sudo iptables -A INPUT -p tcp --dport <starting_port_number>:<ending_port_number> -j ACCEPT
將<starting_port_number>和<ending_port_number>替換為您要允許的範圍的起始和結束埠號。例如,要允許8000到9000埠上的流量,請輸入以下命令:
sudo iptables -A INPUT -p tcp --dport 8000:9000 -j ACCEPT
基於IP地址範圍阻止流量
要基於IP地址範圍阻止流量,可以使用以下命令:
sudo iptables -A INPUT -m iprange --src-range <starting_ip_address>-<ending_ip_address> -j DROP
將<starting_ip_address>和<ending_ip_address>替換為您要阻止的範圍的起始和結束IP地址。例如,要阻止IP地址範圍192.168.1.100到192.168.1.200的流量,請輸入以下命令:
sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP
基於IP地址範圍允許流量
要基於IP地址範圍允許流量,可以使用以下命令:
sudo iptables -A INPUT -m iprange --src-range <starting_ip_address>-<ending_ip_address> -j ACCEPT
將<starting_ip_address>和<ending_ip_address>替換為您要允許的範圍的起始和結束IP地址。例如,要允許IP地址範圍192.168.1.100到192.168.1.200的流量,請輸入以下命令:
sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT
阻止特定MAC地址的流量
要阻止特定MAC地址的流量,可以使用以下命令:
sudo iptables -A INPUT -m mac --mac-source-j DROP
將<mac_address>替換為您要阻止的MAC地址。例如,要阻止MAC地址00:11:22:33:44:55的流量,請輸入以下命令:
sudo iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j DROP
允許特定MAC地址的流量
要允許特定MAC地址的流量,可以使用以下命令:
sudo iptables -A INPUT -m mac --mac-source <mac_address> -j ACCEPT
將<mac_address>替換為您要允許的MAC地址。例如,要允許MAC地址00:11:22:33:44:55的流量,請輸入以下命令:
sudo iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT
阻止傳入ICMP流量
要阻止傳入ICMP流量,可以使用以下命令:
sudo iptables -A INPUT -p icmp -j DROP
允許傳入ICMP流量
要允許傳入ICMP流量,可以使用以下命令:
sudo iptables -A INPUT -p icmp -j ACCEPT
阻止所有傳入流量,除了已建立的連線
要阻止所有傳入流量,除了已建立的連線,可以使用以下命令:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A INPUT -j DROP
此規則允許已建立和相關連線的流量,並丟棄所有其他流量。
結論
在本文中,我們討論了每個Linux管理員都應該知道的20條有用的iptables防火牆規則。這些規則對於保護您的Linux伺服器並防止不需要的流量至關重要。透過實施這些規則,您可以控制進出伺服器的流量,並保護您的網路免受攻擊。請務必在生產伺服器上實施這些規則之前進行測試,以避免意外後果。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP