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.