之前已经知道了,去如何设置阿里云ECS服务器的安全组,限制特定的端口的访问,达到防火墙的效果
【已解决】阿里云ECS服务器端安全组规则中没有公网的出入规则可以设置
现在折腾:
后,需要去通过安全组的方式,去限制,只允许特定的IP,去访问服务器中的mongod服务(此处端口是12345)
进去阿里云控制台,找到:
云服务器 ECS-》安全组-〉你的ECS服务器所在的区域-》对应的ECS服务器-〉配置规则:
而之前是已经添加过了:
即:
授权对象是地址段:0.0.0.0/0
则是允许所有的IP访问此服务器的12345端口
现在则是去需要修改为:
只允许特定的(一些,好几个)IP去访问此服务器的12345端口
此处先去新增一个,再去删除旧的
点击克隆,去修改规则:
点击 教我设置 去
确认具体的限制特定IP的具体语法
找了下,像是:
案例 3:只允许特定IP地址远程登录到实例
但是对于:
只有单个IP,想要写多个IP,能不能放在单个安全组规则里?
而不是每个IP都要新增一个安全组?
阿里云 安全组 多个IP地址
“地址段访问
填写单一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服务器添加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和端口