niedziela, 1 kwietnia 2012

Jak zabezpieczyć phpmyadmina, czyli phpmyadmin na hasło

PhpMyAdmin to skrypt ułatwiający zarządzanie bazami Mysql. Za jego pomocą możemy tworzyć nowe bazy i tabele, a także wykonywać zapytania SQL. Ze względu na ogromną popularność aplikacji php+mysql w internecie, często webmasterom przychodzi zainstalować phpmyadmina. Jakie to niesie niebezpieczeństwa ze sobą, o tym w artykule.

Każdy webmaster który musiał wgrać pliki Wordpressa czy Joomli na serwer wie, jak długo może to trwać, nawet przy łączu ADSL 2 Mbps. Tego typu rozbudowane systemy blogowe i cmsy składają się z tysięcy małych plików, a upload wielu takich małych plików na serwer ftp trwa niemiłosiernie długo, powiedzmy do 15 minut. A przecież jest inny i szybszy sposób na zainstalowanie próbnego Wordpressa czy wgranie templatki do Joomli i sprawdzenie jak ona wygląda live. Takie rzeczy możemy przecież testować lokalnie.

Jak zainstalować Joomlę lub Wordpressa na lokalnym komputerze ?
Mając na myśli lokalną instalację skryptu, mam na myśli dwie opcje. Pierwsza i prostsza służyć będzie tylko i wyłącznie do szybkiego zainstalowania nowego skryptu, wykorzystującego php i mysql. Druga opcja także będzie polegała na zainstalowaniu skryptu na maszynie lokalnej, ale dodatkowo działający cms lub blog będzie dostępny publicznie. Warunek tu jest jeden, a mianowicie webmaster musi posiadać publiczny adres ip lub też w przypadku routera, musi on przekierować porty na lokalną maszynę i dodać ją do strefy zdemilitaryzowanej DMZ.

Jest wiele pakietów zawierających w sobie serwer www, bazę danych Mysql, skrypt do zarządzania bazą phpMyAdmin i inne komponenty. Ja polecę darmowego Jampa, Wampa lub Xamppa. Są to gotowe pakiety które należy wypakować i już można ich używać. W przypadku pakietu Jamp, należy tylko uruchomić plik jamp. exe oraz wcisnąć Uruchom, a już możemy cieszyć się działającym serwerem www oraz bazodanowym.

Konfigurujemy pakiet Jamp
Jeśli wszystko działa jak należy, otwieramy przeglądarkę i wpisujemy w pasek adresu localhost lub 127.0.0.1 i naszym oczom ukaże się strona startowa serwera www. Aby wyświetlić swoją stronę www lub wgrać pliki np. Joomli, powinniśmy skopiować dane pliki do folderu JAMP PL Free\mnt\var\www.

Wpisując w pasku adresu localhost/phpmyadmin naszym oczom ukaże się skrypt phpmyadmin, dający nam dostęp do istniejących baz danych bez żadnej autoryzacji, czyli wpuszcza nas bez hasła.
PhpMyAdmin na hasło.
Przechodzimy do katalogu  JAMP PL Free\mnt\home\phpmyadmin i otwieramy w notatniku plik config.inc.php.Szukamy linii $cfg['Servers'][$i]['auth_type'] = 'config';
Domyślny typ uwierzytelniania w phpmyadmin to config.Nie musimy więc wpisywać loginu i hasła.

Phpmyadmina można zabezpieczyć na co najmniej 3 sposoby, a typ config jest najprostszym z nich, gdyż login i hasło jest zapisane w tym właśnie pliku  (config. inc. php) i nie trzeba ich podawać przy wywołaniu phpmyadmina. Nie trzeba być jasnowidzem aby wiedzieć co się stanie, jeśli wystawiamy Jampa z phpmyadminem zabezpieczonym przez auth_type=config. Mówiąc krótko, byle osobnik, który zna adres ip (lub nazwę domeny) naszego serwera, może wykasować nam bazy danych.

$cfg['Servers'][$i]['user'] = 'joomla';
$cfg['Servers'][$i]['password'] = 'joomla'; // use here your password

Wystawiając więc serwer na działanie publiczne, powinniśmy wybrać silniejsze zabezpieczenie.Omówimy teraz auth_type typu cookie.Po pierwsze powinniśmy zmienić wpis w config.inc.php na 
$cfg['Servers'][$i]['auth_type'] = 'cookie';
Typ uwierzytelniania cookie wymusza podania loginu i hasła w celu zarządzania bazą danych.

Po tej czynności możemy odświeżyć stronę phpmyadmina (bez restartowania serwera) i naszym oczom ukaże się przyjemny formularz na stronie www, w którym jest pole na podanie loginu i hasła. Opisany typ uwierzytelniania opiera się na prostej autentyfikacji HTTP.

Trzecią metodą zabezpieczenia phpmyadmina jest ustawienie auth_type na http. Ta metoda uwierzytelniania również wykorzystuje prostą autentyfikację HTTP i w odpowiednie pola musimy wpisać login i hasło, ale różnice pomiędzy http a cookie są raczej kosmetyczne.
Metoda uwierzytelniania http również wymaga wprowadzenia nazwy użytkownika i hasła.


Domyślne dane logowania do bazy mysql to joomla i joomla. Pamiętać należy, że do bazy MySql możemy przypisać wielu użytkowników. Najbardziej bezpieczne ustawienie to takie, że użytkownicy logujący się z localhost (komputera lokalnego) mają pełne prawa (ALL PRIVILEGES). Natomiast użytkownicy łączący się do bazy MySql z zewnątrz nie powinni mieć wszystkich uprawnień, przykładowo można im odjąć uprawnienia do kasowania tabel, zmieniania ich nazw, tworzenia nowych tabel.
Dostęp do bazy danych można przydzielić wielu użytkownikom.

W celu odróżnienia czy użytkownik łaczy się z komputera lokalnego czy z zewnątrz, musimy wprowadzić wilcard lub po prostu podać adres ip konkretnego hosta (lub tablicę hostów), które mogą się łączyć z bazą danych.

Uwaga: jeśli po wpisaniu w pasku adresu localhost lub localhost/phpmyadmin przeglądarka wyświetla komunikat że nie znaleziono strony to oznacza to, że nie działa serwer www. Użyj do diagnostyki narzędzia jamp_port_check. exe i wyłącz wszystkie aplikacje, które korzystają z portu 80 w komputerze. Przykładowo skype ma domyślnie ustawione alternatywne porty do połaczeń na 80 i 443. Należy je zmienić na inne lub wyłączyć skype'a.


1 komentarzy:

ZooL pisze...

Czemu po wprowadzeniu loginu i hasla nie moge wejsc na localhost/phpmyadmin:
Błąd
MySQL zwrócił komunikat: Dokumentacja

#1045 - Access denied for user 'ZooL'@'localhost' (using password: YES)
mysqli_real_connect(): (HY000/1045): Access denied for user 'ZooL'@'localhost' (using password: YES)

Prześlij komentarz