更安全的本地Docker网络

简介: 本文讲的是更安全的本地Docker网络,【编者的话】本文主要是解决了上一篇探索本地Docker桥接网络提出的问题。我们可以在Docker启动时设置icc=false参数来禁止任意的跨容器通信。
本文讲的是更安全的本地Docker网络 【编者的话】本文主要是解决了上一篇 探索本地Docker桥接网络 提出的问题。我们可以在Docker启动时设置 icc=false 参数来禁止任意的跨容器通信。

上周我写了 《探索本地Docker桥接网络》 。在这篇文章中我介绍了如何使用 nmap 探索由同一桥接网络上的其它容器公开的服务,并展示了在这些服务没有映射到主机的公有接口的端口的情况下如何去访问这些服务。这是一个问题,因为大多数镜像的工具、数据库以及微服务都带有不安全的默认配置。较为变通的工程师或管理员可能会把这些镜像放到可以保护他们的防火墙或网络拓扑结构中。这只适用于配置了防火墙和网络拓扑的环境。

默认情况下,Docker允许任意的跨容器通信,在我看来这是一件好事,它不仅可以降低应用复杂度而且还降低了学习曲线。对于任何一个技术来说,能让用户快速上手,同时又有清晰的学习路径是非常重要的。在Docker中,我们需要知道如何加强它们的容器网络。人们应该学会的第一件事就是如何禁用任意的跨容器通信:启动Docker守护进程时设置 icc=false
docker -d --icc=false ....

当以这种方式启动Docker时,它将配置 iptables(防火墙) :在桥接网路中移除所有容器间的通信,这将禁止容器之间的通信。
Chain FORWARD (policy ACCEPT)
target prot opt source    destination  
DROP   all  --  0.0.0.0/0 0.0.0.0/0 
ACCEPT all  --  0.0.0.0/0 0.0.0.0/0   ctstate RELATED,ESTABLISHED
ACCEPT all  --  0.0.0.0/0 0.0.0.0/0

如果你不想让你的容器间直接通信,那我们推荐你这样做。但是需要注意的是这样做无法阻止主机的公共接口与可以公开访问的映射到另一个容器的端口之间的通信(译者注:当然无法阻止,映射的端口主机肯定可以访问啦)。
1-_QyJABSe1WUQfVIXFHCw_w.png


这可以满足很多人的需求,但故事并没有到此结束。

当跨容器通信被禁用时,你可以在容器创建时使用容器连接来确保指定容器间的通讯。当你创建一个容器并指定另一个作为连接的目标时,Docker建立相应的连接。例如:
docker run -d --name ex_a busybox /bin/sh
docker run -d --name ex_b --link ex_a:other busybox /bin/sh

如果今天我对Docker所有的部分都缺乏激情,很可能使用容器连接只是为了服务发现。当你连接两个容器时,Docker为了使用此容器会设置带有“位置”信息的环境变量,此处有太多隐藏的问题。程序或者用户创建的容器可以指定连接的别名。但是容器内的软件必须与别名一致,否则它不知道要寻找什么。即使我认为连接提供了端口信息以及网络地址信息,我依然更喜欢DNS。幸运的是,连接不仅仅是为了服务发现。

当你禁用了跨容器通信时,为了使连接的容器之间得以通信Docker会输出异常。以下是摘自有这样异常的iptables。
Chain FORWARD (policy ACCEPT)
target prot opt source     destination 
ACCEPT tcp  --  172.17.0.3 172.17.0.4  tcp spt:80
ACCEPT tcp  --  172.17.0.4 172.17.0.3  tcp dpt:80
DROP   all  --  0.0.0.0/0  0.0.0.0/0 
ACCEPT all  --  0.0.0.0/0  0.0.0.0/0   ctstate RELATED,ESTABLISHED
ACCEPT all  --  0.0.0.0/0  0.0.0.0/0


这是容器连接的最强大的应用。连接允许你用简单的断言来定义容器之间的关系。就轻量级而言,Docker确实比任何我用过的其他工具都更好。

原文链接:Safer Local Docker Networks (翻译:田浩浩 校对:李颖杰)

===========================
译者介绍
田浩浩 悉尼大学USYD 硕士研究生,目前在珠海从事Android应用开发工作。业余时间专注Docker的学习与研究,希望通过 DockerOne 把最新最优秀的译文贡献给大家,与读者一起畅游Docker的海洋。

原文发布时间为:2015-01-14 
本文作者:田浩浩 
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:更安全的本地Docker网络
目录
相关文章
|
3天前
|
安全 JavaScript 前端开发
第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题—B模块安全事件响应/网络安全数据取证/应用安全
该内容描述了一次网络安全演练,包括七个部分:Linux渗透提权、内存取证、页面信息发现、数字取证调查、网络安全应急响应、Python代码分析和逆向分析。参与者需在模拟环境中收集Flag值,涉及任务如获取服务器信息、提权、解析内存片段、分析网络数据包、处理代码漏洞、解码逆向操作等。每个部分都列出了若干具体任务,要求提取或生成特定信息作为Flag提交。
6 0
|
3天前
|
安全 测试技术 网络安全
2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-C安全事件响应/网络安全数据取证/应用安全
B模块涵盖安全事件响应和应用安全,包括Windows渗透测试、页面信息发现、Linux系统提权及网络安全应急响应。在Windows渗透测试中,涉及系统服务扫描、DNS信息提取、管理员密码、.docx文件名及内容、图片中单词等Flag值。页面信息发现任务包括服务器端口、主页Flag、脚本信息、登录成功信息等。Linux系统渗透需收集SSH端口号、主机名、内核版本,并实现提权获取root目录内容和密码。网络安全应急响应涉及删除后门用户、找出ssh后门时间、恢复环境变量文件、识别修改的bin文件格式及定位挖矿病毒钱包地址。
9 0
|
3天前
|
安全 测试技术 Linux
2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-A模块安全事件响应/网络安全数据取证/应用安全
该内容描述了一个网络安全挑战,涉及Windows和Linux系统的渗透测试以及隐藏信息探索和内存取证。挑战包括使用Kali Linux对Windows Server进行服务扫描、DNS信息提取、密码获取、文件名和内容查找等。对于Linux系统,任务包括收集服务器信息、提权并查找特定文件内容和密码。此外,还有对Server2007网站的多步骤渗透,寻找登录界面和页面中的隐藏FLAG。最后,需要通过FTP获取win20230306服务器的内存片段,从中提取密码、地址、主机名、挖矿程序信息和浏览器搜索关键词。
6 0
|
3天前
|
安全 测试技术 网络安全
2024年甘肃省职业院校技能大赛中职组 “网络安全”赛项竞赛样题-C模块安全事件响应/网络安全数据取证/应用安全
涉及安全事件响应和应用安全测试。需使用Kali对Windows Server2105进行渗透测试,包括服务扫描、DNS信息提取、管理员密码、文件名与内容、图片中单词等。另外,需收集win20230305的服务器端口、页面信息、脚本、登录后信息等。在Linux Server2214上,要获取SSH端口、主机名、内核版本并进行提权操作。网络安全响应针对Server2228,涉及删除后门用户、查找SSH后门时间、恢复环境变量、识别篡改文件格式和矿池钱包地址。最后,对lin20230509进行网站渗透,获取端口号、数据库服务版本、脚本创建时间、页面路径、内核版本和root目录下的flag文件内容
6 0
|
5天前
|
运维 前端开发 Devops
云效产品使用报错问题之流水线打包docker镜像时报网络代理有问题如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
7天前
|
存储 安全 网络安全
构筑安全之盾:云计算环境下的网络安全与信息保护策略
【4月更文挑战第19天】随着云计算技术的飞速发展,企业和个人越来越依赖于云服务来存储、处理和交换数据。然而,这种便利性背后隐藏着潜在的安全风险。本文深入探讨了在云计算背景下,如何通过综合性的安全措施和策略来强化网络安全防护,确保数据的完整性、可用性和机密性。我们将分析当前面临的主要安全挑战,并基于最新的技术进展提出相应的解决方案,以期达到有效防御外部威胁和内部漏洞的目的。
16 4
|
7天前
|
运维 监控 安全
等保合规:保护企业网络安全的必要性与优势
等保,全称为“信息安全等级保护”,是国家强制性标准,要求特定行业和企业通过安全评估确保网络安全。等保涉及物理安全(如门禁、人员管理、设备保护等)、网络安全、主机安全、应用与数据安全、制度与人员安全、系统建设管理及系统运维管理等七个方面,确保信息系统的安全和可靠性。企业进行等保合规是为了满足《网络安全法》等法律法规要求,防止网络数据泄露,避免罚款。等保工作包括定级备案、安全测评、建设整改等,企业需建立良好的安全保护生态,确保网络安全。通过等保,企业能构建有效的安全保障体系,防御系统入侵,保障用户信息,提升故障修复效率,并符合法律义务。
|
7天前
|
人工智能 监控 安全
构筑安全之盾:云计算环境下的网络安全策略与实践
【4月更文挑战第19天】 在数字化转型的浪潮中,云计算已成为企业IT架构的核心组成部分。然而,随着云服务使用的普及化,网络安全问题亦变得日益复杂和挑战性。本文将深入探讨如何在云计算环境中实施有效的网络安全策略,保障数据的安全性和完整性。我们将从云服务模型出发,分析不同服务模型下的安全威胁,并提出相应的防护措施。文章还将讨论信息安全管理的最佳实践,包括加密技术、身份验证、访问控制以及安全监控等方面,旨在为企业提供一套全面的云计算安全防护框架。
|
9天前
|
运维 安全 Cloud Native
安全访问服务边缘(SASE):网络新时代的安全与连接解决方案
SASE(安全访问服务边缘)是一种云基安全模型,结合了网络功能和安全策略,由Gartner在2019年提出。它强调身份驱动的私有网络、云原生架构和全面边缘支持,旨在解决传统WAN和安全方案的局限性,如高延迟和分散管理。SASE通过降低IT成本、提升安全响应和网络性能,应对数据分散、风险控制和访问速度等问题,适用于移动办公、多分支办公等场景。随着网络安全挑战的增加,SASE将在企业的数字化转型中扮演关键角色。
|
11天前
|
SQL 安全 Java
Java安全编程:防范网络攻击与漏洞
【4月更文挑战第15天】本文强调了Java安全编程的重要性,包括提高系统安全性、降低维护成本和提升用户体验。针对网络攻击和漏洞,提出了防范措施:使用PreparedStatement防SQL注入,过滤和转义用户输入抵御XSS攻击,添加令牌对抗CSRF,限制文件上传类型和大小以防止恶意文件,避免原生序列化并确保数据完整性。及时更新和修复漏洞是关键。程序员应遵循安全编程规范,保障系统安全。