插件窝 干货文章 linux中如何增加iptables防火墙规则

linux中如何增加iptables防火墙规则

iptables 规则 INPUT bash 549    来源:    2025-04-22

在Linux中,使用iptables增加防火墙规则需要管理员权限(root或sudo)。以下是详细操作指南:


1. 基本规则添加语法

iptables -A <链名> [匹配条件] -j <动作>
  • -A:追加规则到链的末尾(也可用-I插入到开头)
  • <链名>:如INPUT(入站)、OUTPUT(出站)、FORWARD(转发)
  • -j <动作>:如ACCEPT(允许)、DROP(丢弃)、REJECT(拒绝并回复)

2. 常用规则示例

允许特定端口(如SSH的22端口)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

允许特定IP访问(如192.168.1.100)

iptables -A INPUT -s 192.168.1.100 -j ACCEPT

拒绝所有其他入站流量

iptables -A INPUT -j DROP

允许本地回环(lo)接口

iptables -A INPUT -i lo -j ACCEPT

允许已建立的连接

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

3. 规则管理命令

  • 查看规则bash iptables -L -n -v # -n禁用DNS解析,-v显示详细信息
  • 删除规则bash iptables -D INPUT 3 # 删除INPUT链的第3条规则
  • 清空所有规则bash iptables -F
  • 保存规则(依赖发行版)
    • Debian/Ubuntu: bash iptables-save > /etc/iptables.rules
    • CentOS/RHEL: bash service iptables save

4. 高级用法

端口范围(如5000-6000)

iptables -A INPUT -p tcp --dport 5000:6000 -j ACCEPT

多网卡控制(如仅允许eth0的HTTP)

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

日志记录(匹配后记录到系统日志)

iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH Attempt: "

5. 注意事项

  1. 规则顺序:iptables按从上到下匹配,首条匹配的规则生效。
  2. 默认策略:建议先设置默认策略为DROP再放行必要规则: bash iptables -P INPUT DROP
  3. 临时生效:直接添加的规则重启后会丢失,需保存(见上文)。
  4. 替代工具:现代系统可能使用nftablesfirewalld(如CentOS 8+)。

6. 完整示例(保护SSH并允许HTTP/HTTPS)

# 清空现有规则
iptables -F

# 允许本地和已建立连接
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 允许SSH(限特定IP 192.168.1.100)
iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT

# 允许HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 拒绝其他所有入站流量
iptables -A INPUT -j DROP

# 保存规则(Debian/Ubuntu)
iptables-save > /etc/iptables.rules

通过以上步骤,您可以灵活控制Linux系统的网络流量。如需更复杂配置,可结合iptables模块(如limitrecent)实现防DDoS等高级功能。