服务器如何配置防火墙规则开放/关闭端口?

发布于:2025-09-03 ⋅ 阅读:(17) ⋅ 点赞:(0)

在服务器上配置防火墙规则以开放或关闭端口是保障网络安全的关键步骤。以下是基于常见防火墙工具(如 iptablesfirewalldufw)的详细配置方法,以及如何检查和验证规则的完整流程。


1. 准备工作

1.1 检查当前防火墙状态

  • Linux 系统通常使用以下防火墙工具之一:

    • iptables(传统防火墙工具)。
    • firewalld(现代服务,CentOS/RHEL 7+ 默认)。
    • ufw(Ubuntu/Debian 默认的简化防火墙工具)。
  • 检查防火墙状态

    bash

    复制

    # 检查 firewalld 是否运行
    systemctl status firewalld
    
    # 检查 ufw 是否启用
    ufw status
    
    # 检查 iptables 规则
    iptables -L -n -v
    

2. 使用 firewalld 配置防火墙规则

firewalld 是 CentOS/RHEL 7+ 和 Fedora 的默认防火墙工具,支持动态配置。

2.1 开放端口

  • 永久开放端口(如 80 和 443)

    bash

    复制

    firewall-cmd --permanent --add-port=80/tcp
    firewall-cmd --permanent --add-port=443/tcp
    
  • 重新加载规则以生效

    bash

    复制

    firewall-cmd --reload
    
  • 开放特定服务(如 HTTP 和 HTTPS)
    如果服务已注册:

    bash

    复制

    firewall-cmd --permanent --add-service=http
    firewall-cmd --permanent --add-service=https
    firewall-cmd --reload
    

2.2 关闭端口

  • 永久关闭端口(如 8080)

    bash

    复制

    firewall-cmd --permanent --remove-port=8080/tcp
    firewall-cmd --reload
    
  • 关闭服务

    bash

    复制

    firewall-cmd --permanent --remove-service=http
    firewall-cmd --reload
    

2.3 查看当前防火墙规则

  • 列出所有开放的端口

    bash

    复制

    firewall-cmd --list-ports
    
  • 列出所有开放的服务

    bash

    复制

    firewall-cmd --list-services
    

3. 使用 iptables 配置防火墙规则

iptables 是传统的 Linux 防火墙工具,功能强大但配置复杂。

3.1 开放端口

  • 开放 TCP 80 端口

    bash

    复制

    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    
  • 开放 UDP 53 端口(DNS 服务)

    bash

    复制

    iptables -A INPUT -p udp --dport 53 -j ACCEPT
    
  • 保存规则

    • CentOS/RHEL 7+:

      bash

      复制

      service iptables save
      
    • Ubuntu/Debian(安装 iptables-persistent):

      bash

      复制

      netfilter-persistent save
      

3.2 关闭端口

  • 禁止 TCP 8080 端口

    bash

    复制

    iptables -A INPUT -p tcp --dport 8080 -j DROP
    
  • 删除规则(如误加规则)
    先找到规则编号:

    bash

    复制

    iptables -L --line-numbers
    

    然后删除:

    bash

    复制

    iptables -D INPUT [规则编号]
    

3.3 查看当前规则

  • 列出所有规则

    bash

    复制

    iptables -L -n -v
    
  • 仅查看 INPUT 链规则

    bash

    复制

    iptables -L INPUT -n -v
    

4. 使用 ufw 配置防火墙规则

ufw(Uncomplicated Firewall)是 Ubuntu/Debian 的默认防火墙工具,操作简单。

4.1 开放端口

  • 永久开放端口(如 22 和 3306)

    bash

    复制

    ufw allow 22/tcp
    ufw allow 3306/tcp
    
  • 开放服务(如 HTTP 和 HTTPS)

    bash

    复制

    ufw allow http
    ufw allow https
    

4.2 关闭端口

  • 永久关闭端口(如 8080)

    bash

    复制

    ufw deny 8080
    
  • 禁用服务(如 HTTP)

    bash

    复制

    ufw deny http
    

4.3 查看当前规则

  • 列出所有规则:

    bash

    复制

    ufw status
    

5. 验证防火墙配置

5.1 检查端口开放状态

  • 使用 netstat 检查端口监听

    bash

    复制

    netstat -tuln | grep [端口号]
    
  • 使用 ss 命令替代 netstat

    bash

    复制

    ss -tuln | grep [端口号]
    

5.2 外部测试端口开放

  • 本地测试

    bash

    复制

    telnet 127.0.0.1 [端口号]
    
  • 外部测试(如从另一台服务器)

    bash

    复制

    telnet [服务器IP] [端口号]
    
  • 使用 nmap 扫描端口

    bash

    复制

    nmap [服务器IP] -p [端口号]
    

6. 防火墙配置的安全建议

  1. 默认拒绝所有入站流量

    • 配置默认策略为拒绝:

      bash

      复制

      # firewalld
      firewall-cmd --set-default-zone=drop
      
      # iptables
      iptables -P INPUT DROP
      
      # ufw
      ufw default deny incoming
      
  2. 仅开放必要端口

    • 如 Web 服务仅开放 80443,SSH 仅开放 22
  3. 限制 SSH 访问

    • 仅允许特定 IP 地址访问:

      bash

      复制

      # firewalld
      firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.100 port port=22 protocol=tcp accept"
      
      # iptables
      iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
      
      # ufw
      ufw allow from 192.168.1.100 to any port 22
      
  4. 启用日志记录

    • 便于排查问题或检测攻击流量:

      bash

      复制

      iptables -A INPUT -j LOG --log-prefix "iptables-log: "
      
  5. 定期检查规则

    • 确保规则符合当前需求,删除不必要的开放端口。

总结

配置防火墙规则以开放或关闭端口的关键步骤包括:

  1. 确认防火墙工具(firewalldiptablesufw)。
  2. 根据需求开放或关闭端口。
  3. 验证防火墙规则是否生效。
  4. 定期检查和优化防火墙配置。

通过合理的防火墙配置,可以有效提高服务器的安全性,减少攻击风险。


网站公告

今日签到

点亮在社区的每一天
去签到