插件窝 干货文章 如何在Linux中配置防火墙

如何在Linux中配置防火墙

iptables sudo bash 规则 231    来源:    2025-04-18

在Linux系统中配置防火墙主要可以通过以下工具实现:iptables(传统)、nftables(新一代替代工具)或firewalld(高级动态管理工具)。以下是具体配置方法:


一、使用 iptables(基础方法)

  1. 查看当前规则

    sudo iptables -L -n -v  # 列出规则(-n禁用DNS解析,-v显示详细信息)
    
  2. 常用规则示例

    • 允许SSH(22端口)
      bash sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    • 允许HTTP/HTTPS
      bash sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    • 允许本地回环流量
      bash sudo iptables -A INPUT -i lo -j ACCEPT
    • 默认策略(拒绝所有入站/允许出站)
      bash sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT
    • 允许已建立的连接
      bash sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  3. 保存规则

    • Debian/Ubuntu:
      bash sudo apt install iptables-persistent sudo netfilter-persistent save
    • RHEL/CentOS:
      bash sudo service iptables save

二、使用 firewalld(推荐用于RHEL/CentOS/Fedora)

  1. 基本操作

    sudo systemctl enable --now firewalld  # 启用并启动
    sudo firewall-cmd --state             # 检查状态
    
  2. 开放端口/服务

    • 允许HTTP/HTTPS:
      bash sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --add-service=https --permanent
    • 开放自定义端口(如8080):
      bash sudo firewall-cmd --add-port=8080/tcp --permanent
    • 重新加载配置:
      bash sudo firewall-cmd --reload
  3. 查看活动规则

    sudo firewall-cmd --list-all
    

三、使用 nftables(替代iptables的现代工具)

  1. 基础配置

    • 编辑配置文件 /etc/nftables.conf,示例规则:
      nft table inet filter { chain input { type filter hook input priority 0; # 允许SSH和HTTP tcp dport {22, 80, 443} accept # 允许已建立的连接 ct state established,related accept # 拒绝其他入站 drop } }
    • 加载规则:
      bash sudo nft -f /etc/nftables.conf
  2. 查看规则

    sudo nft list ruleset
    

四、通用注意事项

  1. 避免锁定自己

    • 在应用默认DROP策略前,确保已允许SSH或其他管理端口。
    • 本地测试时可通过cronat设置定时恢复规则。
  2. 日志记录

    • 记录丢弃的包(iptables示例):
      bash sudo iptables -A INPUT -j LOG --log-prefix "DROPPED: "
  3. 备份规则

    sudo iptables-save > ~/iptables_backup.txt   # iptables备份
    sudo firewall-cmd --runtime-to-permanent     # firewalld保存运行时配置
    

五、选择工具的建议

  • 简单管理:使用firewalld(支持动态更新和区域概念)。
  • 精细控制:直接使用iptablesnftables
  • 新系统:优先考虑nftables(长期替代iptables)。

根据你的发行版和需求选择合适的工具即可。