加固您的 phpMyAdmin 安装,逐条完成

加固您的 phpMyAdmin 安装

逐条完成

  1. 遵循我们的 安全公告 https://www.phpmyadmin.net/security/ _ 并在每次有漏洞发布时都将 phpMyAdmin 更新。

    定时检查更新版本就好

  2. 仅使用 HTTPS 提供 phpMyAdmin 服务,最好一并使用 HSTS 机制,这样可以防御协议降级攻击。

    Centos 7 配置 apache https访问

    Ubuntu 18.04配置 apache https 访问

  3. 确保 PHP 安装遵循了生产环境站点的推荐配置,如应该禁用 display_errors 。

    whereis php.ini

     php: /usr/bin/php /usr/lib64/php /etc/php.d /etc/php.ini /usr/include/php /usr/share/php /usr/share/man/man1/php.1.gz
    

    cat /etc/php.ini |grep display_errors

     ; display_errors
     display_errors = Off
     ; separately from display_errors. We strongly recommend you set this to 'off'
    
  4. 除非你正在开发并需要测试套件,否则从phpMyAdmin中删除 test 目录。

    rm -rf /var/www/html/phpmyadmin/test

  5. 从phpMyAdmin中删除 setup 目录,初始设置后你可能不会使用它。

    先使用 .htaccess ,确认不用了在删除

  6. 正确选择认证方式 - Cookie 认证方式 是共享主机的最好选择。

    config.inc.php 缺省就是这样子配置的

  7. 您应在您的网站服务器设置中禁止对 ./libraries 和 ./setup/lib 这两个子文件夹的访问。在 Apache 中您可以通过 .htaccess 文件设置,其它网站服务器请自行设置。通过该设置可预防路径泄露和跨站脚本攻击。

    cat /var/www/html/phpmyadmin/libraries/.htaccess

     <IfModule authz_core_module>
        Require all denied
     </IfModule>
     <IfModule !authz_core_module>
        Deny from all
     </IfModule>
    

    cat /var/www/html/phpmyadmin/setup/.htaccess

     <IfModule authz_core_module>
        Require all denied
     </IfModule>
     <IfModule !authz_core_module>
        Deny from all
     </IfModule>
    
  8. 禁止访问临时文件,参见 $cfg[‘TempDir’] ,如果它位于你的 web root,参见 Web 服务器上传/保存/导入目录 。

    简单设置这 2 个都放在 tmp 目录,然后,使用 .htaccess 控制访问

    cat config.inc.php

     ......
     /**
      * Directories for saving/loading files from server
      */
     $cfg['UploadDir'] = './tmp';
     $cfg['SaveDir'] = './tmp';
     // wzh 20230315
     $cfg['TempDir'] = './tmp';
     ......
    
  9. 您还可以禁止搜索引擎访问公开的 phpMyAdmin,因为这对它们没有任何用处。您可以使用网站服务器根文件夹的 robots.txt 文件或直接从网站服务器设置中限制其访问,参见 1.42 如何阻止爬虫机器人访问 phpMyAdmin?。

    安装自带的 robots.txt 已经禁止了所有的爬虫

    cat robots.txt

     User-agent: *
     Disallow: /
    
  10. 如果您不希望所有 MySQL 用户都能访问 phpMyAdmin,可以使用 c f g [ ′ S e r v e r s ′ ] [ cfg['Servers'][ cfg[Servers][i][‘AllowDeny’][‘rules’] 来限制它们,或者使用 cfg[‘Servers’][$i][‘AllowRoot’] 来拒绝 root 用户访问。

    改在 Apache 配置里面去控制

  11. 为您的账户启用 双因素身份验证。

    不好弄,算了!

  12. 考虑将 phpMyAdmin 隐藏在认证代理后面,这样用户在向 phpMyAdmin 提供 MySQL 凭证之前就需要进行认证。你可以通过配置你的 Web 服务器以请求 HTTP 认证来实现这一点。例如,在 Apache 中可以这样做:

    Apache 使用 mod_auth_basic 模块,给网站增加一个身份认证代理

    nginx 使用 ngx_http_auth_basic_module 模块,给网站增加一个身份认证代理

  13. 若您担心自动化的攻击,通过 $cfg[‘CaptchaLoginPublicKey’] 和 $cfg[‘CaptchaLoginPrivateKey’] 启用验证码会有一定作用。

    没有 google 账号,一切白扯!翻墙另当别论

  14. Failed login attempts are logged to syslog (if available, see $cfg[‘AuthLog’]). This can allow using a tool such as fail2ban to block brute-force attempts. Note that the log file used by syslog is not the same as the Apache error or access log files.

    在 httpd.conf 文件里面加上

    cat /etc/httpd/conf/httpd.conf

    ......
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    # add by wzh 20230315
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{userID}n %{userStatus}n"   pma_combined
    ......
    
  15. In case you’re running phpMyAdmin together with other PHP applications, it is generally advised to use separate session storage for phpMyAdmin to avoid possible session-based attacks against it. You can use $cfg[‘SessionSavePath’] to achieve this.

    目前没有这种需求,不处理

后续问题

出现 2 个警告
在这里插入图片描述

  1. phpMyAdmin 高级功能尚未完全设置,部分功能未激活。查找原因。
      或者也可以去某个数据库的“操作”选项卡那里进行设置。
      创建一个名为’phpmyadmin’的数据库,并在那里设置phpMyAdmin配置存储。

    按照官方文档说明
    phpMyAdmin配置存储
    抄录一部分文字说明如下 :

     手动配置
     您可以在 ./sql/ 文件夹中找到 create_tables.sql 文件。
     ......
     且通过导入 sql/create_tables.sql 创建了新的表格。
     ...
    

    下载到桌面电脑
    scp root@192.168.0.113:/var/www/html/phpmyadmin/sql/create_tables.sql .

    在 phpmyadmin 中导入即可
    刷新 phpmyadmin ,可以看到,多出来一个 phpmyadmin 数据库,下方的警告消失了

  2. 警告 变量 $cfg[‘TempDir’] (./tmp)无法访问。phpMyAdmin无法缓存模板文件,所以会运行缓慢。

    chmod -R 777 tmp
    OK!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈哈虎123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值