Mysql comment rendre l'accès à distance plus sûr!

affaires en ligne afin d'assurer la sécurité des données, permettent généralement que MySQL d'accès local ou réseau. Mais dans certains cas particuliers, besoin de MySQL d'accès via Internet. Afin de minimiser ce temps pour garantir les droits et l'ouverture, la première chose que deux mesures:

vous avez besoin d'une part pour configurer le pare-feu whitelist

ENTREE iptables -A -s 1.2.3.4 -p tcp -m tcp -dport 3306 -j ACCEPT

D'autre part de restreindre l'accès aux utilisateurs IP créer MySQL

mysql >  CREATE USER 'testuser'@'1.2.3.4' identified by 'testpass';

Ainsi, cette étape ne vous pouvez vous asseoir et se détendre il? Si oui, cet article sera terminée. Mais malheureusement, en fait, encore un risque de sécurité. L'accès par défaut de MySQL est clair, le HTTP plaintext sensibles à la surveillance, une exposition similaire en dehors détournement réseau de communication de MySQL est également susceptible d'être à l'écoute, l'homme dans les attaques du milieu. Dans ce qui suit un exemple spécifique sera décrit.

Une communication en clair à partir du moniteur maître MySQL

Il existe de nombreux programmes pour parvenir à l'écoute, nous avons adopté un mode miroir des ports de commutateur contrôle de dérivation.

La machine est prête à écouter xxx.xxx.xxx.83, la machine d'attaque est xxx.xxx.xxx.109.

MySQL lorsque la mise en uvre des principales communications du moniteur de, que ce soit pour surveiller la bibliothèque principale de la bibliothèque ou un effet similaire, où la bibliothèque principale cas de test d'écoute.

1.1 déterminer le port d'écoute

Si vous ne savez pas ce qui correspond à deux commutateur port de machines, vous pouvez vous connecter au commutateur, pinguez vu à travers le cache arp.

Après le port de ping peut être déterminée par le cache arp

Enfin, à savoir le port source est déterminée xxx.xxx.xxx.83 de g0 / 15, à savoir xxx.xxx.xxx.109 g0 en miroir de port de destination / 1.

1.2 Configuration du port Mirroring

L'accès au commutateur n'est pas configuré pour démarrer la mise en miroir

< H3C > dis mir Le port du moniteur n'a pas été configuré! < H3C > sys Mot de passe: ************ Entrer vue du système, revenir à la vue de l'utilisateur avec Ctrl + Z.

Et l'objet image miroir sont disposés en miroir des ports

moniteur ports G0 / 1 Succeed! Le port du moniteur a été spécifié comme port de tronc et la pvid changé. g0 / 15 port en miroir dis mir Surveiller port: GigabitEthernet0 / 1 Mirroring-Port: GigabitEthernet0 / 15 q < H3C > sauver Cela permettra d'économiser la configuration dans la mémoire EEPROM Êtes-vous sûr? y Maintenant sauver la configuration actuelle à la mémoire EEPROM S'il vous plaît attendre pendant un certain temps ... Configuration actuelle enregistrée dans la mémoire EEPROM avec succès

1,3 écoute de communications de texte en clair-maître-esclave

Exécuté dans la machine d'écoute active xxx.xxx.xxx.109

hôte tcpdump xxx.xxx.xxx.83 -i eth0 -w hello.dump

xxx.xxx.xxx.83 configuré bibliothèque principale de MySQL, un autre disposé à l'extérieur de la machine de base de données réseau xxx.xxx.xxx.104 MySQL. Et la configuration maître-esclave est pas le cryptage SSL. Test utiliser avec succès xxx.xxx.xxx.109 écouter communication maître-esclave MySQL.

La figure ci-dessous montre la connexion de compte MySQL contrôlé, vous pouvez obtenir le nom d'utilisateur et le cryptage du mot de passe:

Pour le mot de passe de MySQL simple, vous pouvez facilement déchiffré par CMD5 plaintext autres sites:

La figure suivante illustre les données surveillées du maître:

On peut voir dans le cas expressément la communication maître MySQL, l'écoute clandestine peut être efficace.

Commutateur de port mirroring est utilisé ici besoin commutateur d'autorisation, un certain degré de réalisation de difficulté. Mais en dehors de la communication réseau, l'environnement réseau réel est très complexe et hors de notre contrôle, la communication de texte clair est encore un risque potentiel de sécurité.

2 accès au serveur de sécurité

Alors, comment assurer un accès sécurisé à MySQL en dehors de la communication réseau entre le serveur? Voici quelques scénarios communs.

2.1 tunnel crypté

Des données réseau crypté tunnel client peut chiffrer, réduire Décrypter après, puis transférés en toute sécurité sur le serveur. Pour exemple stunnel:

Tout d'abord, le port d'écoute du client 3306, et établir une communication cryptée, une connexion à distance 1.2.4.5:8000

/usr/local/stunnel/etc/stunnelclient.confsslVersion = TLSv1 CAFile = /usr/local/stunnel/etc/ca-cert.pem cert = /usr/local/stunnel/etc/clientcert.pem key = /usr/local/stunnel/etc/clientkey.pem = accepter 127.0.0.1:3306 connect = 1.2.4.5: 8000

Le serveur écoute sur le port 8000, et transmis à la machine après le port de données décryptée 3306

/usr/local/stunnel/etc/stunnelserver.conf

changer sslVersion = TLSv1

CAFile = /usr/local/stunnel/etc/ca-cert.pem

cert = /usr/local/stunnel/etc/servercert.pem

key = /usr/local/stunnel/etc/serverkey.pem

accept = 8000

connect = 127.0.0.1: 3306

De cette façon, le client peut effectivement accéder au port local 3306 au port 3306 sur l'accès à distance 1.2.4.5 de la machine pour obtenir l'accès à distance de MySQL via le tunnel crypté.

Avantages: pas besoin de créer un compte distinct en dehors du réseau de MySQL, l'accès local transparent.

Inconvénients: ne peut réaliser le chiffrement du client pour accéder au côté service, le besoin d'entretien supplémentaire crypté tunnel de service.

2.2 VPN

VPN en dehors de la communication réseau peut être transformé en une communication réseau interne virtuel directement adresse d'accès extranet problèmes de sécurité. Pour exemple OPENVPN:

Dans un côté du serveur de génération du serveur, configurer le segment de réseau interne

/etc/openvpn/server.confport 1194 proto tcp-serveur dev tap # Certificat liés ca /etc/openvpn/ca-cert.pem cert /etc/openvpn/server.pem /etc/openvpn/server.key clé dh /etc/openvpn/dh.pem # Utilisation finale de l'adresse indiquée serveur ifconfig 192.168.10.1255.255.255.0 # Spécifiez le client IP client-config-dir / etc / openvpn / ccd

De l'autre côté du serveur client mis en place, lancer des liens VPN

/etc/openvpn/client.conf client dev tap proto tcp-client à distance 1.2.3.41194 # Certificat liés ca /etc/openvpn/ca-cert.pem cert /etc/openvpn/client1-cert.pem /etc/openvpn/client1-key.pem clé

De cette façon, les deux parties ont créé un serveur virtuel sur le réseau, vous pouvez accéder à l'autre de MySQL ou d'autres services.

Plus: les deux parties peuvent communiquer entre eux, et non limité à l'accès à un port, en particulier pour le réseau d'interfonctionnement salle de machine distante.

Inconvénients: le besoin d'entretien supplémentaire service VPN.

2.3 MySQL SSL

En plus d'établir un tunnel chiffré, réseau virtuel crypté, vous pouvez en utilisant le cryptage SSL MySQL directement accès.

2.3.1 génération de certificat SSL

Vérifiez d'abord si SSL de support MySQL.

mysql >  SHOW VARIABLES LIKE 'HAVE_SSL'; + ----- + ---- + | VARIABLE_NAME | Valeur | + ----- + ---- + | HAVE_SSL | disabled | + ----- + ---- + 1 row in set (0.00 sec)

Si la sortie ci-dessus, le support MySQL explication SSL mais pas activé.

certificat SSL est distribuée une pluralité de types, dans la pratique, d'utiliser un serveur de certificat ou d'un client en fonction de buts différents.

# Type de serveur de certificats SSL pour le serveur, ou maître de la base de données de la relation maître-esclave ssl-ca = / home / mysql / certs / ca-cert.pem ssl-cert = / home / mysql / certs / server-cert.pem ssl-key = / home / mysql / certs / server-key.pem

# Certificat SSL de type client pour le client (comme un outil de ligne de commande), ou d'une relation maître-esclave de la bibliothèque ssl-ca = / home / mysql / certs / ca-cert.pem ssl-cert = / home / mysql / certs / client-cert.pem ssl-key = / home / mysql / certs / client-key.pem

En outre, afin de faciliter la gestion unifiée, la même machine peut être utilisée pour soutenir le serveur et le type de client certificat SSL unique. Spécifiez deux types d'utilisation uniquement en cas de besoin pour générer un certificat SSL n'est pas spécifié directement ou utilisation.

Une fois configuré, examiner si le protocole SSL est activé

mysql >  SHOW VARIABLES LIKE '% ssl%';

+ ----- + -------- + | VARIABLE_NAME | Valeur | + ----- + -------- + | Have_openssl | OUI | | HAVE_SSL | OUI | | Ssl_ca | /home/mysql/certs/ca-cert.pem | | Ssl_capath | | | Ssl_cert | /home/mysql/certs/mysql-cert.pem | | Ssl_cipher | | | Ssl_key | /home/mysql/certs/mysql-key.pem | + ----- + -------- + 5 rows in set (0.00 sec)

Si la sortie du SSL décrit ci-dessus est pleinement active

2.3.2 exigent SSL et nécessitent X509

Afin d'assurer l'accès au réseau externe utilise des utilisateurs de MySQL cryptage SSL, lors de la génération, l'utilisateur peut forcer le SSL EXIGER ou EXIGER X509:

mysql >  CREATE USER 'testuser'@'1.2.3.4' identified by 'testpass' SSL EXIGER; mysql >  CREATE USER 'testuser'@'1.2.3.4' identified by 'testpass' require X509;

La différence est que, SSL ne nécessite que EXIGER le client de préciser l'utilisation du certificat de serveur de validation du certificat ca, le serveur requiert également EXIGER X509 authentification de certificat client. Afin d'éviter les attaques d'intermédiaires, afin d'assurer une communication plus sécurisée, est généralement recommandé d'utiliser EXIGENT X509.

2.3.3 OpenSSL et yaSSL

MySQL peut utiliser sa propre bibliothèque yaSSL communication cryptée, il peut être utilisé pour OpenSSL de communication cryptée. paramètres STRING: besoins de WITH_SSL à préciser au moment de la compilation que l'utilisation spécifique:

fourni (utilisation yaSSL), oui (préférez bibliothèque os si elle est présente, sinon l'utilisation empaqueté), système (Utiliser bibliothèque d'os), < / Chemin / vers / custom / montage >

Pour une meilleure sécurité, vous pouvez utiliser le système est livré avec OpenSSL et en temps opportun yum / mise à jour apt.

Si l'on considère la compatibilité des différentes versions, il est recommandé d'utiliser le haut-yaSSL.

Par exemple, OpenSSL a été pour la vulnérabilité CVE-2015-4000 dans l'amélioration minimale touche DH à 768 bits, alors que certaines anciennes versions de clé DH MySQL utilise 512 bits. Étant donné que l'algorithme de cryptage SSL par défaut MySQL DHE-RSA-AES256-SHA, si vous utilisez OpenSSL MySQL et l'accès entre les différentes versions peut apparaître erreur 2026 erreur.

2.3.4 surveilleront sur la base de la communication du maître SSL

Après avoir configuré le cryptage SSL, nous avons à nouveau essayé de ramper communication maître-esclave MySQL.

Je l'ai trouvé impossible de se rendre à partir du compte principal de connexion MySQL:

En outre, pris du maître aux données MySQL est tronquée:

On peut voir dans le cas de SSL crypté, ne peut être réalisé efficacement dans le taraudage principal MySQL.

3 Sécurité d'accès local

3.1 tunnel SSH

En général, nous avons tous besoin de SSH pour accéder à un serveur distant à partir d'un local, vous pouvez établir un tunnel SSH port spécifique pour accéder au serveur distant.

Tel qu'il est utilisé fonction de transfert de port SecureCRT (similaire comme mastic), l'orifice d'acheminement locale 3306 au port 3306 dans le serveur:

Si navicat habitué à utiliser ces outils, vous pouvez utiliser le haut-tunnel SSH (notez que les anciennes versions peuvent convertir une clé privée au format PPK):

3.2 phpmyadmin + HTTPS

Si vous êtes phpmyadmin utilisé de MySQL d'accès Web, il vous suffit d'accéder à une manière unifiée HTTPS:

serveur { écouter 80; server_name phpmyadmin.example.com; # HSTS forcé à utiliser le protocole HTTP vers HTTPS Jump add_header stricte-Transport-sécurité "max-age = 31536000"; ...... } serveur { écouter 443 ssl HTTP2; server_name phpmyadmin.example.com; # Configurer les certificats de serveur SSL ssl sur; ssl_certificate /etc/letsencrypt/live/phpmyadmin.example.com/fullchain.pem; ssl_certificate_key / etc / letsencrypt / live / phpmyadmin.example.com/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ...... }

4 Résumé

la sécurité des données MySQL est un très gros problème, qui communication sécurisée en dehors de la passerelle souvent facilement négligé. Avec la popularité et le courant HTTPS / SMTPS / POP3S / IMAPS, et basé sur une variété de TCP, UDP, programme de communications cryptées sera de plus en plus appliquée aux entreprises en ligne. Dans cet article, quelques-unes des scènes entre l'accès au serveur MySQL / local aux serveurs plusieurs introduit programme de communications cryptées, nous espérons donner quelques idées, combinées à leurs besoins d'accès réel crypté à l'aide de MySQL.

Est probablement le mieux conservé de la voiture électrique expérience statique Nissan Sylphy · électrique pur de
Précédent
industrie de l'alcool chinois un nouveau cheval noir: rattraper Maotai, les ventes annuelles de milliards d'esprit d'entreprise extraordinaire
Prochain
Les voitures coréennes vendues dans la poursuite de la route devient de plus en plus loin, mais profond embarras
Comment démarrer en ligne de commande Linux
Meng Département RPG sang système de combat « Appel Story » première exposition
250000 dans quatre personnalité sport non conventionnelles recommandation Chevrolet
coupé Geely SUV a mis le chiffre officiel, a fait le plus beau coupé SUV?
Han Chao de loi de capture? marques indépendantes est en hausse de la « rattrapage » à « concurrent »
Le mari vient de passer 20 millions d'argent de poche, elle a utilisé pour démarrer une entreprise, l'homme le plus riche femme vraiment inhabituel
Après une partition Linux complète comment l'expansion?
retour Avis guerriers | voiture d'occasion pour dormir, allongez anti-sommeil, les joueurs Lop Nur voyage d'une vie
Mercedes-Benz C-Class est également branché, la version hybride devrait entrer sur le marché 19 Mars au
Coin voitures « dead end » de la douleur que vous ne comprenez pas la loi
Comme le mil, comme l'ennemi, comme les idoles telles que Huawei, Gree peut se préparer à entrer dans le 5G Huawei à faire?