MySQL on yksi suosituimmista relaatiotietokannan hallintajärjestelmistä, joka on jättipotti hyökkääjille, jotka yrittävät livahtaa tietokantoihin. Äskettäin asennetussa MySQL-tietokantapalvelimessa voi olla monia haavoittuvuuksia ja porsaanreikiä. Koska tietoturva on erittäin tärkeää, on pakollista ymmärtää kaikki MySQL-turvallisuuden näkökohdat.

Tämä artikkeli keskittyy MySQL-tietokantasi tarkastukseen ja turvallisuuteen ja tarjoaa yhdeksän vinkkiä sen turvallisuuden vahvistamiseen.

1. Vältä tarpeettomia etuoikeusapurahoja

MySQL sallii useita käyttöoikeuslausekkeita, jotka tarpeettomasti heikommassa asemassa olevalle käyttäjälle määrättynä voivat johtaa tiedostojen lukemiseen/kirjoittamiseen ja muiden käyttäjien oikeuksien horjuttamiseen. Jotkut potentiaalisesti vaarallisimmista käyttöoikeuslausekkeista ovat FILE, GRANT, SUPER, ALTER, DELETE, SHUTDOWN ja niin edelleen. Voit lukea näistä lisää MySQL: n virallisesta dokumentaatiosta. Älä siksi anna pääkäyttäjän oikeuksia, kuten FILE, GRANT, SUPER ja PROCESS, muille kuin järjestelmänvalvojille. Voit peruuttaa nämä tarpeettomat yleiset, tietokanta- ja taulukkotason käyttöoikeudet seuraavasti:

instagram viewer

REVOKE ALL ON *.* FROM 'käyttäjänimi'@'isäntänimi'; #Maailmanlaajuiset etuoikeudet
REVOKE CREATE, Drop ON tietokannan_nimi.* FROM 'käyttäjänimi'@'isäntänimi'; #Tietokannan käyttöoikeudet
PERUUTA LISÄYS, PÄIVITYS, POISTA TIEDOSTA tietokannan_nimi.taulukon_nimi FROM 'käyttäjänimi'@'isäntänimi'; #Pöytäoikeudet
huuhtele oikeudet;

2. Rajoita etäkirjautumisia

Etäkäyttö helpottaa tietokannan ylläpitäjien työtä, mutta se vaarantaa palvelimen mahdollisille haavoittuvuuksille ja hyväksikäytöille. Voit poistaa etäkäytön kaikentyyppisiltä MySQL-käyttäjätileiltä lisäämällä verkkomuuttujan päämääritystiedostoon ja käynnistämällä palvelun uudelleen.

[mysqld]
hypätä verkkoon
sudo-palvelu mysql käynnistyy uudelleen

Samoin sinun on poistettava pääkäyttäjän käyttöoikeus, jos et kaikki, rajoittaaksesi pääkäyttäjän etäkirjautumisia. Tämä varotoimenpide estää MySQL-juuritilin raa'an pakottamisen.

mysql> poista tiedostosta mysql.user, jossa user='root' ja isäntä ei sisällä ('localhost', '127.0.0.1', '::1'); mysql> huuhtele oikeudet; 

3. Poista toiminnot käytöstä (load_file, outfile, dumpfile)

Toinen varotoimenpide MySQL: n suojaamiseksi paikallista tiedostojen lisäämistä vastaan ​​on poistaa käytöstä toiminnot, jotka ovat käytettävissä vain FILE-lupaoikeuden kautta. FILE on vaihtoehto, jonka avulla heikot käyttäjät, joilla on yleiset komentoasetukset, voivat lukea tai kirjoittaa tiedostoja palvelimelle.

  • load_file

load_file-funktio lataa tiedoston sisällön palvelimelta merkkijonona. Esimerkiksi seuraava komento lataa kaiken sisällön osoitteesta /etc/passwd tiedosto seuraavasti:

valitse load_file('/etc/passwd')
  • outfile

Vastaavasti outfile-toiminto kirjoittaa sisällön paikallisen palvelimen tiedostoihin. Hyökkääjät voivat käyttää tätä toimintoa kirjoittaakseen hyötykuorman palvelimella olevaan tiedostoon seuraavasti:

valitse "Local File SQL Injection" outfile "/tmp/file.txt";
cat /tmp/file.txt

Lähtö:

Paikallinen tiedosto SQL-injektio
  • dump-tiedosto

Tämä toiminto käyttää valintaperustetta kirjoittaakseen tiedostoon palauttamatta tulostetta näytölle.

cat /tmp/file.txt
valitse "Hei maailma!" dump-tiedostoon '/tmp/world';

Lähtö:

Kysely OK, vaikuttaa 1 riviin (0,001 s)

Voit poistaa nämä toiminnot käytöstä poistamalla FILE-oikeudet seuraavasti:

peruuta TIEDOSTO *.* osoitteesta 'user_name'@'localhost';

Aiheeseen liittyvä: Aloittelijan opas Metasploitiin Kali Linuxissa (käytännöllisillä esimerkeillä)

4. Poista oletusportti käytöstä

Tiedämme, että MySQL-palvelut toimivat portissa 3306, ja hyökkääjät skannaavat portit tarkistaakseen verkossa toimivat palvelut. Jos haluat lisätä suojausta epäselvästi ja muuttaa MySQL-oletusporttia muokkaamalla porttijärjestelmämuuttujaa sen päämääritystiedostossa, sinun on annettava seuraavat tiedot:

vim /etc/mysql/my.cnf
portti=XXXX
sudo-palvelu mysql käynnistyy uudelleen

5. Vältä jokerimerkkejä tilien nimissä

MySQL: n tilinimet koostuvat kahdesta osasta, jotka ovat käyttäjä ja isäntänimi "käyttäjänimi"@"isäntänimi". Sen avulla järjestelmänvalvoja voi luoda tilejä käyttäjille, joilla on sama nimi ja jotka muodostavat yhteyden eri isännistä. Tilin nimen isäntäosa sallii kuitenkin jokerimerkkejä, jotka voivat olla pääsypiste tietokantaan mistä tahansa.

Isäntänimen tai IP-osoitteen arvon valinnainen käyttö vastaa arvoa 'user_name'@'%', jossa % vastaa MySQL-mallia, joka vastaa LIKE-toimintoa, ja % tarkoittaa mitä tahansa isäntänimeä. Samaan aikaan pääsy '192.168.132.%' tarkoittaa mitä tahansa yritystä luokan C verkosta. Lisäksi kuka tahansa voi käyttää tietokantaa nimeämällä isäntäosan nimellä "192.18.132.mysql.com".

Tällaisten yritysten välttämiseksi MySQL sallii verkkopeitteen määrittämisen isäntäarvolla IP-osoitteen verkkobittien tunnistamiseksi:

client-ip_add & verkkopeite = isäntänimi

Isäntänimen luonti syntaksi on host_ip/netmask:

LUO KÄYTTÄJÄ 'jhon'@'192.168.132.0/255.255.255.0'; 

Yllä oleva isäntäarvo mahdollistaa käyttäjän John päästäksesi tietokantaan mistä tahansa IP-osoitteesta 192.168.132.0-192.168.132.255. Vastaavasti isäntäarvot 192.168.132.0/255.0.0.0, 192.168.132.0/255.255.0.0 sallivat isännät luokkien A ja B verkoista. Vaikka 192.168.132.5 sallii pääsyn vain tietystä IP-osoitteesta.

6. Poista eksplisiittiset käyttöoikeudet

MySQL: n käyttäjätunnus on joko nimi, jolla tietokannat hyväksyvät saapuvat yhteydet, tai tyhjä käyttäjätunnus "@"host_name", joka luo anonyymin käyttäjän. Anonyymin käyttäjän läsnäolo voi kuitenkin saada hyökkääjät käyttämään tietokantapalvelinta. Lisäksi MySQL 5.7:ää edeltävät versiot luovat nimettömän joukon käyttäjiä, ja asennus versiopäivityksen jälkeen lisää näitä käyttäjiä silti.

valitse käyttäjä, isäntä, salasana osoitteesta mysql.user, jossa käyttäjä kuten '';

Huomaa, että käyttäjä- ja salasanasarakkeet ovat tyhjiä ja pääsy on rajoitettu localhostille. Et kuitenkaan halua kenenkään pääsevän tietokantaan. Käytä seuraavaa komentoa poistaaksesi nimettömät käyttäjät:

pudota käyttäjä "@"localhost"
huuhtele oikeudet;

7. Aseta muu kuin juuritili omistajaksi tai ryhmäksi

Ei-root-käyttäjätilin asettaminen ei liity MySQL-juurikäyttäjään. MySQL-asennus Linux/Unix-järjestelmiin tar- ja tar.gz-paketeista mahdollistaa sen, että palvelinta voivat käyttää kaikki vähäosaiset käyttäjät. Tämä on tietoturvahaita, koska kuka tahansa käyttäjä, jolla on FILE-lupavaihtoehto, voi muokata tai luoda tiedostoja palvelimella. Se kuitenkin palauttaa virheilmoituksen, kun käyttäjä yrittää käyttää sitä ilman -käyttäjä=juuri virhe.

Voit välttää tämän noudattamalla peukalosääntöä käyttää tietokantapalvelinta erillisenä Linux-käyttäjänä. Jos haluat käyttää mysqldia tavallisena Linux-käyttäjänä, pysäytä palvelin ja vaihda luku-/kirjoitusoikeudet MySQL-palvelimesta mysql: ksi seuraavasti:

chown -R mysql /polku/mysql/datadir

Avaa MySQL: n päämääritystiedosto, lisää uusi mysql-käyttäjä ja käynnistä palvelu uudelleen välttääksesi tarpeettoman palvelimen käytön:

vim /etc/mysql/my.cnf
user=mysql
sudo-palvelu mysql käynnistyy uudelleen

8. Aseta salasana juuritilille

MySQL-asennus interaktiivisen kuoren kautta Debian-pohjaisissa Linux-jakeluissa luo root-käyttäjätilin ja pyytää sinua asettamaan salasanan. Tätä ei kuitenkaan tapahdu ei-interaktiivisissa shell-asennuksessa ja Red-Hat-pohjaisissa jakeluissa. Kuten yllä todettiin, Linux-koneen ei-root-käyttäjä voi käyttää mysql-root-käyttäjätiliä käyttämällä -käyttäjä=juuri vaihtoehto. Voit välttää sen asettamalla salasanan seuraavasti:

sudo mysqladmin salasana
vim /etc/mysql/my.cnf
salasana =
sudo-palvelu mysql käynnistyy uudelleen

9. Varmista tiedon salaus siirron aikana ja lepotilassa

Oletusarvoinen salaamaton viestintä asiakkaan ja palvelimen välillä aiheuttaa vaaran, että kuka tahansa välimies voi siepata tietoja. Samoin tietokannassa olevat salaamattomat käyttäjätiedot vaarantavat käyttäjän luottamuksellisuuden ja eheyden. MySQL tukee tietojen salausta asiakkaan ja palvelimen välillä TLS/SSL-protokollan kautta, kun taas salaamaton viestintä on hyväksyttävää vain, kun molemmat viestivät osapuolet ovat samassa verkossa.

MySQL tukee nyt levossa olevaa salausta palvelimelle tallennettujen tietojen suojaamiseksi, vaikka järjestelmä rikkoutuisi.

MySQL Advanced Security: Suojaa itseäsi

On erittäin tärkeää varmistaa, että sinulla on korkein verkkoturvallisuus, ja tämä artikkeli on antanut sinulle hyödyllisiä ohjeita oikeaan suuntaan. Yllä olevat vaiheet ovat hyödyllisiä tietokantapalvelimesi suojaamisessa, mutta on myös tärkeää oppia määrittämään vähimmäisoikeudet muille kuin järjestelmänvalvojille.

Aloittelijan opas mySQL-tietokantakaavioiden kirjoittamiseen

Luo oma mySQL-tietokantasi pelkällä tekstieditorilla ja tällä perusrakenteen ääriviivalla tai "skeemalla".

Lue Seuraava

JaaTweetSähköposti
Liittyvät aiheet
  • Ohjelmointi
  • Turvallisuus
  • Ohjelmointi
  • Turvallisuusvinkkejä
  • Turvallisuus
Kirjailijasta
Rumaisa Niazi (15 artikkelia julkaistu)

Rumaisa on freelance-kirjoittaja MUO: ssa. Hän on käyttänyt monia hattuja matemaatikosta tietoturvaharrastajaan, ja hän työskentelee nyt SOC-analyytikkona. Hänen kiinnostuksensa kuuluu lukeminen ja kirjoittaminen uusista teknologioista, Linux-jakeluista ja kaikesta tietoturvaan liittyvästä.

Lisää Rumaisa Niazilta

tilaa uutiskirjeemme

Liity uutiskirjeemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e-kirjoja ja eksklusiivisia tarjouksia!

Klikkaa tästä tilataksesi