AWS自动发货 国际AWS亚马逊云服务器OS安全加固教程
别让你的EC2实例变成黑客的免费WiFi热点
你有没有想过——当你在AWS控制台点下「Launch Instance」那一刻,其实已经悄悄把一把带钥匙的后门,塞进了自家服务器的裤兜里?默认配置的Ubuntu或CentOS镜像,就像刚出厂没拆封的智能冰箱:功能全开、密码弱得像棉花糖、端口敞得像早市摊位,连SSH都默认允许root直接登录……这不是云服务器,这是云自助靶场。
第一步:先别急着装软件,先把「门锁」换掉
SSH是云服务器的命脉,也是黑客最爱的敲门砖。别再用ubuntu或ec2-user配个简单密码就上线了。立刻执行三连击:
- 禁用密码登录:编辑
/etc/ssh/sshd_config,把PasswordAuthentication yes改成no; - 禁用root远程登录:确认
PermitRootLogin no已生效(不是without-password!那只是换汤不换药); - 改掉默认端口:把
Port 22换成比如Port 22222——不是防高手,但能过滤掉90%的扫段脚本。
改完别忘sudo systemctl restart sshd,且务必先开一个新终端测试连接成功,再关旧会话——否则你会对着黑屏发呆三分钟,然后默默打开AWS控制台重置密钥……(别问怎么知道的)
第二步:防火墙不是摆设,是你的数字保安队
AWS安全组只是第一道篱笆,系统自带的UFW(Ubuntu)或firewalld(RHEL/CentOS)才是贴身保镖。别以为开了安全组就高枕无忧——内部横向移动、本地提权后的反弹Shell,全靠它拦。
Ubuntu用户一句搞定:sudo ufw enable && sudo ufw default deny incoming && sudo ufw allow 22222 && sudo ufw allow from 203.0.113.45 to any port 22222
(最后这行精准放行你的办公IP,别写allow 22222就完事——那是把门敞开喊‘欢迎来黑’)
RHEL系则用:sudo firewall-cmd --permanent --set-default-zone=drop && sudo firewall-cmd --permanent --add-port=22222/tcp && sudo firewall-cmd --permanent --add-source=203.0.113.45 && sudo firewall-cmd --reload
第三步:删掉那些你根本不知道自己装了啥的服务
执行systemctl list-unit-files --type=service --state=enabled,然后盯着列表发呆三秒——rpcbind?avahi-daemon?bluetooth?你这又不是开家庭影院。统统干掉:sudo systemctl disable rpcbind avahi-daemon bluetooth && sudo systemctl stop rpcbind avahi-daemon bluetooth
顺手检查监听端口:ss -tuln | grep -E ':[0-9]{4,}',凡是你不认识、没业务需求的端口,一律systemctl disable && stop。记住:少一个服务,少一个漏洞面;少一个进程,少一个提权入口。
第四步:日志不是存档,是你的24小时监控录像
默认的/var/log/auth.log(Ubuntu)或/var/log/secure(RHEL)只保留7天?太短。加一行到/etc/logrotate.d/rsyslog:/var/log/auth.log { rotate 365 daily missingok notifempty delaycompress compress }
更狠一招:把关键日志同步到S3——用aws s3 sync /var/log/ /s3://my-logs-bucket/ec2-$(hostname)-$(date +%Y%m%d)/配合cron每日执行。万一被删库跑路,至少还能从S3里翻出攻击者最后一次登录的IP和时间戳。
第五步:自动更新≠自动翻车,关键在策略
别再手动apt update && apt upgrade -y了——漏一次就是风险。Ubuntu用unattended-upgrades,RHEL用dnf-automatic,但必须定制:
- 只升级安全补丁,不碰内核(避免重启导致服务中断);
- 设置维护窗口(比如凌晨2:00–3:00),避开业务高峰;
- 邮件通知失败项:
Unattended-Upgrade::Mail "[email protected]";
验证是否生效?sudo unattended-upgrade --dry-run --debug,看到All upgrades installed successfully才放心。
第六步:权限最小化,不是口号是肌肉记忆
创建专用运维用户,别用ubuntu主账号干所有事:sudo adduser deploy --gecos "Deploy User,,," --disabled-password && sudo usermod -aG sudo deploy
AWS自动发货 然后——重点来了——用visudo限制其权限:deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/systemctl reload nginx
只给重启Nginx的权力,想删数据库?门都没有。顺便把/etc/sudoers设为chmod 440,防止被篡改。
第七步:文件系统也得有‘防盗门’
启用chattr锁定关键配置文件:sudo chattr +a /var/log/auth.log(仅追加)sudo chattr +i /etc/shadow(不可修改,需chattr -i才能解锁)
同时,扫描世界可写目录:find /tmp /var/tmp /dev/shm -type d -perm -0002 -ls 2>/dev/null,发现就立刻chmod 1777(sticky bit)或chown root:root。
第八步:别让时间成为你的安全破绽
NTP偏差超5分钟?某些证书校验直接失败,Kerberos认证崩盘,连CloudWatch日志时间戳都对不上。用systemd-timesyncd或chrony强制同步:sudo timedatectl set-ntp true && sudo chronyc tracking(看到System clock synchronized: yes才算过关)
第九步:内核参数调优=给系统穿防弹衣
编辑/etc/sysctl.conf,加入这些保命项:
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.all.accept_source_route=0
kernel.exec-shield=1
fs.suid_dumpable=0
vm.swappiness=1
执行sudo sysctl -p热加载。尤其rp_filter能防IP欺骗,suid_dumpable=0阻止core dump泄露内存敏感数据——黑客拿不到堆栈,就少一条提权路径。
第十步:最后防线——进程行为监控
装个轻量级HIDS(主机入侵检测):OSSEC或Wazuh。哪怕只开启文件完整性监控(FIM),也能在/etc/passwd被悄悄添加新用户时,秒级微信告警。比等收到AWS GuardDuty邮件快12小时。
结语:安全不是一次性装修,是每天擦灰
这份加固清单不是终点,而是起点。建议每周运行一次自查脚本:sudo ss -tuln | grep :22(确认只有22222在听)sudo lastb | head -20(翻翻最近爆破记录)sudo find /etc -type f -mtime -7 -name "*.conf"(查谁偷偷改了配置)
真正的云安全,不在白皮书里,而在你敲下sudo前那0.5秒的犹豫,在你删掉第3个无用服务时的果断,在你把日志备份到S3后点下的那个确认键。毕竟——AWS卖的是计算力,而安全,永远得你自己亲手焊牢。

