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

配置服务器防火墙规则以开放或关闭端口是确保服务器安全、控制流量的重要步骤。以下是基于不同防火墙工具(如 UFWFirewalldIptables)的详细配置方法,适用于不同的 Linux 发行版。


1. 防火墙工具简介

在 Linux 系统中,以下是常见的防火墙工具:

  1. UFW(Uncomplicated Firewall):适用于 Ubuntu/Debian,操作简单,适合新手。
  2. Firewalld:默认用于 CentOS/RHEL 系统,支持动态防火墙规则。
  3. Iptables:低级防火墙工具,功能强大,但配置复杂。

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

UFW 是 Debian/Ubuntu 系统的默认防火墙工具,配置简单直观。

2.1 启用 UFW

默认情况下,UFW 可能未启用:

bash

复制代码
sudo ufw enable

2.2 开放端口

单个端口

开放 HTTP 服务(端口 80):

bash

复制代码
sudo ufw allow 80/tcp
多个端口

同时开放 HTTP 和 HTTPS 服务:

bash

复制代码
sudo ufw allow 80,443/tcp
端口范围

开放 3000 到 3100 的端口范围:

bash

复制代码
sudo ufw allow 3000:3100/tcp
允许特定 IP 访问指定端口

只允许 IP 192.168.1.100 访问 SSH(端口 22):

bash

复制代码
sudo ufw allow from 192.168.1.100 to any port 22

2.3 关闭端口

关闭 SSH 服务(端口 22):

bash

复制代码
sudo ufw deny 22/tcp

2.4 查看防火墙状态和规则

查看所有规则和状态:

bash

复制代码
sudo ufw status

2.5 删除规则

删除某条规则:

bash

复制代码
sudo ufw delete allow 80/tcp

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

Firewalld 是 CentOS/RHEL 的默认防火墙工具,支持动态规则管理。

3.1 启用 Firewalld

安装并启动 Firewalld:

bash

复制代码
sudo yum install firewalld -y
sudo systemctl start firewalld
sudo systemctl enable firewalld

3.2 开放端口

单个端口

开放 HTTP 服务(端口 80):

bash

复制代码
sudo firewall-cmd --permanent --add-port=80/tcp
端口范围

开放 3000 到 3100 的端口范围:

bash

复制代码
sudo firewall-cmd --permanent --add-port=3000-3100/tcp
允许特定 IP 访问指定端口

只允许 IP 192.168.1.100 访问 SSH(端口 22):

bash

复制代码
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'

3.3 关闭端口

关闭 HTTP 服务(端口 80):

bash

复制代码
sudo firewall-cmd --permanent --remove-port=80/tcp

3.4 查看防火墙状态和规则

查看所有开放端口

bash

复制代码
sudo firewall-cmd --list-ports
查看完整规则

bash

复制代码
sudo firewall-cmd --list-all

3.5 应用更改

每次修改规则后,重新加载防火墙:

bash

复制代码
sudo firewall-cmd --reload

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

Iptables 是 Linux 系统中功能强大的防火墙工具,适用于所有发行版。

4.1 检查并启用 Iptables

启动并启用 Iptables:

bash

复制代码
sudo systemctl start iptables
sudo systemctl enable iptables

4.2 开放端口

单个端口

开放 HTTP 服务(端口 80):

bash

复制代码
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
端口范围

开放 3000 到 3100 的端口范围:

bash

复制代码
sudo iptables -A INPUT -p tcp --dport 3000:3100 -j ACCEPT
允许特定 IP 访问指定端口

只允许 IP 192.168.1.100 访问 SSH(端口 22):

bash

复制代码
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT

4.3 关闭端口

单个端口

关闭 HTTP 服务(端口 80):

bash

复制代码
sudo iptables -A INPUT -p tcp --dport 80 -j DROP

4.4 查看防火墙规则

列出所有规则:

bash

复制代码
sudo iptables -L -n -v

4.5 保存规则

每次修改后,保存规则以防重启失效:

bash

复制代码
sudo service iptables save

5. 防火墙配置最佳实践

  1. 默认策略设置

    • 将默认策略设置为拒绝所有流量,然后仅开放必要端口。

    • 在 UFW 中: bash

      复制代码
      sudo ufw default deny incoming
      sudo ufw default allow outgoing
  2. 限制 SSH 访问

    • 修改 SSH 默认端口并限制来源 IP: bash

      复制代码
      sudo ufw allow from 192.168.1.100 to any port 2222
  3. 禁用 ICMP(Ping)请求

    • 防止恶意探测: bash

      复制代码
      sudo ufw deny proto icmp
  4. 启用日志

    • 在 UFW 中启用日志记录: bash

      复制代码
      sudo ufw logging on
  5. 定期审查规则

    • 定期检查防火墙规则,删除不必要的端口开放。

6. 总结

  • 使用 UFW:适合 Ubuntu/Debian 用户,操作简单直观。
  • 使用 Firewalld:适合 CentOS/RHEL 用户,动态管理规则更灵活。
  • 使用 Iptables:适合高级用户,需要更细粒度的防火墙规则配置。

通过合理配置防火墙规则,您可以有效地限制访问、保护服务器,减少被攻击的风险。

相关推荐
桃花键神4 小时前
Playwright MCP 服务器对比高层级的 MCP 服务器解决方案
运维·服务器
路遥芝麻4 小时前
如何使用升腾C92主机搭建本地Linux编译服务器并通过Windows映射访问共享目录
linux·服务器·windows
逆天小北鼻4 小时前
ng 映射pdf文件
运维·服务器·pdf
失因4 小时前
HAProxy 与 Tomcat
java·运维·tomcat
东方佑4 小时前
docker 部署gitlib
运维·docker·容器
宇钶宇夕4 小时前
S7-200 SMART PLC 以太网通信详解:3 种方式从原理到实操
运维·算法·自动化
数据知道4 小时前
Go基础:Go语言中内存分配用 new 还是 make?什么情况下该用谁?
服务器·开发语言·算法·golang·go语言
key_Go5 小时前
03.镜像
运维·服务器·网络·docker
Anthony_2315 小时前
Dockerfile构建镜像以及网络
linux·运维·服务器·网络·docker