每个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服务器并防止不需要的流量至关重要。通过实施这些规则,您可以控制进出服务器的流量,并保护您的网络免受攻击。请务必在生产服务器上实施这些规则之前进行测试,以避免意外后果。

更新于:2023年3月28日

2K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告