插件窝 干货文章 如何在Linux上设置防火墙规则

如何在Linux上设置防火墙规则

sudo iptables 规则 允许 501    来源:    2025-04-15

在Linux上设置防火墙规则指南

Linux系统提供了多种防火墙解决方案,最常用的是iptablesnftables(较新系统)以及firewalld(用户友好前端)。以下是主要方法:

1. 使用iptables (传统方法)

# 查看当前规则
sudo iptables -L -n -v

# 允许已建立的连接
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 允许SSH连接(端口22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许HTTP(80)和HTTPS(443)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 默认拒绝所有其他入站连接
sudo iptables -P INPUT DROP

# 允许所有出站连接
sudo iptables -P OUTPUT ACCEPT

# 保存规则(根据发行版不同)
sudo iptables-save > /etc/iptables/rules.v4  # Debian/Ubuntu
sudo service iptables save                   # CentOS/RHEL

2. 使用nftables (较新系统)

# 查看当前规则
sudo nft list ruleset

# 基本配置示例
sudo nft add table inet filter
sudo nft add chain inet filter input { type filter hook input priority 0 \; }
sudo nft add chain inet filter forward { type filter hook forward priority 0 \; }
sudo nft add chain inet filter output { type filter hook output priority 0 \; }

# 允许已建立的连接
sudo nft add rule inet filter input ct state established,related accept

# 允许SSH
sudo nft add rule inet filter input tcp dport 22 accept

# 默认拒绝
sudo nft add rule inet filter input drop

# 持久化规则
sudo nft list ruleset > /etc/nftables.conf

3. 使用firewalld (CentOS/RHEL/Fedora)

# 查看状态
sudo firewall-cmd --state

# 查看活动区域
sudo firewall-cmd --get-active-zones

# 添加服务(如http)
sudo firewall-cmd --permanent --add-service=http

# 添加端口
sudo firewall-cmd --permanent --add-port=8080/tcp

# 移除规则
sudo firewall-cmd --permanent --remove-service=ssh

# 重新加载
sudo firewall-cmd --reload

# 列出所有允许的服务
sudo firewall-cmd --list-services

4. 使用UFW (Ubuntu/Debian简化工具)

# 启用UFW
sudo ufw enable

# 允许SSH
sudo ufw allow ssh

# 允许特定端口
sudo ufw allow 80/tcp

# 允许IP范围
sudo ufw allow from 192.168.1.0/24

# 拒绝连接
sudo ufw deny http

# 查看状态
sudo ufw status verbose

# 删除规则
sudo ufw delete allow 80/tcp

最佳实践建议

  1. 最小权限原则:只开放必要的端口和服务
  2. 记录日志:对拒绝的流量进行日志记录
  3. 定期审查:定期检查防火墙规则
  4. 测试规则:应用新规则前先测试
  5. 备份配置:修改前备份当前配置

常见问题解决

  • 规则不生效:检查服务是否运行(systemctl status firewalld等)
  • 连接被拒绝:确认规则顺序(规则是按顺序匹配的)
  • 保存问题:某些发行版需要额外包来持久化iptables规则

根据您的Linux发行版和版本选择合适的工具,新系统推荐使用nftables或firewalld。