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