每个 Linux 管理员都应该知道的 20 条实用 IPtable 防火墙规则
作为 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 服务器并防止不必要的流量至关重要。通过实施这些规则,您可以控制进出服务器的流量,并保护您的网络免受攻击。请务必记住,在生产服务器上实施这些规则之前,务必对其进行测试,以避免出现意外后果。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

