温馨提示×

LNMP环境下Ubuntu如何设置防火墙

小樊
41
2025-10-07 18:35:33
栏目: 智能运维

LNMP环境下Ubuntu防火墙(UFW)配置步骤

1. 安装与启用UFW

UFW(Uncomplicated Firewall)是Ubuntu默认的防火墙管理工具,基于iptables构建,操作简单。首先更新软件包列表并安装UFW:

sudo apt update
sudo apt install ufw

安装完成后,启用UFW(启用后会拦截所有未明确允许的入站流量):

sudo ufw enable

系统会提示“Command may disrupt existing ssh sessions”,输入y确认启用。

2. 设置默认规则

为遵循“最小权限原则”,建议设置默认规则:拒绝所有入站流量允许所有出站流量(服务器自身发起的请求不受限制):

sudo ufw default deny incoming
sudo ufw default allow outgoing

这一步是防火墙安全的基础,能有效减少未授权访问的风险。

3. 允许必要服务端口

LNMP环境(Linux+Nginx+MySQL+PHP)需要开放以下端口,确保服务正常运行:

  • Nginx:HTTP(80端口,用于网页访问)、HTTPS(443端口,用于加密网页访问):
    sudo ufw allow 80/tcp    # HTTP
    sudo ufw allow 443/tcp   # HTTPS
    
  • MySQL/MariaDB:数据库服务端口(3306,默认用于本地或远程数据库连接):
    sudo ufw allow 3306/tcp  # MySQL
    
  • PHP-FPM:若使用PHP-FPM处理PHP请求,默认监听9000端口(需与Nginx配置中的fastcgi_pass一致):
    sudo ufw allow 9000/tcp  # PHP-FPM
    
  • SSH:远程管理服务器的必要端口(默认22端口),建议限制访问IP(仅允许自己的IP访问),提升安全性:
    sudo ufw allow from <你的IP地址> to any port 22  # 替换<你的IP地址>为实际IP
    
    若暂时不确定IP,可先允许所有IP访问(后续再修改):
    sudo ufw allow 22/tcp  # SSH(临时)
    

4. 防止SSH暴力破解(可选但推荐)

SSH端口(22)是黑客攻击的高频目标,可通过limit命令限制连接速率(如每分钟最多6次尝试),触发阈值后自动拒绝后续连接:

sudo ufw limit 22/tcp

此功能能有效降低暴力破解风险,即使密码泄露也能延缓攻击进度。

5. 查看与管理规则

  • 查看当前规则:确认规则是否正确应用,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)
    

6. 测试与验证

  • 测试服务访问:在浏览器中访问服务器IP的80端口(如http://<服务器IP>),应能正常显示Nginx欢迎页面;访问443端口(如https://<服务器IP>),应能跳转至HTTPS页面。
  • 测试SSH连接:从允许的IP地址尝试SSH登录(如ssh username@<服务器IP>),应能正常连接;若限制了IP,其他IP应无法连接。
  • 检查UFW状态:确保UFW处于active状态(sudo ufw status显示“Status: active”),否则规则不会生效。

注意事项

  • 避免锁定自己:配置UFW前,务必确保SSH端口(22)已允许访问,否则可能导致无法远程登录服务器。
  • 仅开放必要端口:不要开放未使用的端口(如FTP的21端口、Redis的6379端口),减少攻击面。
  • 定期检查规则:每月至少检查一次UFW规则,及时删除不再需要的端口(如测试后关闭的临时端口)。
  • 结合其他安全措施:UFW只是基础防护,建议配合SSH密钥认证、Fail2Ban(防暴力破解)、定期系统更新等措施,提升服务器安全性。

0