Comment configurer HTTPS (certificats SSL) pour sécuriser la connexion PhpMyAdmin
- 4687
- 1190
- Rayan Lefebvre
Pour introduire cette astuce, reniflons le trafic HTTP entre une machine client et le Debian 8 serveur où nous avons fait l'erreur innocente de nous connecter à l'aide des informations d'identification de l'utilisateur de la base de données dans notre dernier article sur: modifier et sécuriser l'URL de connexion par défaut phpmyadmin
Comme nous l'avons mentionné dans l'astuce précédente, n'essayez pas encore de le faire si vous ne voulez pas exposer vos informations d'identification. Pour commencer à renifler le trafic, nous avons tapé la commande suivante et appuyé sur Entrée:
# TCPDUmp Port http -l -a | egrep -i 'pass = | pwd = | log = | login = | user = | username = | pw = | passw = | passwd = | mot de passe = | pass: | utilisateur: | nom d'utilisateur: | mot de passe: | Login: | Pass | utilisateur '- ligne tamponnée -b20
Il ne nous faudra pas longtemps pour réaliser que le nom d'utilisateur et mot de passe ont été envoyés sur le fil au format texte brut, comme vous pouvez le voir dans la sortie tronquée de TCPDump dans l'image ci-dessous.
Veuillez noter que nous avons caché une partie du racine mot de passe avec une marque bleue dessus:
Renifler le trafic HTTPPour éviter cela, garantissons la page de connexion avec un certificat. Pour ce faire, installez le package mod_ssl sur Centos distributions basées.
# yum install mod_ssl
Bien que nous utiliserons le Debian / Ubuntu Chemin et noms, la même procédure est valable Centos et Rhel Si vous remplacez les commandes et les chemins ci-dessous par le Centos équivalents.
Créez un répertoire pour stocker la clé et le certificat:
# mkdir / etc / apache2 / ssl [sur Debian / Ubuntu Systèmes basés] # mkdir / etc / httpd / ssl [sur Centos Systèmes basés
Créez la clé et le certificat:
----------- Sur Debian / Ubuntu Systèmes basés ----------- # OpenSSL REQ -X509 -Nodes -Days 365 -Newkey RSA: 2048 -Keyout / etc / apache2 / ssl / apache.clé -out / etc / apache2 / ssl / apache.CRT ----------- sur Centos Systèmes basés ----------- # OpenSSL REQ -X509 -NODES -DAYS 365 -NEWKEY RSA: 2048 -Keyout / etc / httpd / ssl / apache.clé -out / etc / httpd / ssl / apache.CRT
Échantillon de sortie
… +++… +++ écrivant une nouvelle clé privée pour '/ etc / httpd / ssl / apache.Key '----- Il vous est demandé de saisir des informations qui seront intégrées à votre demande de certificat. Ce que vous êtes sur le point d'entrer, c'est ce qu'on appelle un nom distingué ou un DN. Il y a pas mal de champs mais vous pouvez laisser un peu de blanc pour certains champs, il y aura une valeur par défaut, si vous entrez '.', Le champ sera laissé vide. ----- Nom du pays (code de 2 lettres) [xx]:DANS Nom de l'état ou de la province (nom complet) []:Maharashtra Nom de la localité (par exemple, ville) [Ville par défaut]:Mumbai Nom de l'organisation (par exemple, société) [Default Company Ltd]:Tecmint Nom de l'unité organisationnelle (par exemple, section) []:Tecmint Nom commun (par exemple, votre nom ou le nom d'hôte de votre serveur) []:Tecmint Adresse e-mail []:[Protégé par e-mail]
Ensuite, vérifiez la clé et le certificat.
# cd / etc / apache2 / ssl / [sur Debian / Ubuntu Systèmes basés] # CD / etc / httpd / ssl / [sur Centos systèmes basés] # ls -l total 8 -rw-r - r--. 1 racine racine 1424 sept 7 15:19 Apache.crt -rw-r - r--. 1 racine racine 1704 sept 7 15:19 Apache.clé
Dans Debian / Ubuntu, sois sûr que Apache écoute sur le port 443 pour le site par défaut (/ etc / apache2 / sites-disponible / 000-défaut.confli) et ajouter les 3 lignes liées à SSL à l'intérieur du VirtualHost déclaration:
Sslengine sur sslcertificatefile / etc / apache2 / ssl / apache.crt sslcertificatekeyfile / etc / apache2 / ssl / apache.cléActiver SSL sur VirtualHost
Dans Centos distributions basées, dire Apache écouter sur le port 443 Et cherchez la directive d'écoute dans / etc / httpd / conf / httpd.confli et ajouter les lignes ci-dessus en dessous.
Sslengine sur sslcertificatefile / etc / httpd / ssl / apache.crt sslcertificatekeyfile / etc / httpd / ssl / apache.clé
Enregistrer les modifications, charger le Ssl apache module sur Debian / Ubuntu distributions (en Centos Ceci est chargé automatiquement lorsque vous avez installé mod_ssl plus tôt):
# a2enmod ssl
Force phpmyadmin utiliser SSL, Assurez-vous que la ligne suivante est présente dans / etc / phpmyadmin / config.Inc.php ou / etc / phpmyadmin / config.Inc.php déposer:
$ cfg ['forcesl'] = true;
et redémarrer le serveur Web:
# systemctl redémarrer apache2 [sur Debian / Ubuntu Systèmes basés] # SystemCTl redémarrer httpd [sur Debian / Ubuntu Systèmes basés
Ensuite, lancez votre navigateur Web et tapez https: /// mon
(Apprenez à modifier l'URL de connexion PhpmyAdmin) comme indiqué ci-dessous.
Important: Veuillez noter qu'il dit seulement que la connexion n'est pas sécurisée car nous utilisons un certificat auto-signé. Cliquer sur Avancé et confirmer l'exception de sécurité:
Activer PhpMyAdmin HTTPSAprès avoir confirmé l'exception de sécurité, et avant de vous connecter, commençons à renifler Http et Https circulation:
# TCPDUmp Port Http ou port https -l -a | egrep -i 'pass = | pwd = | log = | login = | user = | username = | pw = | passw = | passwd = | mot de passe = | pass: | utilisateur: | nom d'utilisateur: | mot de passe: | Login: | Pass | utilisateur '- ligne tamponnée -b20
Ensuite, connectez en utilisant les mêmes informations d'identification que plus tôt. Le renifleur de la circulation ne capturera au mieux que le charabia:
Renifler le trafic HTTP et HTTPSC'est tout pour l'instant, dans le prochain article, nous vous partageons pour restreindre l'accès à PhpMyAdmin avec le nom d'utilisateur / mot de passe, restez à l'écoute de Tecmint.
- « Fswatch - surveille les fichiers et les modifications ou modifications du répertoire dans Linux
- Comment ajouter une couche supplémentaire de sécurité sur l'interface de connexion PhpMyAdmin »