首页主机资讯如何在LNMP中设置防火墙规则

如何在LNMP中设置防火墙规则

时间2025-10-14 15:33:04发布访客分类主机资讯浏览582
导读:LNMP环境中设置防火墙规则的步骤 一、基础准备 在配置防火墙前,需完成以下基础安全设置,降低后续风险: 更新系统:运行sudo yum update(CentOS)或sudo apt update && sudo apt...

LNMP环境中设置防火墙规则的步骤

一、基础准备

在配置防火墙前,需完成以下基础安全设置,降低后续风险:

  • 更新系统:运行sudo yum update(CentOS)或sudo apt update & & sudo apt upgrade(Ubuntu),修复系统及组件漏洞。
  • 限制SSH访问:禁用root远程登录(修改/etc/ssh/sshd_config中的PermitRootLogin no),改用密钥认证;修改SSH端口(如Port 2222),减少暴力破解尝试。
  • 备份现有配置:若系统已有防火墙(如iptables),备份配置文件(sudo cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak)。

二、使用firewalld配置防火墙(推荐,适用于CentOS 7+、Ubuntu 16.04+)

firewalld是动态防火墙管理工具,支持区域(Zone)和服务(Service)概念,配置更直观。

1. 安装与启动firewalld
# 安装firewalld(若未安装)
sudo yum install -y firewalld    # CentOS/RHEL
sudo apt install -y firewalld    # Ubuntu/Debian

# 启动firewalld并设置开机自启
sudo systemctl start firewalld
sudo systemctl enable firewalld
2. 配置LNMP必要端口

LNMP环境需开放以下端口:

  • HTTP(80):Nginx网页服务
  • HTTPS(443):Nginx加密网页服务
  • MySQL(3306):数据库服务(建议仅允许本地或信任IP访问,见下文“安全增强”)
  • SSH(22):服务器远程管理(必开)
# 允许HTTP、HTTPS、SSH服务(自动开放对应端口)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=ssh

# 重新加载配置使更改生效
sudo firewall-cmd --reload
3. 验证规则
# 查看当前开放的端口和服务
sudo firewall-cmd --list-all

输出应包含httphttpsssh服务,且ports字段为空(若手动添加过端口)。

三、使用iptables配置防火墙(传统方式,适用于所有Linux发行版)

iptables是Linux内核级防火墙,需手动配置规则链,适合需要精细控制的场景。

1. 备份现有规则
sudo cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak  # CentOS/RHEL
sudo cp /etc/iptables/rules.v4 /etc/iptables/rules.v4.bak   # Ubuntu/Debian
2. 设置默认策略

默认拒绝所有入站和转发流量,允许所有出站流量(确保服务器自身能访问外网):

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
3. 添加LNMP必要规则

允许HTTP(80)、HTTPS(443)、SSH(22)端口,以及已建立的连接(避免中断现有会话):

# 允许已建立的连接和回环接口
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -i lo -j ACCEPT

# 允许HTTP(80)、HTTPS(443)、SSH(22)端口
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 22 -j ACCEPT

# (可选)允许MySQL(3306)端口(建议限制IP)
# sudo iptables -A INPUT -p tcp --dport 3306 -s 信任IP -j ACCEPT
4. 保存并重启iptables
# 保存规则(CentOS/RHEL)
sudo service iptables save

# 重启iptables服务
sudo systemctl restart iptables
5. 验证规则
sudo iptables -L -n --line-numbers

检查输出中是否有ACCEPT规则的dport为80、443、22。

四、安全增强建议

  1. 限制MySQL端口访问
    MySQL(3306)默认监听所有IP,建议仅允许本地或信任IP访问(以firewalld为例):

    sudo firewall-cmd --permanent --remove-service=mysql  # 移除全局开放
    sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="信任IP" port protocol="tcp" port="3306" accept'
    sudo firewall-cmd --reload
    
  2. 隐藏Nginx版本信息
    修改Nginx配置文件(/usr/local/nginx/conf/nginx.conf/etc/nginx/nginx.conf),添加:

    server_tokens off;
        
    

    重启Nginx使配置生效:sudo systemctl restart nginx

  3. 禁用PHP危险函数
    编辑php.ini/etc/php.ini/usr/local/php/etc/php.ini),禁用execpassthrushell_exec等高危函数:

    disable_functions = exec,passthru,shell_exec,system
    

    重启PHP-FPM:sudo systemctl restart php-fpm

  4. 使用Web应用防火墙(WAF)
    部署ngx_lua_waf(基于Nginx的LUA WAF),拦截SQL注入、XSS等攻击。安装步骤参考官方文档,核心配置包括:

    • 在Nginx配置中添加access_by_lua_file指令指向waf.lua;
    • 设置规则路径(config.waf.RulePath)和日志目录(config.waf.logdir);
    • 启用CC防护(config.waf.CCrate = "100/60",限制每分钟100次请求)。

五、注意事项

  • 测试配置:修改防火墙规则后,务必通过浏览器、SSH等工具测试服务器访问,避免误封必要端口。
  • 定期检查:每周检查防火墙规则(sudo firewall-cmd --list-allsudo iptables -L),移除不再需要的端口。
  • 备份规则:每次修改规则前备份配置文件,便于故障恢复。

通过以上步骤,可在LNMP环境中建立基础的防火墙防护,提升服务器安全性。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在LNMP中设置防火墙规则
本文地址: https://pptw.com/jishu/725942.html
Linux PHP-FPM安全策略有哪些 Ubuntu LNMP中如何进行故障排查

游客 回复需填写必要信息