无法连接到22(ssh)AWS以外的任何端口

时间:2016-01-12 18:08:10

标签: linux mongodb amazon-web-services ssh amazon-ec2

我在AWS上有一个ubuntu实例,我在服务器上运行mongod。 mongod已将绑定ip设置为0.0.0.0并使用netstat进行验证。

sudo netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1055/sshd
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      1049/mongod
tcp6       0      0 :::22                   :::*                    LISTEN      1055/sshd

我还在AWS EC2控制台上设置了安全组规则,以便允许来自端口27017上的公共IP的入站连接。我无法从笔记本电脑连接到mongod(27017)。

telnet ec2-<ip-removed>.compute-1.amazonaws.com 27017                    1 ↵
Trying <ip-removed>...
telnet: connect to address <ip-removed>: Operation timed out

但是我从笔记本电脑上连接到端口22上的ssh没有问题

telnet ec2-<ip-removed>.compute-1.amazonaws.com 22                    130 ↵
Trying <ip-removed>...
Connected to ec2-<ip-removed>.compute-1.amazonaws.com.

此设置在一周前工作正常,突然我的笔记本电脑客户端拒绝连接到mongo。我在端口6800上尝试了另一个服务,设置了入站规则,并且绑定ip设置为0.0.0.0/32,它也无法连接。我没有设置其他规则,也没有实例上的iptables或防火墙。

我也试过重启服务器,那里没有运气。

还可以从服务器本身连接到mongo

ubuntu@aws$ telnet localhost 27017
Trying 127.0.0.1...
Connected to localhost.

2 个答案:

答案 0 :(得分:0)

MongoDB默认只绑定到localhost。您已更新其配置以启用外部访问。

  

2.6版中的新功能:从官方.deb和.rpm安装的mongod   package默认情况下将bind_ip配置设置为127.0.0.1。

来源:https://docs.mongodb.org/manual/administration/configuration/#security-considerations

这是一个教程,展示了如何操作:http://www.mkyong.com/mongodb/mongodb-allow-remote-access/

答案 1 :(得分:0)

如评论中所述,通过在实例上运行的iptables阻止了来自外部网络的端口访问。

我对iptables / AWS访问策略的处理方法是始终使用“开放式”AWS访问策略,并使用iptables锁定所有内容。这样,控制访问就更接近实例,并且不会通过将访问策略彼此分层来使事情过于复杂。

而且,你的mongod实例甚至不应该在DMZ(可公开访问)中,你应该设置iptables只允许从内部网络访问mongod实例。有可能你有一个“应用服务器”需要访问mongod,所以让应用服务器公开访问,而不是mongod实例。

以下是在我的一个“docstore”实例上运行的iptables示例:

root@service-a-2.sn3.vpc3.example.com ~ # -> iptables -L -vn
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
  pkts bytes target     prot opt in     out     source               destination
  1419   15M ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           /* 001 accept all to lo interface */
  27M  4531M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           /* 005 accept related established rules */ state RELATED,ESTABLISHED
  0        0 ACCEPT     icmp --  eth0   *       10.3.0.0/16          0.0.0.0/0           /* 015 accept internal icmp */ state NEW
 74     4440 ACCEPT     tcp  --  eth0   *       10.3.0.0/16          0.0.0.0/0           multiport dports 22 /* 777 accepts ssh */ state NEW
 420K    25M ACCEPT     tcp  --  eth0   *       10.3.0.0/16          0.0.0.0/0           multiport dports 27017 /* 777 allow mongo access */ state NEW
 462K    28M ACCEPT     tcp  --  eth0   *       10.3.0.0/16          0.0.0.0/0           multiport dports 3306 /* 777 allow mysql access */ state NEW
  656  28976 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           /* 999 drop all INPUT */

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
  pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 27M packets, 9639M bytes)
  pkts bytes target     prot opt in     out     source               destination

请注意,我使用CIDR(无类域间路由)块来识别内部网络,这样就不会因为必须指定实际的IP地址而陷入困境。