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

配置服务器防火墙规则以开放或关闭端口是确保服务器安全、控制流量的重要步骤。以下是基于不同防火墙工具(如 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:适合高级用户,需要更细粒度的防火墙规则配置。

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

相关推荐
Raina测试1 小时前
Maestro实现IOSUI自动化
运维·自动化
不像程序员的程序媛8 小时前
系统cpu内存负载资源分析
运维·服务器·数据库
Asuicao11 小时前
centos7.9版本升级ssh OpenSSH 9.8p1 源码 OpenSSL 1.1.1w 源码包以及安装升级回滚文档
运维·ssh
耍酷的魔镜11 小时前
谈谈如何使用Netty开发实现高性能的RPC服务器
服务器·网络协议·rpc
志栋智能12 小时前
超自动化安全中的威胁狩猎
运维·安全·自动化
↘"LYong12 小时前
旧版 CentOS 安装 Docker 完整指南(附国内镜像加速)
linux·运维·docker
Elastic 中国社区官方博客13 小时前
Elastic 在 Everest Group 企业搜索产品 PEAK Matrix® 评估 2026 中被评为领导者
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索
程序员在囧途13 小时前
likeadmin-api API 中转站怎么做统一报价?从 /pricing、/user/balance 到 task_id 回执的落地方法
运维·服务器·数据库·likeadmin-api·api中转站·token计费
cookies_s_s13 小时前
C++ 字符串动态创建对象 -- 工厂模式、自动注册、模板递归动态调用
服务器·开发语言·c++
想你依然心痛14 小时前
Linux用户空间与内核空间通信:netlink、ioctl、mmap 零拷贝与性能对比
linux·运维·服务器