使用 SSH 安全访问 EC2 Linux 实例,同时避免未经授权的访问的最佳实践有哪些?

上次更新时间:2020 年 9 月 4 日

我想使用 SSH 访问 Amazon Elastic Compute Cloud (Amazon EC2) 实例。在使用 SSH 时,确保我的实例安全并避免未经授权的访问的最佳实践是怎样的?

解决方法

注意:使用根权限运行以下命令。运行 sudo-i 命令,以成为根用户。

不允许根用户使用 SSH 终端

这是 Amazon 提供的 AMI 和 AWS Marketplace 中大多数供应商的默认设置。如果您的实例允许根用户登录,请按照以下步骤拒绝访问。

1.    在 /etc/shadow 文件的密码字段中添加一个 *(星号),以使根用户的密码失效:

使用 vipw-s 编辑文件。

第一行通常是根用户行。按如下方式更改根用户行:

root:*LOCK*:14600::::::

2.    使用 vi 编辑器或其他编辑器编辑 SSH 守护程序的配置文件:

vi /etc/ssh/sshd_config

确保以下行存在且未注释。该行拒绝根用户的登录权限。

PermitRootLogin no

3.    重新启动 SSH 守护程序:

service sshd restart

有关 PermitRootLogin 选项的其他参数的信息,请参阅 man.openbsd.org 网站上的 OpenBSD 手册页面服务器。

确保所有用户使用 SSH 密钥对登录,然后禁用密码验证

Amazon 提供的 AMI 默认配置使用 SSH 密钥对登录,同时禁用密码验证。如果您已更改实例,请使用以下命令恢复为默认配置:

1.    使用 vi 编辑器或您选择的其他编辑器访问 sshd_config 文件:

vi /etc/ssh/sshd_config

2.    验证以下行是否存在且未注释:

PasswordAuthentication no

3.    重新启动 SSH 守护程序:

service sshd restart

用户需要在 ~/.ssh/authorized_keys 中使用公有密钥。有关密钥登录的更多信息,请参阅 Amazon EC2 密钥对和 Linux 实例。

限制来自未知来源的访问

对于公有实例,如果存在错误配置或存在意外软件漏洞,则开放且不受限制的 SSH 端口可能会导致入侵。为帮助防止入侵,请遵循以下最佳实践:

1.    将 SSH 守护程序更新到 Linux 发行版维护者提供的最新版本。SSH 守护程序通常会从上游提供商接收来自更高版本的向后移植更新。有关向后移植的更多信息,请参阅 Red Hat 客户门户网站上的向后移植安全修复程序。

yum -y install openssh-server # for Amazon Linux, RHEL, Centos

apt update && apt install openssh-server # For Ubuntu, Debian

2.    限制您的安全组以允许仅从受信任的 IP(如企业网络 IP)传入连接到端口 22。有关更多信息,请参阅授权 Linux 实例的入站流量。

3.    一些入侵者可能会试图猜测用户名和密码,或者如果端口 22 对外开放,他们可能会试图让 SSH 守护程序溢出。fail2ban 是一个实用程序,用于监视日志文件是否不断尝试登录实例,然后会在几次尝试失败后阻止它们。安装 fail2ban 的步骤:

Ubuntu:

apt -y install fail2ban

Amazon Linux、Centos、RHEL:

运行以下命令:

yum -y install fail2ban

systemctl enable fail2ban

systemctl start fail2ban

使用 AWS Systems Manager 会话管理器以通过 shell 访问 EC2 实例

会话管理器允许 AWS Identity and Access Management (IAM) 用户使用加密和日志记录功能登录到您的实例。Systems Manager 的流量通过 Systems Manager 终端节点,从而可以轻松安全地访问私有实例,而无需打开入站端口。有关 Systems Manager 的更多信息,请参阅 AWS Systems Manager Session Manager for shell access to EC2 instances。

这篇文章对您有帮助吗?

您是否需要账单或技术支持?

linux一次性密码确保ssh登录安全,使用 SSH 时确保 EC2 Linux 实例安全的最佳实践相关推荐

  1. 宝塔linux忘记密码,宝塔忘记登录入口了怎么解决 宝塔面板密码忘记了怎么办

    因为性能和安全性上的突出优势,现在用宝塔LINUX面板配置网站环境的站长越来越多,但一些粗心大意的站长经常会遇到这个问题,密码想不起来了,入口链接忘记了,宝塔忘记登录入口了怎么解决 宝塔面板密码忘记了 ...

  2. python实现ssh登录send_Python实现ssh批量登录并执行命令

    局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务 是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软 ...

  3. linux账号密码输入后闪退,修复ssh无法连接(ssh输入完密码自动退出)

    故障现象,通过telnet连接服务器22端口是通的,通过ssh软件连接,到密码输入完以后自动退出. 机房检查过配置文件,跟配置文件无关(root允许登录的),selinux也是关闭,iptables也 ...

  4. ssh登录日志,ssh登录记录,最近ssh登录

    linux登录日志  /var/log/secure    (root用户可以删除该文件) 日志对于安全非常重要,记录了系统每天发生的各种事情,通过日志检查错误发生的原因,或者***后留下的痕迹.所有 ...

  5. 龙芯linux默认密码,8089B开启Wifi的方法(默认的红旗linux系统)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 9月初收到的8089B,上手一个月,用起来还不错. 这台电脑适合学习编程和linux. 默认的红旗linux下使用wifi挺方便,就是KDE加上Netwo ...

  6. 达内linux root密码,【达内课堂】 11个最常用的Linux简单命令

    叮叮叮~上课啦!各位同学,今天达妹为大家收集了11个最常用Linux简单命令,火速收藏起来吧! 1.# 表示权限用户(如:root),$ 表示普通用户 开机提示ogin:输入用户名 password: ...

  7. Linux环境下Arm端源码编译OpenCV+ncnn目标检测模型实例运行调试完整实践记录

    今天需要在嵌入式设备端运行C的程序,里面有依赖OpenCV的部分,这就需要编译安装好OpenCV才行,这个对于我来说还是比较陌生的,我很少用C,所以这里面也没少折腾,一路上遇上了很多的报错,这里我将完 ...

  8. 云服务器最佳实践-Linux云服务器SSH登录的安全加固

    Linux云服务器常用的登录方式是SSH,对于密码登录方式创建的云服务器,如何保证登录安全性呢?本文以CentOS 7.6为例,对SSH登录进行安全加固. 修改默认端口 1.通过SSH密码方式远程登录 ...

  9. Linux日常之允许或禁止指定用户或IP进行SSH登录

    1. 用户 SSH登录 2. IP SSH登录 暂时只了解到了hosts.allow和hosts.deny的方式,iptable方式只了解到针对端口的操作 1. 用户 SSH登录 允许特定用户登录(白 ...

最新文章

  1. android 不重新加载,android – 返回Activity而不重新创建(不调用onCreate())
  2. android dialog 控件,android控件封装 自己封装的dialog控件
  3. ts包、表、子表、section的关系
  4. python怎么打印出文件的内容_Python---进阶---文件操作---按需求打印文件的内容
  5. ubuntu自带截图工具--方便好用
  6. Linux 相关小技巧
  7. thinkphp mysql 密码加密_thinkphp微信开发(消息加密解密)
  8. springboot - 问与答
  9. Unicode数据类型(与ANSI关系和相互转化)
  10. 爱普生L4168打印出来是白纸,复印OK,打印机测试也OK 解决方案
  11. 程序员如何创新?逆工程师思维
  12. 利用Docker 映射到主机端口 32768 ,通过浏览器访问web应用失败
  13. TeamViewer的LAN局域网内连接
  14. 用Matlab进行快速傅里叶变换
  15. oracle数据库dca,达梦数据库DCA考试经历
  16. APPLE开发者客服电话
  17. 一年过去了,在中软国际怎么样
  18. 工业网关,工业智能网关
  19. SDK:BUMO GO SDK
  20. 马虎词汇教程26-30(转载)

热门文章

  1. HTTP协议的请求协议(个人笔记看不懂的地方可以和我交流)
  2. 高斯消元解线性方程组(浮点高斯消元模板)
  3. php多表查询 例子,thinkphp学习笔记之多表查询
  4. php调用成员函数错误,PHP致命错误:在非对象上调用成员函数exec...
  5. Sql根据不同条件统计总数
  6. 推荐 | 微软SAR近邻协同过滤算法解析(一)
  7. Python如何在Dataframe中新添加一列
  8. 关于hankcs库的自然语言处理
  9. [Flink]Flink常用的DataStream转换算子
  10. 好程序员分享Web前端知识之HTML