12 meilleures pratiques de sécurité MySQL / MARIADB pour Linux

12 meilleures pratiques de sécurité MySQL / MARIADB pour Linux

Mysql est le système de base de données open source le plus populaire au monde et Mariadb (une fourche de MySQL) est le système de base de données open source qui connaît la croissance la plus rapide au monde. Après avoir installé MySQL Server, il n'est pas sûr dans sa configuration par défaut, et la sécuriser est l'une des tâches essentielles de la gestion générale de la base de données.

Lire aussi: Apprenez MySQL / Mariadb pour les débutants - Partie 1

Cela contribuera au durcissement et à l'augmentation de la sécurité globale du serveur Linux, car les attaquants scannent toujours les vulnérabilités dans n'importe quelle partie d'un système, et les bases de données ont été dans le passé des domaines cibles clés. Un exemple courant est la forçage brute du mot de passe racine pour la base de données MySQL.

Dans ce guide, nous expliquerons utile Mysql / mariadb Meilleures pratiques de sécurité pour Linux.

1. Installation sécurisée de MySQL

Il s'agit de la première étape recommandée après l'installation du serveur MySQL, pour sécuriser le serveur de base de données. Ce script facilite l'amélioration de la sécurité de votre serveur MySQL en vous demandant de:

  • Définissez un mot de passe pour le compte racine, si vous ne l'avez pas réglé pendant l'installation.
  • Désactiver la connexion de l'utilisateur racine à distance en supprimant les comptes racinaires accessibles à l'extérieur de l'hôte local.
  • Supprimer les comptes de l'utilisateur anonyme et la base de données de tests qui peuvent par défaut accessibles par tous les utilisateurs, même les utilisateurs anonymes.
# mysql_secure_installation 

Après l'avoir exécuté, définissez le mot de passe racine et répondez à la série de questions en entrant [Oui / Y] et appuyez sur [Entrer].

Installation sécurisée de MySQL

2. Binding Database Server to Loopback Adresse

Cette configuration restreindra l'accès à partir des machines distantes, il indique au serveur MySQL d'accepter uniquement les connexions à partir du localhost. Vous pouvez le définir dans le fichier de configuration principale.

# vi / etc / mon.cnf [rhel / centos] # vi / etc / mysql / mon.conf [debian / ubuntu] ou # vi / etc / mysql / mysql.confli.d / mysqld.CNF [Debian / Ubuntu] 

Ajouter la ligne suivante ci-dessous sous [mysqld] section.

Bind-Address = 127.0.0.1 

3. Désactiver l'infile local à mysql

Dans le cadre du durcissement de la sécurité, vous devez désactiver local_infile Pour éviter l'accès au système de fichiers sous-jacent à partir de MySQL à l'aide de la directive suivante sous [mysqld] section.

local-infile = 0 

4. Modifier le port par défaut de MySQL

Le Port Variable Définit le numéro de port MySQL qui sera utilisé pour écouter sur les connexions TCP / IP. Le numéro de port par défaut est 3306 mais vous pouvez le changer sous le [mysqld] Section comme indiqué.

Port = 5000 

5. Activer la journalisation MySQL

Les journaux sont l'un des meilleurs moyens de comprendre ce qui se passe sur un serveur, en cas d'attaques, vous pouvez facilement voir toutes les activités liées à l'intrusion à partir de fichiers journaux. Vous pouvez activer la journalisation MySQL en ajoutant la variable suivante sous le [mysqld] section.

log = / var / log / mysql.enregistrer 

6. Définissez l'autorisation appropriée sur les fichiers MySQL

Assurez-vous que vous avez des autorisations appropriées pour tous les fichiers et répertoires de données du serveur MySQL. Le / etc / mon.confli Le fichier ne doit être inscrit que pour root. Cela empêche les autres utilisateurs de modifier les configurations de serveur de base de données.

# chmod 644 / etc / mon.CNF 

7. Supprimer l'historique de la coquille de mysql

Toutes les commandes que vous exécutez sur le shell MySQL sont stockées par le client MySQL dans un fichier d'historique: ~ /.mysql_history. Cela peut être dangereux, car pour tous les comptes d'utilisateurs que vous allez créer, tous les noms d'utilisateur et mots de passe tapés sur le shell seront enregistrés dans le fichier d'historique.

# cat / dev / null> ~ /.mysql_history 

8. N'exécutez pas les commandes mysql à partir de commandes

Comme vous le savez déjà, toutes les commandes que vous tapez sur le terminal sont stockées dans un fichier d'historique, selon le shell que vous utilisez (par exemple ~ /.bash_history pour bash). Un attaquant qui parvient à accéder à ce fichier d'historique peut facilement voir tous les mots de passe enregistrés là-bas.

Il n'est pas fortement recommandé de taper des mots de passe sur la ligne de commande, quelque chose comme ceci:

# mysql -u root -ppassword_ 
Connectez MySQL avec le mot de passe

Lorsque vous vérifiez la dernière section du fichier d'historique des commandes, vous verrez le mot de passe tapé ci-dessus.

# histoire 
Vérifier l'historique des commandes

La façon appropriée de connecter MySQL est.

# mysql -u root -p Entrez le mot de passe: 

9. Définir les utilisateurs de la base de données spécifiques à l'application

Pour chaque application en cours d'exécution sur le serveur, donnez un accès à un utilisateur en charge d'une base de données pour une application donnée. Par exemple, si vous avez un site WordPress, créez un utilisateur spécifique pour la base de données du site WordPress comme suit.

# mysql -u root -p mariaDb [(aucun)]> Créer une base de données osclass_db; MariaDb [(Aucun)]> Créer l'utilisateur 'Osclassdmin' @ 'localhost' identifié par '[Protégé par e-mail]%!2 '; MariaDb [(aucun)]> accorder tous les privilèges sur osclass_db.* À 'osclassdmin' @ 'localhost'; MariaDb [(aucun)]> Privilèges de rinçage; MariaDb [(aucun)]> sortie 

et n'oubliez pas de toujours supprimer des comptes d'utilisateurs qui ne gèrent plus de base de données d'applications sur le serveur.

dix. Utilisez des plugins et des bibliothèques de sécurité supplémentaires

MySQL comprend un certain nombre de plugins de sécurité pour: authentification des tentatives des clients de se connecter à MySQL Server, la validation de mot de passe et la sécurisation de stockage pour des informations sensibles, qui sont toutes disponibles dans la version gratuite.

Vous pouvez en trouver plus ici: https: // dev.mysql.com / doc / Refman / 5.7 / EN / Sécurité-Plugins.html

11. Changer régulièrement des mots de passe mysql

Ceci est un élément commun des conseils d'information / application / système. À quelle fréquence vous faites cela dépendra entièrement de votre politique de sécurité intérieure. Cependant, cela peut empêcher les «snoopers» qui auraient pu suivre votre activité sur une longue période, de l'accès à votre serveur MySQL.

MariaDb [(aucun)]> Utilisez MySQL; MariaDb [(aucun)]> Mettre à jour le jeu de mot de passe = Mot de passe ('Votre mot-d'œuvre') Où user = "root" et host =' localhost '; MariaDb [(aucun)]> Privilèges de rinçage; 

12. Mettre à jour régulièrement le package MySQL Server régulièrement

Il est fortement recommandé de mettre à niveau régulièrement les packages MySQL / MARIADB pour suivre les mises à jour de sécurité et les corrections de bogues, à partir du référentiel du fournisseur. Normalement, les packages dans les référentiels du système d'exploitation par défaut sont obsolètes.

# mise à jour de Yum # Mise à jour apt 

Après avoir apporté des modifications au serveur MySQL / MARIADB, redémarrez toujours le service.

# systemctl redémarrer mariaDB # rhel / centos # systemctl redémarrer mysql # debian / ubuntu 

Lire aussi: 15 Conseils de réglage et d'optimisation des performances MySQL / MARIADB utiles

C'est tout! Nous aimons vous entendre via le formulaire de commentaire ci-dessous. Partagez avec nous tous les conseils de sécurité MySQL / MARIADB manquants dans la liste ci-dessus.