LNMP(Linux + Nginx + MySQL + PHP)作为流行的Web服务架构,其安全性需要从系统层、服务层、应用层进行全方位防护。以下是关键保障措施和最佳实践:
最小化安装与更新
yum --setopt=install_weak_deps=False install package
yum update -y && apt-get update && apt-get upgrade -y
用户与权限控制
/etc/ssh/sshd_config
中PermitRootLogin no
visudo
限制用户权限chmod 750 /etc/nginx/
(Nginx配置目录)防火墙与SELinux
# 启用firewalld
firewall-cmd --permanent --add-service={http,https}
firewall-cmd --reload
# 启用SELinux(Enforcing模式)
setenforce 1
基础配置
server_tokens off;
if ($request_method !~ ^(GET|POST|HEAD)$) { return 444; }
HTTPS强制化
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
certbot --nginx
防常见攻击
nginx
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
autoindex off;
初始化安全
mysql_secure_installation # 交互式安全设置
权限最小化
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPassword!123';
GRANT SELECT,INSERT ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
日志与加密
log_bin = /var/log/mysql/mysql-bin.log
REQUIRE SSL
用户选项php.ini关键参数
expose_php = Off
disable_functions = exec,passthru,shell_exec,system
open_basedir = /var/www/html:/tmp
运行环境隔离
ini
[www]
user = nginx
group = nginx
版本维护
文件上传控制
chmod -R 750 /uploads
nginx
location ~* \.(php|pl|py|jsp)$ {
deny all;
}
WAF集成
定期漏洞扫描
日志集中分析
grep '404' /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c
入侵检测
aide --init && mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
备份策略
bash
mysqldump -u root -p --all-databases | gzip > /backups/mysql_$(date +%F).sql.gz
bash
docker run --rm -v /:/host aquasec/kube-bench:latest cis
bash
lynis audit system
通过以上分层防护措施,LNMP环境可达到企业级安全水平。建议每季度进行一次渗透测试(如使用Kali Linux工具集),并保持所有组件的最新稳定版本。安全是一个持续过程,需结合技术手段和运维规范共同保障。