以前在服务器启动了docker,现在不需要了,为了安全,去掉docker服务@Ubuntu
以前在服务器启动了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且无网络隔离)
- 检测到Docker代理进程暴露端口:
-
权限管理服务风险
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 EngineLoaded: 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
- 若需临时隔离,可修改iptables规则:
六、常见问题处理
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的默认开放端口。