在Debian系统中,UFW(Uncomplicated Firewall) 是最常用的防火墙管理工具,其语法简洁、易于操作,适合新手快速配置。以下是针对LNMP(Linux+Nginx+MySQL+PHP)环境的防火墙配置流程:
首先更新系统软件包列表,安装UFW并启用它:
sudo apt update && sudo apt upgrade -y # 更新系统
sudo apt install ufw # 安装UFW
sudo ufw enable # 启用UFW(系统会提示确认,输入y即可)
启用后,UFW默认会拒绝所有传入连接,仅允许本地回环接口(localhost)的通信,确保初始状态安全。
为强化安全,建议设置默认规则:拒绝所有传入流量,允许所有传出流量(即服务器主动发起的连接不受限制):
sudo ufw default deny incoming # 拒绝所有传入连接
sudo ufw default allow outgoing # 允许所有传出连接
这一步可防止未明确允许的服务被外部访问。
LNMP环境需要开放以下端口,对应各组件的默认服务:
sudo ufw allow 'Nginx Full' # 一次性允许80/443端口(更便捷)
# 或分开配置:
sudo ufw allow 80/tcp # 允许HTTP
sudo ufw allow 443/tcp # 允许HTTPS
your_remote_ip):sudo ufw allow from your_remote_ip to any port 3306 proto tcp
sudo ufw allow from 127.0.0.1 to any port 3306
sudo ufw allow 9000/tcp # 允许PHP-FPM的TCP端口
⚠️ 注意:生产环境中,MySQL远程访问应严格限制IP范围,避免暴露数据库端口到公网。
sudo ufw status # 查看简要规则(开启/关闭状态)
sudo ufw status numbered # 查看带编号的详细规则(便于后续修改)
sudo ufw delete 2 # 删除编号为2的规则(需先通过status numbered查看编号)
sudo ufw reload # 重新加载规则(无需重启服务)
sudo systemctl enable ufw # 启用开机自启(默认已开启)
sudo systemctl disable ufw # 禁用开机自启
low/medium/high/full):sudo nano /etc/default/ufw # 编辑配置文件
# 找到LOGLEVEL=low,修改为LOGLEVEL=high(更详细的日志)
sudo ufw reload # 重新加载配置
若习惯使用传统防火墙工具,也可选择Iptables,但配置相对复杂。简要步骤如下:
sudo apt install iptables # 安装Iptables
# 允许SSH、HTTP、HTTPS、MySQL端口
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
# 设置默认策略(拒绝所有传入,允许所有传出)
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
# 保存规则(需安装iptables-persistent)
sudo sh -c "iptables-save > /etc/iptables/rules.v4"
Iptables规则重启后会丢失,需通过iptables-persistent工具保存。
通过以上步骤,即可在Debian系统下为LNMP环境配置安全的防火墙规则。需根据实际业务需求调整端口开放范围(如限制MySQL仅本地访问),并定期检查规则有效性。