PHPMyadmin je jedan od najpopularniji web alata za manipulaciju MySQL bazama podataka. Iako cesto osporavan zbog same sigurnosti,PHPMyadmin je i vise nego koristan i potreban. Potreba je posebno izrazena kod shared Web hosting kompanija koje uz minimalan rizik (npr. bez SSH pristupa) trebaju da korisnicima obezbjede bar osnovnu manipulaciju njihovim bazama.Kako je moj izbor Web servera nginx i kako mi se mozda po prvi put u zivotu pojavila potreba za PHPMyadmin, clankom je ukratko objasnjena instalacija i konfiguracija alata sa nginx web serverom.Na primjeru se podrazumjeva da imamo osnovno znanje o nginx i da smo vec uspjesno konfigurisali neku Web stranicu na istom. Odredjeni path-ovi koji se spominju u tutorijalu odnose se na Debian Linux.
Ono cemu treba voditi paznju i sigurnost dovesti na bar neki veci nivo jeste:
- PHPMyadmin uvijek sluziti preko SSL protokola
- Promjeniti naziv defaultnog direktorija iz phpmyadmin u nesto drugo
- Koristiti `htaccess alike` autorizaciju prilikom pristupa samom PHPMyadmin direktoriju
- Onemoguciti logiranje root korisnika
Ono na sto bi trebalo obratiti paznju prije same instalacije jeste da PHP ima gd i mcrypt module.
Instalacija aktuelne verzije PHPMyadmin-a:
cd /path/do/www/
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.3.4/phpMyAdmin-3.3.4-all-languages.tar.gz?use_mirror=switch&ts=1279979282
tar xzvf phpMyAdmin-3.3.4-english.tar.gz
mv phpMyAdmin-3.3.4-english pmadmin
Konfigurisanje PHPMyadmin:
cp /path/do/www/pmadmin/config.sample.inc.php /path/do/www/config.inc.php
nano /path/do/www/config.inc.php
Linije koje u ovoj konfiguracij treba izmjeniti jesu:
$cfg['blowfish_secret'] = 'nekirandomtekst';
Umjesto `nekirandomtekst` dovoljno je da unesete neki npr. 15 znakovni string
$cfg['Servers'][$i]['controluser'] = 'pmadmin'; $cfg['Servers'][$i]['controlpass'] = 'password';
Navedene linije oznacavaju korisnika `naprednim` privilegijama. Kasnije cemo za gore navedenog korisnika dodati i grant na phpmyadmin bazi
Jos je ostalo da `iskljucimo` pristup root korisniku dodavajuci liniju:
$cfg['Servers'][$i]['AllowRoot'] = false;
Dodavanje privilegija na MySQL bazu:
mysql -u root -p
create database phpmyadmin;
GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pmadmin'@'%' IDENTIFIED BY 'password';
use phpmyadmin;
source /path/do/www/pmadmin/scripts/create_tables.sql;
To je to sto se tice samo instalacije PHPMyadmin-a. Predjimo na podesavanje nginx web servera kako bi radio bas ono sto zelimo. Uzecemo za primjer domenu admin.ba koja je vec konfigurisana na SSL protokol. Samim tim PHPMyadmin ce biti dostupan preko https://admin.ba/pmadmin/
nano /etc/nginx/sites-enabled/admin.ba
Sama konfiguracija nginx vhost-a nas ne zanima i podrazumjeva se da vec imamo funkcionalnu SSL stranicu admin.ba. Ono sto u konfiguraciju treba dodati jeste da se PHPMyadmin direktoriju pristupa sa dodatnom login formom u vidu Apache htaccess alike logina.Ovim svakako dodatno osiguravamo PHPMyadmin direktorij od raznih bruteforce botova i sl. Kako sam htaccess nemamo na nginx-u, posluzicemo se valjanom alternativom AuthBasicModule.
Ono sto je potrebno dodati u vhost stranice admin.ba:
root /path/do/www;
index index.php index.html;
fastcgi_index index.php;
location /pmadmin {
auth_basic "Restricted";
auth_basic_user_file /path/do/user.pass;
}
location ~ \.php {
........
}
}
Imajte u vidu da u kodu iznad gledamo samo dio od location /pmadmin do slijedeceg `zatvaranja` sa }
Kako koristimo SSL protokol na PHP `lokaciji` je izmedju ostlog potrebno dodati i:
fastcgi_param HTTPS on;
Ostaje jos samo da kreiramo user i password za autorizaciju:
htpasswd -c /path/do/user.pass nekikorisnik
Dialog ce nas pitati da dva puta unesemo zeljeni password
Nakon sto smo sve ovo zavrsili,restartujemo nginx server i nasem PHPMyadmin pristupamo preko https://admin.ba/pmadmin/ .
/etc/init.d/nginx restart
Enjoy : )



