2010-04-13 47 views
56

我已經注意到了,這裏有奇特的請求到我的網站試圖找到phpMyAdmin的,像如何保護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

標題不應該是「如何移動phpMyAdmin」?更改網址並不能確保安全... – Mark 2017-01-02 09:22:15

回答

79

最大的威脅是攻擊者可以利用漏洞,如:目錄遍歷或使用SQL注入來呼叫load_file()讀取配置文件中的純文本用戶名/密碼,然後使用phpmyadmin或通過tcp端口3306進行登錄。作爲筆試者,我已經使用這種攻擊模式來破壞系統。

這裏是鎖定的phpmyadmin一個偉大的方式:

  • 不允許遠程root登錄!相反,phpmyadmin可以配置爲使用"Cookie Auth"來限制用戶可以訪問系統。如果您需要某些root權限,請創建一個可以添加/刪除/創建但不具有grantfile_priv的自定義帳戶。
  • 從每個帳戶中刪除file_priv權限。 file_priv是MySQL中最危險的特權之一,因爲它允許攻擊者讀取文件或上傳後門。
  • 有權訪問phpmyadmin界面的白名單IP地址。這是一個例子。htaccess的reulset:
Order deny,allow 
Deny from all 
allow from 199.166.210.1 
  • 沒有一個可預見的文件位置,如:http://127.0.0.1/phpmyadmin。像Nessus/Nikto/Acunetix/w3af等漏洞掃描程序將掃描此信息。

  • 防火牆關閉tcp端口3306,使其無法被攻擊者訪問。

  • 使用HTTPS,否則數據和密碼可能泄露給 攻擊者。如果您不想分出30美元作爲證書,那麼 將使用自簽名。您會接受一次,即使因爲MITM而更改了 ,您也會收到通知。
+5

我並不是說要批評,但有趣的是,如何在最後一步之前不解決「最大威脅」。對於大多數人來說,最大的威脅就是被迫採取暴力行動,這是你的其他步驟所要解決的。 使用體面的密碼也是一個好主意。 – therealsix 2010-04-15 03:49:22

+1

@therealsix你的權利,但我認爲這是顯而易見的。蠻力的MySQL比mssql不常見,因爲你有調用cmd.exe的xp_cmdshell()。在mysql中,可執行代碼並不是直截了當的。 – rook 2010-04-15 06:26:30

+2

我們也在phpMyAdmin配置中將AllowRoot切換爲false。 – zmonteca 2011-12-10 00:41:03

1

最簡單的方法是編輯的web服務器,最有可能的一個Apache2安裝,配置並給phpmyadmin一個不同的名字。

第二種方法是限制可以訪問phpmyadmin的IP地址(例如,僅限本地lan或本地主機)。

4

很可能你的web服務器上的某個地方會是這樣的Alias指令;

Alias /phpmyadmin "c:/wamp/apps/phpmyadmin3.1.3.1/" 

在我的wampserver/localhost安裝程序中,它位於c:/wamp/alias/phpmyadmin.conf中。

只要改變別名指令,你應該很好去。

10

我對phpMyAdmin的一個擔憂是,默認情況下,所有的MySQL用戶都可以訪問數據庫。如果數據庫的root密碼被破壞,某人可能會破壞數據庫。我想通過限制哪些MySQL用戶可以登錄到phpMyAdmin來找到避免這種情況的方法。

我發現在PhpMyAdmin中使用AllowDeny配置非常有用。 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' 
+3

好的提示!在你的代碼中只是一個小錯誤,規則應該是這樣的:'$ cfg ['Servers'] [$ i] ['AllowDeny'] ['rules'] = array('allow pma-user from all'); ' – Jonathan 2012-07-05 17:26:57

4

另一種解決方案是使用配置文件沒有任何設置。第一次你可能不得不包含你的mysql root登錄名/密碼,這樣它可以安裝它的所有東西,但然後刪除它。

$ cfg ['Servers'] [$ i] ['auth_type'] ='cookie';

$ cfg ['Servers'] [$ i] ['host'] ='localhost';

$ cfg ['Servers'] [$ i] ['connect_type'] ='tcp';

$ cfg ['Servers'] [$ i] ['compress'] = false;

$ cfg ['Servers'] [$ i] ['extension'] ='mysql';

離開它就像沒有任何apache/lighhtpd別名只會呈現給你一個登錄屏幕。 enter image description here

您可以使用root登錄,但建議您創建其他用戶,並且只允許root用於本地訪問。還要記住要使用字符串密碼,即使短小但是有大寫字母和特殊字符數。例如!34sy2rmbr! aka「容易2記住」

-EDIT:一個好的密碼現在一天實際上是像make no grammatical sense but you can remember because they funny這樣的文字。或者使用keepass生成強大的隨機數並且可以輕鬆訪問它們

+1

Lastpass也是另一個很棒的密碼管理系統 – ytpillai 2016-02-03 04:03:31

5

在phpMyAdmin的用戶名+ ip地址訪問權限的新版本中,可以在phpMyAdmin的config.inc.php文件中設置。這是限制訪問(通過將URL和IP地址硬編碼到Apache的httpd.conf中)的更好和更可靠的方法。

下面是如何切換到白名單列出所有用戶(此列表中不允許任何人訪問)的完整示例,以及如何將用戶root限制爲僅限本地系統和網絡。

$cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow'; 
$cfg['Servers'][$i]['AllowDeny']['rules'] = array(
    'deny % from all', // deny everyone by default, then - 

    'allow % from 127.0.0.1', // allow all local users 
    'allow % from ::1', 

    //'allow % from SERVER_ADDRESS', // allow all from server IP 

    // allow user:root access from these locations (local network) 
    'allow root from localhost', 
    'allow root from 127.0.0.1', 
    'allow root from 10.0.0.0/8', 
    'allow root from 172.16.0.0/12', 
    'allow root from 192.168.0.0/16', 

    'allow root from ::1', 

    // add more usernames and their IP (or IP ranges) here -  
    ); 

來源:How to Install and Secure phpMyAdmin on localhost for Windows

這給你比Apache的URL的權限或者.htaccess文件可以提供更加細粒度的訪問限制,在MySQL用戶名的水平。

確保您使用的登錄用戶,有其MySQL的Host:字段設置爲127.0.0.1::1,如phpMyAdmin的和MySQL是在同一系統上。

2

如果您運行的是Linux服務器:

  • 使用SSH,你可以禁止用戶名/密碼登錄電子和只接受authorized_keys文件
  • 使用膩子公鑰來連接到你的服務器和打開一個遠程終端
  • 轉發X11和本地主機帶來的firefox/iceweasel到桌面(在你需要Xming的軟件安裝窗戶)
  • 現在你確保你的phpMyAdmin的throught SSH

此係統對於家庭服務器來說相當安全/方便 - 通常默認情況下所有端口都被阻止。您只需轉發SSH端口(不要使用數字22)。

如果你喜歡微軟終端服務器,你甚至可以設置SSH隧道到你的計算機並通過它安全地連接到你的Web服務器。

隨着ssh隧道你甚至可以將遠程服務器的3306端口轉發到本地端口並使用本地phpMyAdmin或MySQL Workbench進行連接。

我知道這個選項是一種矯枉過正,但是和您的私鑰一樣安全。

0

您可以使用下面的命令:

$ grep "phpmyadmin" $path_to_access.log | grep -Po "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" | sort | uniq | xargs -I% sudo iptables -A INPUT -s % -j DROP 

說明:

確保您的IP不會通過iptables的下降管道前上市!

這將首先查找$ path_to_access中的所有行。日誌在他們的phpmyadmin,

然後用grep出從行的起始IP地址,

然後排序和獨特的他們,

再增加一條規則,把它們在iptables的

再次,只需編輯echo %而不是iptables命令,以確保您的IP不在那裏。不要無意中禁止您訪問服務器!

限制

您可能需要,如果你在Mac或不使用grep -P任何系統更改命令的grep的一部分。我不確定是否所有系統都以xargs開頭,因此可能也需要安裝。無論如何,如果你做了很多bash,它是非常有用的。