在EC2 AWS中使用UFW将自己锁定在SSH之外

问题描述 投票:17回答:4

我有一个使用Ubuntu的EC2实例。我使用了sudo ufw enable并且仅允许mongodb端口

sudo ufw allow 27017

当ssh连接断开时,我无法重新连接

ubuntu amazon-ec2 ufw
4个回答
26
投票

不知怎的,Mahesh的答案对我不起作用,如果你碰巧在我身边,试试这个。

  • 启动新实例(恢复实例)。
  • 停止原始实例(不要终止)
  • 从原始实例中分离卷(问题卷)
  • 将其作为/ dev / sdf附加到恢复实例。
  • 通过ssh / putty登录恢复实例
  • 运行sudo lsblk以显示附加的卷并确认问题卷的名称。它通常以/dev/xvdf开头。我的是/dev/xvdf1
  • 装载问题量。 $ sudo mount /dev/xvdf1 /mnt $ cd /mnt/etc/ufw
  • 打开ufw配置文件 $ sudo vim ufw.conf
  • 按i编辑文件。
  • ENABLED=yes改为ENABLED=no
  • 键入Ctrl-C并键入:wq以保存文件。
  • 使用以下命令显示ufw conf文件的内容,并确保ENABLED=yes已更改为ENABLED=no $ sudo cat ufw.conf
  • 卸载音量 $ cd ~ $ sudo umount /mnt
  • 从恢复实例中分离问题卷,并将其作为/ dev / sda1重新附加到原始实例。
  • 启动原始实例,您应该能够重新登录。

资料来源:here


15
投票
  • 启动另一个EC2服务器实例实现此目的的最佳方法是使用EC2的“Launch More Like This”功能。这将确保操作系统类型,安全组和其他属性相同,从而节省一些设置时间。
  • 停止问题实例
  • 从问题实例中分离卷
  • 将卷附加到新实例

注意:较新的Linux内核可能会在内部通过/ dev / xvdp将设备重命名为/ dev / xvdf,即使输入的设备名称是/ dev / sdf / dev / sdp。

  • 安装音量
cd ~
mkdir lnx1
sudo mount /dev/xvdf ./lnx1
  • 禁用UFW
cd lnx1
sudo vim ufw.conf

现在找到ENABLED = yes并将其更改为ENABLED = no。

  • 分离音量

请务必先卸载卷:

sudo umount ./lnx1/
  • 在我们的问题实例上将卷重新附加到/ dev / sda1
  • 引导问题实例
  • 如有必要,重新分配弹性IP地址
  • 删除临时实例及其关联的卷

你好 !!你很高兴。


8
投票

其他方法对我不起作用。我的EC2实例基于Bitnami图像。由于市场锁定,将卷附加到另一个实例不起作用。

因此,请停止问题实例并将此脚本粘贴到instanceSettings> view-change user data中。

这种方法不需要分离音量,因此与其他方法相比,它更直接。


Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
ufw disable
iptables -L
iptables -F
--//

必须在粘贴之前停止实例,在启动实例之后你应该能够ssh。


5
投票

我知道这是一个老问题,但我通过使用bootcmd在View / Change User Data中添加命令来修复我的问题

我先停止了我的实例

然后我在用户数据中添加了这个

#cloud-config
bootcmd:
 - cloud-init-per always fix_broken_ufw_1 sh -xc "/usr/sbin/service ufw stop >> /var/tmp/svc_$INSTANCE_ID 2>&1 || true" 
 - cloud-init-per always fix_broken_ufw_2 sh -xc "/usr/sbin/ufw disable>> /var/tmp/ufw_$INSTANCE_ID 2>&1 || true"

#Note:我的实例是Ubuntu

© www.soinside.com 2019 - 2024. All rights reserved.