温馨提示×

iptables中如何添加新的过滤规则

小樊
44
2025-10-22 09:16:50
栏目: 编程语言

在iptables中添加新的过滤规则,通常需要使用iptables命令。以下是一些基本的步骤和示例,用于向iptables添加新的过滤规则:

1. 确定要添加规则的链

iptables有多个预定义的链,如INPUTOUTPUTFORWARD。你需要确定要在哪个链上添加规则。

2. 确定规则的动作

iptables规则可以有四种动作:

  • ACCEPT:允许数据包通过。
  • DROP:丢弃数据包,不给出任何回应。
  • REJECT:拒绝数据包,并给出一个错误响应。
  • LOG:记录数据包信息到系统日志。

3. 确定匹配条件

你可以根据多种条件来匹配数据包,如源IP地址、目的IP地址、端口号、协议类型等。

示例:添加一个新的过滤规则

允许来自特定IP地址的SSH连接

sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT

解释:

  • -A INPUT:在INPUT链上追加规则。
  • -p tcp:指定协议为TCP。
  • --dport 22:指定目的端口为22(SSH端口)。
  • -s 192.168.1.100:指定源IP地址为192.168.1.100。
  • -j ACCEPT:如果匹配条件满足,则接受数据包。

阻止来自特定IP地址的所有连接

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

解释:

  • -A INPUT:在INPUT链上追加规则。
  • -s 192.168.1.100:指定源IP地址为192.168.1.100。
  • -j DROP:如果匹配条件满足,则丢弃数据包。

记录所有进入的ICMP请求

sudo iptables -A INPUT -p icmp -j LOG --log-prefix "ICMP Packet Detected: "

解释:

  • -A INPUT:在INPUT链上追加规则。
  • -p icmp:指定协议为ICMP。
  • -j LOG --log-prefix "ICMP Packet Detected: ":如果匹配条件满足,则记录数据包信息到系统日志,并添加前缀"ICMP Packet Detected: "。

保存iptables规则

在某些Linux发行版中,iptables规则在系统重启后会丢失。为了持久化规则,你需要保存它们。

使用iptables-saveiptables-restore

sudo iptables-save > /etc/iptables/rules.v4
sudo iptables-restore < /etc/iptables/rules.v4

使用netfilter-persistent

在Debian及其衍生版中,可以使用netfilter-persistent服务来保存和恢复iptables规则。

sudo netfilter-persistent save
sudo netfilter-persistent reload

通过这些步骤,你可以向iptables添加新的过滤规则,并确保它们在系统重启后仍然有效。

0