如何使用 GuardDuty 标识 Linux 实例受到的 SSH 暴力攻击?
上次更新日期:2020 年 12 月 16 日
我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例受到 SSH 暴力攻击。如何使用 Amazon GuardDuty 阻止这些攻击?
简短描述
攻击可能会发生,因为类型 SSH 的规则允许来自端口范围 22 上的所有源 (0.0.0.0/0) 的连接。允许端口范围 22 上的 0.0.0.0/0 将带来安全风险。
通常,这些攻击来自正在寻找目标以入侵 EC2 实例的自动程序。您可以通过限制 SSH 访问来减少入侵的风险。最佳实践是将安全组配置为仅允许来自您拥有的特定源(例如,堡垒主机)的 SSH 访问。
解决方法
您可以使用 GuardDuty 来监视和检测 AWS 环境中的可疑行为。下例使用 GuardDuty 通过安全组(允许来自 Internet 上的源的 SSH 访问)对受到 SSH 暴力攻击的 EC2 实例进行问题排查。
- 打开 EC2 控制台。
- 在新选项卡中打开 GuardDuty 控制台。
- 在 EC2 控制台中,选择 Security Groups(安全组),再选择一个安全组,然后选择 Inbound(入站)选项卡。
- 在导航窗格中,选择 Instances(实例),然后在新选项卡中打开实例窗格。
- 选择您的实例,然后复制 Instance ID(实例 ID)。
- 在 GuardDuty 控制台中,选择 Add filter criteria(添加筛选条件),然后选择 Instance ID(实例 ID)。
- 将 Instance ID(实例 ID)粘贴到搜索框中,然后选择 Apply(应用)。
- 在 Finding Type(查找类型)中,选择 Last seen(上次显示)列中记录的最新查找结果。
- 滚动到 Actor(角色)部分,然后复制攻击的源 IP address(IP 地址)。
- 打开 EC2 Linux 实例上的终端,打开 /var/log/secure 目录,然后打开安全文件。
注意:安全文件包含 SSH 登录名。 - 输入步骤 9 中的源 IP 地址。
注意:Amazon Linux AMI SSH 日志包含要连接到实例的所有身份验证尝试。 - 打开 AWS Config 控制台,选择 Rules(规则),再选择 Add rule(添加规则),然后在搜索框中输入 restricted。
- 选择 restricted-ssh,然后选择 Save(保存)。
注意:restricted-ssh 规则检查安全组是否禁止无限制传入 SSH 流量。 - 在 Rule name(规则名称)中的 Compliance(合规性)字段下,等待 restricted-ssh 规则从 Evaluating(评估)变为 noncompliant resource(s)(不合规资源)。您也可以选择刷新图标。
- 选择 restricted-ssh 查看不合规的安全组。
- 在 Manage resource(管理资源)中,选择不合规的安全组,然后选择 Inbound(入站)选项卡。
在此示例中,安全组是不合规的,因为它允许来自所有源的 SSH 连接。要限制 SSH 流量,请参阅为 Linux 实例添加入站 SSH 流量规则。
有关更多信息,请参阅修复遭盗用的 EC2 实例。
注意:要使用 Amazon CloudWatch 查看 Linux 日志,请按照快速入门:在运行的 EC2 Linux 实例上安装和配置 CloudWatch Logs 代理中的说明操作。