12 MySQL/MariaDB-suojauksen parasta käytäntöä Linuxille


MySQL on maailman suosituin avoimen lähdekoodin tietokantajärjestelmä ja MariaDB (MySQL:n haara) on maailman nopeimmin kasvava avoimen lähdekoodin tietokantajärjestelmä. MySQL-palvelimen asennuksen jälkeen se on oletuskokoonpanossaan epävarma, ja sen suojaaminen on yksi yleisen tietokannanhallinnan olennaisista tehtävistä.

Lue myös: Opi MySQL/MariaDB aloittelijoille – Osa 1

Tämä parantaa osaltaan yleistä Linux-palvelinturvallisuutta, koska hyökkääjät tarkistavat aina järjestelmän minkä tahansa osan haavoittuvuuksia, ja tietokannat ovat aiemmin olleet keskeisiä kohdealueita. Yleinen esimerkki on MySQL-tietokannan pääkäyttäjän salasanan raa'a pakottaminen.

Tässä oppaassa selitämme hyödyllisiä MySQL/MariaDB-suojauskäytäntöjä Linuxille.

1. Suojattu MySQL-asennus

Tämä on ensimmäinen suositeltava askel MySQL-palvelimen asennuksen jälkeen tietokantapalvelimen suojaamiseksi. Tämä komentosarja helpottaa MySQL-palvelimesi turvallisuuden parantamista pyytämällä sinua:

  • aseta salasana root-tilille, jos et asettanut sitä asennuksen aikana.
  • poista root-käyttäjän etäkirjautuminen käytöstä poistamalla root-tilit, jotka ovat käytettävissä paikallisen isännän ulkopuolelta.
  • poista anonyymit käyttäjätilit ja testaa tietokanta, jota oletusarvoisesti kaikki käyttäjät, myös nimettömät käyttäjät, voivat käyttää.
mysql_secure_installation

Kun se on suoritettu, aseta pääkäyttäjän salasana ja vastaa kysymyksiin kirjoittamalla [Yes/Y] ja paina [Enter].

2. Sido tietokantapalvelin takaisinkytkentäosoitteeseen

Tämä konfiguraatio rajoittaa pääsyä etäkoneista ja käskee MySQL-palvelimen hyväksymään yhteydet vain paikallispalvelimen sisältä. Voit asettaa sen pääasetustiedostossa.

vi /etc/my.cnf	                   [RHEL/CentOS]	
vi /etc/mysql/my.conf                    [Debian/Ubuntu] 
OR
vi /etc/mysql/mysql.conf.d/mysqld.cnf    [Debian/Ubuntu] 

Lisää seuraava rivi alle [mysqld]-osion alle.

bind-address = 127.0.0.1

3. Poista LOCAL INFILE käytöstä MySQL:ssä

Osana tietoturvan vahvistamista sinun on poistettava local_infile käytöstä estääksesi pääsyn taustalla olevaan tiedostojärjestelmään MySQL:stä käyttämällä seuraavaa ohjetta osiossa [mysqld].

local-infile=0

4. Muuta MYSQL-oletusporttia

Portti-muuttuja määrittää MySQL-portin numeron, jota käytetään TCP/IP-yhteyksien kuunteluun. Oletusporttinumero on 3306, mutta voit muuttaa sitä [mysqld]-osiossa kuvan mukaisesti.

Port=5000

5. Ota MySQL-kirjaus käyttöön

Lokit ovat yksi parhaista tavoista ymmärtää, mitä palvelimella tapahtuu. Hyökkäysten sattuessa voit helposti nähdä kaikki tunkeutumiseen liittyvät toiminnot lokitiedostoista. Voit ottaa MySQL-kirjauksen käyttöön lisäämällä seuraavan muuttujan [mysqld]-osioon.

log=/var/log/mysql.log

6. Aseta MySQL-tiedostoille sopiva käyttöoikeus

Varmista, että sinulla on asianmukaiset käyttöoikeudet kaikille mysql-palvelintiedostoille ja tietohakemistoille. /etc/my.conf-tiedoston tulisi olla vain pääkäyttäjän kirjoitettavissa. Tämä estää muita käyttäjiä muuttamasta tietokantapalvelimen asetuksia.

chmod 644 /etc/my.cnf

7. Poista MySQL Shell -historia

MySQL-asiakasohjelma tallentaa kaikki MySQL-kuoressa suorittamasi komennot historiatiedostoon: ~/.mysql_history. Tämä voi olla vaarallista, koska kaikkien luomiesi käyttäjätilien kohdalla kaikki kuoreen kirjoitetut käyttäjänimet ja salasanat tallennetaan historiatiedostoon.

cat /dev/null > ~/.mysql_history

8. Älä suorita MySQL-komentoja komentoriviltä

Kuten jo tiedät, kaikki terminaaliin kirjoittamasi komennot tallennetaan historiatiedostoon, riippuen käyttämästäsi komentotulkista (esimerkiksi ~/.bash_history bashille). Hyökkääjä, joka onnistuu pääsemään tähän historiatiedostoon, näkee helposti kaikki sinne tallennetut salasanat.

Ei ole suositeltavaa kirjoittaa salasanoja komentoriville, vaikkapa näin:

mysql -u root -ppassword_

Kun tarkistat komentohistoriatiedoston viimeisen osan, näet yllä kirjoitetun salasanan.

history 

Sopiva tapa yhdistää MySQL on.

mysql -u root -p
Enter password:

9. Määritä sovelluskohtaiset tietokannan käyttäjät

Anna pääsy kullekin palvelimella toimivalle sovellukselle vain käyttäjälle, joka on vastuussa tietyn sovelluksen tietokannasta. Jos sinulla on esimerkiksi wordpress-sivusto, luo Wordpress-sivustotietokantaan tietty käyttäjä seuraavasti.

mysql -u root -p
MariaDB [(none)]> CREATE DATABASE osclass_db;
MariaDB [(none)]> CREATE USER 'osclassdmin'@'localhost' IDENTIFIED BY 'osclass@dmin%!2';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON osclass_db.* TO 'osclassdmin'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

ja muista aina poistaa käyttäjätilit, jotka eivät enää hallitse palvelimen sovellustietokantoja.

10. Käytä muita suojauslaajennuksia ja kirjastoja

MySQL sisältää joukon suojauslaajennuksia: asiakkaiden todennusyritykset muodostaa yhteys mysql-palvelimeen, salasanan vahvistaminen ja arkaluontoisten tietojen tallennustilan turvaaminen, jotka ovat kaikki saatavilla ilmaisessa versiossa.

Löydät lisää täältä: https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html

11. Vaihda MySQL-salasanat säännöllisesti

Tämä on yleinen tieto/sovellus/järjestelmän turvallisuusneuvonta. Kuinka usein teet tämän, riippuu täysin sisäisestä turvallisuuspolitiikastasi. Se voi kuitenkin estää "huijareita", jotka ovat saattaneet seurata toimintaasi pitkän ajan, pääsemästä mysql-palvelimellesi.

MariaDB [(none)]> USE mysql;
MariaDB [(none)]> UPDATE user SET password=PASSWORD('YourPasswordHere') WHERE User='root' AND Host = 'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

12. Päivitä MySQL Server Package säännöllisesti

On erittäin suositeltavaa päivittää mysql/mariadb-paketit säännöllisesti, jotta pysyt ajan tasalla toimittajan arkistosta tulevien tietoturvapäivitysten ja virheenkorjausten kanssa. Normaalisti oletuskäyttöjärjestelmän arkistoissa olevat paketit ovat vanhentuneita.

yum update
apt update

Kun olet tehnyt muutoksia mysql/mariadb-palvelimeen, käynnistä palvelu aina uudelleen.

systemctl restart mariadb		#RHEL/CentOS
systemctl restart mysql		#Debian/Ubuntu

Lue myös: 15 hyödyllistä MySQL/MariaDB-suorituskyvyn viritys- ja optimointivinkkiä

Siinä kaikki! Haluamme kuulla sinusta alla olevan kommenttilomakkeen kautta. Jaa kanssamme kaikki MySQL/MariaDB-tietoturvavinkit, jotka puuttuvat yllä olevasta luettelosta.