Amazon EC2实例缺lessnetworking接口

我在Amazon EC2的t1.micro实例上运行Linux。 一旦我注意到bruteforce sshlogin来自某个IP地址的尝试,在使用search引擎之后,我发出了下面两个命令(其他的ip):

iptables -A INPUT -s 202.54.20.22 -j DROP iptables -A OUTPUT -d 202.54.20.22 -j DROP 

无论是这个,还是其他一些像yum upgrade动作,都可能导致了下面的失败:在重启服务器之后,没有了networking接口

我只能通过AWSpipe理控制台JAVA ssh客户端连接到它 – 通过本地10.xxx地址。

控制台的“ Attach Network Interface ”以及“ Detach..都是灰色的。

Network Interfaces项左侧没有提供任何子网可供select,以创build一个新的NI

请指教,我如何重新创build一个networking接口的实例?

UPD。 该实例无法从外部访问:无法在端口80上ping,SSH或通过HTTP连接。

这是ifconfig输出:

 eth0 Link encap:Ethernet HWaddr 12:31:39:0A:5E:06 inet addr:10.211.93.240 Bcast:10.211.93.255 Mask:255.255.255.0 inet6 addr: fe80::1031:39ff:fe0a:5e06/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1426 errors:0 dropped:0 overruns:0 frame:0 TX packets:1371 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:152085 (148.5 KiB) TX bytes:208852 (203.9 KiB) Interrupt:25 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) 

还有一件不同寻常的事情:我从头开始创build的一个新的微型实例,与陷入困境的微型实例没有任何关系,也是不可能的。

EC2实例带有单个接口 – eth0。 该接口映射到您的实例的私有IP地址,不能从实例中分离。 (当然,你可以把接口放下来,但那是一个操作系统的function,而不是AWS)。

如果您的实例正在虚拟私有云(VPC)中运行,则可以附加/分离networking接口的唯一情况是。 这样的实例支持多个接口。

由于实例只有一个networking接口,因此即使只能通过AWS控制台连接到该实例,也表明该接口仍然存在并且可操作(AWS中的“networking接口”条目控制台条目只填写在VPC实例中)。 值得注意的是,当一个实例停止并启动时,实例的公有IP地址将会改变(尽pipe“重启”不应该影响这个)。 弹性IP可用于提供“静态”IP地址。 公有IP地址(不pipe是dynamic还是“弹性”)不直接与接口相关联,而是EC2networking将公有地址转换为私有地址。

由于您仍然可以通过SSH访问实例,因此可以通过查看ifconfig输出中的eth0条目来确认该接口是否可用。 您也可以使用ec2-describe-instances命令获取您的实例的私有和公有IP地址。

EC2实例通常有两个阻塞数据包的原因 – 操作系统的防火墙(本例中为iptables / netfilter)或EC2安全组。 在可能的范围内,总是最好阻止与安全组的通信,因为这可以防止数据到达实例。 然而,安全组是无状态的,大多数软件包没有设置为dynamic修改它们,所以你也可能使用iptables。

默认情况下,EC2安全组将丢弃所有需要进行ping的ICMP数据包 – 所以除非您特别启用它,否则ping将不起作用。 要从AWS控制台(针对安全组)启用ping,请执行以下操作:

  • 为您的安全组创build一个“自定义ICMP规则”
  • types:回声请求和types:回声回复(都是必需的)
  • 来源:0.0.0.0/0

你可以看到你当前configuration的iptables规则: iptables -nvL ,你可以用ec2-describe-group SECURITY_GROUP查看你的安全组设置

暴力攻击和扫描服务器,不幸的是,它需要今天有一个面向公众的服务器的一部分。 发生的攻击通常不是需要关心的事情,而是如何设置服务器以确保这些攻击不会造成违规。 通常情况下,手动阻止一个IP地址不是最有效的路由,因为您通常会发现相当多的IP作为针对您的服务器的攻击发起者。 如果你想要一个基于失败的login(它扫描你的日志,dynamic添加/删除必要的防火墙规则)或基于最近的模块的iptables 规则集的解决scheme,我会build议寻找fail2ban 。

另外,在使用iptables时,通常是一个很好的做法,设置一个cron作业,在几分钟后刷新你的iptables规则( iptables -F ),这样你就不会意外地将自己locking在服务器之外。

在这种情况下,由于添加了/etc/nginx/conf.d/default.conf ,对nginx的更新导致configuration无效。 使用相同的名称创build一个空文件(而不是删除该文件),以防止将来的更新导致同样的问题。 虽然这可能不是大多数人在更新之后所做的事情,但是您可以随时使用service nginx configtest来testing您的nginxconfiguration,在终止正在运行的nginx进程之前,可以让您知道是否有任何问题。

如果你确实发现自己有一个禁用networking接口(例如,因为ifdown eth0 ),你将无法SSH进入实例(或无论如何联系)。 此scheme的解决scheme是停止实例,分离EBS根卷,将其作为附加卷附加到新的EC2实例,修复问题,将EBS卷重新连接到原始实例,然后重新启动。 这是EBS卷的明确优势之一。