Ubuntu LAMP安全漏洞修复与加固指南
LAMP(Linux、Apache、MySQL、PHP)作为经典Web架构,需通过系统更新、组件加固、权限控制、安全监控等多维度措施修复潜在漏洞,降低被攻击风险。以下是具体修复步骤:
保持系统及所有组件(Apache、MySQL、PHP)为最新版本,是修复已知漏洞的核心手段。执行以下命令更新软件源并安装安全补丁:
sudo apt update && sudo apt upgrade -y
安装unattended-upgrades实现自动安全更新(每周执行一次):
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
关键点:自动更新需覆盖“安全更新”类别,避免遗漏高危漏洞补丁。
SSH是远程管理的主要通道,需通过以下配置防止暴力破解:
/etc/ssh/sshd_config):PermitRootLogin no
PasswordAuthentication no # 禁用密码认证,强制使用密钥
AllowUsers your_username # 仅允许指定用户登录
Port 2222
sudo systemctl restart sshd
注意:修改端口后需在防火墙中放行新端口,避免锁死自己。
/etc/apache2/conf.d/security):ServerTokens Prod # 仅显示“Apache”,不暴露版本
ServerSignature Off # 关闭错误页面中的服务器信息
mod_info、mod_status、mod_userdir):sudo a2dismod info status userdir
sudo systemctl restart apache2
作用:减少攻击者通过版本信息针对性利用漏洞的概率。
使用ufw(Uncomplicated Firewall)限制访问端口,仅允许HTTP(80)、HTTPS(443)和SSH(如2222):
sudo ufw allow 2222/tcp # SSH端口
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable # 启用防火墙
验证规则:sudo ufw status,确保无多余端口开放。
通过mod_security模块过滤恶意请求(如SQL注入、XSS):
sudo apt install libapache2-mod-security
sudo cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf # 开启主动防护
sudo systemctl restart apache2
说明:mod_security是开源WAF,能有效拦截常见Web攻击。
/etc/mysql/mysql.conf.d/mysqld.cnf):bind-address = 127.0.0.1 # 仅允许本地访问
your_db、your_user、strong_password):CREATE DATABASE your_db;
CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON your_db.* TO 'your_user'@'localhost';
FLUSH PRIVILEGES;
DELETE FROM mysql.user WHERE User='';
DROP DATABASE test;
FLUSH PRIVILEGES;
关键点:限制数据库访问范围,避免未授权用户获取敏感数据。
mysql_secure_installation脚本修复默认安全问题(如匿名用户、测试数据库):sudo mysql_secure_installation
/etc/mysql/mysql.conf.d/mysqld.cnf):general_log = 1
general_log_file = /var/log/mysql/mysql.log
作用:追踪数据库操作,及时发现异常行为。
修改/etc/php/8.x/apache2/php.ini(根据PHP版本调整路径),修复常见漏洞:
expose_php = Off # 隐藏PHP版本信息
disable_functions = exec,passthru,shell_exec,system # 禁用危险函数
session.cookie_httponly = On # 防止XSS窃取会话cookie
session.cookie_secure = On # 仅通过HTTPS传输cookie
upload_max_filesize = 2M # 限制上传文件大小,防止大文件攻击
说明:禁用危险函数可减少代码执行漏洞的风险。
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$username]);
htmlspecialchars)防止XSS:echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
关键点:输入验证与输出编码是防范Web应用漏洞的基础。
fail2ban防御暴力破解(如SSH、Apache登录):sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo sed -i 's/maxretry = 5/maxretry = 3/' /etc/fail2ban/jail.local # 减少尝试次数
sudo systemctl restart fail2ban
/var/log/syslog、/var/log/apache2/error.log),识别异常行为。lynis工具进行系统安全扫描:sudo apt install lynis
sudo lynis audit system
sudo apt install nikto
nikto -h your_domain.com
说明:定期审计能及时发现未修复的漏洞,避免被攻击者利用。
通过以上步骤,可全面修复Ubuntu LAMP架构中的常见安全漏洞,构建多层防护体系。需注意,安全是持续过程,需定期更新组件、监控系统状态,应对新出现的安全威胁。