在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
- 允许HTTP和HTTPS流量:
- 保存规则:使用
sudo iptables-save > /etc/iptables/rules.v4保存规则(路径可能因系统而异)。 - 启用并启动iptables:使用
sudo systemctl enable iptables和sudo 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
- 允许HTTP和HTTPS服务:
- 重新加载配置:使用
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
- 允许HTTP和HTTPS流量:
- 查看ufw状态:使用
sudo ufw status命令查看ufw的状态和规则。
使用ngx_lua_waf(Web应用防火墙)
- 安装ngx_lua_waf:下载并安装ngx_lua_waf(安装步骤可能因版本而异,请参考ngx_lua_waf的官方文档)。
- 配置Nginx:在你的Nginx配置文件中添加ngx_lua_waf模块的配置,包括规则路径、日志路径、白名单和黑名单等。
无论选择哪种方法,都需要根据你的实际情况进行调整。在修改防火墙规则后,务必测试你的应用是否能够正常访问。不正确的防火墙配置可能会导致你的服务器无法访问。强烈建议在生产环境中进行操作前,先在测试环境中进行测试。