MySQL ir viena no populārākajām relāciju datu bāzes pārvaldības sistēmām, kas ir džekpots uzbrucējiem, kuri mēģina iekļūt datu bāzēs. Tikko instalētam MySQL datu bāzes serverim var būt daudz ievainojamību un nepilnību. Tā kā datu drošībai ir liela nozīme, ir obligāti jāsaprot visi MySQL drošības aspekti.
Šajā rakstā galvenā uzmanība ir pievērsta jūsu MySQL datu bāzes auditēšanai un drošībai, kā arī sniegti deviņi padomi, kā uzlabot tās drošību.
1. Izvairieties no nevajadzīgām privilēģiju dotācijām
MySQL pieļauj vairākus privilēģiju paziņojumus, kas, ja tie tiek nevajadzīgi piešķirti mazāk aizsargātam lietotājam, var novest pie failu lasīšanas/rakstīšanas un citu lietotāju privilēģiju izjaukšanas. Daži no potenciāli riskantākajiem privilēģiju paziņojumiem ir FILE, GRANT, SUPER, ALTER, DELETE, SHUTDOWN un tā tālāk. Vairāk par tiem varat lasīt MySQL oficiālajā dokumentācijā. Tāpēc nepiešķiriet tādas superlietotāja privilēģijas kā FILE, GRANT, SUPER un PROCESS kontiem, kas nav administratīvi. Šīs nevajadzīgās globālās, datu bāzes un tabulas līmeņa atļaujas var atsaukt šādi:
REVOKE ALL ON *.* FROM 'lietotāja_vārds'@'host_name'; #Globālās privilēģijas
REVOKE CREATE, DROP ON datu bāzes_nosaukums.* NO 'lietotāja_nosaukums'@'host_name'; #Datu bāzes privilēģijas
ATSAUKT IEVADĪJUMU, ATJAUNINĀT, dzēst datu bāzes_nosaukums.tabulas_nosaukums NO 'lietotāja_nosaukums'@'resursdatora_nosaukums'; #Galda privilēģijas
skalošanas privilēģijas;
2. Ierobežot attālo pieteikšanos
Attālā piekļuve atvieglo datubāzes administratoru darbu, taču tas apdraud serveri ar iespējamām ievainojamībām un izmantošanu. Varat atspējot attālo piekļuvi visu veidu MySQL lietotāju kontiem, galvenajam konfigurācijas failam pievienojot tīkla izlaišanas mainīgo un restartējot pakalpojumu.
[mysqld]
izlaist tīklu
sudo pakalpojums mysql restart
Tāpat jums ir jāatspējo root konta piekļuve, ja ne visi, lai ierobežotu root konta attālās pieteikšanās. Šis piesardzības pasākums novērš rupju MySQL saknes konta izmantošanu.
mysql> izdzēst no mysql.user, kur user='root' un resursdators nav ('localhost', '127.0.0.1', '::1'); mysql> flush privilēģijas;
3. Atspējot funkcijas (load_file, outfile, dumpfile)
Vēl viens piesardzības pasākums, lai aizsargātu MySQL pret lokālu failu ievadīšanu, ir atspējot funkcijas, kurām var piekļūt tikai ar FILE piešķiršanas privilēģiju. FILE ir opcija, kas ļauj lietotājiem ar zemām privilēģijām ar globālām komandu opcijām lasīt vai rakstīt failus serverī.
- load_file
Funkcija load_file ielādē faila saturu no servera kā virkni. Piemēram, šī komanda ielādēs visu saturu no /etc/passwd failu šādi:
atlasiet load_file('/etc/passwd')
- outfile
Līdzīgi funkcija Outfile ieraksta saturu vietējā servera failos. Uzbrucēji var izmantot šo funkciju, lai rakstītu derīgo slodzi failā serverī, kā norādīts tālāk.
izejošā failā '/tmp/file.txt' atlasiet 'Local File SQL Injection';
cat /tmp/file.txt
Izvade:
Vietējā faila SQL injekcija
- izgāztuve
Šī funkcija izmanto atlases iemeslu, lai rakstītu failā, neatgriežot izvadi uz ekrānu.
cat /tmp/file.txt
izvēlieties "Sveika pasaule!" dumpfile '/tmp/world';
Izvade:
Vaicājums ir kārtībā, ietekmēta 1 rinda (0,001 sekunde)
Šīs funkcijas var atspējot, atsaucot FILE privilēģiju šādi:
atsaukt failu *.* no 'lietotāja_vārds'@'localhost';
Saistīts: Metasploit rokasgrāmata iesācējiem programmā Kali Linux (ar praktiskiem piemēriem)
4. Atspējot noklusējuma portu
Mēs zinām, ka MySQL pakalpojumi darbojas 3306. portā, un uzbrucēji skenē portus, lai pārbaudītu pakalpojumus, kas darbojas tīklā. Lai pievienotu drošību ar neskaidrību un mainītu noklusējuma MySQL portu, rediģējot porta sistēmas mainīgo tā galvenajā konfigurācijas failā, jums būs jāievada:
vim /etc/mysql/my.cnf
ports=XXXX
sudo pakalpojums mysql restart
5. Izvairieties no aizstājējzīmēm kontu nosaukumos
Kontu nosaukumi pakalpojumā MySQL sastāv no divām daļām, kas ir lietotājs un resursdatora nosaukums "lietotāja_nosaukums"@"resursdatora_nosaukums". Tas ļauj administratoram izveidot kontus lietotājiem ar tādu pašu nosaukumu, kuri savienojas no dažādiem saimniekiem. Tomēr konta nosaukuma resursdatora daļa pieļauj aizstājējzīmju konvencijas, kas var būt piekļuves punkts datubāzei no jebkuras vietas.
Izvēles resursdatora nosaukuma vai IP adreses vērtības izmantošana ir līdzvērtīga 'lietotāja_nosaukums'@'%', kur % atbilst MySQL paraugam, kas atbilst darbībai LIKE, bet % nozīmē jebkuru resursdatora nosaukumu. Tikmēr piekļuve no “192.168.132.%” nozīmē jebkuru mēģinājumu no C klases tīkla. Turklāt ikviens var piekļūt datu bāzei, nosaucot resursdatora daļu kā "192.18.132.mysql.com".
Lai izvairītos no šādiem mēģinājumiem, MySQL ļauj definēt tīkla masku ar resursdatora vērtību, lai identificētu IP adreses tīkla bitus:
client-ip_add & tīkla maska = resursdatora_nosaukums
Sintakse resursdatora nosaukuma izveidei ir host_ip/netmask:
IZVEIDOT LIETOTĀJU 'jhon'@'192.168.132.0/255.255.255.0';
Iepriekš minētā resursdatora vērtība ļauj lietotājam Džons piekļūt datu bāzei no jebkura IP diapazonā no 192.168.132.0-192.168.132.255. Tāpat resursdatora vērtības 192.168.132.0/255.0.0.0, 192.168.132.0/255.255.0.0 ļaus resursdatoriem no A un B klases tīkliem. Lai gan 192.168.132.5 ļaus piekļūt tikai no konkrētā IP.
6. Atspējot skaidru piekļuvi
MySQL lietotājvārds ir vai nu vārds, ar kuru datu bāzes pieņem ienākošos savienojumus, vai arī tukšs lietotājvārds "@"host_name", kas izveido anonīmu lietotāju. Tomēr anonīma lietotāja klātbūtne var piesaistīt uzbrucējus, lai piekļūtu datu bāzes serverim. Turklāt MySQL versijas pirms MySQL 5.7 veido anonīmu lietotāju kopu, un instalēšana pēc versijas jaunināšanas joprojām pievieno šos lietotājus.
atlasiet lietotāju, resursdatoru, paroli no mysql.user, kur lietotājam patīk '';
Varat atzīmēt, ka lietotāja un paroles kolonnas ir tukšas un piekļuve ir ierobežota ar localhost. Tomēr jūs nevēlaties, lai kāds piekļūtu datu bāzei. Izmantojiet šo komandu, lai izdzēstu anonīmus lietotājus:
atmest lietotāju "@"localhost"
skalošanas privilēģijas;
7. Iestatiet kontu, kas nav saknes konts, kā īpašnieku vai grupu
Ne-root lietotāja konta iestatīšana nav saistīta ar MySQL saknes lietotāju. MySQL instalēšana Linux/Unix sistēmās no tar un tar.gz pakotnēm ļauj serverim darboties jebkuram nelabvēlīgam lietotājam. Tas ir drošības trūkums, jo jebkurš lietotājs ar FILE piešķiršanas opciju var rediģēt vai izveidot failus serverī. Tomēr tas atgriež kļūdu, kad lietotājs mēģina tai piekļūt bez -lietotājs=sakne kļūda.
No tā var izvairīties, praktizējot īkšķa noteikumu par piekļuvi datu bāzes serverim kā atsevišķam Linux lietotājam. Lai palaistu mysqld kā parasts Linux lietotājs, apturiet serveri un mainiet lasīšanas/rakstīšanas atļaujas no MySQL servera uz mysql, šādi:
chown -R mysql /ceļš/uz/mysql/datadir
Atveriet MySQL galveno konfigurācijas failu, pievienojiet jaunu mysql lietotāju un restartējiet pakalpojumu, lai izvairītos no nevajadzīgas piekļuves serverim:
vim /etc/mysql/my.cnf
lietotājs=mysql
sudo pakalpojums mysql restart
8. Iestatiet paroli saknes kontam
MySQL instalēšana, izmantojot interaktīvu čaulu Debian bāzes Linux izplatījumos, izveido saknes lietotāja kontu un prasa iestatīt paroli. Tomēr tas nenotiek neinteraktīvās čaulas instalācijā un izplatījumos, kuru pamatā ir Red-Hat. Kā minēts iepriekš, Linux mašīnas lietotājs, kas nav root lietotājs, var piekļūt mysql root lietotāja kontam, izmantojot -lietotājs=sakne opciju. No tā var izvairīties, iestatot paroli šādi:
sudo mysqladmin parole
vim /etc/mysql/my.cnf
parole=
sudo pakalpojums mysql restart
9. Nodrošiniet datu šifrēšanu pārsūtīšanas un atpūtas laikā
Noklusējuma nešifrētā saziņa starp klientu un serveri rada datu pārtveršanas risku, ko varētu veikt jebkurš starpnieks. Tāpat nešifrēti lietotāja dati datu bāzē apdraud lietotāja konfidencialitāti un integritāti. MySQL atbalsta datu šifrēšanu starp klientu un serveri, izmantojot TLS/SSL protokolu, savukārt nešifrēta saziņa ir pieņemama tikai tad, ja abas saziņas puses atrodas vienā tīklā.
MySQL tagad atbalsta šifrēšanu miera stāvoklī, lai aizsargātu serverī saglabātos datus pat tad, ja sistēma ir bojāta.
MySQL uzlabotā drošība: pasargājiet sevi
Ir ļoti svarīgi nodrošināt, lai jūsu tiešsaistes drošības līmenis būtu visaugstākais, un šis raksts sniegs jums dažas noderīgas norādes pareizajā virzienā. Iepriekš minētās darbības ir noderīgas datu bāzes servera aizsardzībai, taču ir svarīgi arī iemācīties piešķirt minimālās atļaujas lietotājiem, kas nav administratīvi.
Izveidojiet savu mySQL datu bāzi, izmantojot tikai teksta redaktoru un šo pamata struktūras izklāstu jeb "shēmu".
Lasiet Tālāk
- Programmēšana
- Drošība
- Programmēšana
- Drošības padomi
- Drošība
Rumaisa ir MUO ārštata rakstniece. Viņa ir nēsājusi daudzas cepures, sākot no matemātiķa līdz informācijas drošības entuziastei, un tagad strādā par SOC analītiķi. Viņas interesēs ir lasīt un rakstīt par jaunām tehnoloģijām, Linux izplatīšanu un jebko, kas saistīts ar informācijas drošību.
Abonējiet mūsu biļetenu
Pievienojieties mūsu biļetenam, lai saņemtu tehniskos padomus, pārskatus, bezmaksas e-grāmatas un ekskluzīvus piedāvājumus!
Noklikšķiniet šeit, lai abonētu