系统层安全强化
sudo apt update && sudo apt upgrade,确保Debian系统、Nginx、MySQL、PHP及所有依赖组件均为最新版本,及时修补已知安全漏洞。ufw(Uncomplicated Firewall)并启用,仅允许必要端口(如HTTP 80/tcp、HTTPS 443/tcp、SSH 22/tcp、MySQL 3306/tcp)的入站流量,拒绝其他未授权连接:sudo ufw allow 80/tcp; sudo ufw allow 443/tcp; sudo ufw allow 22/tcp; sudo ufw enable。/etc/ssh/sshd_config,设置PermitRootLogin no(禁用root远程登录)、PasswordAuthentication no(禁用密码认证),并添加SSH密钥认证(将公钥添加至~/.ssh/authorized_keys),最后重启SSH服务:sudo systemctl restart sshd。libpam-pwquality工具,编辑/etc/security/pwquality.conf,设置minlen=12(密码最小长度12位)、dcredit=-1(至少1个小写字母)、ucredit=-1(至少1个大写字母)、ocredit=-1(至少1个特殊字符),强制用户使用复杂密码。Nginx安全配置
/etc/nginx/nginx.conf,在server块中添加server_tokens off;(隐藏Nginx版本号);使用Let’s Encrypt获取免费SSL证书,配置Nginx强制跳转HTTPS(将HTTP 80端口的请求重定向至HTTPS 443端口)。server块中添加以下头部,防范XSS、点击劫持等攻击:add_header X-Content-Type-Options "nosniff"; add_header X-Frame-Options "SAMEORIGIN"; add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.example.com; style-src 'self' 'unsafe-inline' https://cdn.example.com; img-src 'self' data: https://cdn.example.com;";。nginx.conf的http块中设置client_max_body_size 2M;(限制上传文件大小不超过2MB),在server块中添加limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s;(限制每个IP每秒最多10个请求),并在location块中应用limit_req zone=req_limit_per_ip burst=20 nodelay;(突发请求限制)。--without-http_autoindex_module、--without-http_geo_module等参数禁用不需要的模块(如自动索引、地理定位),减少潜在攻击面。MySQL/MariaDB安全配置
sudo mysql_secure_installation,完成移除匿名用户、禁止root远程登录、移除测试数据库等操作;编辑MySQL配置文件(/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf),设置bind-address = 127.0.0.1(仅允许本地连接)。appuser),并仅授予其必要的权限(如SELECT、INSERT、UPDATE、DELETE),避免使用root用户:CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPassword123'; GRANT SELECT, INSERT, UPDATE, DELETE ON appdb.* TO 'appuser'@'localhost'; FLUSH PRIVILEGES;。general_log = 1(开启通用查询日志)、slow_query_log = 1(开启慢查询日志),并指定日志路径(如general_log_file = /var/log/mysql/mysql.log、slow_query_log_file = /var/log/mysql/slow.log),便于监控异常查询。PHP安全配置
/etc/php/7.4/fpm/php.ini(根据PHP版本调整路径),设置expose_php = Off(隐藏PHP版本信息)、display_errors = Off(关闭错误显示,防止泄露敏感信息)、log_errors = On(开启错误日志,记录至/var/log/php_errors.log)、memory_limit = 128M(限制内存使用)、max_execution_time = 30(限制脚本执行时间)、file_uploads = On(允许文件上传,但需限制大小)。/etc/php/7.4/fpm/pool.d/www.conf)中添加php_admin_value[open_basedir] = /var/www/html:/tmp/,限制PHP进程只能访问/var/www/html(网站根目录)和/tmp/(临时目录),防止非法文件访问。php.ini中设置disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source,禁用可能被用于执行系统命令的危险函数,降低代码执行攻击风险。监控与维护
Logwatch(sudo apt install logwatch)每日生成系统日志报告,或使用Fail2Ban(sudo apt install fail2ban)监控Nginx、SSH日志,自动封禁频繁尝试登录的IP地址(如sudo fail2ban-client set nginx-http-auth banip 192.168.1.100)。rsync或tar备份网站数据(/var/www/html)和数据库(mysqldump -u appuser -p appdb > appdb_backup.sql),并将备份文件存储至异地(如云存储),测试恢复流程以确保数据可恢复。lynis(sudo apt install lynis)进行系统安全审计,检查系统配置漏洞;或使用OpenVAS(开源漏洞扫描工具)扫描服务器,及时发现并修复潜在安全问题。