最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【记录】通过阿里云ECS服务器安全组限制访问mongo的IP和端口

MongoDB crifan 4313浏览 0评论

之前已经知道了,去如何设置阿里云ECS服务器的安全组,限制特定的端口的访问,达到防火墙的效果

【已解决】阿里云ECS服务器端安全组规则中没有公网的出入规则可以设置

现在折腾:

【已解决】添加了IP限制的mongod重启出错:Job for mongod.service failed because the control process exited with error code

后,需要去通过安全组的方式,去限制,只允许特定的IP,去访问服务器中的mongod服务(此处端口是12345)

进去阿里云控制台,找到:

云服务器 ECS-》安全组-〉你的ECS服务器所在的区域-》对应的ECS服务器-〉配置规则:

而之前是已经添加过了:

即:

授权对象是地址段:0.0.0.0/0

则是允许所有的IP访问此服务器的12345端口

现在则是去需要修改为:

只允许特定的(一些,好几个)IP去访问此服务器的12345端口

此处先去新增一个,再去删除旧的

点击克隆,去修改规则:

点击 教我设置 去

应用案例_安全组_用户指南_云服务器 ECS-阿里云

确认具体的限制特定IP的具体语法

找了下,像是:

案例 3:只允许特定IP地址远程登录到实例

但是对于:

只有单个IP,想要写多个IP,能不能放在单个安全组规则里?

而不是每个IP都要新增一个安全组?

阿里云 安全组 多个IP地址

添加安全组规则_安全组_用户指南_云服务器 ECS-阿里云

“地址段访问

填写单一IP地址或者CIDR网段格式,如:12.1.1.1或13.1.1.1/25。仅支持IPv4。如果填写0.0.0.0/0表示允许或拒绝所有IP地址的访问,设置时请务必谨慎。关于CIDR格式介绍,请参见 ECS实例子网划分和掩码表示方法。”

看到了:

授权对象中,多个IP的话,是可以通过逗号分隔开的

-》这样一次性新增一个安全组的话,则是可以添加多个允许的IP的

-〉但是突然想到,由于安全组不能新增

-》后续如果需要再新增其他IP,则还是要:

删除旧的安全组,新增新的安全组(把新的IP加进来)

-〉而无法做到,对于同一个安全组,每次新增IP时只是编辑即可。

-》而此处很麻烦的是:

每次安全组的改动,都要验证码,而手机号不是我的,要别人每次发验证码,就很麻烦。。。

然后从:

专有网络ECS安全组配置 – 用户指南(新控制台)| 阿里云

的:

“屏蔽的IP地址段,采用CIDR格式,如10.0.0.1/32”

-》才注意到:

原来:

10.0.0.1/32

是表示地址段:10.0.0.1 – 10.0.0.32

-》而自己之前的理解是错误的:

10.0.0.1的端口32

所以,现在又更好一点了:

一次性新增安全组时,可以增加一个IP地址段了,比如:

112.4.64.138 – 112.4.64.141的

112.4.64.138/141

但是后续新增其他IP,还是要删除旧的安全组,新增新的安全组。。。

(后记,关于地址段,自己理解错了,事实上是:

ECS 实例子网划分和掩码表示方法_网络_功能相关_常见问题_云服务器 ECS-阿里云

a.b.c.d/xx

这个xx只能是1到32的某个数字

-》表示子网掩码中网络标识位的长度

-〉但是具体到规则,自己没有完全理解,所以暂时懒得继续深究了

-》如果多个IP,就单独逗号分隔开吧)

阿里云ecs安全组引发的血案 – CSDN博客

阿里云ECS安全组之新手不得不面对的问题 – CSDN博客

阿里云ECS服务器添加IP白名单和安全组的教程_技术文档_懿古今

继续去操作:

为了测试效果,暂时只添加自己的IP:

再删除之前的允许所有IP都能访问的安全组设置:

然后再去添加,禁止其他IP访问:

不知道这些规则的生效,是否需要重启服务器

所以,重启之前,去测试我这个IP的连接,是否可以连接

不对,为了测试,还是先把允许的设置,都删除掉,只保留全部禁止,这样,不重启服务器,去看看本地能否连接,如果不能,说明不重启服务器,设置可实时生效,否则说明需要重启服务器,安全组才能生效。

本地去连接试试

果然连不上了:

<code>➜  ~ mongo gridfs --host x.x.x.x --port 12345  -u gridfs -p password --authenticationDatabase gridfs
MongoDB shell version v3.6.3
connecting to: mongodb://x.x.x.x:12345/gridfs
2018-04-10T17:20:43.924+0800 W NETWORK  [thread1] Failed to connect to x.x.x.x:12345 after 5000ms milliseconds, giving up.
2018-04-10T17:20:43.929+0800 E QUERY    [thread1] Error: couldn't connect to server x.x.x.x:12345, connection attempt failed :
connect@src/mongo/shell/mongo.js:251:13
@(connect):1:6
exception: connect failed
</code>

说明:安全组可以实时生效

所以再去加上,自己的IP可以访问的设置

然后本地连接立刻可以了:

效果不错。

【总结】

此处通过阿里云ECS服务器的安全组,去实现类似于防火墙的效果:

允许特定的IP去访问服务器的某些端口,而禁止掉其他的所有的IP去访问该端口

且这个IP可以设置单个IP,也可以设置地址段,或者是多个IP

具体做法是:

进去阿里云控制后台-》云服务器 ECS-》安全组-〉你的ECS服务器所在的区域-》对应的ECS服务器-〉配置规则:

增加2个规则:

(1)规则1: 允许特定的IP(单个IP,某个IP地址段(内的所有的IP),某几个IP)允许访问某端口

举例:

(2)规则2:禁止掉,其他的IP访问该端口

加起来是:

授权策略
协议类型
端口范围
授权类型
授权对象
描述
优先级
允许
自定义 TCP
12345/12345
地址段访问
112.4.64.141
允许外网特定IP访问MongoDB数据库
1
拒绝
自定义 TCP
12345/12345
地址段访问
0.0.0.0/0
禁止外网别的IP访问MongoDB数据库
2

如此,即可实现:

只允许IP:112.4.64.141,可以访问服务器的端口12345

不允许其他IP去访问服务器的端口12345

如果需要添加其他的IP,可以在创建的时候,就设置多个IP:

即可。

另外,对于一次性设置(包含了多个IP的)地址段:

具体详见:

ECS 实例子网划分和掩码表示方法_网络_功能相关_常见问题_云服务器 ECS-阿里云

自己没完全搞懂。抽空再去搞懂。

转载请注明:在路上 » 【记录】通过阿里云ECS服务器安全组限制访问mongo的IP和端口

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.181 seconds, using 22.14MB memory