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

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

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

相关推荐
xbzb42 分钟前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
Android系统攻城狮1 小时前
Linux FFmpeg深度解析之avio_open调用流程与实战(三十八)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
瑞克-桑切斯2 小时前
ERP 企业生产管理系统部署手册
运维·docker·云原生·容器·eureka
江屿风3 小时前
【Git-组件】【Git入门:从文档灾难到版本掌控】流食般投喂
运维·笔记·git·组件·版本控制
我不会起名字3223 小时前
K8s 节点磁盘打满导致 Pod 被驱逐:4 类占用与回收顺序
运维·kubernetes·k8s·diskpressure·evicted
雪落漂泊3 小时前
Linux进程(五):进程地址空间篇
linux·运维·服务器
瑞克-桑切斯3 小时前
docker mail商城
运维·docker·容器
AR-26710-4 小时前
Linux Day32——网络,ROCE-IB与以太网
linux·运维
不庸.5 小时前
WPScan 实战入门:从 Docker 靶场到弱密码爆破
运维·安全·web安全·docker·容器·安全性测试·wpscan
wdeok5 小时前
Socket编程Tcp
服务器·网络·tcp