华为云PayPal充值 国际华为云服务器OS安全加固教程
国际华为云服务器OS安全加固教程:别让你的ECS变成黑客的免费WiFi
朋友,你有没有过这种经历——刚在华为云国际站(比如新加坡region)开通一台ECS,配好网站、跑通API,美滋滋喝着冰美式准备躺平,结果第二天收到阿里云安全中心的告警邮件?‘检测到SSH暴力破解尝试,来源IP:192.168.3.11(别信,这其实是巴西某咖啡馆的路由器)’。再一查登录日志:Failed password for root from 203.124.55.78 port 58212 ssh2——好家伙,这已经是第37次了。
别慌。这不是你的错,是默认配置在裸奔。
一、先泼盆冷水:加固≠装个杀毒软件
很多同学以为“安全加固”就是装个fail2ban、改个root密码,然后点个“一键优化”就完事。醒醒!华为云ECS镜像出厂时,为了兼容性和开箱即用,预装了大量非必要服务(比如telnet-server、rsh、ftp),SSH允许密码登录+root直连,firewalld默认放行全部端口……这哪是云服务器?这是黑客训练营模拟靶机。
本文不讲理论,只干三件事:删掉不该有的、锁死能进来的、盯紧动过的。全程基于真实国际站环境(Ubuntu 22.04 LTS / CentOS 7.9),命令可复制粘贴,失败有回滚方案。
二、登录前必做:换密钥,禁密码,关root
第一步永远不是登录,而是换钥匙。别用控制台密码登录!立刻生成新密钥对:
ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/hwcloud-prod
把公钥(hwcloud-prod.pub)粘贴进华为云ECS的“更多 > 重置密钥对”里。重启后,用私钥登录:
ssh -i ~/.ssh/hwcloud-prod [email protected]
接着立刻执行三连击:
sudo sed -i 's/#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_configsudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_configsudo systemctl restart sshd
验证:新开终端尝试密码登录——直接拒绝;用root+密钥登录——提示Permission denied。完美。
三、防火墙:从‘欢迎光临’变成‘此路不通’
华为云安全组只是第一道门,OS自带防火墙才是门内保镖。Ubuntu用ufw,CentOS用firewalld,咱分两步走:
Ubuntu(22.04):
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
CentOS(7.9):
sudo firewall-cmd --permanent --set-default-zone=drop
sudo firewall-cmd --permanent --zone=public --add-service=ssh
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
sudo firewall-cmd --reload
敲完执行sudo ufw status verbose或firewall-cmd --list-all,看到只有3个端口开放,其他全被DROP——这才是正常状态。
四、服务瘦身:卸载所有‘吃白饭’进程
执行systemctl list-unit-files --type=service --state=enabled,你会看到一堆不认识的玩意儿:avahi-daemon(局域网发现)、bluetooth(你服务器装蓝牙?)、rpcbind(NFS旧协议)。统统干掉:
sudo systemctl disable avahi-daemon bluetooth rpcbind rsyslog
sudo systemctl stop avahi-daemon bluetooth rpcbind
特别注意:rsyslog别彻底删!我们只是禁用默认配置,后面要换成更安全的journalctl集中审计。
五、日志审计:让每一次操作都‘留痕可查’
默认日志太松散。编辑/etc/journald.conf,取消注释并修改:
Storage=persistent
Compress=yes
SystemMaxUse=500M
MaxRetentionSec=3month
然后执行:sudo systemctl restart systemd-journald。之后查操作记录再也不用翻/var/log/messages了,一句journalctl -u sshd -n 50 --since "2 hours ago"就能揪出可疑登录。
六、用户与权限:给sudo加把‘指纹锁’
别让普通用户随便sudo!编辑/etc/sudoers.d/secure(用sudo visudo -f /etc/sudoers.d/secure):
%admin ALL=(ALL:ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/apt update
意思是:admin组用户只能无密码重启nginx或更新apt,其他操作一律要输密码。既方便运维,又防提权。
七、自动更新:但别让它半夜把你服务搞崩
Ubuntu开无人值守更新,但排除关键包:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades # 选Yes
echo 'Unattended-Upgrade::Package-Blacklist {"nginx","mysql-server";};' | sudo tee /etc/apt/apt.conf.d/50unattended-upgrades-blacklist
CentOS用yum-cron,但设置为仅下载不安装:sudo sed -i 's/update_cmd = default/update_cmd = security/se' /etc/yum/yum-cron.conf,每天早上9点发邮件提醒你手动审核。
八、最后检查:运行这个‘自检脚本’
华为云PayPal充值 把下面代码存为check-secure.sh,chmod +x后执行:
#!/bin/bash
echo "=== SSH加固检查 ==="
[ $(grep -c "PermitRootLogin no" /etc/ssh/sshd_config) -eq 1 ] && echo "✅ Root登录已禁用" || echo "❌ 风险:Root仍可登录"
[ $(sudo ss -tlnp | grep ":22" | grep -c "sshd") -eq 1 ] && echo "✅ SSH端口正常" || echo "❌ SSH未监听"
echo "\n=== 防火墙检查 ==="
sudo ufw status | grep -q "Active: active" && echo "✅ UFW已启用" || echo "❌ 防火墙未启动"
它会逐项告诉你哪里漏了,比人工排查快10倍。
九、避坑指南:那些让你重装系统的‘温柔陷阱’
- 别在加固中途断网!尤其改SSH配置后,务必保持两个终端:一个留着原连接,一个测试新配置。
- 华为云后台‘重置密码’功能会覆盖密钥!加固完成后,去控制台把“重置密码”按钮权限从IAM策略里移除。
- 时间同步必须开!执行
sudo timedatectl set-ntp on,否则证书校验和日志时间全乱套。
十、写在最后:安全不是终点,是日常呼吸
做完以上12步,你的ECS不会突然变成铜墙铁壁——但至少能让99%的自动化扫描器扫完就放弃。真正的安全在于习惯:每周看一次journalctl -S yesterday,每月跑一遍check-secure.sh,每次部署新服务前先问一句‘这个端口真需要对外开放吗?’
记住:在云上,最贵的不是流量费,是你修复一次勒索病毒的时间成本。而最好的加固工具,从来不是某个脚本,是你按下回车前,那0.5秒的停顿思考。
现在,去你的终端敲下第一行ssh-keygen吧。你的服务器,值得被认真对待。

