linux – 阻止SSH访问从AWS AMI启动的实例

我们正在尝试制作一个安全的AMI,以便分发给我们的一个客户(运行 Linux / CoreOS).一旦我们的客户部署了我们的AMI,重要的是他们无法获得shell访问权限(例如,无法通过SSH访问).

从表面上看,这似乎是一个非常简单的问题:只需确保我们的密钥只在authorized_keys文件中.但是,当我们的客户部署我们的AMI时,他们被迫提供自己的密钥对,然后将相关的公钥插入到盒子上的authorized_keys文件中,使他们能够通过SSH进入该框.

我知道亚马逊通过HTTP在169.254.169.254(信息在这里http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)将公钥可访问(和用户元数据)到主机操作系统.互联网和CoreOS文件系统周围的一些调查表明,/usr/bin/coreos-Metadata实际上访问了这个IP,大概是为了密钥对,但是我无法弄清楚实际上是什么启动了可执行文件或如何禁用它.我甚至考虑过删除可执行权限或完全删除它,但文件系统的那部分在CoreOS上是只读的(甚至是root用户).

显然,上述行为胜过我们采取的任何安全措施.我们能做些什么来防止这种情况发生吗?

解决方法

cloud-init正在这样做.禁止sshd运行(部分AMI版本),然后运行脚本代码,将您的密钥放在登录用户下(建议使用另一个),启动ssh.我还建议使用不同的端口号作为确认您工作正常的简单方法.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...