海外服务器安全加固清单:24项安全检查与配置实战(2026最新版)

📅 · 企业出海多云架构实战 - ChengziCloud

一句话结论

Meta Description: 海外云服务器安全加固实战清单:SSH密钥认证、防火墙iptables/nftables、fail2ban入侵防御、Auditd审计日志、自动备份策略、内核参数加固。

本文要点
  • 前言
  • SSH 安全加固(第 1-6 项)
  • 系统用户与权限加固(第 7-10 项)
  • 防火墙与网络安全(第 11-15 项)
  • 入侵检测与日志审计(第 16-19 项)
  • 自动备份(第 20-22 项)
  • 内核与容器安全(第 23-24 项)
  • 七大云厂商安全组功能对比

Meta Description: 海外云服务器安全加固实战清单:SSH密钥认证、防火墙iptables/nftables、fail2ban入侵防御、Auditd审计日志、自动备份策略、内核参数加固。24项逐条检查,附完整命令与配置模板。

关键词:服务器安全加固、SSH安全配置、防火墙规则、入侵检测、审计日志、自动备份、海外服务器

前言

部署一台海外云服务器后,30分钟内就会被全球扫描器盯上。根据 Cloudflare 2026 年安全报告,一台未加固的 Linux 服务器平均在 上线后 12 分钟 就会收到第一次 SSH 暴力破解尝试。如果你用的是默认 22 端口 + 密码登录,运气不好的话 48 小时内就会被攻破。

本清单覆盖 24 项安全检查,分为六大类:SSH 加固、系统用户与权限、防火墙与网络、入侵检测与日志审计、自动备份、内核与容器安全。每一项都给出现状检查命令、加固命令、以及验证方法。全部执行完毕约需 30 分钟。


一、SSH 安全加固(第 1-6 项)

SSH 是服务器的第一道门。绝大多数入侵都是从 SSH 弱密码开始的。

✅ 第 1 项:禁用 root 直接 SSH 登录

检查现状:


grep "^PermitRootLogin" /etc/ssh/sshd_config

加固:


sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
echo "PermitRootLogin no" >> /etc/ssh/sshd_config
systemctl restart sshd

验证: 尝试 ssh root@你的服务器IP,应提示 Permission denied。日常操作使用普通用户 + sudo。


✅ 第 2 项:改用 SSH 密钥认证,禁用密码登录

先生成本地密钥对(在你的电脑上执行):


ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/server_key

将公钥上传到服务器:


ssh-copy-id -i ~/.ssh/server_key.pub user@你的服务器IP

服务器端禁用密码登录:


sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/^PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd

⚠️ 注意: 先确认密钥能正常登录,再禁用密码。否则你会把自己锁在外面。


✅ 第 3 项:修改 SSH 默认端口

检查现状:


grep "^Port" /etc/ssh/sshd_config

加固(改为 2222 或其他非标准端口):


sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config
semanage port -a -t ssh_port_t -p tcp 2222 2>/dev/null  # CentOS/RHEL SELinux
systemctl restart sshd

验证:


ssh -p 2222 user@你的服务器IP

修改端口后,暴力扫描器的流量会减少 95% 以上——大多数扫描器只扫 22 端口。


✅ 第 4 项:配置 SSH 空闲超时

防止运维人员登录后忘记退出,会话长期挂起:


cat >> /etc/ssh/sshd_config << 'EOF'

// SSH 空闲超时(300秒无操作自动断开)
ClientAliveInterval 300
ClientAliveCountMax 0
EOF
systemctl restart sshd

✅ 第 5 项:限制可 SSH 登录的用户白名单

只允许指定的运维账户 SSH 登录:


echo "AllowUsers deploy opsuser" >> /etc/ssh/sshd_config
systemctl restart sshd

验证: 用不在白名单中的用户尝试 SSH,应被拒绝。


✅ 第 6 项:安装并配置 fail2ban 防暴力破解


// Ubuntu/Debian
apt install -y fail2ban

// CentOS/RHEL
yum install -y epel-release && yum install -y fail2ban

// 创建本地配置(覆盖默认值)
cat > /etc/fail2ban/jail.local << 'EOF'
[sshd]
enabled = true
port    = 2222
maxretry = 3
bantime  = 3600
findtime = 600
EOF

systemctl enable fail2ban && systemctl restart fail2ban

检查封禁列表:


fail2ban-client status sshd

二、系统用户与权限加固(第 7-10 项)

✅ 第 7 项:禁用不必要的系统账户


// 列出所有可登录的用户
awk -F: '($7 ~ /\/bin\/.*sh/) {print $1}' /etc/passwd

// 锁定不需要登录的账户(保留系统服务账户)
passwd -l games
passwd -l ftp
passwd -l nobody

✅ 第 8 项:加强密码策略(针对可登录用户)


// CentOS/RHEL
sed -i 's/^PASS_MAX_DAYS.*/PASS_MAX_DAYS 90/' /etc/login.defs
sed -i 's/^PASS_MIN_DAYS.*/PASS_MIN_DAYS 7/' /etc/login.defs
sed -i 's/^PASS_MIN_LEN.*/PASS_MIN_LEN 12/' /etc/login.defs
sed -i 's/^PASS_WARN_AGE.*/PASS_WARN_AGE 14/' /etc/login.defs

✅ 第 9 项:配置 sudo 日志记录


cat >> /etc/sudoers.d/logging << 'EOF'
Defaults logfile=/var/log/sudo.log
Defaults log_input,log_output
Defaults !syslog
EOF

效果: 所有 sudo 执行的命令及其输出都会被记录到 /var/log/sudo.log。


✅ 第 10 项:锁定关键系统文件防止篡改


chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow
chattr +i /etc/ssh/sshd_config

解除锁定(需要修改时):


chattr -i /etc/ssh/sshd_config

三、防火墙与网络安全(第 11-15 项)

✅ 第 11 项:启用并配置 iptables / nftables

Ubuntu/Debian(使用 ufw):


ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp    // SSH
ufw allow 80/tcp      // HTTP
ufw allow 443/tcp     // HTTPS
ufw enable
ufw status verbose

CentOS/RHEL(使用 firewalld):


systemctl start firewalld && systemctl enable firewalld
firewall-cmd --permanent --add-service=ssh --add-port=2222/tcp
firewall-cmd --permanent --add-service=http --add-service=https
firewall-cmd --reload
firewall-cmd --list-all

✅ 第 12 项:关闭不必要的网络服务


// 查看所有监听端口
ss -tlnp

// 常见要关闭的服务
systemctl disable --now rpcbind
systemctl disable --now rpcbind.socket
systemctl disable --now avahi-daemon
systemctl disable --now cups

✅ 第 13 项:配置内核网络参数防 DDoS 与 IP 欺骗


cat >> /etc/sysctl.d/99-security.conf << 'EOF'
// 防止 SYN Flood
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048

// 防止 IP 欺骗
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

// 忽略 ICMP 重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

// 防止 IP 源路由
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0

// 记录可疑包
net.ipv4.conf.all.log_martians = 1

// 减少 TIME_WAIT
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
EOF

sysctl -p /etc/sysctl.d/99-security.conf

✅ 第 14 项:配置速率限制(rate limiting)

限制单个 IP 的 SSH 连接频率:


// iptables 方式
iptables -A INPUT -p tcp --dport 2222 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 2222 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

✅ 第 15 项:禁用 ICMP 广播响应


echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" >> /etc/sysctl.d/99-security.conf
echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" >> /etc/sysctl.d/99-security.conf
sysctl -p /etc/sysctl.d/99-security.conf

四、入侵检测与日志审计(第 16-19 项)

✅ 第 16 项:安装并配置 Auditd(Linux 审计系统)


// CentOS/RHEL
yum install -y audit

// Ubuntu/Debian
apt install -y auditd

systemctl enable auditd && systemctl start auditd

配置关键文件监控:


cat >> /etc/audit/rules.d/security.rules << 'EOF'
// 监控 /etc/passwd 和 /etc/shadow 的修改
-w /etc/passwd -p wa -k identity_changes
-w /etc/shadow -p wa -k identity_changes
-w /etc/group -p wa -k identity_changes

// 监控 sudo 配置文件
-w /etc/sudoers -p wa -k sudo_changes
-w /etc/sudoers.d/ -p wa -k sudo_changes

// 监控 SSH 配置
-w /etc/ssh/sshd_config -p wa -k ssh_config_changes

// 监控 root 用户操作
-a always,exit -F arch=b64 -F euid=0 -F auid>=1000 -F auid!=unset -S execve -k root_commands

// 时钟修改
-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
EOF

augenrules --load
systemctl restart auditd

查询审计日志:


// 查看最近的 root 用户命令
ausearch -k root_commands --format text | tail -20

// 查看 /etc/passwd 的修改记录
ausearch -k identity_changes --format text

✅ 第 17 项:配置 rsyslog 集中日志


// 确认 rsyslog 正在运行
systemctl status rsyslog

// 增加详细日志
cat >> /etc/rsyslog.d/50-security.conf << 'EOF'
// 记录所有认证相关日志到独立文件
auth.*  /var/log/auth-security.log

// 记录所有内核日志
kern.*  /var/log/kern-security.log
EOF

systemctl restart rsyslog

✅ 第 18 项:安装并配置 AIDE 文件完整性检测


// CentOS/RHEL
yum install -y aide

// Ubuntu/Debian
apt install -y aide

// 初始化数据库
aide --init
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

// 创建每天检查的 cron 任务
cat > /etc/cron.daily/aide-check << 'EOF'
#!/bin/bash
/usr/sbin/aide --check | mail -s "AIDE Daily Check $(hostname)" [email protected]
EOF
chmod +x /etc/cron.daily/aide-check

✅ 第 19 项:监控异常登录(lastb + 自定义脚本)


// 查看所有失败的登录尝试
lastb | head -20

// 查看成功登录记录
last -20

// 创建登录告警脚本
cat > /usr/local/bin/login-alert.sh << 'EOF'
#!/bin/bash
tail -f /var/log/auth-security.log | while read line; do
    echo "$line" | grep "Accepted" && \
        echo "ALERT: New SSH login detected on $(hostname)" | \
        mail -s "SSH Login Alert" [email protected]
done &
EOF

五、自动备份(第 20-22 项)

✅ 第 20 项:配置数据库自动备份(MySQL/PostgreSQL)

MySQL/MariaDB:


cat > /usr/local/bin/db-backup.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=30

mkdir -p $BACKUP_DIR

// 备份所有数据库
mysqldump --all-databases --single-transaction --quick \
    --lock-tables=false > $BACKUP_DIR/all-db-$DATE.sql

// 压缩
gzip $BACKUP_DIR/all-db-$DATE.sql

// 删除 30 天前的备份
find $BACKUP_DIR -name "*.gz" -mtime +$RETENTION_DAYS -delete

echo "Backup completed: all-db-$DATE.sql.gz"
EOF
chmod +x /usr/local/bin/db-backup.sh

添加 cron 任务(每天凌晨 3 点备份):


echo "0 3 * * * /usr/local/bin/db-backup.sh >> /var/log/db-backup.log 2>&1" | crontab -

✅ 第 21 项:配置文件与网站目录备份


cat > /usr/local/bin/file-backup.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/backup/files"
DATE=$(date +%Y%m%d)

mkdir -p $BACKUP_DIR

// 备份关键配置目录
tar czf $BACKUP_DIR/etc-$DATE.tar.gz /etc/nginx /etc/ssh /etc/fail2ban

// 备份网站目录(根据实际路径调整)
tar czf $BACKUP_DIR/www-$DATE.tar.gz /var/www

// 保留最近 7 天的备份
find $BACKUP_DIR -mtime +7 -delete

echo "File backup completed: $DATE"
EOF
chmod +x /usr/local/bin/file-backup.sh

echo "0 2 * * * /usr/local/bin/file-backup.sh >> /var/log/file-backup.log 2>&1" | crontab -

✅ 第 22 项:异地备份同步(rsync 到另一台服务器或对象存储)

同步到 AWS S3:


// 安装 AWS CLI
apt install -y awscli  // 或 yum install -y awscli

// 配置凭证
aws configure

// 同步脚本
cat > /usr/local/bin/s3-sync-backup.sh << 'EOF'
#!/bin/bash
aws s3 sync /backup/ s3://your-bucket-name/server-backups/ --storage-class STANDARD_IA
echo "S3 sync completed at $(date)"
EOF
chmod +x /usr/local/bin/s3-sync-backup.sh

echo "0 5 * * * /usr/local/bin/s3-sync-backup.sh >> /var/log/s3-sync.log 2>&1" | crontab -

六、内核与容器安全(第 23-24 项)

✅ 第 23 项:启用 SELinux(CentOS/RHEL)或 AppArmor(Ubuntu)

CentOS/RHEL:


// 查看当前 SELinux 状态
getenforce

// 设置为 enforcing 模式
sed -i 's/^SELINUX=.*/SELINUX=enforcing/' /etc/selinux/config
setenforce 1

// 查看 SELinux 阻止的操作
ausearch -m avc --start recent

Ubuntu(AppArmor):


aa-status
aa-enforce /etc/apparmor.d/*

✅ 第 24 项:容器运行时安全(Docker 加固)

基础检查:


// Docker 版本(确保不是过时有已知漏洞的版本)
docker version

// 检查是否有容器以 privileged 模式运行
docker ps --quiet | xargs docker inspect --format '{{.Name}}: Privileged={{.HostConfig.Privileged}}'

加固措施:


// 创建 Docker daemon 安全配置
cat > /etc/docker/daemon.json << 'EOF'
{
  "icc": false,
  "log-level": "info",
  "userland-proxy": false,
  "no-new-privileges": true,
  "live-restore": true
}
EOF

systemctl restart docker

容器运行最佳实践(以 Nginx 为例):


docker run -d \
  --name nginx-secure \
  --read-only \
  --tmpfs /var/cache/nginx \
  --tmpfs /var/run \
  --security-opt=no-new-privileges:true \
  --cap-drop=ALL \
  --cap-add=NET_BIND_SERVICE \
  --memory=256m \
  --cpus=0.5 \
  nginx:alpine

参数说明:

  • --read-only:容器文件系统只读
  • --cap-drop=ALL:丢弃所有 Linux capabilities
  • --cap-add=NET_BIND_SERVICE:仅保留绑定端口的能力
  • --memory / --cpus:资源限制防止单个容器耗尽宿主机资源

七大云厂商安全组功能对比

不同云平台在安全组规则数量、默认策略、VPC 集成等方面差异显著。以下是实际生产环境对比:

功能项AWS Security Group阿里云安全组腾讯云安全组GCP FirewallAzure NSG
默认入站策略全部拒绝全部拒绝全部拒绝全部拒绝全部拒绝
默认出站策略全部允许全部允许全部允许全部允许全部允许
单组规则上限60条(可申请提升)200条200条无明确限制1000条
有状态连接跟踪✅ 自动✅ 自动✅ 自动✅ 自动✅ 自动
跨 VPC 引用✅ 安全组 ID✅ 安全组 ID❌ 仅 IP/CIDR✅ 服务账户✅ 服务标签
CLI / API 管理aws ec2aliyun ecstccli vpcgcloud computeaz network nsg
Terraform 支持✅ 完善✅ 完善✅ 完善✅ 完善✅ 完善

安全检查自动化脚本

将上述 24 项检查整合为一条命令即可执行的脚本:


cat > /usr/local/bin/security-audit.sh << 'AUDIT_SCRIPT'
#!/bin/bash
echo "========== 服务器安全审计 =========="
echo "时间: $(date)"
echo "主机: $(hostname)"
echo ""

// 1. SSH 配置
echo "[1/6] SSH 安全配置检查"
echo "  PermitRootLogin: $(grep '^PermitRootLogin' /etc/ssh/sshd_config | tail -1)"
echo "  PasswordAuth: $(grep '^PasswordAuth' /etc/ssh/sshd_config | tail -1)"
echo "  Port: $(grep '^Port' /etc/ssh/sshd_config | tail -1)"

// 2. 防火墙
echo "[2/6] 防火墙状态"
which ufw >/dev/null 2>&1 && ufw status | head -3
which firewalld >/dev/null 2>&1 && firewall-cmd --state
which iptables >/dev/null 2>&1 && iptables -L -n | head -10

// 3. 开放端口
echo "[3/6] 监听端口"
ss -tlnp | grep LISTEN

// 4. 失败登录
echo "[4/6] 最近失败登录"
lastb 2>/dev/null | head -5

// 5. 磁盘
echo "[5/6] 磁盘使用"
df -h | grep -vE 'tmpfs|devtmpfs'

// 6. 备份
echo "[6/6] 最近备份"
find /backup/ -type f -mtime -1 2>/dev/null | head -5

echo "========== 审计完成 =========="
AUDIT_SCRIPT
chmod +x /usr/local/bin/security-audit.sh

运行 security-audit.sh 即可获得一份完整的安全态势报告。


加固前后效果对比

指标加固前加固后
SSH 暴力破解尝试(24小时)8000+ 次0 次(端口变更 + fail2ban)
陌生 IP 成功登录可能发生不可能(仅密钥 + 白名单)
可疑进程发现依赖手动 psAuditd 实时记录
数据丢失风险无备份每日自动备份 + 异地同步
被全球扫描器发现上线 12 分钟内仅开放必要端口
合规审计准备无完整日志链路

云厂商安全服务对比(Web 应用防火墙)

除了服务器自身加固,云厂商提供的 WAF 也是重要防线:

功能维度AWS WAF阿里云 WAFCloudflare WAF
部署位置CloudFront / ALB域名接入全球边缘节点
OWASP Top 10 防护✅ 托管规则✅ 内置规则集✅ 内置 + 自定义
CC 攻击防护需配合 Shield✅ 频率控制✅ Rate Limiting
Bot 管理✅ Bot Control✅ 爬虫风险管理✅ Bot Management
最低月费(USD)$5/ACL + 按请求计费$141(企业版起步)$0(Free 计划含基础 WAF)
DDoS 基础防护Shield Standard(免费)默认 5GbpsFree 计划不限量

总结

安全不是一次性配置,而是一个持续的过程。这 24 项检查覆盖了从 SSH 入口到日志审计的完整链路,全部执行完毕约需 30 分钟,却能让你的服务器从「被攻破只是时间问题」变成「攻击者绕道走」。

建议每周运行一次 security-audit.sh 检查,每月更新一次 fail2ban 规则,每季度做一次完整的渗透测试验证。

🛡️ 企业出海需要专业的安全合规架构?通过 7.chengzicloud.cloud 联系我们,获取专属云安全方案——从安全加固到合规审计,一站式覆盖。


本文由 7.chengzicloud.cloud 提供,点击访问首页了解更多企业级云架构与安全方案。

常见问题(FAQ)

我只有一台服务器,需要做全部 24 项吗?

起步阶段至少完成第 1-3 项(SSH 配置)、第 11 项(防火墙)、第 16 项(审计)。这三项覆盖了 80% 的攻击面。业务上线后逐步补全其余项。

修改 SSH 端口后,云平台的安全组需要同步吗?

需要!如果使用云平台安全组(AWS Security Group / 阿里云安全组),必须在安全组中放行新端口(如 2222),同时可以删除 22 端口规则。

SELinux 启用后我的网站打不开了怎么办?

先用 ausearch -m avc --start recent 查看被阻止的操作,然后针对性地通过 audit2allow 生成策略模块。不建议直接 setenforce 0 关闭。

fail2ban 和云平台安全组有什么区别?

fail2ban 在 OS 层面通过 iptables 封禁 IP,反应时间为分钟级。云安全组在网络边界拦截,但通常是静态规则。两者互补——安全组做白名单,fail2ban 做动态封禁。

备份需要存到哪里?

建议「本地 + 异地」双副本:每日本地备份保留 7 天,异地同步到对象存储(AWS S3 / 阿里云 OSS / Cloudflare R2)。对象存储默认 11 个 9 的持久性,远高于单台服务器。

加固后性能会下降吗?

影响极小。Auditd 在高 I/O 场景下可能有 1-3% 的 CPU 开销,但远小于被入侵后的损失。防火墙规则几乎无开销。