编程知识 cdmana.com

Introduction au module de contrôle de Connexion MySQL

Préface:

Lorsque la connexion à la base de données a échoué trop de fois,MySQL La connexion sera - t - elle limitée?Comment le serveur de base de données devrait - il faire face au piratage violent?Cet article est présenté ci - dessous. MySQL Connectez le module de contrôle dans,Apprenez le rôle de ce plug - in ensemble.

1.Contrôle de la connexion(connection_control)Introduction au plug - in

MySQL Le serveur contient une bibliothèque de plug - ins,Différents types de plug - ins peuvent être installés sur mesure.connection_control Le plug - in en fait partie,Utilisé principalement pour contrôler le délai de réponse du client après un certain nombre de défaillances consécutives de l'opération de connexion.Le plug - in peut efficacement prévenir le risque de connexion violente du client.Le plug - in contient les deux composants suivants:

  • CONNECTION_CONTROL:Utilisé pour contrôler le nombre d'échecs de connexion et le délai de réponse.
  • CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS:Enregistrer les actions qui ont échoué à la connexion à information_schemaDans la Bibliothèque système.

Le nom de base du fichier plug - in de contrôle de connexion est connection_control .Les suffixes de noms de fichiers varient d'une plate - forme à l'autre(Pour Unix Et les classes Unix Le système est .so ,Pour Windows Pour .dll ).En bas Linux Exemple de système pour installer connection_control Plug - in,Windows Le système doit simplement .so Modifier comme suit: .dll C'est tout..

# Installation dynamique connection_control Plug - in
mysql> INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';
Query OK, 0 rows affected (0.04 sec)

mysql> INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';
Query OK, 0 rows affected (0.01 sec)

# Vérifier l'état du plug - in
mysql> SELECT
    -> PLUGIN_NAME,PLUGIN_STATUS 
    -> FROM
    -> INFORMATION_SCHEMA.PLUGINS 
    -> WHERE
    -> PLUGIN_NAME LIKE 'connection%';
+------------------------------------------+---------------+
| PLUGIN_NAME                              | PLUGIN_STATUS |
+------------------------------------------+---------------+
| CONNECTION_CONTROL                       | ACTIVE        |
| CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS | ACTIVE        |
+------------------------------------------+---------------+

# Une fois l'installation terminée Vous pouvez voir les variables pertinentes du système
mysql> show variables like 'connection_control%';
+-------------------------------------------------+------------+
| Variable_name                                   | Value      |
+-------------------------------------------------+------------+
| connection_control_failed_connections_threshold | 3          |
| connection_control_max_connection_delay         | 2147483647 |
| connection_control_min_connection_delay         | 1000       |
+-------------------------------------------------+------------+
Copier le Code

Comme vous pouvez le voir,,L'installation du plug - in est encore simple,Mais qu'est - ce que ce plug - in fait exactement??Expliquons d'abord les variables pertinentes du système.:

  • connection_control_failed_connections_threshold:Nombre de tentatives consécutives d'échec autorisées pour le compte.Par défaut 3 ,Indique que lorsque la connexion échoue 3 Activer le contrôle de connexion après,0 Indique qu'il n'est pas ouvert.
  • connection_control_max_connection_delay:Délai maximal de défaillance de la connexion au - delà du seuil(En millisecondes),Par défaut 2147483647 MS,Environ. 25 Oh, mon Dieu..
  • connection_control_min_connection_delay:Délai minimal de défaillance de la connexion au - delà du seuil(En millisecondes),Par défaut 1000 MS,C'est - à - dire: 1 Secondes.

Jusqu'ici.,Vous avez peut - être compris. connection_control Le rôle du plugin,C'est - à - dire qu'après un certain nombre d'échecs consécutifs de connexion du client à la base de données,Le serveur a un délai de réponse,Plus il y a d'échecs consécutifs,Plus le délai de réponse est long.

2.Expérience de contrôle de connexion

Faisons une expérience concrète.,Pour des résultats expérimentaux,Le seuil de défaillance est fixé ici à 10 ,Délai minimal fixé à 1 Minutes,C'est - à - dire après dix défaillances consécutives de la connexion,Le délai de réponse le plus court est 1 Minutes,Maintenant, on va essayer d'entrer le mauvais mot de passe.:

# État initial
mysql> show variables like 'connection_control%';
+-------------------------------------------------+------------+
| Variable_name                                   | Value      |
+-------------------------------------------------+------------+
| connection_control_failed_connections_threshold | 10         |
| connection_control_max_connection_delay         | 2147483647 |
| connection_control_min_connection_delay         | 60000      |
+-------------------------------------------------+------------+
3 rows in set (0.01 sec)

mysql> SELECT * FROM information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;
Empty set (0.00 sec)

# Erreur intentionnelle de mot de passe
[root@localhost ~]# mysql -utestuser -p123
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'testuser'@'localhost' (using password: YES)

# Affichage des enregistrements d'échec
mysql> SELECT * FROM information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;
+----------------+-----------------+
| USERHOST       | FAILED_ATTEMPTS |
+----------------+-----------------+
| 'testuser'@'%' |               1 |
+----------------+-----------------+
1 row in set (0.00 sec)

# Lorsque le nombre de défaillances consécutives dépasse le seuil La reconnexion entraîne un retard C'est - à - dire que le mot de passe ne sera retourné qu'après un certain délai.
mysql> SELECT * FROM information_schema.CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;
+----------------+-----------------+
| USERHOST       | FAILED_ATTEMPTS |
+----------------+-----------------+
| 'testuser'@'%' |              10 |
+----------------+-----------------+
mysql> show processlist;
+---------+----------+--------------------+--------------------+---------+-------+--------------------------------------+------------------+
| Id      | User     | Host               | db                 | Command | Time  | State                                | Info             |
+---------+----------+--------------------+--------------------+---------+-------+--------------------------------------+------------------+
| 1817003 | root     | localhost          | NULL               | Query   |     0 | starting                             | show processlist |
| 1817091 | testuser | localhost          | NULL               | Connect |    16 | Waiting in connection_control plugin | NULL             |
+---------+----------+--------------------+--------------------+---------+-------+--------------------------------------+------------------+
Copier le Code

Dans des conditions normales,L'entrée d'un mauvais mot de passe renvoie immédiatement une erreur,Lorsque le nombre de défaillances consécutives atteint le seuil,Essayez de vous connecter à nouveau,La réponse sera retardée,C'est comme s'ils étaient coincés.,L'erreur n'est retournée qu'après la fin du délai.information_schema Le tableau de la Bibliothèque système enregistre le nom d'utilisateur et le nombre d'échecs de connexion échoués,Lorsque le délai se produit,De processlist Les connexions retardées peuvent également être trouvées dans.Si le mot de passe est entré correctement,Le délai est annulé、Recompter.

Alors,Vous devriez comprendre pourquoi ce plug - in empêche les attaques violentes des clients,Supposons que le crack violent essaie chaque minute 120 Une fois,Maintenant que le plug - in est activé,Un certain nombre de défaillances consécutives retardent la réponse,Et le délai augmente avec le nombre de défaillances,Ça a commencé immédiatement.,La prochaine tentative ne peut être lancée qu'après un délai,Cela réduit considérablement le risque de craquage violent.

Cependant, lorsque vous activez le plug - in de contrôle de connexion, veillez à ce qu'il n'y ait pas de connexion retardée.,Parce que les connexions retardées occupent également le nombre de connexions,Peut entraîner un arriéré de connexions, ce qui peut entraîner un nombre insuffisant de connexions.Donc quand il y a une connexion retardée,Vérifiez la connexion dès que possible.,Assurez - vous que le mot de passe est entré correctement.

Pour activer ce plug - in,Attention à la configuration des seuils et des délais appropriés,N'oubliez pas d'écrire ces paramètres dans le fichier de configuration.Cette exigence peut être exigée par l'évaluation générale de la garantie,Connectez le module de contrôle à ce moment - là..

版权声明
本文为[Technologie MySQL]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/09/20210914164725488M.html

Scroll to Top