文章详情

AWS国际站 AWS亚马逊云服务器防御木马教程

亚马逊aws2026-04-25 16:05:21AWS加云Plus
下载.png

别等木马敲门才装锁:AWS云服务器防木马不是选修课,是必修急救课

你有没有过这种经历?某天凌晨三点,收到CloudWatch告警:CPU飙到99%,出站流量突增10倍;登录EC2一看,top里飘着个叫svchostd的进程,查文档没这玩意儿,ps aux一搜,它正偷偷往境外IP发数据包……恭喜,你的AWS服务器刚被木马“认领”了。

很多人误以为:「我在AWS上跑,自带防火墙+IAM+加密,应该很安全」——错!AWS只管基础设施层(IaaS),而木马专挑你亲手部署的应用层、配置层、运维习惯层下手。它不黑AWS,它黑的是你没改默认密码的Redis、暴露在公网的Jenkins、以及那个写着chmod 777 /tmp的启动脚本。

下面这套防御组合拳,我们不用高大上的EDR产品,全靠AWS原生工具+Linux原生命令+一点点强迫症式习惯,成本为零,效果拉满。

第一道防线:让木马连门都摸不到

安全组不是摆设,是智能门禁系统

别再把SSH端口(22)对0.0.0.0/0开放了!这不是“方便”,这是在门口贴张纸:「小偷请走正门」。正确姿势:

  • SSH只允许可信IP段(比如公司办公网、跳板机IP),用aws ec2 authorize-security-group-ingress动态更新;
  • Web服务(80/443)放开,但数据库(3306/5432)、Redis(6379)、Elasticsearch(9200)一律禁止公网访问;
  • 新增一条「拒绝所有入站」规则(优先级最低),堵住漏网之鱼。

AWS国际站 顺手检查:在EC2控制台→安全组→入站规则,右上角点「查找冲突规则」——AWS会自动标红重复或冗余规则,删掉那些写着「允许全部TCP」却从未用过的僵尸规则。

密钥管理:别让.pem文件躺在桌面当传家宝

你的my-server-key.pem如果满足以下任意一条,请立刻停下手头工作去处理:
• 存在微信/QQ传输记录
• 权限是-rw-r--r--(非-rw-------
• 曾用chmod 644「修复权限失败」

正确操作: chmod 400 ~/Downloads/my-server-key.pem
然后把它移出下载目录,放进~/.ssh/aws-keys/,并用ssh-agent加载:
eval $(ssh-agent); ssh-add ~/.ssh/aws-keys/my-server-key.pem
从此告别ssh -i xxx.pem,输入一次密码,当天所有连接自动复用密钥。

第二道防线:砍掉木马的「生存权」

用户权限:root不是主角,是反派

新购EC2默认以ec2-user(Amazon Linux)或ubuntu(Ubuntu)登录,但很多人干的第一件事就是sudo su -切root,然后一路狂敲命令。木马一旦得手,直接获得上帝权限。

实战建议:
• 禁用root远程登录:sudo passwd -l root
• 所有日常操作用普通用户,仅需提权时用sudo(且visudo中限制其只能执行必要命令,如/bin/systemctl restart nginx,而非/bin/bash);
• 关键目录设为不可写:sudo chown root:root /etc/cron*,防止木马注入定时任务。

进程与服务:定期给系统做「CT扫描」

木马最爱伪装成合法进程。每月执行一次「三查」:

  1. 查异常父进程ps auxf | grep -v 'sshd\|systemd\|bash' | head -20——重点看PPID(父进程ID)是不是1(systemd)或sshd,若发现PPID=1234(某个已退出的shell),高度可疑;
  2. 查隐藏线程ls /proc/[0-9]*/comm 2>/dev/null | xargs -I{} sh -c 'echo {}; cat {} 2>/dev/null',比ps更底层,能揪出ptrace隐藏的进程;
  3. 查网络后门sudo ss -tulpn | grep ':[1-65535]' | grep -v '127.0.0.1\|::1',凡是有LISTEN状态且绑定非127.0.0.1的端口,必须人工确认用途。

第三道防线:让木马无处藏身

文件扫描:用clamav给磁盘做「病毒快筛」

别嫌麻烦,5分钟装好ClamAV,胜过三天排查:

sudo yum install -y clamav-update clamav  # Amazon Linux
sudo freshclam  # 更新病毒库
sudo clamscan -r --bell -i /home/ec2-user /var/www  # 只扫用户目录和网站根目录

加个定时任务每天凌晨扫一次:
0 3 * * * /usr/bin/clamscan -r --remove=yes /home/ec2-user 2>/dev/null
注意:别扫/全盘!既慢又易误删系统文件。聚焦/tmp/var/tmp/home/*/var/www这四个重灾区。

日志审计:不是记流水账,是建「行为指纹库」

启用auditd监控关键动作:

sudo auditctl -w /etc/passwd -p wa -k identity_change
sudo auditctl -w /etc/shadow -p wa -k shadow_change
sudo auditctl -w /usr/bin/ -p x -k binary_exec

然后用ausearch -k binary_exec | ausearch -m execve | head -10,就能看到最近10次谁执行了什么二进制文件。某天发现/tmp/.x被运行了?立刻溯源!

日志存哪?别只留本地!配置/etc/rsyslog.confauth,authpriv.* @your-central-syslog-server:514,或者直接推送到CloudWatch Logs——毕竟木马删你本地日志,可删不了云端副本。

终极保险:自动化响应,让防御自己动起来

用Lambda+EventBridge,实现「发现即隔离」

当CloudWatch检测到异常出站流量(比如单小时>5GB),自动触发Lambda函数:

  • 调用EC2 API停止该实例;
  • 发送SNS通知到运维钉钉群;
  • 生成取证快照(snapshot)并打标签quarantine:true

代码无需复杂,核心就三行Python:
ec2.stop_instances(InstanceIds=[event['detail']['instance-id']])
sns.publish(TopicArn='xxx', Message='木马嫌疑实例已隔离')
ec2.create_snapshot(VolumeId=vol_id, TagSpecifications=[...])

这招不求100%拦截,但能把损失控制在10分钟内——而多数木马,前15分钟才是黄金窃取期。

最后送你一张「木马防御自查清单」

  • □ 安全组是否禁用22端口公网访问?
  • .pem文件权限是否为400且不在共享目录?
  • □ 是否禁用root远程登录?sudo权限是否最小化?
  • □ 是否每周手动执行ps auxf + ss -tulpn双查?
  • □ ClamAV是否已安装并配置每日扫描?
  • □ 关键目录(/etc/cron*, /etc/init.d)是否属主为root且不可写?
  • □ CloudWatch是否设置了CPU/网络/磁盘IO异常阈值告警?

划重点:安全不是一次性工程,而是每天早上喝咖啡时顺手敲的三行命令。今天少查一次ps,明天就多一份勒索信PDF。现在,打开你的终端,先执行ps aux | grep -E '(sh|bash|python)' | grep -v grep——看看有没有你没见过的shell正在后台呼吸。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系