温馨提示×

如何在LNMP中设置防火墙

小樊
46
2025-07-27 07:59:36
栏目: 编程语言

在LNMP(Linux, Nginx, MySQL, PHP)环境中设置防火墙可以保护你的服务器免受未经授权的访问。以下是几种常见的方法:

使用iptables

  • 查看当前规则:使用 sudo iptables -L 命令查看当前iptables规则。
  • 设置默认策略:设置默认策略为拒绝所有入站连接,允许所有出站连接:
    sudo iptables -P INPUT DROP
    sudo iptables -P FORWARD DROP
    sudo iptables -P OUTPUT ACCEPT
    
  • 添加允许规则
    • 允许HTTP和HTTPS流量:
      sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTP
      sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # HTTPS
      
  • 保存规则:使用 sudo iptables-save > /etc/iptables/rules.v4 保存规则(路径可能因系统而异)。
  • 启用并启动iptables:使用 sudo systemctl enable iptablessudo systemctl start iptables 命令启用并启动iptables服务。重启iptables服务使配置生效:sudo systemctl restart iptables

使用firewalld

  • 查看firewalld状态:使用 sudo systemctl status firewalld 命令查看firewalld的状态。
  • 添加服务
    • 允许HTTP和HTTPS服务:
      sudo firewall-cmd --permanent --zone=public --add-service=https
      sudo firewall-cmd --permanent --zone=public --add-service=http
      
  • 重新加载配置:使用 sudo firewall-cmd --reload 命令重新加载firewalld配置。

使用ufw(Uncomplicated Firewall)

  • 安装ufw
    sudo apt update
    sudo apt install ufw
    
  • 启用ufw
    sudo ufw enable
    
  • 设置默认策略
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    
  • 允许必要的端口
    • 允许HTTP和HTTPS流量:
      sudo ufw allow http
      sudo ufw allow https
      
    • 允许MySQL/MariaDB连接:
      sudo ufw allow mysql
      
    • 允许PHP-FPM(如果使用):
      sudo ufw allow 9000/tcp
      
  • 查看ufw状态:使用 sudo ufw status 命令查看ufw的状态和规则。

使用ngx_lua_waf(Web应用防火墙)

  • 安装ngx_lua_waf:下载并安装ngx_lua_waf(安装步骤可能因版本而异,请参考ngx_lua_waf的官方文档)。
  • 配置Nginx:在你的Nginx配置文件中添加ngx_lua_waf模块的配置,包括规则路径、日志路径、白名单和黑名单等。

无论选择哪种方法,都需要根据你的实际情况进行调整。在修改防火墙规则后,务必测试你的应用是否能够正常访问。不正确的防火墙配置可能会导致你的服务器无法访问。强烈建议在生产环境中进行操作前,先在测试环境中进行测试。

0