温馨提示×

Debian下LNMP的安全策略有哪些

小樊
41
2025-10-18 21:20:36
栏目: 智能运维

Debian下LNMP环境安全策略

1. Linux系统基础安全加固

  • 系统更新:定期执行sudo apt update && sudo apt upgrade,安装所有安全补丁,修复已知漏洞。
  • 用户与权限管理:删除冗余用户账户,禁用root用户直接SSH登录(修改/etc/ssh/sshd_configPermitRootLogin no);为日常操作创建普通用户,通过sudo提权;使用chmod/umask严格设置文件/目录权限(如网站目录设为750,避免全局可写)。
  • 密码策略:安装libpam-pwquality工具,修改/etc/security/pwquality.conf,强制用户设置包含大小写字母、数字和特殊字符的强密码(如minlen=12dcredit=-1)。
  • 禁用不必要服务:通过systemctl list-units --type service --state=running列出运行中的服务,禁用无用服务(如telnetftp),减少攻击面。

2. 防火墙配置(UFW为例)

  • 安装与启用:执行sudo apt install ufw && sudo ufw enable开启防火墙。
  • 规则设置:仅允许必要端口通过(SSH:sudo ufw allow 22/tcp;HTTP:sudo ufw allow 80/tcp;HTTPS:sudo ufw allow 443/tcp);拒绝所有未明确允许的入站连接(sudo ufw default deny incoming)。

3. SSH服务安全强化

  • 修改默认端口:编辑/etc/ssh/sshd_config,将Port 22改为非标准端口(如Port 2222),降低端口扫描风险。
  • 密钥认证:生成SSH密钥对(ssh-keygen -t rsa -b 4096),将公钥复制到服务器~/.ssh/authorized_keys,禁用密码认证(PasswordAuthentication no)。
  • 访问限制:通过AllowUsers指令指定允许登录的用户(如AllowUsers youruser),或使用/etc/hosts.allow//etc/hosts.deny限制IP访问。

4. Nginx Web服务器安全配置

  • 隐藏版本信息:修改/etc/nginx/nginx.conf,在server_tokens off;指令中关闭版本号显示,避免攻击者利用版本漏洞攻击。
  • 限制HTTP方法:在location块中添加limit_except GET POST HEAD { deny all; },仅允许必要HTTP方法,阻止恶意请求(如PUT、DELETE)。
  • 目录保护:禁用敏感目录(如/wp-admin)的自动索引(autoindex off;),防止目录结构泄露;配置防盗链(valid_referers none blocked yourdomain.com;),避免资源被非法盗用。
  • 权限降级:以非root用户(如www-data)运行Nginx(修改/etc/nginx/nginx.confuser www-data;),降低权限风险。
  • 安全响应头:添加Content-Security-Policy(防XSS)、X-Content-Type-Options(防MIME嗅探)、X-Frame-Options(防点击劫持)等头部,增强防御能力。

5. MySQL/MariaDB数据库安全加固

  • 初始安全设置:安装后运行sudo mysql_secure_installation,设置root密码、删除匿名用户、禁止远程root登录、删除测试数据库。
  • 远程访问控制:修改/etc/mysql/mysql.conf.d/mysqld.cnf,将bind-address设为127.0.0.1,仅允许本地连接;如需远程访问,通过SSH隧道转发端口。
  • 权限管理:遵循最小权限原则,为用户分配仅必要的权限(如GRANT SELECT, INSERT ON database.* TO 'user'@'localhost';);定期审核权限(SHOW GRANTS FOR 'user'@'localhost';)。
  • 数据加密:启用SSL/TLS加密数据库连接(修改my.cnf添加ssl-cassl-certssl-key配置),保护数据传输安全。

6. PHP安全配置

  • PHP-FPM进程隔离:修改/etc/php/{version}/fpm/pool.d/www.conf,设置listen.owner = www-datalisten.group = www-datalisten.mode = 0660,确保PHP-FPM进程以非root用户运行,避免权限提升。
  • 禁用危险函数:在php.ini中添加disable_functions = exec,passthru,shell_exec,system,禁止执行系统命令,防止代码注入。
  • 错误处理:生产环境中关闭错误显示(display_errors = Off),将错误日志记录到文件(log_errors = Onerror_log = /var/log/php_errors.log),避免泄露敏感信息。
  • 安全扩展:启用opcacheopcache.enable=1)提高性能,减少代码暴露风险;安装mod_security等Web应用防火墙(WAF)模块,过滤恶意请求。

7. 日志监控与入侵检测

  • 日志管理:使用Logwatchsudo apt install logwatch)自动生成每日日志报告,监控系统活动;查看Nginx(/var/log/nginx/access.log/error.log)、MySQL(/var/log/mysql/error.log)、PHP(/var/log/php_errors.log)日志,及时发现异常。
  • 入侵检测:安装Fail2bansudo apt install fail2ban),配置jail.local文件,针对SSH、Nginx等服务的暴力破解尝试进行封禁(如[sshd] enabled = true maxretry = 3 bantime = 3600),阻止重复攻击。

8. 数据备份与恢复

  • 定期备份:使用rsyncrsync -avz /var/www/html /backup/html)或tartar -czvf /backup/site_$(date +%F).tar.gz /var/www/html)备份网站文件;使用mysqldumpmysqldump -u user -p database > backup.sql)备份数据库,将备份文件存储到异地(如云存储)。
  • 恢复测试:定期测试备份文件的可用性(如tar -xzvf backup.tar.gz -C /var/www/html恢复网站),确保在数据丢失时能快速恢复。

9. 软件版本与依赖管理

  • 使用最新稳定版:通过Debian官方仓库或官方源安装最新稳定版的Nginx、MySQL、PHP(如sudo apt install nginx mysql-server php-fpm),避免使用过时版本的安全漏洞。
  • 依赖检查:定期运行sudo apt audit检查系统依赖的安全漏洞,及时更新有问题的包。

0