Comment configurer HTTPS (certificats SSL) pour sécuriser la connexion PhpMyAdmin

Comment configurer HTTPS (certificats SSL) pour sécuriser la connexion PhpMyAdmin

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 HTTP

Pour é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 HTTPS

Aprè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 HTTPS

C'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.