1. 概述与准备
说明目标:在台湾节点且需要双向走CN2链路的云空间上,实现系统与网络的综合加固与访问控制。准备工作:确认系统(CentOS/Ubuntu)、管理员账号、云控制台权限、CN2链路细节(运营商网关、Next-hop)、以及备份快照。建议先做一次完整快照:在云控制台创建镜像或使用 dd/rsync 备份数据。确保有控制台(VNC)或应急账号以防误操作断网。
2. 基本系统更新与最小安装
第一步更新并移除不必要服务:Ubuntu示例命令:
apt update && apt -y upgrade
systemctl disable --now avahi-daemon cups snapd lxd.socket # 根据实际服务调整
删除示例账号与不必要软件 apt remove --purge telnet rsh-server
安装基础工具:apt install -y curl vim ufw fail2ban auditd rsyslog
3. SSH 强化(密钥、端口、禁止密码)
创建管理用户并授权:
adduser opsuser && usermod -aG sudo opsuser
生成密钥并上传:本地 ssh-keygen -t ed25519;ssh-copy-id -i ~/.ssh/id_ed25519.pub opsuser@server
修改 /etc/ssh/sshd_config:
- Port 2222(或自定义)
- PermitRootLogin no
- PasswordAuthentication no
- AllowUsers opsuser admin@192.0.2.0/24(限定来源IP)
保存后执行:systemctl restart sshd;测试后再断开原连接。
4. 防火墙与访问控制列表(UFW/iptables/nft)
推荐使用 ufw 简洁规则(示例):
ufw default deny incoming; ufw default allow outgoing
ufw allow 2222/tcp from 203.0.113.5 to any # 管理IP
ufw allow 443/tcp; ufw allow 80/tcp
ufw enable
若需细粒度或多网卡策略,使用 nftables 或 iptables + policy routing。示例 iptables 限制 SSH 速率:
iptables -A INPUT -p tcp --dport 2222 -m connlimit --connlimit-above 3 -j REJECT
5. 双向CN2链路的路由与策略(模板操作)
“想要出/入都走CN2”通常需在云侧或BGP/路由器配置。若在服务器端做策略路由示例:
假设 CN2 网关为 10.0.0.1,接口 eth1:
ip route add table cn2-default default via 10.0.0.1 dev eth1
ip rule add fwmark 0x1 table cn2-default
iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 0x1
说明:把需要走CN2的目标/服务标记,配合云提供商的静态路由或对等来确保入方向也走CN2。实际网关与表名按环境替换并在维护窗口测试。
6. Web/TLS 加固与自动证书
使用 nginx + certbot:
apt install -y nginx certbot python3-certbot-nginx
certbot --nginx -d example.com --non-interactive --agree-tos -m admin@example.com
在 nginx 配置中启用强安全套件:ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'EECDH+AESGCM:...'; 添加 HSTS:add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; 并关闭旧的TLS/SSL协议。
7. 入侵防御与自动封禁(fail2ban)
安装并配置 fail2ban:
apt install -y fail2ban
创建 /etc/fail2ban/jail.d/ssh.local 内容:
[sshd]
enabled = true
port = 2222
filter = sshd
maxretry = 5
bantime = 3600
动作可以改为通知到 Slack/邮件并写入云安全组黑名单API。
8. 系统审计与日志集中(auditd/rsyslog/ELK)
启用 auditd 并配置关键审计规则:
auditctl -w /etc/ssh/sshd_config -p wa -k SSH_CFG
在 /etc/audit/audit.rules 中持久化重要 syscall 规则。
将 /var/log 转发到中央日志(Filebeat -> ELK 或 rsyslog 远程):在 rsyslog.conf 添加:*.* @@logserver.example.com:514
9. 文件与密钥管理(Vault/加密卷)
关键私钥不要留在主机明文,使用 HashiCorp Vault 或云 KMS 存储凭证。对敏感数据启用磁盘加密(LUKS)。示例:
apt install cryptsetup
cryptsetup luksFormat /dev/vdb
mount 解密卷并把 secrets 放到 /opt/secure,权限 700。
10. 最小权限与RBAC、堡垒机策略
使用堡垒机或跳板主机集中 SSH 访问,堡垒机启用会话录像。Sudo 权限通过 visudo 指定最小命令集,例如只允许 apt-get 和 systemctl 某些服务。若使用云厂商,利用 IAM 策略做 API 访问控制。
11. 容器与应用层安全
若部署 Docker/容器:避免以 root 运行容器,使用只读根文件系统和 seccomp/profile。示例 docker run --user 1000 --read-only --security-opt seccomp=/path/seccomp.json。对外暴露端口只在负载均衡层做映射,容器内部仅监听 localhost。
12. 备份、补丁与应急恢复流程
制定自动化补丁流水线:非高峰时段在预生产踢补丁并进行回归,生产通过滚动升级。备份:每日全量/每小时增量到异地(对象存储或另一区域),并定期做恢复演练。编写恢复 SOP 并在云控制台记录恢复步骤。
13. 监控与告警(Prometheus/Grafana/黑盒检测)
部署节点导出器、黑盒探测器(外网与CN2链路检测)。示例黑盒脚本用 curl --resolve 指定域名走不同出口检查链路:
curl -v --interface eth1 https://example.com # 测试出站走哪条接口
设置 RTT/丢包阈值告警并把告警接入 PagerDuty/企业微信。
14. 合规与定期渗透测试
定期用 Nessus/OpenVAS 做漏洞扫描,结合手工渗透测试验证防护有效性。对找到的高危漏洞制定修复时间表并纳入变更单管理。
15. 常见问题与排查小技巧(Q&A)
问:如何确认流量确实走的是CN2链路? 答:通过 mtr/traceroute 看经过的ASN与节点,使用 tcpdump 抓包确认源/目的IP与下一跳;结合运营商提供的路由表或BGP信息比对;若使用策略路由,可在服务器端用 ip rule show / ip route show table 来验证。
16. 故障恢复问答
问:若应用因加固策略被误封无法访问怎么办? 答:保持管理控制台或控制台应急账号,先回滚防火墙规则(如 ufw disable 或 iptables -F),恢复 SSH 访问,查看 /var/log/auth.log 与 fail2ban 日志,调整规则并在恢复后应用更细粒度白名单测试。
17. 运营维护与建议问答
问:日常运维有哪些必须长期执行的任务? 答:定期更新补丁、备份验证、审计日志回顾、流量与延迟监控、每季度一次渗透/扫描、轮换密钥与证书、并保持应急恢复演练记录。
来源:台湾服务器双向cn2 云空间 的安全加固与访问控制实践