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țiile client / server este obișnuit ca un client să poată specifica orice nume de utilizator, dar dacă nu este dată nici o parolă pentru other_user, atunci oricine poate merge sub orice nume pur și simplu tastând mysql -u other_user db_name. Pentru a evita acest lucru, puteți modifica parola pentru toți utilizatorii editând scriptul mysql_install_db înainte de a porni aplicația sau doar parola pentru utilizatorul root al 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ăcute publice 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.