MySQL on üks populaarsemaid relatsiooniliste andmebaaside haldussüsteeme, mis on jackpot ründajatele, kes üritavad andmebaasidesse hiilida. Äsja installitud MySQL-i andmebaasiserveris võib olla palju turvaauke ja lünki. Kuna andmete turvalisus on väga oluline, on kohustuslik mõista MySQL-i turvalisuse kõiki aspekte.
See artikkel keskendub teie MySQL-i andmebaasi auditeerimisele ja turvalisusele ning annab üheksa näpunäidet selle turvalisuse tugevdamiseks.
1. Vältige tarbetuid privileegide toetusi
MySQL lubab mitmeid privileegide avaldusi, mis ebavajalikule ebasoodsas olukorras olevale kasutajale määratuna võivad viia failide lugemiseni/kirjutamiseni ja teiste kasutajaõiguste õõnestamiseni. Mõned potentsiaalselt riskantsemad privileegiavaldused on FILE, GRANT, SUPER, ALTER, DELETE, SHUTDOWN ja nii edasi. Nende kohta saate rohkem lugeda MySQL-i ametlikust dokumentatsioonist. Seetõttu ärge määrake mitteadministreerivatele kontodele superkasutaja õigusi, nagu FILE, GRANT, SUPER ja PROCESS. Saate need mittevajalikud globaalsed, andmebaasi- ja tabelitaseme load tühistada järgmiselt.
REVOKE ALL ON *.* FROM 'kasutaja_nimi'@'hosti_nimi'; #Globaalsed privileegid
REVOKE CREATE, Drop ON andmebaasi_nimi.* 'kasutaja_nimi'@'hosti_nimi'; #Andmebaasi õigused
REVOKE INSERT, UPDATE, DELETE ON andmebaasi_nimi.tabeli_nimi 'kasutaja_nimi'@'hosti_nimi'; #Tabeliõigused
loputusõigused;
2. Piirake kaugsisselogimist
Kaugjuurdepääs hõlbustab andmebaasiadministraatorite tööd, kuid see ohustab serverit võimalike haavatavuste ja ärakasutuste eest. Saate keelata kaugjuurdepääsu igat tüüpi MySQL-i kasutajakontode jaoks, lisades põhikonfiguratsioonifaili vahelejätmise võrgumuutuja ja taaskäivitades teenuse.
[mysqld]
vahelejätmine
sudo teenus mysql taaskäivitamine
Samamoodi peate keelama juurkonto juurdepääsu, kui mitte kõik, et piirata juurkonto kaugsisselogimist. See ettevaatusabinõu takistab MySQL-i juurkonto jõhkrat sundimist.
mysql> kustuta failist mysql.user, kus user='root' ja hosti pole ('localhost', '127.0.0.1', '::1'); mysql> loputusõigused;
3. Funktsioonide keelamine (load_file, outfile, dumpfile)
Teine ettevaatusabinõu MySQL-i kaitsmiseks kohaliku failisüstimise eest on funktsioonide keelamine, millele pääseb juurde ainult FILE-i lubade privileegi kaudu. FAIL on suvand, mis võimaldab globaalsete käsuvalikutega madalate privileegidega kasutajatel lugeda või kirjutada serverisse faile.
- load_file
Funktsioon load_file laadib faili sisu serverist stringina. Näiteks laadib järgmine käsk kogu sisu saidilt /etc/passwd faili järgmiselt:
vali load_file('/etc/passwd')
- outfile
Samamoodi kirjutab outfile funktsioon sisu kohaliku serveri failidesse. Ründajad saavad seda funktsiooni kasutada serveris olevasse faili kasuliku koormuse kirjutamiseks järgmiselt.
vali väljundfaili '/tmp/file.txt' 'Local File SQL Injection';
cat /tmp/file.txt
Väljund:
Kohaliku faili SQL-i süstimine
- prügifail
See funktsioon kasutab faili kirjutamiseks põhjuse valimist ilma väljundit ekraanile tagastamata.
cat /tmp/file.txt
vali "Tere maailm!" dumpfaili '/tmp/maailm';
Väljund:
Päring OK, mõjutatud 1 rida (0,001 sek)
Saate need funktsioonid keelata, tühistades FILE-õiguse järgmiselt.
tühista faili *.* saidilt 'kasutaja_nimi'@'localhost';
Seotud: Kali Linuxi metasploiti juhend algajatele (koos praktiliste näidetega)
4. Keela vaikeport
Teame, et MySQL-i teenused töötavad pordis 3306 ja ründajad skannivad porte, et kontrollida võrgus töötavaid teenuseid. Turvalisuse lisamiseks ja MySQL-i vaikepordi muutmiseks, muutes selle põhikonfiguratsioonifailis pordisüsteemi muutujat, peate sisestama järgmise:
vim /etc/mysql/my.cnf
port = XXXX
sudo teenus mysql taaskäivitamine
5. Vältige kontonimedes metamärke
MySQL-i kontonimed koosnevad kahest osast, milleks on kasutaja ja hostinimi "kasutaja_nimi"@"hosti_nimi". See võimaldab administraatoril luua kontosid sama nimega kasutajatele, kes loovad ühenduse erinevatest hostidest. Konto nime hostiosa lubab aga metamärke, mis võivad olla juurdepääsupunktiks andmebaasile kõikjalt.
Masinanime või IP-aadressi väärtuse valikuline kasutamine on samaväärne 'kasutaja_nimi'@'%'ga, kus % vastab MySQL-i mustrile, mis vastab toimingule LIKE, ja % tähendab mis tahes hostinime. Samal ajal tähendab juurdepääs võrgult '192.168.132.%' mis tahes katset klassi C võrgust. Pealegi pääseb igaüks andmebaasile juurde, nimetades hostiosa nimeks '192.18.132.mysql.com'.
Selliste katsete vältimiseks võimaldab MySQL määrata IP-aadressi võrgubittide tuvastamiseks hostiväärtusega võrgumaski:
client-ip_add & võrgumask = hosti_nimi
Hostinime loomise süntaks on host_ip/netmask:
LOO KASUTAJA 'jhon'@'192.168.132.0/255.255.255.0';
Ülaltoodud hosti väärtus võimaldab kasutajal John juurdepääsuks andmebaasile mis tahes IP-st vahemikus 192.168.132.0-192.168.132.255. Samamoodi võimaldavad hostiväärtused 192.168.132.0/255.0.0.0, 192.168.132.0/255.255.0.0 A- ja B-klassi võrkude hoste. Kuigi 192.168.132.5 võimaldab juurdepääsu ainult konkreetselt IP-lt.
6. Keela selge juurdepääs
MySQL-i kasutajanimi on kas nimi, millega andmebaasid aktsepteerivad sissetulevaid ühendusi, või tühi kasutajanimi "@"hosti_nimi", mis loob anonüümse kasutaja. Anonüümse kasutaja olemasolu võib aga võimendada ründajaid andmebaasiserverile juurdepääsuks. Pealegi loovad MySQL-i versioonid enne MySQL 5.7 anonüümset kasutajate kogumit ja installimine pärast versiooniuuendust lisab need kasutajad ikkagi juurde.
vali kasutaja, host, parool saidilt mysql.user, kus kasutajale meeldib '';
Võite märkida, et kasutaja ja parooli veerud on tühjad ning juurdepääs on piiratud localhostiga. Kuid te ei soovi, et keegi andmebaasile ligi pääseks. Anonüümsete kasutajate kustutamiseks kasutage järgmist käsku:
eemalda kasutaja " "@"localhost"
loputusõigused;
7. Määrake omanikuks või rühmaks mitte-juurkonto
Mitte-juurkasutaja konto seadistamine ei ole seotud MySQL-i juurkasutajaga. MySQL-i installimine Linuxi/Unixi süsteemidesse tar ja tar.gz pakettidest võimaldab serveril käitada mis tahes vähekindlustatud kasutaja. See on turvapuudus, kuna iga kasutaja, kellel on suvand FILE, saab faile serveris redigeerida või luua. Siiski tagastab see veateate, kui kasutaja proovib sellele juurde pääseda ilma -kasutaja=juur viga.
Seda saate vältida, kui järgite rusikareeglit, mille kohaselt pääsete andmebaasiserverile juurde eraldi Linuxi kasutajana. Mysqldi käitamiseks tavalise Linuxi kasutajana peatage server ja muutke lugemise/kirjutamise õigused MySQL-serverist mysql-iks järgmiselt:
chown -R mysql /tee/to/mysql/datadir
Avage MySQL-i põhikonfiguratsioonifail, lisage uus mysql-i kasutaja ja taaskäivitage teenus, et vältida mittevajalikku juurdepääsu serverile:
vim /etc/mysql/my.cnf
user=mysql
sudo teenus mysql taaskäivitamine
8. Seadke juurkonto parool
MySQL-i installimine interaktiivse kesta kaudu Debianil põhinevates Linuxi distributsioonides loob juurkasutaja konto ja palub teil määrata parooli. Kuid seda ei juhtu mitteinteraktiivse kesta installimise ja Red-Hat-põhiste distributsioonide puhul. Nagu eespool öeldud, pääseb Linuxi masina mittejuurkasutaja ligipääsu mysql root kasutajakontole, kasutades -kasutaja=juur valik. Saate seda vältida, määrates parooli järgmiselt.
sudo mysqladmin parool
vim /etc/mysql/my.cnf
parool=
sudo teenus mysql taaskäivitamine
9. Tagage andmete krüpteerimine edastamisel ja puhkeolekus
Kliendi ja serveri vaheline vaikimisi krüpteerimata side kujutab endast ohtu, et kõik vahepealsed isikud võivad andmeid pealt kuulata. Samamoodi ohustavad andmebaasis olevad krüptimata kasutajaandmed kasutaja konfidentsiaalsust ja terviklikkust. MySQL toetab andmete krüptimist kliendi ja serveri vahel TLS/SSL-protokolli kaudu, samas kui krüptimata side on vastuvõetav ainult siis, kui mõlemad suhtlevad pooled on samas võrgus.
MySQL toetab nüüd krüptimist puhkeolekus, et kaitsta serverisse salvestatud andmeid isegi siis, kui süsteemi rikutakse.
MySQL Advanced Security: kaitske ennast
Veebiturbe kõrgeima taseme tagamine on ülioluline ja see artikkel annab teile kasulikke näpunäiteid õiges suunas. Ülaltoodud sammud on kasulikud teie andmebaasiserveri turvalisuse tagamiseks, kuid oluline on ka õppida, kuidas määrata minimaalsed õigused administraatorivabadele kasutajatele.
Looge oma mySQL-i andmebaas ainult tekstiredaktoriga ja selle põhistruktuuri skeemiga.
Loe edasi
- Programmeerimine
- Turvalisus
- Programmeerimine
- Turvanõuanded
- Turvalisus
Rumaisa on MUO vabakutseline kirjanik. Ta on kandnud palju mütse, alates matemaatikust kuni infoturbe entusiastini, ja töötab nüüd SOC analüütikuna. Tema huvid hõlmavad uute tehnoloogiate, Linuxi distributsioonide ja kõige muu infoturbega seotud lugemist ja kirjutamist.
Liituge meie uudiskirjaga
Liituge meie uudiskirjaga tehniliste näpunäidete, arvustuste, tasuta e-raamatute ja eksklusiivsete pakkumiste saamiseks!
Tellimiseks klõpsake siin