AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 938398
Accepted
Hawk007
Hawk007
Asked: 2017-07-22 05:01:13 +0800 CST2017-07-22 05:01:13 +0800 CST 2017-07-22 05:01:13 +0800 CST

如何保护 phpmyadmin

  • 772

好的,所以我在一个带有 ssl 证书的 vps 上有几个站点。我有 mod 安全设置以及tripwire。然后我的问题与 phpmyadmin 安全性有关。如果我的 IP 是 123.123.123.123,我可以使用 123.123.123.123/mypmyadmin-IHaveChangedThisURL 访问 phpmyadmin。

即使我更改了 phpmyadmin url,如果你能找到 url,phpmyadmin 仍然可以访问。

我在根目录中添加了一个空白的 html 文件,因此没有使用 vps 主机名或 vps IP 给出目录索引。

我还能做些什么来保护 IP 使用并尝试访问 phpmyadmin 等?

任何指导表示赞赏。谢谢。

16.04
  • 1 1 个回答
  • 5299 Views

1 个回答

  • Voted
  1. Best Answer
    pa4080
    2017-07-25T05:03:15+08:002017-07-25T05:03:15+08:00

    可以做几件事。我将解释我的想法以及如何在 Apache2 中实现它们。


    1. 使用 HTTPS 连接保护您的数据不被嗅探

    • 如果未启用 SSL 模块,请先启用它:sudo a2enmod ssl.

    • О将端口 443 (HTTPS) 插入防火墙。您应该在此处使用您的自定义端口。

    • 遵循本手册并启用 Let's Encrypt 的免费证书。

    • 检查此答案并禁用弱密码。

    • 然后您可以强制所有用户使用 HTTPS。


    2.更改PhpMyAdmin的URI

    要更改 URI,在默认配置中,您应该编辑和更改此指令/etc/phpmyadmin/apache.conf的第一部分 ( ):/phpmyadmin

    Alias /phpmyadmin /usr/share/phpmyadmin
    

    重新启动 Apache,您将能够通过新的 URI 访问 PhpMyAdmin。


    3. 在不同的端口上运行 PhpMyAdmin

    这是一个分步手册:如何在不同的端口上运行 PhpMyAdmin。不要忘记将此端口打开到防火墙中。


    4.通过SSH隧道仅在本地访问PhpMyAdmin

    在不同的端口上运行 PhpMyAdmin。假设它是 port 99。关闭此端口进入防火墙。然后通过类似如下的命令建立 SSH 连接:

    ssh -fTN -R 99:localhost:99 <user>@<domain>or<ip>
    
    • 此命令将创建 ssh隧道,其中远程-R端口99被转发到( )99上的本地端口。localhost127.0.0.1
    • 这些选项-fTN会将连接推送到后台。

    然后 PhpMyAdmin 应该可以通过 URL 上的本地计算机的 Web 浏览器访问http://localhost:99/。更多想法可以在这里找到:

    • 访问 NAT 后的远程多台服务器
    • IPTables 只允许本地主机访问
    • 仅允许来自特定 IP 的 Ubuntu 服务器访问

    5. 通过密码验证保护 PhpMyAdmin URI 路径

    更多细节可以在这个 Apache 的手册中找到:身份验证和授权。apache2-utils必须安装该软件包。简而言之,步骤是:

    • 在 之外创建文件夹/var/www,其中将保存密码文件。然后生成密码文件。假设这个新文件夹的名称是/var/www-auth:

      $ sudo mkdir /var/www-auth
      $ cd /var/www-auth
      $ sudo htpasswd -c .htpasswd.phpmyadmin <user>
      New Password: *********
      Re-Type New Password: *********
      Adding Password For User <user>
      
      • .htpasswd.phpmyadmin是将存储密码的文件的名称。
      • user是将使用的登录名。
      • *********是密码:)
      • -c表示创建新文件。如果省略此选项,htpasswd命令将尝试将新的添加login name到现有的.htpasswd.file.
    • 修改 PhpMyAdmin 认证类型,通过/etc/phpmyadmin/apache.conf这种方式编辑(或创建.htaccess文件):

      <Directory /usr/share/phpmyadmin>
      .....
          <IfModule mod_authz_core.c>
              <IfModule mod_authn_file.c>
                  AuthType Basic
                  AuthName "The name of the authentication form - type some user and password hints"
                  AuthUserFile /var/www-auth/.htpasswd.phpmyadmin
              </IfModule>
              Require valid-user
          </IfModule>
      .....
      </Directory>
      
    • 启用模块并重新启动 Apache2 以应用新配置:

      sudo a2enmod authz_core authz_user authn_file
      sudo systemctl restart apache2.service
      
    • 现在要访问 PhpMyAdmin 的 URI,您必须提供登录名user及其password.


    6. 通过两因素身份验证 (2FA) 保护 PhpMyAdmin URI 路径:

    • 按照本手册中的步骤1和3生成文件,该文件位于您的目录中。在步骤4中描述了如何生成验证码。.google_authenticator$HOME

    • 在/var/www-auth. 假设这个新文件夹的名称是google_authenticator:

      sudo mkdir -p /var/www-auth/google_authenticator
      
    • 将文件复制$HOME/.google_authenticator到该目录并更改其权限(它必须是可读的www-data):

      sudo cp $HOME/.google_authenticator /var/www-auth/google_authenticator/user
      sudo chown www-data:www-data /var/www-auth/google_authenticator/user
      

      请注意,文件名决定登录名!登录到您的安全网站时,文件名将用作用户名。

    • 通过添加指令来修改新文件" PASSWORD=qwerty,其中qwerty是新的登录密码。

      E3CY3TNSNBXXXXXX
      " RESETTING_TIME_SKEW ...
      “ RATE_LIMIT 3 30 ...
      " WINDOW_SIZE 17
      “ DISALLOW_REUSE 48885555 ...
      " TOTP_AUTH
      " 密码=qwerty
      4567...
      
    • 为 Apache2安装mod_authn_google。不幸的是,我这个模块在 Ubuntu 的存储库中不可用,但我们可以从这个存储库中获取它。步骤是:(1)转到您的Downloads,(2)下载包dba-apa24-mod_authn_google-r22... .rpm,(3)提取mod_authn_google.so,(4)将文件放入/usr/lib/apache2/modules/,(5)授予适当的权限,(6)创建模块加载文件:

      cd $HOME/Downloads
      wget http://download.opensuse.org/repositories/home:/csbuild:/DBA/RedHat_RHEL-7/x86_64/dba-apa24-mod_authn_google-r22-1.1.x86_64.rpm
      
      rpm2cpio dba-apa24-mod_authn_google-r22-1.1.x86_64.rpm | cpio -iv --to-stdout ./DBA/apache24/WWW/2.4.x/modules/mod_authn_google-r22.so > mod_authn_google.so
      
      sudo mv mod_authn_google.so /usr/lib/apache2/modules/
      sudo chown root:root /usr/lib/apache2/modules/mod_authn_google.so
      sudo chmod g-w /usr/lib/apache2/modules/mod_authn_google.so
      
      echo "LoadModule authn_google_module /usr/lib/apache2/modules/mod_authn_google.so" | sudo tee /etc/apache2/mods-available/authn_google.load
      
      sudo a2enmod authn_google
      
    • 修改 PhpMyAdmin 认证类型,通过/etc/phpmyadmin/apache.conf这种方式编辑(或创建.htaccess文件):

      <Directory /usr/share/phpmyadmin>
      .....
          <IfModule mod_authz_core.c>
              <IfModule mod_authn_google.c>
                  AuthType Basic
                  AuthName "The name of the authentication form - type some user and password hints"
                  AuthBasicProvider "google_authenticator"
                  GoogleAuthUserPath /var/www-auth/google_authenticator
                  GoogleAuthCookieLife 3600
                  GoogleAuthEntryWindow 2
              </IfModule>
              Require valid-user
          </IfModule>
      .....
      </Directory>
      
    • 启用模块并重新启动 Apache2 以应用新配置:

      sudo a2enmod authz_core authz_user authn_google
      sudo systemctl restart apache2.service
      
    • 现在要访问 PhpMyAdmin 的 URI,您必须提供登录名user、其password和 6 位数字token code:

      在此处输入图像描述


    7. 为 Apache 使用 ModSecurity

    使用 ModSecurity,您可以向 PhpMyAdmin 的 URI 添加更灵活的限制。在这个答案中,在“ModSecurity Rules > SAS > Iptables”部分下,我简要描述了我们如何为 ModSecurity 创建自定义规则。

    • 5

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve