服务器购买后,设置防火墙是保障网络安全的第一步。防火墙可以控制流量的进出,防止未经授权的访问,同时保护服务器免受攻击。以下是服务器防火墙的设置步骤,包括常见的防火墙工具(如 UFW、firewalld 和 iptables)的配置方法。
一、准备工作
确认服务器环境
服务器操作系统:如 Ubuntu、Debian、CentOS 或 Windows Server。确认服务器的 SSH 端口(默认是 22),避免被误封。
检查防火墙工具
常见的防火墙工具:
UFW(适用于 Ubuntu/Debian 系统)firewalld(适用于 CentOS/RHEL 系统)iptables(传统防火墙工具,支持所有 Linux 系统)
备份当前配置
在配置防火墙之前,确保备份服务器的重要数据或防火墙规则,避免配置错误导致服务中断。
开放 SSH 端口
在配置防火墙前,确保 SSH 端口(默认是 22)已开放,否则可能无法远程连接服务器。二、设置防火墙(Linux 系统)
1. 使用 UFW(适用于 Ubuntu/Debian)
1.1 安装 UFW
检查是否已安装:
bash
复制
sudo ufw status
如果未安装:
bash
复制
sudo apt update
sudo apt install ufw
1.2 配置基本规则
允许 SSH 端口(默认22):
bash
复制
sudo ufw allow 22
如果 SSH 使用自定义端口(如 2222),需替换为对应端口:
bash
复制
sudo ufw allow 2222
允许 HTTP 和 HTTPS 端口(80 和 443):
bash
复制
sudo ufw allow 80
sudo ufw allow 443
允许特定 IP 访问特定端口:
例如,只允许 IP 192.168.1.100 访问 SSH:
bash
复制
sudo ufw allow from 192.168.1.100 to any port 22
拒绝所有其他流量:
bash
复制
sudo ufw default deny incoming
sudo ufw default allow outgoing
1.3 启用防火墙
启用 UFW:
bash
复制
sudo ufw enable
查看当前状态和规则:
bash
复制
sudo ufw status verbose
1.4 删除规则
删除某个规则,例如关闭 SSH:
bash
复制
sudo ufw delete allow 22
2. 使用 firewalld(适用于 CentOS/RHEL)
2.1 安装 firewalld
检查是否已安装:
bash
复制
sudo firewall-cmd --state
如果未安装:
bash
复制
sudo yum install firewalld -y
sudo systemctl start firewalld
sudo systemctl enable firewalld
2.2 配置基本规则
允许 SSH 端口(默认22):
bash
复制
sudo firewall-cmd --permanent --add-service=ssh
如果使用自定义端口(如 2222):
bash
复制
sudo firewall-cmd --permanent --add-port=2222/tcp
允许 HTTP 和 HTTPS 服务:
bash
复制
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
允许特定 IP 访问特定端口:
例如,允许 IP 192.168.1.100 访问端口 3306(MySQL):
bash
复制
sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port='3306' accept"
拒绝所有其他流量:
默认规则通常已拒绝其他流量,但可以手动设置:
bash
复制
sudo firewall-cmd --set-default-zone=drop
2.3 重新加载防火墙
使规则生效:
bash
复制
sudo firewall-cmd --reload
2.4 查看规则
列出当前所有规则:
bash
复制
sudo firewall-cmd --list-all
查看所有已开放的端口:
bash
复制
sudo firewall-cmd --list-ports
2.5 删除规则
关闭特定端口:
bash
复制
sudo firewall-cmd --permanent --remove-port=3306/tcp
sudo firewall-cmd --reload
3. 使用 iptables(适用于所有 Linux 系统)
3.1 查看当前规则
显示当前 iptables 规则:
bash
复制
sudo iptables -L -v -n
3.2 配置基本规则
允许 SSH 流量(默认22):
bash
复制
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
允许 HTTP 和 HTTPS 流量(80 和 443):
bash
复制
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
允许特定 IP 访问特定端口:
例如,允许 IP 192.168.1.100 访问端口 3306:
bash
复制
sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT
拒绝所有其他流量:
bash
复制
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
3.3 保存规则
保存规则以防重启丢失:
bash
复制
sudo iptables-save > /etc/iptables/rules.v4
3.4 删除规则
删除某条规则:
bash
复制
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT
三、设置防火墙(Windows Server)
1. 打开防火墙
在 服务器管理器 → 工具 → 高级安全 Windows 防火墙 中打开防火墙设置。2. 配置规则
允许特定端口(如 3389 远程桌面):
在 入站规则 中,选择 新建规则 → 端口 → 输入端口号(如 3389) → 允许连接。
允许特定 IP 段访问:
新建规则时,在 作用域 设置中指定允许的 IP 地址或网段。
拒绝所有其他流量:
在默认规则中设置为 阻止连接,只允许特定规则。四、防火墙规则的最佳实践
开放必要端口
例如:SSH (22)、HTTP (80)、HTTPS (443)、数据库端口(如 MySQL 的 3306)。
限制 IP 访问
对管理端口(如 SSH 或远程桌面)设置特定 IP 或网段的访问规则。
启用日志
配置防火墙日志以监控异常流量和攻击行为。
测试规则
在应用规则前,逐一测试端口的连通性,避免误封。
定期检查和更新规则
定期审查防火墙规则,移除不必要的端口或服务。通过以上步骤,你可以在服务器上成功设置防火墙,大幅提高服务器的安全性。无论是 Linux 还是 Windows Server,都可以根据需求灵活配置防火墙规则。