Linux LAMP架构安全加固指南
LAMP(Linux+Apache+MySQL+PHP)作为经典Web架构,需通过分层加固(系统层、Web服务层、数据库层、应用层、网络层)构建纵深防御体系,以下是具体措施:
操作系统是基础,需优先强化:
unattended-upgrades),移除不必要的软件包(如telnet、rsh等明文协议工具),降低已知漏洞风险。PermitRootLogin no)、关闭密码认证(PasswordAuthentication no),强制使用密钥认证;修改默认SSH端口(如改为2222),减少暴力破解尝试。/var/www/html)权限为755(目录)、644(文件),归属www-data用户及组;使用chattr +i锁定关键系统文件(如/etc/passwd、/etc/shadow),防止篡改。Fail2Ban防御SSH暴力破解(设置maxretry=3、bantime=1h);启用SELinux(sestatus检查状态)或AppArmor,限制进程权限(如为Web目录设置httpd_sys_content_t上下文)。Apache作为前端服务,需针对性减少暴露风险:
ServerTokens Prod、ServerSignature Off),避免泄露版本号、操作系统等细节;禁用目录浏览(Options -Indexes),防止攻击者枚举文件。<Directory>指令限制目录访问(如Require all denied),仅允许可信IP访问管理后台;使用mod_rewrite模块重写URL,隐藏真实路径(如将/admin映射为/a1b2c3)。mod_security(OWASP核心规则集),拦截SQL注入、XSS、CSRF等常见Web攻击;开启mod_headers,添加安全HTTP头(如X-Content-Type-Options: nosniff、X-Frame-Options: DENY),防范点击劫持、MIME类型嗅探。cgi、server-side includes),减少攻击面。数据库存储核心数据,需重点保护数据安全:
DELETE FROM mysql.user WHERE User='')和远程root登录(REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%');遵循最小权限原则,为应用创建专用用户(如GRANT SELECT, INSERT ON webdb.* TO 'appuser'@'localhost'),仅授予必要权限。skip-symbolic-links,防止符号链接攻击;定期备份数据库(如使用mysqldump),并将备份文件存储在安全位置(如异地服务器)。MySQL Enterprise Audit插件,记录数据库操作日志,便于溯源。PHP作为动态脚本语言,需防范代码漏洞:
display_errors = Off),将错误日志记录到文件(log_errors = On、error_log = /var/log/php_errors.log),避免泄露敏感信息(如数据库凭证);禁用危险函数(如exec、system、eval、shell_exec),防止命令注入;设置open_basedir限制PHP脚本访问目录(如open_basedir = /var/www/html:/tmp),避免跨目录攻击。Suhosin扩展,增强PHP安全(如限制内存使用、防止会话固定);使用OPcache缓存编译后的脚本,减少代码暴露风险。htmlspecialchars转义HTML特殊字符),防范XSS攻击;使用CSRF令牌(如$_SESSION['csrf_token']),验证表单提交合法性。构建多层防御,降低整体风险:
sudo ufw allow from trusted_ip to any port 22)、管理后台(如sudo ufw allow from trusted_ip to any port 8080);开启SYN Cookie,防范DDoS攻击(net.ipv4.tcp_syncookies = 1)。SSLEngine on、SSLCertificateFile指向证书路径、SSLCertificateKeyFile指向私钥路径);配置HSTS(Strict-Transport-Security: max-age=63072000),强制浏览器使用HTTPS,防止SSL剥离攻击。nmap扫描端口、sqlmap检测SQL注入),发现并修复漏洞;建立应急响应计划(如数据泄露时的隔离、恢复流程),快速应对安全事件。安全是持续过程,需定期监控与维护:
/var/log/syslog)、Apache日志(/var/log/apache2/access.log、/var/log/apache2/error.log)、MySQL日志(/var/log/mysql/mysql.log),使用Logwatch或ELK Stack(Elasticsearch+Logstash+Kibana)分析日志,及时发现异常(如大量404请求、异常登录)。/var/www/html)和数据库(mysqldump -u root -p webdb > webdb_backup.sql),采用3-2-1备份原则(3份备份、2种介质、1份异地),确保数据可恢复。/etc/passwd新增用户、/tmp目录可疑文件、ps aux异常进程),生成审计报告(如shasum /etc/passwd /etc/shadow校验文件完整性)。