每个 Linux 管理员都应该知道的 20 条实用 IPtable 防火墙规则

linuxoperating systemopen source更新于 2026/2/7 17:52:17

作为 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

这会将传出流量的默认策略设置为"接受",这意味着所有传出流量都将被允许。

阻止特定端口上的传入流量

如果您想阻止特定端口上的传入流量,可以使用以下命令 -

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 地址。例如,要阻止来自 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 地址。例如,要允许来自 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 服务器并防止不必要的流量至关重要。通过实施这些规则,您可以控制进出服务器的流量,并保护您的网络免受攻击。请务必记住,在生产服务器上实施这些规则之前,务必对其进行测试,以避免出现意外后果。


相关文章


有用资源