我需要共享一个 ami,以便客户可以使用它通过自己的帐户创建自己的实例。但是,我不希望该客户端能够通过 ssh 访问该实例。我需要能够通过 ssh 进入实例才能维护它。他们将只有 ftp 和 www 访问权限。我有通过 ssh 配置工作的 ftp 和 www 访问部分。当他们使用自己的密钥对启动实例时,如何让他们远离 ssh?
2 回答
好吧,如果他们决心进入,你无法真正阻止这种情况,因为他们控制着实例。
停止实例→卸载根EBS卷→挂载到别处→修改内容→卸载→重新挂载→重启→pwn3d。
但是,根据文档,如果您不将 AMI 配置为加载他们的公钥,那么它就坐在那里并且实际上对他们不起作用。
Amazon EC2 允许用户在启动实例时指定公私密钥对名称。当向 RunInstances API 调用(或通过命令行 API 工具)提供有效的密钥对名称时,会生成公钥(Amazon EC2 在调用 CreateKeyPair 或 ImportKeyPair 后保留在服务器上的密钥对部分)通过针对实例元数据的 HTTP 查询可供实例使用。
要通过 SSH 登录,您的 AMI 必须在启动时检索密钥值并将其附加到 /root/.ssh/authorized_keys(或 AMI 上任何其他用户帐户的等效项)。用户可以使用密钥对启动您的 AMI 实例并登录,而无需 root 密码。
如果您不按所述获取密钥并附加它,那么他们的密钥似乎不会仅仅由于被“分配”给实例而实际上会给他们对实例的任何访问权限。
通过使用这个过程,我终于能够完成这个疯狂的任务:
1) 以 ubuntu 身份登录 2) 创建一个用户,属于 sudo 和 admin 组 3) 在 newuser 下安装我的所有软件 4) 验证新用户是否具有所有必需的权限 5) chroot 将 ubuntu 用户囚禁到 ftp 访问权限
当 ami 传输到新区域/帐户时,ubuntu 用户作为 sudoer 存在,但无法 ssh 进入实例。Ftp 允许他们连接到系统,但他们查看的是一个裸目录,并且无法在系统中的其他任何位置 cd。
这不是完全否认,但我认为这将为该客户服务。