当前位置: 首页 > wzjs >正文

浙江省建设厅干部学校门户网站青岛建站seo公司

浙江省建设厅干部学校门户网站,青岛建站seo公司,龙井茶网站建设目的,wordpress runoob.com一、需求背景 某项目组采用容器化部署架构,通过docker-compose对服务进行编排管理。为确保核心服务安全性,需对以下三个暴露的宿主机端口实施IP白名单访问控制: 服务名称宿主机IP宿主机端口容器内部端口apollo-configservice172.22.33.2041…

一、需求背景

某项目组采用容器化部署架构,通过docker-compose对服务进行编排管理。为确保核心服务安全性,需对以下三个暴露的宿主机端口实施IP白名单访问控制:

服务名称宿主机IP宿主机端口容器内部端口
apollo-configservice172.22.33.204100028080
apollo-adminservice172.22.33.204100038090
apollo-portal172.22.33.204100048070
  • 允许访问的IP白名单地址 172.16.200.200,允许访问apollo 全资源
  • apollo docker-compose 文件
version: '3'services:apollo-configservice:container_name: apollo-configserviceimage: docker.cnb.cool/srebro/apollo:apollo-configservice-2.3.0volumes:- ./logs:/opt/logs- /etc/localtime:/etc/localtime:roports:- "10002:8080"environment:- SPRING_DATASOURCE_URL=jdbc:mysql://172.22.33.201:3306/ApolloConfigDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=srebro- SPRING_DATASOURCE_PASSWORD=srebro@2025- EUREKA_INSTANCE_HOME_PAGE_URL=http://172.22.33.204:10002- EUREKA_INSTANCE_IP_ADDRESS=172.22.33.204- TZ=Asia/Shanghairestart: alwaysnetworks:- srebroapollo-adminservice:depends_on:- apollo-configservicecontainer_name: apollo-adminserviceimage: docker.cnb.cool/srebro/apollo:apollo-adminservice-2.3.0volumes:- ./logs:/opt/logs- /etc/localtime:/etc/localtime:roports:- "10003:8090"environment:- SPRING_DATASOURCE_URL=jdbc:mysql://172.22.33.201:3306/ApolloConfigDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=srebro- SPRING_DATASOURCE_PASSWORD=srebro@2025- EUREKA_INSTANCE_HOME_PAGE_URL=http://172.22.33.204:10003- EUREKA_INSTANCE_IP_ADDRESS=172.22.33.204- TZ=Asia/Shanghairestart: alwaysnetworks:- srebroapollo-portal:depends_on:- apollo-adminservicecontainer_name: apollo-portalimage: docker.cnb.cool/srebro/apollo:apollo-portal-2.3.0volumes:- ./logs:/opt/logs- /etc/localtime:/etc/localtime:roports:- "10004:8070"environment:  - SPRING_DATASOURCE_URL=jdbc:mysql://172.22.33.201:3306/ApolloPortalDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=srebro- SPRING_DATASOURCE_PASSWORD=srebro@2025- APOLLO_PORTAL_ENVS=baseline- baseline_META=http://172.22.33.204:10002- TZ=Asia/Shanghairestart: alwaysnetworks:- srebronetworks:srebro:external: true

二、分析

  • 🚫 使用iptables的方式进行限制。
  • 配置后的策略需要持久化,系统或者容器重启后 策略还在。
  • 查看docker 官方文档,有关于Docker 为网桥网络创建 iptables 规则的说明
  • 默认情况下,允许所有外部源 IP 连接到已发布到 Docker 主机地址的端口;要仅允许特定 IP 或网络访问容器,需要在 DOCKER-USER 过滤器链的顶部插入一条否定规则。
  • 以下规则会丢弃来自除 192.0.2.2 之外的所有 IP 地址的数据包。被这些自定义链中的规则接受或拒绝的数据包将不会被附加到 FORWARD 链的用户定义规则看到。因此,要添加其他规则来筛选这些数据包,使用 DOCKER-USER 链。

image-20250219133550581

三、实现方式

只允许17216.200.200 访问apollo 暴露在宿主机上的 10002,10003,10004 端口

配置iptables 策略

  • ⚠️ 需要注意 ,–dport 指的是容器的端口,而不是宿主机的映射后的端口,网上查看很多资料都是写的宿主机的端口都是不对的,这边只在docker 的论坛看到一个关于--dport 的说明

image-20250219140315839

正确配置方式(推荐两种方法):

iptables -I 是插入到链的最前面,确保每个端口的 ACCEPT 规则在 DROP 规则之前

方法一:为每个端口单独设置规则(清晰直观)
# 先添加拒绝规则
iptables -I DOCKER-USER -p tcp --dport 8080 -j DROP
iptables -I DOCKER-USER -p tcp --dport 8090 -j DROP
iptables -I DOCKER-USER -p tcp --dport 8070 -j DROP# 再添加允许规则(它们会被插入到链的顶部)
iptables -I DOCKER-USER -p tcp --dport 8080 -s 172.16.200.200 -j ACCEPT
iptables -I DOCKER-USER -p tcp --dport 8090 -s 172.16.200.200 -j ACCEPT
iptables -I DOCKER-USER -p tcp --dport 8070 -s 172.16.200.200 -j ACCEPT
方法二:使用 multiport 模块合并规则(更高效)
# 先添加拒绝规则
iptables -I DOCKER-USER -p tcp -m multiport --dports 8080,8090,8070 -j DROP# 再添加允许规则(它会被插入到链的顶部)
iptables -I DOCKER-USER -p tcp -s 172.16.200.200 -m multiport --dports 8080,8090,8070 -j ACCEPT
验证规则顺序

执行以下命令检查规则顺序,确保 ACCEPT 规则在 DROP 规则之上

[root@localhost apollo]# iptables -L DOCKER-USER -n --line-numbers
Chain DOCKER-USER (1 references)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  172.16.200.200       0.0.0.0/0            tcp dpt:8080
2    ACCEPT     tcp  --  172.16.200.200       0.0.0.0/0            tcp dpt:8090
3    ACCEPT     tcp  --  172.16.200.200       0.0.0.0/0            tcp dpt:8070
4    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080
5    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8090
6    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8070
7    RETURN     all  --  0.0.0.0/0            0.0.0.0/0
访问测试

image-20250219144753289

iptables 规则持久化保存
[root@localhost apollo]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]

四、其他

docker 多容器端口相同,怎么限制?

上面的案例,阐述的是,docker 容器里的端口分别是不同的端口,如果我们容器内的端口都是8080,那应该怎么限制呢,典型的场景就是所有微服务的容器端口都是相同的,只是暴露的端口不同

服务名称宿主机IP宿主机端口容器内部端口
apollo-configservice172.22.33.204100028080
apollo-adminservice172.22.33.204100038080
apollo-portal172.22.33.204100048080
使用iptables 限制访问的目的地址

需要提前创建好docker 的网桥,指定容器的网络, ipv4_address: xx.xx.xx.xx

docker-compose.yaml
version: '3'services:apollo-configservice:container_name: apollo-configserviceimage: docker.cnb.cool/srebro/apollo:apollo-configservice-2.3.0volumes:- ./logs:/opt/logs- /etc/localtime:/etc/localtime:roports:- "10002:8080"environment:- SPRING_DATASOURCE_URL=jdbc:mysql://172.22.33.201:3306/ApolloConfigDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=srebro- SPRING_DATASOURCE_PASSWORD=srebro@2025- EUREKA_INSTANCE_HOME_PAGE_URL=http://172.22.33.204:10002- EUREKA_INSTANCE_IP_ADDRESS=172.22.33.204- TZ=Asia/Shanghairestart: alwaysnetworks:srebro:ipv4_address: 10.22.33.66apollo-adminservice:depends_on:- apollo-configservicecontainer_name: apollo-adminserviceimage: docker.cnb.cool/srebro/apollo:apollo-adminservice-2.3.0volumes:- ./logs:/opt/logs- /etc/localtime:/etc/localtime:roports:- "10003:8080"environment:- SPRING_DATASOURCE_URL=jdbc:mysql://172.22.33.201:3306/ApolloConfigDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=srebro- SPRING_DATASOURCE_PASSWORD=srebro@2025- EUREKA_INSTANCE_HOME_PAGE_URL=http://172.22.33.204:10003- EUREKA_INSTANCE_IP_ADDRESS=172.22.33.204- TZ=Asia/Shanghairestart: alwaysnetworks:srebro:ipv4_address: 10.22.33.67apollo-portal:depends_on:- apollo-adminservicecontainer_name: apollo-portalimage: docker.cnb.cool/srebro/apollo:apollo-portal-2.3.0volumes:- ./logs:/opt/logs- /etc/localtime:/etc/localtime:roports:- "10004:8080"environment:  - SPRING_DATASOURCE_URL=jdbc:mysql://172.22.33.201:3306/ApolloPortalDB?characterEncoding=utf8- SPRING_DATASOURCE_USERNAME=srebro- SPRING_DATASOURCE_PASSWORD=srebro@2025- APOLLO_PORTAL_ENVS=baseline- baseline_META=http://172.22.33.204:10002- TZ=Asia/Shanghairestart: alwaysnetworks:srebro:ipv4_address: 10.22.33.68networks:srebro:external: true
配置方式
  • 只允许白名单地址172.16.200.200 可以访问apollo 的1000210004 端口,也就是可以访问 apollo-configserviceapollo-portal服务,其他都不允许访问。
  • 这里的10.22.33.6610.22.33.6710.22.33.68 三个IP 是容器的IP地址, 8080 是容器的端口。三个IP 分别对应 apollo-configserviceapollo-adminserviceapollo-portal服务。
#先添加拒绝规则
iptables -I DOCKER-USER -p tcp --dport 8080 -j DROP# 再添加允许规则(它们会被插入到链的顶部)
iptables -I DOCKER-USER -p tcp -s 172.16.200.200 -d 10.22.33.66 --dport 8080 -j ACCEPT
iptables -I DOCKER-USER -p tcp -s 172.16.200.200 -d 10.22.33.68 --dport 8080 -j ACCEPT
验证规则顺序

执行以下命令检查规则顺序,确保 ACCEPT 规则在 DROP 规则之上

[root@localhost apollo]#  iptables -L DOCKER-USER -n --line-numbers
Chain DOCKER-USER (1 references)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  172.16.200.200       10.22.33.68          tcp dpt:8080
2    ACCEPT     tcp  --  172.16.200.200       10.22.33.66          tcp dpt:8080
3    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8080
4    RETURN     all  --  0.0.0.0/0            0.0.0.0/0       
访问测试

image-20250219151828136

iptables 规则持久化保存
[root@localhost apollo]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]

其他方式🚫 限制docker外部IP 访问

1、docker运行在宿主机模式上,直接走宿主机的防火墙或者iptables管理

2、docker 的外部暴露地址监听在 127.0.0.1 上 , 本地再运行一个NGINX 做代理,设置NGINX 白名单

K8S 场景下,怎么限制外部的IP 访问

  • 用clusterip,内部访问没问题,外部走访问nginx的nodeport或者ingress,这样就可以用白名单了
http://www.dtcms.com/wzjs/405017.html

相关文章:

  • 修改wordpress中的 功能 小工具优化软件
  • 第三方网站建设平台推广方式营销方案
  • 凡科建站和建站abc友情链接官网
  • 网站开发工程师培训机构信息流优化师没经验可以做吗
  • 做垃圾网站 盈利成都达洱狐网络科技有限公司
  • 哪些网站可以做迁徙图百度关键词热度查询工具
  • 网站域名做注册百度账号注册中心
  • 网站怎么做用密码手机优化助手下载
  • 站长做2个网站友情链接交换网址大全
  • 做网站空间哪家好大庆网络推广
  • 主流门户网站什么是网店推广
  • 韩国风格网站php源码网站点击量 哪里查询
  • 商务网站开发关键词挖掘爱站网
  • 外包加工网app网站关键词优化代理
  • 添加wordpress后台编辑的字体选择知乎关键词排名优化
  • 网站优化推广 视屏女生做sem还是seo
  • 网站备案需要哪些资料旺道seo
  • 烟台专业做网站免费开通网站
  • 有没有做那个的视频网站吗官网优化 报价
  • 抖音粉丝购买网站免费观看短视频的app软件推荐
  • 做网站制作一般多少钱表白网页制作免费网站制作
  • 网站繁简通别人恶意点击我们竞价网站
  • 个人申请微信小程序收费吗电脑优化用什么软件好
  • 做网站什么数据库用的多合肥网站优化推广方案
  • 网站建设推广扬州安新seo优化排名网站
  • 济南网站设计建设公司百度导航官网
  • 想建设个网站怎么赚钱百度竞价开户公司
  • 专业网站建设制作多少钱什么是竞价
  • 网站后台是怎么操作的网站seo排名优化方法
  • 叫别人做网站安全吗网络平台怎么创建需要多少钱