Axiso

Notes

Connexion SSL/HTTPS pour un hôte virtuel Apache

Serveur — décembre 2010 , ,

Mise en place d’une sécurisation SSL obligatoire pour la connexion à un hôte virtuel existant.

Exemple de configuration existante :

cat /etc/apache2/sites-available/example.com
<VirtualHost 123.123.123.123:80>   ServerName example.com   DocumentRoot /home/www/example.com/web/web   ## Logs   CustomLog /home/www/example.com/log/apache/access.log combined env=!no_log   ErrorLog /home/www/example.com/log/apache/error.log   ## / Logs </VirtualHost>

Activation du module SSL de Apache si nécessaire :

a2enmod ssl

Modifications à apporter sur la configuration SSL du domaine à partir de la configuration existante :

cp /etc/apache2/sites-available/example.com /etc/apache2/sites-available/example.com-ssl
vi /etc/apache2/sites-available/example.com-ssl
<IfModule mod_ssl.c> <VirtualHost 123.123.123.123:443>   ServerName example.com   DocumentRoot /home/www/example.com/web/web   ## Logs   CustomLog /home/www/example.com/log/apache/access.log combined env=!no_log   ErrorLog /home/www/example.com/log/apache/error.log   ## / Logs   ## SSL   SSLEngine on   SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem   SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key   ## / SSL </VirtualHost> </IfModule>

Modifications à apporter sur la configuration de base afin de forcer le renvoi de HTTP vers HTTPS :

vi /etc/apache2/sites-available/example.com
<VirtualHost 123.123.123.123:80>   ServerName example.com   DocumentRoot /home/www/common/error   Redirect permanent / https://example.com </VirtualHost>

Activation de la configuration SSL et contrôle de l’opération :

a2ensite example.com-ssl
apache2ctl graceful
netstat -tap | grep https

doit afficher :

tcp6  0  0 [::]:https  [::]:*  LISTEN  1386/apache2

et la connexion vers http://example.com doit être aussitôt renvoyée vers https://example.com.


Démonstration d’une sécurisation SSL/TLS

Journal — mars 2009 , ,

Rien d’extraordinaire, juste parce que la démonstration est très simple.

Configurer le serveur FTP en identification de base (identifiant + passe) (avec Pure-FTPd déjà configuré avec l’option TLS : rm /etc/pure-ftpd/conf/TLS
/etc/init.d/pure-ftpd restart
)

aptitude install tcpdump
tcpdump -A port 21 >> ftp_dump_clear.txt

Là, Tcpdump attend de capturer tous les paquets transitant sur le port 21 du serveur FTP. Il enregistrera les données dans un fichier.
Avec un client FTP, ouvrir une connexion vers le serveur et la fermer. Clore Tcpdump : CTRL+C.

vi ftp_dump_clear.txt

Tcpdump affiche quelques lignes correspondant aux paquets capturés. Rechercher la chaîne « PASS »

/PASS

A cet endroit le passe de connexion apparait très clairement.
Quitter ce fichier

:q

Puis paramétrer le serveur FTP avec l’option SSL/TLS (avec Pure-FTPd : echo 2 >> /etc/pure-ftpd/conf/TLS
/etc/init.d/pure-ftpd restart
)

Relancer une capture des paquets

tcpdump -A port 21 >> ftp_dump_tls.txt

Et effectuer cette fois-ci une connexion en FTPS ou FTPES à partir de son client FTP puis la fermer. Clore Tcpdump : CTRL+C.

vi ftp_dump_tls.txt

Le passe n’apparait plus en clair.


Pure-FTPd – AUTH TLS 500 This security scheme is not implemented

A la connexion vers le serveur Pure-FTPd, le client affiche

AUTH TLS
500 This security scheme is not implemented

Il s’agirait d’un lancement incorrect du serveur avec l’option TLS qui ne pourrait être corrigé par un simple /etc/init.d/pure-ftpd/restart.

Tenter

echo 2 > /etc/pure-ftpd/conf/TLS
/etc/init.d/pure-ftpd/restart

Ou encore, clore tous les processus du serveur FTP qui n’auraient pas été fermés et dont la persistance pourrait perturber le lancement de Pure-FTPd

ps axwww | grep pure-ftpd | awk '{print $1}' | xargs -n1 kill -9
/etc/init.d/pure-ftpd/restart

Un retour de commande fonctionnelle avec le mode TLS :

/etc/init.d/pure-ftpd restart
Restarting ftp server: Running: /usr/sbin/pure-ftpd -l puredb:/etc/pure-ftpd/pureftpd.pdb -u 1000 -E -Y 2 -O clf:/var/log/pure-ftpd/transfer.log -B