暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

docker限制ip访问

IT运维大爆炸 2022-12-05
1933

1、简介

为了降低被入侵的风险,一般的公司都会对线上的服务进行端口扫描,排查非对公服务是否被公网访问。之前就遇到过服务出了漏洞被某安全网挂出ip地址。排查问题的时候,发现在创建容器的时候习惯性的使用“-p xxx:xxx”这样的方式映射主机端口和docker容器的端口,这种方式确实也是挺方便的,一般的工具书也是这么介绍的。但是这种方式有个弊端,那就是默认全网开放该端口。如果是非对公应用,而运维人员没有添加IP白名单限制,那么这个端口就可以直接被全网访问了。如果出了漏洞,严重时会被入侵,最后是关机重装系统。

2、原因分析

在创建容器的时候,使用“-p xxx:xxx”这样的方式映射主机端口和docker容器的端口是默认全网开放的,要对ip进行限制,就必须在开放端口的同时明确ip限制。

3、解决方法

假设:所有非对公服务都部署在同一局域网,而且都是通过docker的形式搭建服务。如果不是,那么就具体情况具体分析,弄清楚该服务需要被那些ip的服务访问,然后再加限制就好。

  • 通过ifconfig查看容器的ip地址。一般是docker0的innet address,一般是172.17.0.1,但有时候也可能有其他的ip(之前有遇到过);

[root@app-15_15 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
  inet6 ::1/128 scope host
      valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  link/ether fa:16:3e:f7:18:d5 brd ff:ff:ff:ff:ff:ff
  inet 10.252.15.15/24 brd 10.252.15.255 scope global noprefixroute dynamic eth0
      valid_lft 81125sec preferred_lft 81125sec
  inet6 fe80::f816:3eff:fef7:18d5/64 scope link noprefixroute
      valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
  link/ether 02:42:5f:f7:be:6f brd ff:ff:ff:ff:ff:ff
  inet 172.17.0.1/16 scope global docker0   #docker所属ip地址
      valid_lft forever preferred_lft forever
  inet6 fe80::42:5fff:fef7:be6f/64 scope link
      valid_lft forever preferred_lft forever
  • 在创建容器的时候添加ip限制,如:docker run -it --gpus all -p 172.17.0.1:80:80 dockerImage bin/bash;

4、结论

在创建容器,需要开放端口的时候,使用“-p ip:port:port”的形式,那么就可以限制容器的端口只能通过该端口进行访问。

欢迎大家扫码关注:

本公众号只写原创,不接广告、不接广告、不接广告。下期小伙伴想学习什么技术,可以私信发我吆。


文章转载自IT运维大爆炸,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论