如何保护phpMyAdmin

2022-08-30 09:29:56

我注意到有奇怪的请求到我的网站试图找到phpmyadmin,比如

/phpmyadmin/
/pma/

等。

现在我已经通过apt在Ubuntu上安装了PMA,并希望通过与/phpmyadmin/不同的webaddress访问它。我该怎么做才能更改它?

谢谢


更新

对于 Ubuntu 9.10 和 Apache2,相应的设置位于文件中,该文件是 指向 .该文件包含/etc/apache2/conf.d/phpmyadmin.conf/etc/phpmyadmin/apache.conf

Alias /phpmyadmin /usr/share/phpmyadmin

如果想要避免不必要的活动,第一个应该更改为不同的东西,例如:/phpmyadmin

Alias /secret /usr/share/phpmyadmin

答案 1

最大的威胁是攻击者可以利用诸如此类的漏洞;目录遍历,或使用 SQL 注入调用以读取配置文件中的纯文本用户名/密码,然后使用 phpmyadmin 或通过 tcp 端口 3306 登录。作为渗透测试人员,我使用这种攻击模式来破坏系统。load_file()

这是锁定phpmmyadmin的好方法:

  • PhpMyAdmin缺乏强大的暴力破解保护,因此您必须使用随机生成的长密码。
  • 不允许远程根登录!相反,phpmyadmin可以配置为使用“Cookie Auth”来限制用户可以访问系统的内容。如果您需要一些 root 权限,请创建一个可以添加/删除/创建但没有 或 的自定义帐户。grantfile_priv
  • 从每个帐户中删除权限。 是MySQL中最危险的权限之一,因为它允许攻击者读取文件或上传后门。file_privfile_priv
  • 将有权访问 phpmyadmin 接口的 IP 地址列入白名单。下面是一个示例 .htaccess reulset:
Order deny,allow
Deny from all
allow from 199.166.210.1
  • 没有可预测的文件位置,如:。像Nessus/Nikto/Acunetix/w3af这样的漏洞扫描程序将对此进行扫描。http://127.0.0.1/phpmyadmin

  • 关闭 tcp 端口 3306 的防火墙,以便攻击者无法访问它。

  • 使用HTTPS,否则数据和密码可能会泄露给攻击者。如果您不想为证书支付30美元,请使用自签名。您将接受一次,即使它由于MITM而更改,您也会收到通知。


答案 2

我对phpMyAdmin的一个担忧是,默认情况下,所有MySQL用户都可以访问数据库。如果DB的root密码被泄露,有人可能会对DB造成严重破坏。我想找到一种方法来避免这种情况,通过限制MySQL用户可以登录到phpMyAdmin。

我发现在PhpMyAdmin中使用RevictyDeny配置非常有用。http://wiki.phpmyadmin.net/pma/Config#AllowDeny_.28rules.29

AllowDeny允许您以类似于Apache的方式配置对phpMyAdmin的访问。如果将“订单”设置为显式,则只会向“规则”部分中定义的用户授予访问权限。在规则部分,您可以限制可以访问的MySql用户使用phpMyAdmin。

$cfg['Servers'][$i]['AllowDeny']['order'] = 'explicit'
$cfg['Servers'][$i]['AllowDeny']['rules'] = array('pma-user from all')

现在,您对MySQL中名为pma-user的用户具有有限的访问权限,您可以向该用户授予有限的权限。

grant select on db_name.some_table to 'pma-user'@'app-server'

推荐