Debian下LNMP环境安全策略
sudo apt update && sudo apt upgrade,安装所有安全补丁,修复已知漏洞。/etc/ssh/sshd_config中PermitRootLogin no);为日常操作创建普通用户,通过sudo提权;使用chmod/umask严格设置文件/目录权限(如网站目录设为750,避免全局可写)。libpam-pwquality工具,修改/etc/security/pwquality.conf,强制用户设置包含大小写字母、数字和特殊字符的强密码(如minlen=12、dcredit=-1)。systemctl list-units --type service --state=running列出运行中的服务,禁用无用服务(如telnet、ftp),减少攻击面。sudo apt install ufw && sudo ufw enable开启防火墙。sudo ufw allow 22/tcp;HTTP:sudo ufw allow 80/tcp;HTTPS:sudo ufw allow 443/tcp);拒绝所有未明确允许的入站连接(sudo ufw default deny incoming)。/etc/ssh/sshd_config,将Port 22改为非标准端口(如Port 2222),降低端口扫描风险。ssh-keygen -t rsa -b 4096),将公钥复制到服务器~/.ssh/authorized_keys,禁用密码认证(PasswordAuthentication no)。AllowUsers指令指定允许登录的用户(如AllowUsers youruser),或使用/etc/hosts.allow//etc/hosts.deny限制IP访问。/etc/nginx/nginx.conf,在server_tokens off;指令中关闭版本号显示,避免攻击者利用版本漏洞攻击。location块中添加limit_except GET POST HEAD { deny all; },仅允许必要HTTP方法,阻止恶意请求(如PUT、DELETE)。/wp-admin)的自动索引(autoindex off;),防止目录结构泄露;配置防盗链(valid_referers none blocked yourdomain.com;),避免资源被非法盗用。www-data)运行Nginx(修改/etc/nginx/nginx.conf中user www-data;),降低权限风险。Content-Security-Policy(防XSS)、X-Content-Type-Options(防MIME嗅探)、X-Frame-Options(防点击劫持)等头部,增强防御能力。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';)。my.cnf添加ssl-ca、ssl-cert、ssl-key配置),保护数据传输安全。/etc/php/{version}/fpm/pool.d/www.conf,设置listen.owner = www-data、listen.group = www-data、listen.mode = 0660,确保PHP-FPM进程以非root用户运行,避免权限提升。php.ini中添加disable_functions = exec,passthru,shell_exec,system,禁止执行系统命令,防止代码注入。display_errors = Off),将错误日志记录到文件(log_errors = On、error_log = /var/log/php_errors.log),避免泄露敏感信息。opcache(opcache.enable=1)提高性能,减少代码暴露风险;安装mod_security等Web应用防火墙(WAF)模块,过滤恶意请求。Logwatch(sudo apt install logwatch)自动生成每日日志报告,监控系统活动;查看Nginx(/var/log/nginx/access.log/error.log)、MySQL(/var/log/mysql/error.log)、PHP(/var/log/php_errors.log)日志,及时发现异常。Fail2ban(sudo apt install fail2ban),配置jail.local文件,针对SSH、Nginx等服务的暴力破解尝试进行封禁(如[sshd] enabled = true maxretry = 3 bantime = 3600),阻止重复攻击。rsync(rsync -avz /var/www/html /backup/html)或tar(tar -czvf /backup/site_$(date +%F).tar.gz /var/www/html)备份网站文件;使用mysqldump(mysqldump -u user -p database > backup.sql)备份数据库,将备份文件存储到异地(如云存储)。tar -xzvf backup.tar.gz -C /var/www/html恢复网站),确保在数据丢失时能快速恢复。sudo apt install nginx mysql-server php-fpm),避免使用过时版本的安全漏洞。sudo apt audit检查系统依赖的安全漏洞,及时更新有问题的包。