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

docker封禁对外端口映射

docker比linux防火墙规则优先级要高,一旦在docker里面配置了对外服务端口的话在iptable里面封不掉,需要通过下面的方法进行封禁:

这里我的宿主机IP地址是10.5.1.244,docker 内部网络ip段是默认的172.17段的,以下为命令:

注意要先DROP再ACCEPT,即先输入DROP类命令,后输入ACCEPT命令,后续输入的命令在防火墙的规则会更靠上,即更优先生效。

sudo iptables -I DOCKER-USER -p tcp ! -s 10.5.1.244 --dport 3306 -j DROP #非宿主机IP丢弃

sudo iptables -I DOCKER-USER -p tcp -s 172.17.0.0/16 --dport 3306 -j ACCEPT #docker内部ip允许访问

sudo iptables -I DOCKER-USER -p tcp ! -s 10.5.1.244 --dport 6379 -j DROP #非宿主机IP丢弃

sudo iptables -I DOCKER-USER -p tcp -s 172.17.0.0/16 --dport 6379 -j ACCEPT #docker内部ip允许访问

sudo netfilter-persistent save

sudo netfilter-persistent reload

#可以通过下面的命令查看配置结果

sudo iptables -L DOCKER-USER -n --line-numbers

Chain DOCKER-USER (1 references)

num target prot opt source destination

1 ACCEPT 6 -- 172.17.0.0/16 0.0.0.0/0 tcp dpt:7555

2 ACCEPT 6 -- 172.17.0.0/16 0.0.0.0/0 tcp dpt:8072

3 DROP 6 -- !10.5.1.244 0.0.0.0/0 tcp dpt:7555

4 DROP 6 -- !10.5.1.244 0.0.0.0/0 tcp dpt:8072

5 ACCEPT 6 -- 172.17.0.0/16 0.0.0.0/0 tcp dpt:6379

6 DROP 6 -- !10.5.1.244 0.0.0.0/0 tcp dpt:6379

7 ACCEPT 6 -- 172.17.0.0/16 0.0.0.0/0 tcp dpt:3306

8 DROP 6 -- !10.5.1.244 0.0.0.0/0 tcp dpt:3306

9 RETURN 0 -- 0.0.0.0/0 0.0.0.0/0

以上只对重启前的防火墙规则有效,当这台docker宿主机重启以后所有的配置都会丢失,还需要进一步使用其他方法,下面是解决方案。

sudo nano /etc/iptables-rules.sh

 创建一个脚本文件,脚本内容如下:

#!/bin/bash# 定义变量
HOST_IP="10.5.1.244"
DOCKER_NETWORK="172.17.0.0/16"
PORTS=(3306 6379 9200 7555 8072)# 循环封禁端口
for PORT in "${PORTS[@]}"; doiptables -I DOCKER-USER -p tcp ! -s "$HOST_IP" --dport "$PORT" -j DROPiptables -I DOCKER-USER -p tcp -s "$DOCKER_NETWORK" --dport "$PORT" -j ACCEPT
done

然后赋予脚本执行权限

sudo chmod +x /etc/iptables-rules.sh

再创建一个服务实现开机自启动执行

sudo nano /etc/systemd/system/iptables-rules.service

 服务内容如下:

[Unit]
Description=Load iptables rules after Docker
After=docker.service
Requires=docker.service[Service]
Type=oneshot
ExecStart=/etc/iptables-rules.sh
RemainAfterExit=true[Install]
WantedBy=multi-user.target

 然后配置为开机自启动并重启服务器进行规则测试

sudo systemctl daemon-reload
sudo systemctl enable iptables-rules.service
sudo systemctl start iptables-rules.servicereboot

 

http://www.lryc.cn/news/384952.html

相关文章:

  • 【leetcode系列】567.字符串的排列(滑动窗口)
  • 情感分析方法与实践
  • 迁移学习——CycleGAN
  • 【软件测试】对于测试中的bug,我们真正了解了吗?
  • Packer-Fuzzer一款好用的前端高效安全扫描工具
  • 解决卸载TabX explorer软件后导致系统文件资源管理器无法正常使用问题
  • qt for android 使用打包sqlite数据库文件方法
  • MYBATIS大于等于、小于等于的写法
  • 基于堆叠长短期记忆网络 Stacked LSTM 预测A股股票价格走势
  • SpringCloud Alibaba Sentinel基础入门与安装
  • Arduino IDE下载、安装和配置
  • SOBEL图像边缘检测器的设计
  • Day35:2734. 执行字串操作后的字典序最小字符串
  • 【高考志愿】机械工程
  • ffmpeg将mp4转换为swf
  • 论文学习 --- RL Regret-based Defense in Adversarial Reinforcement Learning
  • 【Linux小命令】一文讲清ldd命令及使用场景
  • 自费5K,测评安德迈、小米、希喂三款宠物空气净化器谁才是高性价比之王
  • 1373. 二叉搜索子树的最大键值和
  • 基于java + Springboot 的二手物品交易平台实现
  • Shopee本土店选品有什么技巧?EasyBoss ERP为你整理了6个高效选品的方法!
  • 3D在线展览馆的独特魅力,技术如何重塑展览业的未来?
  • 基于SpringBoot的藏区特产销售平台
  • hudi系列-schema evolution(一)
  • Redis-实战篇-缓存雪崩
  • 线性代数|机器学习-P18快速下降奇异值
  • 本地离线模型搭建指南-中文大语言模型底座选择依据
  • 【代码随想录】【算法训练营】【第51天】 [115]不同的子序列 [583]两个字符串的删除操作 [72]编辑距离
  • 24下半年软考集合!30s打破信息差!
  • 如何在Xcode中设置库路径