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安全的核心。