UFW(Uncomplicated Firewall)是Ubuntu默认的防火墙管理工具,基于iptables构建,操作简单。首先更新软件包列表并安装UFW:
sudo apt update
sudo apt install ufw
安装完成后,启用UFW(启用后会拦截所有未明确允许的入站流量):
sudo ufw enable
系统会提示“Command may disrupt existing ssh sessions”,输入y确认启用。
为遵循“最小权限原则”,建议设置默认规则:拒绝所有入站流量、允许所有出站流量(服务器自身发起的请求不受限制):
sudo ufw default deny incoming
sudo ufw default allow outgoing
这一步是防火墙安全的基础,能有效减少未授权访问的风险。
LNMP环境(Linux+Nginx+MySQL+PHP)需要开放以下端口,确保服务正常运行:
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 3306/tcp # MySQL
fastcgi_pass一致):sudo ufw allow 9000/tcp # PHP-FPM
sudo ufw allow from <你的IP地址> to any port 22 # 替换<你的IP地址>为实际IP
若暂时不确定IP,可先允许所有IP访问(后续再修改):sudo ufw allow 22/tcp # SSH(临时)
SSH端口(22)是黑客攻击的高频目标,可通过limit命令限制连接速率(如每分钟最多6次尝试),触发阈值后自动拒绝后续连接:
sudo ufw limit 22/tcp
此功能能有效降低暴力破解风险,即使密码泄露也能延缓攻击进度。
verbose参数可显示详细信息(如端口对应的协议):sudo ufw status verbose
输出示例:Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW Anywhere # SSH
80/tcp ALLOW Anywhere # HTTP
443/tcp ALLOW Anywhere # HTTPS
3306/tcp ALLOW Anywhere # MySQL
9000/tcp ALLOW Anywhere # PHP-FPM
22/tcp (v6) ALLOW Anywhere (v6) # SSH
sudo ufw status numbered # 列出规则及编号
sudo ufw delete 3 # 删除编号为3的规则(如3306/tcp)
http://<服务器IP>),应能正常显示Nginx欢迎页面;访问443端口(如https://<服务器IP>),应能跳转至HTTPS页面。ssh username@<服务器IP>),应能正常连接;若限制了IP,其他IP应无法连接。active状态(sudo ufw status显示“Status: active”),否则规则不会生效。