4.2.2. Cum să securizați MySQL de la hackeri
Când vă conectați la un server MySQL, este de obicei o parolă. Prin link, parola nu este transmisă ca text simplu, dar algoritmul de criptare nu este foarte complicat. Un hacker inteligent, dacă poate intercepta traficul între client și server, cu o anumită perseverență poate sparge parola. Prin urmare, în cazul în care conexiunea dintre client și server este efectuată printr-o rețea de neîncredere, pentru a cripta conexiunea trebuie folosit un tunel SSH.
Dacă utilizați MySQL 4.0, puteți utiliza și suportul furnizat în această versiune a protocolului OpenSSL. Consultați secțiunea 4.3.9, "Utilizarea conexiunilor securizate".
Pentru a asigura securitatea sistemului MySQL, trebuie să urmați cu strictețe următoarele recomandări:
Toți utilizatorii MySQL trebuie să aibă parole. Pentru aplicații client / server este, în general acceptat faptul că clientul poate specifica orice nume de utilizator, dar dacă other_user nici o parolă, atunci oricine poate merge sub orice nume prin simpla tastare mysql -u other_user DB_Name. Pentru a evita acest lucru, puteți schimba parola pentru toți utilizatorii prin editarea script mysql_install_db înainte de a începe o aplicație sau numai parola pentru root -user MySQL, după cum se arată mai jos:
Nu rulați daemonul MySQL ca utilizator rădăcină Unix. Acest lucru este foarte periculos, deoarece orice utilizator care are privilegiul FILE. va fi capabil să creeze fișiere ca utilizator root (de exemplu
Ca rezultat, serverul va fi lansat ca utilizator desemnat, indiferent dacă acesta este pornit manual sau prin utilizarea lui safe_mysqld sau mysql.server. Pentru mai multe informații, consultați secțiunea A.3.2, "Pornirea MySQL de la un utilizator normal".
Nu acceptați legăturile simbolice cu tabelele (puteți dezactiva acest lucru cu opțiunea --skip-symlink). Acest lucru este important în special dacă executați mysqld ca root. de la cel care are dreptul de acces la scrierea directoarelor de date mysqld. este posibil să ștergeți orice fișier din sistem! Consultați Secțiunea 5.6.1.2, "Utilizarea legăturilor simbolice pentru tabele".
Asigurați-vă că utilizatorul Unix al cărui nume mysqld este difuzat este singurul utilizator care are privilegii de citire / scriere în directorul bază de date.
Nu acordați privilegii PROCESS tuturor utilizatorilor. Comanda mysqladmin processlist afișează textul interogărilor în curs de procesare. Prin urmare, orice utilizator care are dreptul de a executa această comandă are ocazia să citească, de exemplu, solicitarea altui utilizator, cum ar fi UPDATE user SET password = PASSWORD ('not_secure'). mysqld rezervă o conexiune suplimentară pentru utilizatorii care au privilegiul PROCESS. astfel încât un utilizator MySQL numit root se poate conecta și monitoriza chiar și atunci când toate conexiunile normale sunt ocupate.
Nu acordați privilegii FILE tuturor utilizatorilor. Orice utilizator cu acest privilegiu poate scrie un fișier cu privilegiile daemonului mysqld oriunde în sistemul de fișiere. Pentru a asigura o protecție minimă, toate fișierele create cu comanda SELECT. IN OUTFILE. făcut public pentru scriere, dar nu puteți suprascrie fișierele existente.
Privilegiul FILE poate fi, de asemenea, utilizat pentru a citi orice fișier disponibil pentru utilizatorul Unix, în numele căruia este pornit serverul.
De asemenea, puteți citi orice fișier din baza de date curentă. Acest lucru poate fi folosit pentru câștig personal. De exemplu, puteți utiliza comanda LOAD DATA pentru a încărca / etc / passwd într-o masă și ao citi mai târziu cu SELECT.
Pentru a limita numărul de conexiuni disponibile unui utilizator individual, puteți seta valoarea variabilei max_user_connections în mysqld.