Linux建站安全加固:从漏洞原理到修复实战
引言:为何Linux建站频遭攻击?
许多站长选择Linux搭建网站,因为其开源、稳定、性能高。然而,漏洞往往出现在配置层面,而非内核本身。常见攻击如文件包含漏洞、权限提升、SQL注入,根源常是Web服务权限过大、文件系统可写、未更新软件包。轻云互联在运维实践中发现,超过80%的建站入侵事件源于基础安全配置缺失,而非0day漏洞。
漏洞原理与修复策略
1. 文件权限漏洞
原理:Linux通过用户、组、其他三层权限控制文件访问。若网站目录被设置为777(所有人可读写执行)或文件属主为www-data时,攻击者可通过上传shell脚本获得执行权限。
修复步骤:
- 使用
find /var/www/html -type f -exec chmod 644 {} \;设置文件为644(所有者读写,组和其他只读) - 目录权限设为755:
find /var/www/html -type d -exec chmod 755 {} \; - 修改所有者:
chown -R www-data:www-data /var/www/html(PHP-FPM用户)
核心原则:Web进程仅需读取文件,不应具有写入权限(除上传目录外)。
2. PHP文件包含漏洞
原理:当PHP代码使用 include($_GET['page']) 未过滤路径时,攻击者可传入 ../../etc/passwd 或远程恶意脚本。轻云互联曾处理过此类案例:攻击者利用未限制的 open_basedir 读取系统文件。
修复命令:
- 禁用远程包含:在
php.ini中设置allow_url_include = Off - 限制目录访问:
open_basedir = "/var/www/html:/tmp" - 使用白名单验证路径:
if (!in_array($page, ['home','about'])) { exit; }
3. SSH暴力破解与权限提升
原理:默认22端口暴露,弱密码导致被爆破;提权常利用SUID二进制文件(如 /usr/bin/find 设置了s位)。
加固步骤:
- 修改SSH端口:
sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config - 禁用root登录:
PermitRootLogin no - 查找SUID文件:
find / -perm -4000 -type f,移除不必要的s位:chmod u-s /path/to/binary - 安装fail2ban:
apt install fail2ban并配置/etc/fail2ban/jail.local监控SSH日志
自动化防御方案
手动修复容易遗漏。轻云互联的运维体系采用剧本化安全基线,例如使用Ansible批量执行:
- 禁用不必要的服务:
systemctl disable --now avahi-daemon cups - 配置防火墙:
ufw default deny incoming; ufw allow 2222/tcp; ufw allow 80,443/tcp - 内核参数优化:
sysctl -w net.ipv4.tcp_syncookies=1防止SYN洪水
日志监控:部署 auditd 记录关键文件变更,如 auditctl -w /etc/passwd -p wa -k passwd_changes。
结语
安全是动态过程。每季度检查一次文件权限、软件版本、开放端口。轻云互联建议站长将安全配置纳入建站初始模板,而非事后补救。记住:最小权限原则是Linux安全的核心。