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

时间:2017-01-30 05:00:24

标签: ubuntu amazon-ec2 ufw

我有一个使用Ubuntu的EC2实例。 我使用sudo ufw enable后只允许mongodb端口

sudo ufw allow 27017

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

5 个答案:

答案 0 :(得分:15)

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

注意:较新的Linux内核可能会将您的设备重命名为/ dev / xvdf   / dev / xvdp在内部,即使输入的设备名是/ 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地址
  • 删除临时实例及其关联的卷

Hola !! 你很高兴。

答案 1 :(得分:8)

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

因此,请停止问题实例,然后将此脚本粘贴到instanceSettings>视图更改用户数据中。

此方法不需要分离卷,因此与其他卷相比更直接。


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。

答案 2 :(得分:5)

我知道这是一个老问题,但是我通过使用bootcmd在“查看/更改用户数据”中添加命令来修复了我的问题

我首先停止了实例

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

#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"

#注意:我的实例是Ubuntu

答案 3 :(得分:0)

我有同样的问题,发现此步骤有效:

1-停止实例

2-转到“实例设置->查看/更改用户数据

3-粘贴

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
--//

4-启动您的实例

希望它对您有用

答案 4 :(得分:0)

这是用户数据脚本内容的扩展版本

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
set -x
USERNAME="ubuntu"
ls -Al
ls -Al /home
ls -Al /home/${USERNAME}
ls -Al /home/${USERNAME}/.ssh
sudo cat /home/${USERNAME}/.ssh/authorized_keys
ls -Al /etc/ssh
ls -ld /etc/ssh

sudo grep -vE '^$|^#' /etc/hosts.*
sudo sed -i -e 's/^\([^#].*\)/# \1/g' /etc/hosts.deny
sudo sed -i -e 's/^\([^#].*\)/# \1/g' /etc/hosts.allow
sudo grep -vE '^$|^#' /etc/hosts.*
sed '/^$\|^#/d' /etc/ssh/sshd_config

chown -v root:root /home
chmod -v 755 /home
chown -v ${USERNAME}:${USERNAME} /home/${USERNAME} -R
chmod -v 700 /home/${USERNAME}
chmod -v 700 /home/${USERNAME}/.ssh
chmod -v 600 /home/${USERNAME}/.ssh/authorized_keys

sudo tail /var/log/auth.log
sudo ufw status numbered
sudo ufw disable
sudo iptables -F
sudo service iptables stop
sudo service sshd restart
sudo service sshd status -l
--//