一、Amazon Linux 2023 安全基线简述

在 AWS EC2 上部署业务时,Amazon Linux 2023 (AL2023) 默认已集成部分安全特性,如预设加密策略、SELinux 宽容模式。但在生产环境下,默认配置仍需进一步收紧以应对公网扫描。本文主要针对网络访问控制和系统登录认证两个维度,讲解如何关闭不必要端口并强制执行密钥登录,完成 Amazon Linux 2023 安全加固。

二、前置准备:防失联操作

修改网络或 SSH 配置前,请务必执行以下操作,防止配置失误导致实例无法连接:

  1. 确认密钥连接:确保当前已通过 .pem/ .ppk 密钥对建立稳定的 SSH 连接,全程保留这个会话窗口不关闭。
  2. 核对公钥:确认实例内 ~/.ssh/authorized_keys文件中包含正确的公钥信息,权限为 600。
  3. 系统盘快照:在 AWS 控制台卷管理,为此实例系统盘手动创建 EBS 快照。配置失误失联时,可以通过快照回滚或者挂载卷修复系统。
  4. 备份 SSH 配置目录:

sudo cp -r /etc/ssh/sshd_config.d /etc/ssh/sshd_config.d.bak

三、网络层加固:配置 AWS 安全组

注意:Amazon Linux2023 默认未安装 firewalld 系统防火墙;外网流量过滤优先依靠 VPC 安全组,流量到达操作系统之前就被拦截,比操作系统内部防火墙优先级更高、更可靠。

1. 端口开放原则

遵循 “最小权限原则”,仅放行必需端口。

业务场景 协议 端口 源 (Source) 建议 说明
SSH 管理 TCP 22 指定管理员 IP / 堡垒机 IP 严禁对 0.0.0.0/0 全网开放
Web 服务 TCP 80/443 0.0.0.0/0 或者负载均衡器安全组 对外网站访问
数据库 TCP 3306 仅限内网应用服务器安全组 禁止外网直连,防范勒索与爆破
缓存服务 TCP 6379 仅限内网安全组 禁止外网直接访问

2. 操作步骤

  1. 登录 AWS 管理控制台,进入 EC2 仪表板。
  2. 在实例列表勾选目标实例。
  3. 切换到安全选项卡,点击对应的安全组 ID 跳转。
  4. 编辑入站规则。
  5. 清理规则:删除测试遗留无用端口(如 3306、6379 全网放行规则)。
  6. SSH 22 端口源修改为固定办公 IP 或堡垒机安全组,拒绝 0.0.0/0。
  7. 保存入站规则,修改即时生效。

3. 连通性验证

AL2023 默认不带 nc 工具,需要先执行 sudo dnf install nc -y 安装。

nc -zv <EC2_公网_IP> 3306

返回连接超时 / 拒绝,代表安全组拦截已生效。

四、系统层加固:禁用 SSH 密码登录、禁止 root 远程登录

为规避弱密码暴力破解风险,彻底禁用 SSH 网络密码认证,强制密钥登录。

AL2023 配置机制说明 AL2023 采用 dropin 分片配置模式;主文件/etc/ssh/sshd_config会加载/etc/ssh/sshd_config.d/*.conf。 配置文件前缀数字代表加载优先级,数字越大越晚加载,优先级越高,可以覆盖前面内置 50redhat.conf 配置,因此自定义加固使用99xxx.conf命名。

注意:AL2023 (RHEL 系列) 不建议设置UsePAM no,会破坏系统账号、审计日志等基础能力;保留UsePAM yes,只要关闭 PasswordAuthentication 即可阻断 SSH 网络密码登录。 补充:本设置仅作用于网络 SSH;EC2 串行控制台属于本地 tty 终端,不受该配置控制,应急串行登录需要单独设置操作系统用户密码。

创建高优先级自定义加固配置

sudo vi /etc/ssh/sshd_config.d/99hardening.conf

写入内容:

PasswordAuthentication no

ChallengeResponseAuthentication no

UsePAM yes

PermitRootLogin no

PubkeyAuthentication yes

  1. 关键步骤:语法校验(必须执行)修改完成先校验 sshd 配置语法,出现 ERROR 绝对不要重载服务!

sudo sshd -t

无任何输出代表语法正常;有报错需要修正配置文件。

  1. 重载 SSH 配置(推荐 reload,不切断现有 SSH 会话)

sudo systemctl reload sshd

补充说明:systemctl restart sshd会断开全部 SSH 连接,配置出错直接锁实例,加固调试优先使用 reload。

验证测试(最重要)

不要关闭当前已经登录的 SSH 窗口! 新开本地终端,尝试密码方式 SSH 登录;出现 Permission denied (publickey) 无法输入密码,说明密码登录已经关闭。 同时测试密钥登录可以正常连通,确认无误,才可以关闭旧会话窗口。

五、可选基线加固(SELinux)

AL2023 默认 SELinux 为permissive宽容模式,仅记录告警不拦截;生产环境建议开启强制模式 enforcing。

# 修改配置永久生效

sudo vi /etc/selinux/config

# SELINUX=enforcing

# 修改后重启实例生效

六、常见问题 FAQ

Q1:修改 sshd 配置重载后,SSH 依然可以密码登录? A:①检查 dropin 配置文件名数字优先级,不要用低数字前缀被内置配置覆盖;②执行sudo sshd -T | grep passwordauthentication查看运行时生效参数,确认配置是否被加载;③确认 reload 执行成功。

Q2:执行 sshdt 出现报错怎么办? A:代表配置文件语法错误,不要执行 reload/restart;对比备份目录 /etc/ssh/sshd_config.d.bak恢复排查。

Q3:禁用 PasswordAuthentication 之后,EC2 串行控制台还能不能登录? A:SSH 密码关闭不影响 EC2 串行控制台;串行控制台是本地终端,需要单独给操作系统用户设置密码,用于网络完全断网时应急排障。

Q4:Amazon Linux2023 关闭端口,是改系统防火墙还是安全组? A:优先修改 EC2 安全组,AL2023 默认没有 firewalld;操作系统防火墙需要手动 dnf 安装,不建议作为外网访问第一道防线。

Q5:加固后密钥无法登录实例,怎么应急恢复? A:使用前期创建的 EBS 快照;或者把系统盘挂载到其他临时实例,修改 sshd 配置文件修复。

Q6:PermitRootLogin no 是什么作用? A:禁止 root 账号通过 SSH 远程登录;管理员先用普通 ec2user 密钥登录后,再 sudo 提权,降低 root 对外暴露风险。

相关新闻

联系我们

联系我们

电报:@yilongcloud

邮件:yilongcloud@hotmail.com

工作时间:早上8:00-晚上11:00

认准电报
认准电报
分享本页
返回顶部