dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2160
  • 铜币13127枚
  • 威望5808点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
阅读:644回复:0

如何设置 phpmyadmin 容器 仅允许特定的账户登录?

楼主#
更多 发布于:2018-01-04 14:23
目标
设置 phpmyadmin 容器,禁止 mysql root账户登录,仅允许特定的账户 ruser(这里是只读) 登录,也就是白名单机制;

环境
phpmyadmin 4.6.6 On Docker 17.05.0-ce On CentOS 7.4 amd64

思路
通过定制新的 phpmyadmin 镜像,并附加修改后 config.inc.php 配置文件完成目标,核心是 phpmyadmin 配置参数;

步骤
1. 目录结构
tree ./
├── conf
│   └── config.inc.php
└── Dockerfile

1 directory, 2 files

2. 配置文件
# 配置文件从已运行中的 phpmyadmin 容器中获得,如:
docker cp test-phpmyadmin:/etc/phpmyadmin/config.inc.php .

#编辑 config.inc.php ,查找 $cfg['Servers'][$i]['AllowNoPassword'] 行,并添加以下行;
   $cfg['Servers'][$i]['AllowRoot'] = false;
    $cfg['Servers'][$i]['AllowDeny']['order'] = 'explicit';
    $cfg['Servers'][$i]['AllowDeny']['rules'] = array('allow ruser from all');

3. Dockerfile 文件
cat Dockerfile
# phpmyadmin
# VERSION               0.0.1

FROM     phpmyadmin
MAINTAINER dongnan <http://zongming.net>

COPY conf/config.inc.php /etc/phpmyadmin/config.inc.php

# env
ENV TZ=Asia/Shanghai
ENV LANG=en_US.UTF-8

4. 定制镜像
docker build -t zongming.net/library/phpmyadmin:0.0.1 .
省略...
Successfully built d8241af7fac8

5. 推送镜像到仓库(可选)
docker push zongming.net/library/phpmyadmin:0.0.1

验证
# 根据实际环境,升级容器使用新版本的镜像,例如: docker-compose 环境,修改镜像版本后升级即可;
docker-compose up -d

# 测试 root 用户,提示禁止登录;

描述:phpmyadmin-deny-user

图片:phpmyadmin-deny-user.png

phpmyadmin-deny-user


# 测试指定的用户 ruser ,允许登录;

描述:phpmyadmin-allow-user

图片:phpmyadmin-allow-user.png

phpmyadmin-allow-user


扩展: phpmyadmin 安全
1. http协议 明文传输问题;
    通过 使用 https 协议加密数据,避免此问题。
2. 服务器暴漏在公网,被恶意扫描渗透等攻击行为;
    通过防火墙白名单机制解决,因为 phpmyadmin 只面向公司特定的人员开放,所以防火墙(iptables)仅信任他们的 IP即可;

参考:
使用 docker 部署 phpmyadmin
https://docs.phpmyadmin.net/en/latest/setup.html#installing-using-docker
https://stackoverflow.com/questions/2631269/how-to-secure-phpmyadmin
https://docs.phpmyadmin.net/en/latest/config.html#config
#
游客

返回顶部