开发者

Linux系统下防火墙配置的详细指南

目录
  • 1. 防火墙工具对比
  • 2. iptables 基础配置
    • 2.1 查看规则
    • 2.2 清空规则
    • 2.3 基础规则示例
    • 2.4 高级功能
  • 3. ufw(Uncomplicated Firewall)配置
    • 3.1 启用与禁用
    • 3.2 规则配置
    • 3.3 高级配置
  • 4. firewalld 配置
    • 4.1 启用与禁用
    • 4.2 查看与修改规则
    • 4.3 高级功能
  • 5. 防火墙策略设计原则
    • 6. 实战场景
      • 场景 1:Web 服务器防火墙配置
      • 场景 2:SSH 安全加固
    • 7. 常见问题
      • 附录:工具选择建议

        以下是 linux 系统下防火墙配置的详细指南,涵盖 iptablesufwfirewalld 等主流工具的使用方法和实战场景!

        1. 防火墙工具对比

        工具适用场景特点
        iptables传统 Linux 系统(如 Centos/RHEL)功能强大,规则灵活,但配置复杂
        ufwUbuntu/Debian 等新发行版图形化界面,命令简洁,适合新手
        firewalldRHEL/CentOS 8+/Fedora基于服务的动态防火墙,支持 NAT 和端口转发

        2. iptables 基础配置

        2.1 查看规则

        iptables -L -n -v  # 查看所有规则(-n 不解析域名,-v 显示详细信息)
        

        2.2 清空规则

        iptables -F  # 清空所有规则
        iptables -t nat -F  # 清空 NAT 表
        

        2.3 基础规则示例

        # 允许 SSH(端口 22)入站
        iptables -A INPUT -p tcp --dpo编程rt 22 -j ACCEPT
        
        # 允许 HTTP/HTTPS(端口 80/443)入站
        iptables -A INPUT -p tcp --dport 80,443 -j ACCEPT
        
        # 拒绝其他所有入站流量(默认策略)
        iptables -P INPUT DROP
        
        # 保存规则(根据系统选择以下命令)
        iptables-save | sudo tee /etc/sysconfig/iptables  # CentOS/RHEL
        iptables-save > /etc/iptables/rules.v4          # Ubuntu/Debian
        

        2.4 高级功能

        # 设置 NAT 规则(端口转发)
        iptables -t nat -A PREROUTING -p tcp --d编程port 8080 -j DNAT --to-destination :80
        iptables -t nat -A POSTROUTING -j MASQUERADE
        
        # 限制 IP 访问频率(每分钟最多 10 次)
        iptables -I INPUT -p tcp --dport 22 -m limit --limit 10/min -j ACCEPT
        

        3. ufw(Uncomplicated Firewall)配置

        3.1 启用与禁用

        sudo ufw enable  # 启用防火墙
        sudo ufw disable # 禁用防火墙
        

        3.2 规则配置

        # 开放端口(默认策略为拒绝)
        sudo ufw allow 22/tcp  # SSH
        sudo ufw allow 80,443/tcp  # HTTP/HTTPS
        
        # 拒绝特定 IP(如 192.168.1.100)
        sudo ufw deny from 192.168.1.100 to any
        
        # 删除规则
        sudo ufw delete allow 22/tcp
        
        # 查看规则
        sudo ufw status numbered  # 显示带序号的规则
        

        3.3 高级配置

        # 限制 SSH 最大连接数
        sudo ufw limit 22/tcp  # 默认:每分钟 60 次,突发 10 次
        
        # 设置默认策略(优先级最低)
        sudo ufw default deny incoming  # 入站默认拒绝
        sudo ufw default allow outgoing   # 出站默认允许
        

        4. firewalld 配置

        4.1 启用与禁用

        sudo systemctl start firewalld       # 启动服务
        sudo systemctl enable firewalld      # 设置开机自启
        sudo systemctl stop firewalld        # 停止服务
        

        4.2 查看与修改规则

        # 查看所有活动区域规则
        sudo firewall-cmd --list-all
        
        # 添加开放端口(永久生效)
        sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
        
        # 临时添加规则(重启后失效)
        sudo firewall-cmd --zone=public --add-port=80/tcp
        
        # 删除规则
        sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
        

        4.3 高级功能

        # 设置服务(预定义规则集)
        sudo firewall-cmd --zone=public --add-service=http --permanent
        
        # 添加富规则(复杂匹配)
        sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept'
        
        # 启用 NAT 和路由
        sudo firewall-cmd --zone=public --add-masquerade --permanent
        

        5. 防火墙策略设计原则

        1. 最小化开放端口:仅开放必要服务(如 SSH、HTTP)。
        2. 默认拒绝策略:未明确允许的流量应默认拒绝。
        3. 分层防御:结合内核防火墙(iptables)和 service-level 防火墙(firewalld)。
        4. 日志记录:监控可疑流量(如 --log 选项)。
        5. 定期审计:清理过期规则,更新策略。

        6. 实战场景

        场景 1:Web 服务器防火墙配置

        # 使用 ufw
        sudo ufw allow 80,443/tcp
        sudo ufw default deny incoming
        sudo ufw enable
        
        # 使用 firewalld
        sudo firewall-cmd --zone=public --add-service=http --permanent
        sudo firewall-cmd --zone=public --add-service=httphttp://www.devze.coms --permanent
        

        场景 2:SSH 安全加固

        # 限制 IP 白名单(如允许 192.168.1.0/24 网段)
        sudo iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
        sudo iptables -A INPUT -p tcp --dport 22 -j DROP
        
        # 使用 fail2ban 防止python暴力破解
        sudo apt install fail2ban
        sudo systemctl start fail2ban
        

        7. 常见问题

        规则未生效:

        • 确保保存了规则(如 iptables-savefirewall-cmd --permanent)。
        • 检查是否有其他防火墙工具冲突(如同时运行 phpiptablesufw)。

        端口转发失败:

        • 确认 NAT 规则正确(iptables -t nat)。
        • 检查系统转发功能是否启用:sudo sysctl -w net.ipv4.ip_forward=1

        服务无法访问:

        • 确认防火墙区域(如 public)包含目标端口。
        • 检查 SELinux/AppArmor 是否拦截流量(需额外配置)。

        附录:工具选择建议

        • 新手:优先使用 ufw,命令简单直观。
        • 生产环境:使用 firewalld 管理动态服务规则。
        • 级需求:结合 iptables 处理复杂 NAT 和流量限制。

        通过合理配置防火墙,可以有效保护服务器安全,同时保持服务的可用性!

        到此这篇关于Linux系统下防火墙配置的详细指南的文章就介绍到这了,更多相关Linux防火墙配置内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

        0

        上一篇:

        下一篇:

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        最新运维

        运维排行榜