以前在服务器启动了docker,docker里面运行了paddleserving服务器:在docker中安装paddle serving @FreeBSD(待续)_pkg-config is required for building pyav-CSDN博客。现在不需要这个docker服务器了,所以针对docker 9292端口的映射也不需要了,为了安全,准备去掉docker。以下是问题处理记录。
登录服务器,突然发现9292端口异常(实际上是自己忘记了,这是自己开的)
使用ps -auxw 列出所有进程,咨询文心进行安全审计
请看看有没有什么安全隐患:root 35010 0.0 0.0 240308 3648 ? Ssl 2022 0:30 /usr/lib/policykit-1/polkitd –no-debug
root 35104 0.0 0.0 315092 1944 ? Ssl 2022 0:01 /usr/sbin/ModemManager
root 40571 0.0 0.0 57248 8140 ? Ss 2024 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_proces
root 102790 0.2 0.2 1344948 23532 ? Ssl 2022 2876:37 /usr/bin/containerd
root 103211 0.0 0.4 1753308 37392 ? Ssl 2022 184:16 /usr/bin/dockerd -H fd:// –containerd=/run/containerd/containerd
root 103243 0.0 0.0 2488 68 ? S 2022 0:00 bpfilter_umh
root 118849 0.0 0.0 1222376 568 ? Sl 2022 0:57 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9292
root 118857 0.0 0.0 1222376 588 ? Sl 2022 0:58 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 9292 -con
root 118872 0.0 0.0 114100 988 ? Sl 2022 77:17 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 4c28ed7f6fb3
根据提供的进程列表分析,以下是详细的安全评估和加固建议:
一、关键风险点分析
Docker相关服务暴露风险
- 检测到Docker代理进程暴露端口: /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9292 # IPv4 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 9292 # IPv6
- 风险等级:高危(直接暴露在0.0.0.0且无网络隔离)
权限管理服务风险
- polkitd进程(PID 35010)运行参数含–no-debug,可能隐藏审计日志
- 历史漏洞记录:CVE-2021-4034(pkexec本地提权)
容器运行时长期运行
- containerd(PID 102790)已运行2876小时,存在未更新漏洞风险
- dockerd(PID 103211)使用默认套接字(-H fd://)可能权限过宽
二、紧急处理措施
Docker端口加固
# 立即限制9292端口访问(示例仅允许内网)
sudo iptables -A DOCKER-USER -p tcp –dport 9292 ! -s 192.168.1.0/24 -j DROP
sudo ip6tables -A DOCKER-USER -p tcp –dport 9292 ! -s fd00::/8 -j DROP
# 验证规则
sudo iptables -L DOCKER-USER -n –line-numbers
Polkit安全配置
# 检查polkit规则权限
grep -r "allow_any" /etc/polkit-1/rules.d/
# 更新polkit到最新版(修复已知漏洞)
sudo apt install –only-upgrade policykit-1
三、深度安全建议
容器运行时加固
# 1. 启用containerd审计日志
sudo mkdir -p /etc/containerd/conf.d/
cat <<EOF | sudo tee /etc/containerd/conf.d/audit.toml
version = 2
[plugins."io.containerd.runtime.v1.linux"]
runtime = "runc"
runtime_root = "/run/containerd/runc"
[debug]
level = "info"
EOF
# 2. 限制docker.sock权限
sudo chmod 660 /var/run/docker.sock
sudo chown root:docker /var/run/docker.sock
网络隔离方案
# 创建docker安全网络
docker network create –internal secure-net
docker network connect secure-net <your_container>
# 验证网络配置
docker inspect <container_id> | grep -A 5 Networks
四、风险等级评估表
Docker 9292端口暴露 | 全网可达 | 紧急 | telnet <IP> 9292 |
Polkit调试模式关闭 | 本地提权 | 高 | pkaction –version |
Containerd长期运行 | 容器逃逸 | 中 | containerd –version |
Docker默认套接字权限 | 权限提升 | 高 | ls -l /var/run/docker.sock |
五、监控方案建议
实时检测脚本
#!/bin/bash
# 监控异常容器创建
sudo auditctl -w /usr/bin/docker -k docker_cmd
sudo ausearch -k docker_cmd | grep exec
# 检测polkit异常请求
journalctl -u polkit –since "1 hour ago" | grep -i "security"
日志分析重点
- /var/log/containers/目录下的异常启动记录
- journalctl -u docker中的特权操作(–privileged参数)
建议立即处理Docker端口暴露问题,并在24小时内完成polkit升级。其他项目可在周维护窗口期实施。
准备把docker关闭:
以下是关闭Docker服务的系统化操作指南,涵盖不同场景下的安全关闭方法及后续验证流程:
一、常规关闭方法(推荐)
1. 使用systemd管理服务
# 1. 停止所有运行中的容器
sudo docker stop $(sudo docker ps -aq)
# 2. 停止Docker服务(含containerd依赖)
sudo systemctl stop docker containerd
# 3. 禁用开机自启(可选)
sudo systemctl disable docker containerd
# 4. 验证状态
sudo systemctl status docker containerd
输出示例:
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4c28ed7f6fb3 registry.baidubce.com/paddlepaddle/serving:0.8.0-devel "bash" 2 years ago Up 2 years 22/tcp, 0.0.0.0:9292->9292/tcp, :::9292->9292/tcp test
sudo docker stop 4c28ed7f6fb3
4c28ed7f6fb3
sudo systemctl stop docker containerd
Warning: Stopping docker.service, but it can still be activated by:
docker.socket
sudo systemctl status docker containerd
● docker.service – Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Thu 2025-06-12 11:33:38 CST; 37s ago
2. 传统SysVinit系统
# CentOS 6/Debian 8等旧系统 sudo service docker stop sudo chkconfig docker off # 禁用自启
二、紧急关闭场景
1. 强制终止进程(当systemd失效时)
# 1. 查找Docker相关进程
sudo ps aux | grep -E 'docker|containerd|dockerd'
# 2. 强制终止(谨慎使用)
sudo kill -9 $(pgrep dockerd) $(pgrep containerd)
# 3. 清理残留套接字
sudo rm -f /var/run/docker.sock /run/containerd/containerd.sock
2. 清除Docker网络残留
# 删除所有Docker虚拟网卡(防止网络冲突)
sudo ip link show | grep -E 'docker|veth' | awk '{print $2}' | cut -d':' -f1 | xargs -I {} sudo ip link del {}
三、验证关闭状态
服务状态 | systemctl is-active docker | inactive | ||
进程存活 | pgrep dockerd | 无输出 | ||
端口占用 | `ss -tulnp | grep -E '2375 | 2376 | 9292'` | 无Docker相关端口 |
容器状态 | docker ps -a | Cannot connect to the Docker daemon |
四、数据持久化处理
1. 备份重要数据
导出镜像
sudo docker save -o /mnt/data/data/paddleservingimages.tar 4c28ed7f6fb3
好么,动手太快了,忘记先备份了。 docker ps啥也没有了
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bashCopy Code
备份卷数据 sudo tar -czvf /backup/docker_volumes.tar.gz /var/lib/docker/volumes/
2. 清理残留数据(彻底卸载时)
# 1. 停止所有服务后
sudo apt purge docker-ce docker-ce-cli containerd.io # Debian/Ubuntu
sudo yum remove docker-ce docker-ce-cli containerd.io # CentOS/RHEL
# 2. 删除数据目录(谨慎操作)
sudo rm -rf /var/lib/docker /var/lib/containerd
删除数据后,硬盘空间释放不少
df -H
/dev/vda1 53G 50G 933M 99% /
/dev/vda1 53G 27G 24G 53% /
五、安全建议
关闭前操作:
- 确保无关键业务容器运行(通过docker ps确认)
- 导出关键镜像(使用docker save)
关闭后检查:
- 确认无残留进程(ps aux \\| grep docker)
- 验证防火墙规则(如iptables -L中无DOCKER链)
替代方案:
- 若需临时隔离,可修改iptables规则: sudo iptables -I INPUT -p tcp –dport 2375 -j DROP
sudo iptables -I INPUT -p tcp –dport 2376 -j DROP
六、常见问题处理
1. 错误:Cannot connect to the Docker daemon
- 原因:服务已停止或权限不足
- 解决: sudo usermod -aG docker $USER # 添加用户到docker组(需重新登录生效)
2. 错误:Device or resource busy
- 原因:有进程占用Docker资源
- 解决: sudo lsof /var/lib/docker # 查找占用进程 sudo kill -9 <PID> # 终止相关进程
通过以上步骤,可安全关闭Docker服务并验证关闭状态。如需重新启用,使用sudo systemctl start docker即可恢复服务。
总结
把服务器的docker服务关掉了。
空间释放了27G
服务器的9292端口备用。9292是paddleserving的默认开放端口。
评论前必须登录!
注册