本文目录导读:

服务器基线加固是网络安全防护的基础环节,旨在通过一系列的配置、策略和补丁管理,减少系统的攻击面并提升其抗攻击能力,以下是从操作系统、应用服务、网络安全和数据库四个维度的通用加固建议,覆盖常见的 Linux 和 Windows 服务器。
操作系统层(Linux & Windows)
账户与权限管理
- 禁用默认/无用账户:
- Linux:锁定
root以外的系统账户(如lp,sync,games),使用usermod -L 用户名或passwd -l 用户名。 - Windows:禁用
Guest账户,重命名Administrator为其他名称。
- Linux:锁定
- 最小权限原则:
- Linux:普通用户归属
staff组,避免直接使用root,通过sudo严格授权,审计/etc/sudoers文件。 - Windows:将用户从
Administrators组移除,仅分配所需权限。
- Linux:普通用户归属
- 口令策略:
- 通用:强密码(大小写+数字+特殊字符,12位以上)。
- Linux:修改
/etc/login.defs设置PASS_MAX_DAYS 90、PASS_MIN_DAYS 7、PASS_MIN_LEN 12。 - Windows:通过
secpol.msc(本地安全策略) -> 账户策略 -> 密码策略 设置。
系统补丁与服务管理
- 关闭不必要服务:
- Linux:执行
systemctl list-unit-files查看状态,禁用无用服务如cups,avahi-daemon,bluetooth等。 - Windows:禁用
Print Spooler(若无需打印)、Remote Desktop Services(若无需远程桌面)等。
- Linux:执行
- 及时打补丁:
- Linux:配置自动安全更新(
yum-cron或unattended-upgrades)。 - Windows:通过 WSUS 或组策略统一管理更新。
- Linux:配置自动安全更新(
- 内核参数优化(部分安全选项):
- Linux:在
/etc/sysctl.conf添加以下参数并执行sysctl -p:net.ipv4.conf.all.accept_source_route=0(禁用源路由)net.ipv4.conf.all.accept_redirects=0(禁用ICMP重定向)net.ipv4.tcp_syncookies=1(开启SYN Cookies防洪水攻击)fs.suid_dumpable=0(禁止SUID程序产生内核转储)
- Linux:在
日志与审计
- Linux:启用
auditd服务,记录关键操作(如-w /etc/passwd -p wa -k user-modify)。 - Windows:启用高级审计策略(如
过程追踪、账户登录事件),并配置日志大小、覆盖规则。
应用服务层(以SSH和Web服务器为例)
SSH(Linux远程连接)
- 禁止root直接登录:编辑
/etc/ssh/sshd_config,设置PermitRootLogin no。 - 更换默认端口:设置
Port 2222(或其他高位端口,需确保防火墙放行)。 - 使用密钥认证:设置
PasswordAuthentication no,仅允许公钥登录。 - 限制IP来源:通过
AllowUsers user@IP或iptables限制来源IP。
Web服务器(Nginx/Apache/IIS)
- 隐藏版本信息:
- Nginx:
server_tokens off; - Apache:
ServerTokens Prod - IIS:移除
X-Powered-By响应头。
- Nginx:
- HTTP安全头:
- 配置
Strict-Transport-Security(强制HTTPS)、X-Content-Type-Options: nosniff(防MIME嗅探)、X-Frame-Options: DENY(防点击劫持)。
- 配置
- 目录权限:确保上传目录(如
/uploads)禁止执行脚本(Nginx中配置location ~* \.(php|pl|py)$ { deny all; })。 - 请求限制:配置
limit_req_zone(Nginx)或mod_evasive(Apache)防CC攻击。
网络安全层
防火墙配置(iptables/firewalld/Windows Defender Firewall)
- Linux (iptables示例):
- 默认拒绝所有入站:
iptables -P INPUT DROP - 放行SSH(指定端口):
iptables -A INPUT -p tcp --dport 2222 -j ACCEPT - 仅允许内网访问数据库:
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3306 -j ACCEPT
- 默认拒绝所有入站:
- Windows:使用组策略或高级安全Windows Defender防火墙,配置入站规则对特定端口放行特定IP。
网络隔离
- DMZ区:将对外服务的服务器(Web、邮件)放在DMZ,与内网核心数据库物理或逻辑隔离。
- VLAN划分:使用交换机VLAN将生产环境、测试环境、办公网络隔离开。
数据与数据库层
文件系统权限
- 敏感文件保护:
chmod 600 /etc/shadow(Linux用户密码)chmod 644 /etc/passwd(禁止可写)
- Windows:NTFS权限仅允许
SYSTEM和Administrators访问C:\Windows\System32\config等目录。 - 防篡改:对核心配置文件(如
/etc/ssh/sshd_config)设置chattr +i(不可修改属性)。
数据库(MySQL / SQL Server)
- 移除默认账户:
DROP USER 'test'@'localhost'; DROP DATABASE test; - 弱口令与默认端口:
- 端口:如 MySQL 3306 改为 33060(需防火墙配合)。
- 密码:使用随机生成的强密码(可借助密码管理器)。
- 权限最小化:应用账号仅授予
SELECT, INSERT, UPDATE, DELETE权限,拒绝DROP, ALTER, CREATE。 - SSL/TLS加密:开启数据库连接加密(要求客户端连接使用
--ssl-mode=REQUIRED)。
基线加固的标准化流程
建议将以上操作形成自动化脚本或配置管理工具(如 Ansible、SaltStack、Chef、Puppet),确保所有服务器统一配置:
- 基线模板化:编写符合 CIS Benchmark(如 CIS Linux / Windows Benchmark)的脚本。
- 定期扫描:使用工具(如 OpenVAS、Nessus、微软基线分析器 MBSA)检查漏洞和配置漂移。
- 变更记录:加固操作需通过变更管理流程,并回退原始配置(保存备份快照)。
总结清单(快速检查)
| 层面 | 关键操作 | 检查点 |
|---|---|---|
| 账户 | 禁用默认账户、设置强密码策略、使用密钥/多因素 | passwd -S 检查锁定状态 |
| 服务 | 关闭未用服务(Telnet、FTP)、更新补丁 | systemctl list-unit-files |
| 网络 | 最小化开放端口、防火墙规则精确到IP | netstat -anptu(Linux) |
| 应用 | 隐藏版本、限制文件上传执行 | 通过浏览器或 curl 查看响应头 |
| 日志 | 日志轮转、远程日志存储(如SIEM) | last 命令检查近期登录 |
通过上述步骤,可以显著降低服务器被利用的风险,加固是一个持续的过程,需要结合漏洞情报和业务变化不断调整,如果需要针对特定系统(如云服务器、容器环境)的细化方案,可以进一步提供细节。