Linux 服务器安全基线检查清单:Web 安全实战指南

在 Web 安全领域,服务器是整个业务系统的最后一道防线。一旦服务器被攻破,再完善的应用层防护也可能形同虚设。本文将围绕 XSS 防御、SQL 注入防护、Linux 服务器安全加固 三个核心维度,整理一份可直接落地的安全基线检查清单,帮助运维和开发人员系统性排查风险。

一、XSS 的常见方式与前端防御

XSS(跨站脚本攻击)的本质是攻击者将恶意脚本注入到网页中,使其在受害者浏览器上执行。常见类型包括:

  • 存储型 XSS:恶意脚本被存入数据库,所有访问该页面的用户都会中招,危害最大。
  • 反射型 XSS:恶意脚本通过 URL 参数传入,服务器直接回显到页面,通常配合钓鱼链接使用。
  • DOM 型 XSS:完全在前端发生,服务端不参与,由 JavaScript 直接操作 DOM 导致。

常见注入入口包括:搜索框、评论、用户昵称、URL 参数、innerHTML 赋值、document.write 等。

前端防御的核心原则是 “永远不要信任用户输入”,具体措施如下:

  1. 输出编码:根据输出位置选择编码方式。HTML 上下文使用 HTML 实体编码,JS 上下文使用 JavaScript 编码,URL 上下文使用 encodeURIComponent
  2. 避免危险 API:优先使用 textContent 而非 innerHTML;如必须使用 innerHTML,务必配合 DOMPurify 等库进行净化。
  3. 设置 CSP:通过 Content-Security-Policy 响应头限制脚本来源,禁止 unsafe-inline,可有效缓解 XSS 危害。
  4. Cookie 加固:为敏感 Cookie 设置 HttpOnlySecureSameSite=Strict,降低会话劫持风险。
  5. 输入校验:对邮箱、手机号等字段使用白名单正则校验,拒绝非法字符。

需要强调的是,前端防御只是第一层,服务端输出编码才是根本,两者必须结合使用。

二、MySQL 防止 SQL 注入的几种写法

SQL 注入长期位居 OWASP Top 10 前列,其根源是 用户输入被当作 SQL 代码执行。以下是几种安全写法,按推荐程度排序:

1. 预编译语句(Prepared Statement)——首选方案

$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$email]);

参数与 SQL 语句分离,数据库先编译后传参,从根本上杜绝注入。Java 的 PreparedStatement、Python 的 cursor.execute(sql, params) 同理。

2. 参数化查询 + 类型绑定

cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))

注意:不要用字符串拼接 %format,那是伪参数化。

3. 使用 ORM 框架

如 MyBatis 的 #{}(预编译)而非 ${}(字符串拼接)、Hibernate、SQLAlchemy 等,天然支持参数绑定。特别提醒:MyBatis 中 ${} 是注入高发点,能不用就不用。

4. 输入验证与白名单

对排序字段、表名等无法参数化的场景,使用白名单枚举:

$allowed = ['id', 'name', 'created_at'];
$order = in_array($_GET['order'], $allowed) ? $_GET['order'] : 'id';

5. 最小权限原则

数据库账户只授予必要权限,禁止 Web 应用使用 root;关闭 FILELOAD_FILE 等危险功能。

6. 错误信息屏蔽

关闭详细报错回显,避免攻击者通过报错推断表结构。

三、Linux 服务器安全加固清单

服务器是承载一切业务的底座,以下是可直接执行的加固检查项:

账户与认证

  • 禁用 root 远程登录,修改 SSH 端口,使用密钥认证
  • 删除或锁定无用账户,检查 /etc/passwd 中 UID 为 0 的账户
  • 配置 fail2ban 防暴力破解,设置强密码策略

网络与服务

  • 使用防火墙(iptables/firewalld)仅开放必要端口
  • 关闭无用服务,netstat -tulnp 排查异常监听
  • 限制 ICMP、禁止 IP 转发

文件与权限

  • 关键目录权限最小化,/etc/shadow 应为 600
  • 查找 SUID/SGID 异常文件:find / -perm -4000 -type f
  • 使用 chattr +i 锁定关键配置文件

日志与审计

  • 开启 auditd,记录关键系统调用
  • 集中收集 /var/log/secureauth.log,定期分析
  • 配置日志轮转,防止磁盘打满

补丁与更新

  • 定期更新内核与软件包,订阅安全公告
  • 使用 lynisOpenSCAP 等工具做基线扫描

Web 服务专项

  • Nginx/Apache 隐藏版本号,禁用目录浏览
  • 限制上传目录执行权限,禁止 .php 在 upload 目录运行
  • 配置 WAF 或 ModSecurity 规则

总结

安全不是一次性的任务,而是持续的过程。XSS 防御靠“输出编码 + CSP”,SQL 注入防御靠“预编译 + 最小权限”,服务器加固靠“最小化 + 持续监控”。建议将以上清单纳入日常巡检,结合自动化工具定期扫描,才能真正构建起纵深防御体系。

未经允许不得转载:任鹏个人博客 » Linux 服务器安全基线检查清单:Web 安全实战指南

赞 (0) 打赏

评论 0

取消
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏