Mysql
 sql >> Base de données >  >> RDS >> Mysql

Database Security 101 :Sécurité dans les bases de données Open Source

La sécurité des données est l'un des aspects les plus importants de l'administration d'une base de données. Selon la structure organisationnelle, si vous gérez la base de données de production, vous devez surveiller l'accès et l'utilisation non autorisés. Cela s'applique également à l'hôte sous-jacent. Dans ce blog, nous allons expliquer la sécurité dans les bases de données open source.

Sécurité générale

Après avoir installé le logiciel de base de données, nous devons effectuer quelques vérifications préalables pour éviter les erreurs de sécurité les plus courantes.

Les consignes générales sont les suivantes :

  • Ne donnez jamais à personne un accès root/admin à d'autres ! C'est essentiel.

  • Découvrez comment fonctionne le système de privilèges d'accès à la base de données. N'accordez pas plus de privilèges que nécessaire. N'accordez jamais de privilèges à tous les hôtes.

  • Ne stockez pas de mots de passe en clair dans votre base de données. Au lieu d'utiliser SHA2() ou une autre fonction de hachage unidirectionnelle et de stocker la valeur de hachage.

  • N'utilisez pas les ports par défaut et assurez-vous que le port choisi n'est pas accessible depuis un hôte non approuvé.

  • Placez la base de données open source derrière un pare-feu. Cela vous protège d'au moins 50 % de tous les types d'exploits dans n'importe quel logiciel.

Contrôle d'accès et gestion de compte

L'une des principales fonctions de la base de données est d'authentifier un utilisateur qui se connecte à partir d'un hôte donné et d'associer cet utilisateur à des privilèges sur une base de données. Pour contrôler quels utilisateurs peuvent se connecter, chaque compte peut se voir attribuer des identifiants d'authentification tels qu'un mot de passe.
 

Rôles utilisateur 

Un rôle de base de données est un ensemble de privilèges pouvant être attribués à un ou plusieurs utilisateurs. Dans les bases de données open source modernes, la majorité des utilisateurs ont des rôles prédéfinis.

Gestion des mots de passe 

Pour accéder à la base de données, les utilisateurs doivent s'authentifier avec un nom d'utilisateur et un mot de passe. La base de données applique la même fonction de hachage sur le mot de passe saisi par l'utilisateur et le compare au hachage stocké dans la base de données. S'ils correspondent tous les deux, l'autorisation est accordée. L'expiration du mot de passe est requise pour que tous les utilisateurs de la base de données changent de mot de passe périodiquement. Et la génération de mot de passe aléatoire est requise pour les mots de passe littéraux explicites spécifiés par l'administrateur. Une chose importante à surveiller est le mauvais suivi du mot de passe/échec d'authentification, il est recommandé d'activer le verrouillage temporaire du compte après trop d'échecs de connexion consécutifs avec un mot de passe incorrect.

Gestion des mots de passe expirés

Une fois le mot de passe expiré, le serveur de base de données déconnecte une connexion client avec mot de passe expiré.

Exemple 
[[email protected] vagrant]# mysql -u severalnies -p
Password: ******
ERROR 1862 (HY000): Your password has expired. To log in you must
change it using a client that supports expired passwords.

 

Limiter les ressources 

Restreindre l'utilisation par un client des ressources du serveur de base de données, en limitant le nombre de connexions simultanées pouvant être établies par n'importe quel compte utilisateur. Par exemple, nous pouvons limiter le nombre de requêtes qu'un utilisateur peut exécuter par heure ou le nombre de fois qu'un utilisateur peut se connecter au serveur par heure.

Connexions chiffrées 

Les bases de données prennent généralement en charge les connexions cryptées entre les clients et le serveur à l'aide de certains protocoles de sécurité. En utilisant SSL, il cryptera les connexions entre les clients et le serveur. Cela transforme les données dans un format illisible sur la couche réseau et évite l'écoute clandestine du réseau. Une fois que nous avons activé SSL sur la base de données, il commence à prendre en charge les connexions cryptées et n'autorisera pas les connexions non cryptées.

Composants et plugins de sécurité

Les composants de sécurité sont facilement intégrés à la base de données. Par exemple, mysql inclut plusieurs composants et plugins qui implémentent des fonctionnalités de sécurité.

Plugins d'authentification - Ces plugins authentifient les tentatives des clients de se connecter au serveur MySQL. Nous pouvons facilement nous intégrer à notre serveur de base de données.

Plugin de mot de passe - Ce plugin vérifie si le mot de passe actuel est fort et rejette tous les mots de passe considérés comme faibles.

Plug-in Keyring - Ce plug-in crypte les espaces de table. Cette technique de cryptage fonctionne sur la base d'une rotation des fichiers clés. Voici un exemple sur la façon de chiffrer MySQL 8.0.

Journal d'audit - L'audit est le processus de surveillance et d'enregistrement de l'activité qui se déroule sur le serveur de base de données. Il est utilisé pour enregistrer qui fait quoi, par ex. opérations de base de données par les utilisateurs, les connexions ou les tentatives de connexion infructueuses. Si vous utilisez un équilibreur de charge pour accéder à la base de données, vous devrez également surveiller cela. Par défaut, les fichiers journaux d'audit sont stockés dans le répertoire de données mysql.

Exemples de journaux 
20210306 02:30:06,centos14,root,localhost,519,1832,QUERY,,'select sleep(5)',0
20210306 02:30:08,centos14,s9smysqlchk,localhost,571,0,DISCONNECT,,,0
20210306 02:30:09,centos14,root,localhost,519,1867,QUERY,,'show schemas',0

Si vous souhaitez stocker les fichiers journaux d'audit à différents endroits, vous pouvez ajouter ce paramètre dans votre fichier de configuration "server_audit_file_path".

Surveillance des journaux - La surveillance des journaux offre à l'équipe d'exploitation un plus grand niveau de visibilité sur l'environnement de la base de données, qui comprend les instances de base de données mais également les équilibreurs de charge. Il aide à identifier les anomalies, quand ces anomalies se produisent et la fréquence à laquelle elles se produisent.

Plug-in de validation de mot de passe

Le mot de passe est comme des mots, des chiffres et une chaîne de caractères. Côté base de données et côté serveur, le nom d'utilisateur et le mot de passe étaient nécessaires pour certains accès. Par exemple, si le mot de passe est fourni en tant que valeur en texte clair, le plugin validate_password vérifie le mot de passe par rapport à la politique de mot de passe actuelle et rejette le mot de passe s'il est faible.

La validate_password_policy a trois valeurs LOW, MEDIUM ou STRONG. La valeur LOW vérifie uniquement la longueur du mot de passe, la politique MEDIUM ajoute certaines conditions et la politique STRONG ajoute la condition selon laquelle les sous-chaînes de mot de passe composées de 4 caractères ou plus ne doivent pas correspondre aux mots d'un fichier de dictionnaire qui peut être spécifié en modifiant la variable validate_password_dictionary_file.

Plug-in LDAP

Le plug-in LDAP permet au serveur de base de données d'accepter les connexions des utilisateurs définis dans les annuaires LDAP. Dans l'authentification LDAP, les plug-ins côté client et côté serveur communiquent le mot de passe en texte clair. Une connexion sécurisée entre le client et le serveur est recommandée pour éviter l'exposition du mot de passe. Si le nom d'utilisateur du client et le nom d'hôte ne correspondent pas, la base de données rejettera la connexion.

 La configuration LDAP est très simple dans ClusterControl. Dans cet article, nous avons expliqué les étapes de configuration à l'aide de ClusterControl.

Sécuriser les sauvegardes de bases de données 

Les sauvegardes de données sont importantes lorsqu'il s'agit de protéger vos données. Il est encore plus important de s'assurer que vos sauvegardes sont sécurisées et disponibles pour une récupération plus rapide. ClusterControl fournit une prise en charge complète du processus de gestion des sauvegardes, y compris le cryptage des fichiers de sauvegarde à l'aide de l'algorithme de cryptage AES-256 avant de les expédier hors site.

Accès VPN au réseau hôte de saut 

Pour accéder à la base de données open source du réseau privé depuis le local, la meilleure méthode consiste à utiliser le VPN. Le VPN offre la confidentialité et la sécurité aux utilisateurs pour établir une connexion réseau privée sur un réseau public. Un hôte de saut est un hôte intermédiaire ou une passerelle SSH pour accéder à des serveurs de réseau distants. Le serveur de saut agit comme un intermédiaire pour connecter les deux extrémités, ce qui en fait un hôte "de saut" pour accéder à l'autre côté. C'est l'un des moyens populaires de sécuriser le serveur du monde extérieur. Nous pouvons utiliser le tunnel SSH pour accéder à un réseau distant de manière sécurisée, ce qui nécessite moins d'efforts que la configuration d'un serveur VPN.

Gestion de l'accès à la base de données via Jump Host

Pour accéder aux serveurs de base de données de production de manière plus sécurisée, un serveur de saut dédié est requis. Ce serveur de saut dédié permet d'accéder à un réseau privé à partir d'un réseau externe ou public, tel qu'Internet. Il fournit une approche à plusieurs niveaux permettant à tout utilisateur d'accéder à votre réseau privé, ce qui minimise les risques d'attaque potentielle du serveur.

Comment pouvons-nous y parvenir ?

La meilleure pratique consiste à configurer un serveur de saut pour se connecter à vos bases de données à partir d'une machine Linux, même si l'instance de base de données se trouve sur un réseau privé. Après avoir créé l'hôte Jump, suivez les instructions ci-dessous,

  • Restreindre l'accès public sur vos bases de données avec des sous-réseaux privés.

  • Restreindre la passerelle Internet dans les tables de routage.

  • Créez un nouveau VPC ou ajoutez votre hôte de saut au même VPC que votre instance de base de données. Ajoutez ensuite une passerelle Internet à votre serveur de saut avec des sous-réseaux publics.

  • Autoriser uniquement des ports de base de données spécifiques aux adresses IP requises.

Ensuite, nous pouvons créer un tunnel SSH pour accéder à un serveur de base de données de manière sécurisée.

SELinux

SELinux est un ensemble de modifications du noyau et d'outils d'espace utilisateur et il a quelques modules de politique. Les modules de politique sont des contextes SELinux pour définir des règles sur la façon dont les processus, fichiers, ports et autres objets système interagissent les uns avec les autres. L'interaction entre les objets système n'est autorisée que si une règle de politique le permet.

Les utilisateurs du système ignoreront largement SELinux. Seuls les administrateurs système doivent déterminer le degré de rigueur d'une politique à mettre en œuvre pour leur environnement de serveur. Ce détail donne au noyau SELinux un contrôle complet et granulaire sur l'ensemble du système.