Si të instaloni phpMyAdmin në mënyrë të sigurt


phpMyAdmin është një mjet i shkëlqyeshëm për menaxhimin e një baze të dhënash MySQL, por vendosja e aksesit në bazën tuaj të të dhënave pas një ndërfaqe në internet është një problem i madh sigurie. Këtu janë disa mënyra për të zbutur rreziqet e përfshira në ekzekutimin e phpMyAdmin.

Pse është phpMyAdmin një problem sigurie?

Zakonisht, do të kishit një bazë të dhënash që do të funksiononte në serverin tuaj dhe do të pranonte vetëm lidhje nga localhost ose ndoshta nga një server tjetër i besuar. Nëse do të kishit një aplikacion që funksiononte gjithashtu në atë server, ai do të komunikonte drejtpërdrejt. Nuk ka asnjë mënyrë që një sulmues të fitojë qasje në mungesë të plasaritjes në të gjithë serverin.

phpMyAdmin e anashkalon këtë për t'ju ofruar një ndërfaqe në internet për menaxhimin e bazës së të dhënave tuaja. Është një mjet shumë i dobishëm, por është një fatkeqësi për sigurinë. phpMyAdmin ka akses të plotë të pakufizuar në bazën tuaj të të dhënave, pasi synohet të zëvendësojë qasjen e drejtpërdrejtë të linjës së komandës. Nëse një sulmues fiton akses në panelin e uebit, ata do të kenë akses në gjithçka. Dhe phpMyAdmin zakonisht sigurohet vetëm me një fjalëkalim të thjeshtë.

Instaloni phpMyAdmin dhe Secure MySQL

phpMyAdmin funksionon në pirgun LAMP (Linux, Apache, MySQL, PHP). Para se të filloni të instaloni phpMyAdmin, shembulli juaj i MySQL duhet të jetë i sigurt. MySQL ofron një mjet të dobishëm për kryerjen e disa detyrave themelore të sigurisë:

sudo mysql_secure_installation

Kjo do t'ju ndihmojë të ndryshoni fjalëkalimin e rrënjës, të çaktivizoni hyrjet në distancë dhe të hiqni bazën e të dhënave të testimit.

Pas kësaj, mund të instaloni phpMyAdmin si zakonisht. Gjatë instalimit, do t'ju kërkohet një fjalëkalim i përdoruesit të administratorit të bazës së të dhënave (të cilin duhet ta kishit vendosur gjatë mysql_secure_installation) dhe një fjalëkalim të ri për të siguruar phpMyAdmin. Sigurohuni që ky fjalëkalim të jetë i gjatë dhe i sigurt, pasi është pika e fundit e mbrojtjes përpara se sulmuesit të kenë akses.

Sidoqoftë, në mënyrë ideale, asnjë sulmues nuk duhet të ketë as mundësinë të hamendësojë fjalëkalimin tuaj, kështu që ju do të dëshironi të vendosni phpMyAdmin pas diçkaje tjetër në mënyrë që ta siguroni më tej.

Opsioni 1: Mbyllni Apache dhe përdorni SSH Port Forwarding

Ky është opsioni më i sigurt, por është vërtet i përshtatshëm vetëm për akses me një përdorues, veçanërisht për përdoruesit e vetëm që kanë akses të plotë administrativ në të gjithë serverin, pasi kërkon që ju të lidheni me SSH.

Përcjellja e portit SSH është një metodë e përcjelljes së porteve lokale në një sistem të largët. Për shembull, do të kishit Apache që funksionon në serverin tuaj, duke dëgjuar në portin 80. Nëse e keni tuneluar atë port, mund ta aksesoni atë duke shkuar te:

https://localhost:80/

…në çdo shfletues uebi. Në një farë kuptimi, është pothuajse sikur Apache po funksionon në sistemin tuaj. Por porti 80 nuk duhet të jetë i hapur në serverin tuaj; i gjithë trafiku drejtohet përmes portit standard 22 të përdorur për SSH. Do t'ju duhet të siguroheni që SSH është i siguruar me çelësat SSH dhe në mënyrë ideale nuk funksionon në portin standard, pasi kjo metodë është po aq e sigurt sa lidhja juaj SSH.

Për ta bërë këtë, do t'ju duhet të lidhni Apache me localhost dhe sigurohuni që të mos jetë i hapur për internetin. Hapni /etc/apache2/ports.conf dhe ndryshoni tre deklaratat e dëgjimit për të dëgjuar vetëm në localhost (aka 127.0.0.1):

Listen 127.0.0.1:80

<IfModule ssl_module>
  Listen 127.0.0.1:443
</IfModule>

<IfModule mod_gnutls>
 Listen 127.0.0.1:443
</IfModule>

Rinisni Apache me:

sudo service apache2 restart

Dhe phpMyAdmin duhet të jetë i paarritshëm. Kjo pritet. Pasi të konfigurohet Apache, mund të tuneloni portin 80 duke përdorur komandën e mëposhtme:

ssh -L 80:localhost:80 user@server

Më pas, mund të përdorni phpMyAdmin nga localhost:80 në çdo shfletues uebi. Ndërkohë, serveri juaj mund të konfigurohet me një firewall të rreptë për të mos lejuar çdo gjë përveç SSH.

Nëse ssh nuk mund të lidhet me portën 80, provoni të ndryshoni portën e parë në një numër tjetër dhe ta përdorni atë nga atje në localhost. Do të vazhdojë të ketë tunel në portin 80 në makinën në distancë. Kjo lidhje ruhet derisa të dilni nga ssh. Nëse dëshironi ta ekzekutoni në sfond, përdorni flamurin -f .

Nëse dëshironi që phpMyAdmin të dëgjojë vetëm në localhost, në vend të kësaj mund të modifikoni /etc/apache2/conf-enabled/phpmyadmin.conf dhe të shtoni rreshtat e mëposhtëm në bllokun Direktoria :

  Order deny,allow
  Deny from all
  Allow from 127.0.0.1

Kjo do të mohojë çdo gjë përveç localhost-it nga aksesi në instalimin e phpMyAdmin, megjithëse do t'ju duhet ende porti 80 i hapur në murin tuaj të zjarrit për të lejuar trafikun e rregullt.

Opsioni 2: Mbyllni Apache dhe përdorni një VPN

Nëse ju duhet të lejoni qasjen te shumë njerëz pa i dhënë akses SSH, mund të konfiguroni Apache-n që të dëgjojë në IP-në private të makinës suaj dhe të pranojë lidhje vetëm nga e njëjta re. Kjo funksionon veçanërisht mirë me shërbime si AWS VPC, ku çdo server që nisni krijohet në një rrjet virtual.

Për të gjetur IP-në tuaj private, mund të ekzekutoni ifconfig dhe të kërkoni adresën inet në përshtatësin tuaj kryesor të rrjetit:

Kjo adresë është gjithashtu e dukshme nga AWS EC2 Console. Pasi të keni kopjuar adresën, hapni /etc/apache2/ports.conf dhe modifikoni tre direktivat Dëgjo për të dëgjuar në IP-në private:

Listen 172.31.87.118:8

<IfModule ssl_module>
  Listen 172.31.87.118:443
</IfModule>

<IfModule mod_gnutls>
  Listen 172.31.87.118:443
</IfModule>

Përndryshe, nëse thjesht dëshironi të siguroni phpMyAdmin, mund të modifikoni /etc/apache2/conf-enabled/phpmyadmin.conf dhe të lejoni vetëm nga IP-ja private:

Order deny,allow
Deny from all
Allow from 172.31.87.118

Dhe rinisni Apache.

Tani, për të hyrë në phpMyAdmin, do t'ju duhet të konfiguroni një server VPN si OpenVPN. Kjo do t'ju lejojë të tuneloni kompjuterin tuaj të klientit në renë virtuale private në të cilën funksionojnë serverët tuaj të internetit dhe të hyni në serverin që funksionon phpMyAdmin në IP-në private sikur të ishit një server tjetër. Sigurisht, do t'ju duhet të konfiguroni cilësimet tuaja të murit të zjarrit për të lejuar hyrjen nga serveri OpenVPN në shembullin phpMyAdmin.

Opsioni 3: Siguro Apache me HTTPS dhe Bazë Auth

Nëse vërtet duhet të përdorni DNS publike dhe ta keni të aksesueshëm serverin tuaj, mund të përdorni vërtetimin bazë me Apache. Ky është thjesht një fjalëkalim tjetër përpara phpMyAdmin që parandalon të huajt të bëjnë ndonjë kërkesë për aplikacionin phpMyAdmin. Ju mund ta përdorni këtë së bashku me opsionet e tjera në këtë listë, pasi është vetëm një shtresë shtesë e mbrojtjes.

Krijo një skedar të ri fjalëkalimi me htpasswd, i cili duhet të instalohet tashmë së bashku me Apache (nëse jo, është në apache2-utils):

sudo htpasswd /etc/apache2/.htpasswd phpadmin

Kjo ju lejon të vendosni një fjalëkalim të ri për përdoruesin phpadmin dhe ta ruani atë në /etc/apache2/.htpasswd.

Hapni /etc/apache2/conf-enabled/phpmyadmin.conf dhe konfigurojeni që të përdorë auth-in bazë me skedarin e fjalëkalimit të sapokrijuar:

AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user

Rinisni Apache me:

sudo service apache2 restart

Dhe kur përpiqeni të përdorni phpMyAdmin në shfletuesin tuaj, do t'ju kërkohet një emër përdoruesi dhe fjalëkalim. Fut phpadmin dhe fjalëkalimin që ke krijuar dhe duhet të të lejohet qasja. Përndryshe, gjithçka që do të shihni është një përgjigje 401 e paautorizuar .