如何在香港服务器的Linux系统中应用CIS基线标准,提升操作系统整体安全性?

我刚接手一批全新的裸金属服务器:双路Intel Xeon Gold 6330 CPU,256GB DDR4 ECC内存,搭配2块1.92TB的NVMe SSD。机房的冷气声在耳边嗡嗡作响,设备上闪烁的指示灯像是一个个沉默的守护者。
然而,在我把系统镜像部署到Linux(CentOS 7)后没多久,安全团队的监控系统就给我推送了一个警告:有异常SSH登录尝试。从公网暴露的22端口到弱口令扫描,几乎没停过。那一刻我明白,裸机再强大,如果没有安全基线的加固,随时可能变成别人挖矿的工具。于是,我决定按照CIS Benchmark(CIS基线)一步步加固这批香港服务器。
一、CIS基线是什么,为什么要在香港服务器上用?
CIS(Center for Internet Security)基线是一套国际公认的安全配置标准,它将系统加固从“经验主义”变成了“可度量、可复现”的标准。尤其是在香港这种国际网络环境下,面对各种跨境扫描和攻击,更需要标准化的安全基线来保障系统。
为什么选CIS而不是随便写几个iptables规则?
- 标准化:CIS基线可以被审计,有明确条目。
- 全局覆盖:从内核参数、用户策略、日志审计到网络规则,CIS都覆盖到。
- 可自动化:结合工具(如Lynis、OpenSCAP)能快速扫描差距。
二、部署环境与前期准备
硬件环境(香港机房裸金属服务器):
| 组件 | 参数 |
|---|---|
| CPU | 2 × Intel Xeon Gold 6330 (28核56线程) |
| 内存 | 256GB DDR4 ECC |
| 存储 | 2 × 1.92TB NVMe SSD |
| 网络 | 2 × 10GbE光口 |
| 机房位置 | 香港葵涌机房(低延迟接入亚太骨干) |
操作系统:
- CentOS 7.9 (内核 3.10.0)
- SELinux 启用
- 使用yum配置了EPEL源,安装了安全工具集
工具准备:
yum install -y lynis scap-security-guide aide
三、CIS基线的落地步骤
1. 账户与认证策略
机房第一步,我做的就是关闭无用账号,强化密码策略。
# 禁用系统默认无用账号
for user in games ftp news; do
usermod -L $user
done
# 修改密码复杂度
vi /etc/security/pwquality.conf
# 添加
minlen = 12
minclass = 3
retry = 3
# 强制密码过期策略
chage --maxdays 90 root
踩过的坑:
当时因为直接对root加了chage --maxdays 90,结果忘了机房里还有自动化运维脚本依赖root,过期后脚本全挂,凌晨2点被叫醒。解决方法是创建一个ops运维账号,用sudo授权,而不是让root承担所有任务。
2. SSH加固
默认22端口在香港环境下就是攻击的“靶子”。
# 修改端口与限制root直登
vi /etc/ssh/sshd_config
Port 2222
PermitRootLogin no
PasswordAuthentication no
补充措施:
使用Fail2Ban防爆破
配置仅允许运维IP段(办公室VPN出口、香港机房专线)访问
iptables -A INPUT -p tcp -s 203.0.113.0/24 --dport 2222 -j ACCEPT
iptables -A INPUT -p tcp --dport 2222 -j DROP
3. 文件与权限
CIS基线要求对关键配置文件进行权限控制。
chmod 600 /etc/passwd-
chmod 600 /etc/shadow
chmod 700 /root
为了避免误操作,我写了个小脚本,批量检查权限:
#!/bin/bash
for file in /etc/passwd /etc/shadow /etc/group; do
stat -c "%n %a" $file
done
4. 日志与审计
在香港机房的服务器常常需要做审计,防止合规风险。
启用auditd
yum install audit
systemctl enable auditd
添加关键文件监控
auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /etc/shadow -p wa -k shadow_changes
确保日志远程同步(rsyslog -> SIEM系统)
5. 内核参数加固
CIS要求关闭IP转发、禁止源路由等。
cat >> /etc/sysctl.conf <<EOF
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_redirects = 0
EOF
sysctl -p
四、基线检测与结果
我用 Lynis 做了扫描:
lynis audit system
部分结果表格:
| 项目 | 状态 | 备注 |
|---|---|---|
| SSH Root 登录 | 已禁用 | 符合CIS基线 |
| 密码复杂度策略 | 已配置 | 最小12位,三类字符 |
| 内核参数(IP转发等) | 已配置 | sysctl生效 |
| 日志审计 | 部分通过 | 建议加远程集中收集 |
| 文件权限 | 已加固 | shadow 600, passwd 644 |
五、实战中的坑与解决
VPN掉线导致SSH全被封
问题:iptables限制来源IP,结果VPN出口IP变了。
解决:在iptables加上香港机房内部跳板机的固定IP作为后备。
Fail2Ban误封运维
问题:密码输错3次被ban。
解决:在/etc/fail2ban/jail.local里加了白名单:
ignoreip = 127.0.0.1 203.0.113.0/24
审计日志爆盘
问题:auditd日志没做rotate,三天塞满NVMe。
解决:配置/etc/audit/auditd.conf,加logrotate策略,并转发到远程日志系统。
总结:凌晨三点的安心感
在香港机房连续加班两晚,把整批Linux服务器都套上了CIS基线的“盔甲”。最后一次Lynis扫描,分数从72提升到94。凌晨三点,我走出机房,望着对面的维港夜景,心里终于松了一口气。
安全加固不是一次性的工作,而是一个不断迭代的过程。CIS基线给了我一把“尺子”,让我在繁杂的服务器环境里有了标准可依。对我来说,那些机房的夜晚不只是运维的工作,更是一种与机器和安全的较量。
当下一个新项目上线时,我已经不会再慌张,因为我知道,哪怕再复杂的环境,只要按标准来,一定能把服务器守护好。