Un reverse proxy pour sécuriser votre extranet

Un reverse proxy pour sécuriser votre extranetIl peut arriver dans notre vie professionnelle de faire de très, très mauvaise rencontres. L’entreprise de transports pour laquelle je viens de travailler s’est vu proposer la réalisation d’un extranet pour la coquette somme de 10 000 euros. Pourquoi pas ? La prestation concurrente à laquelle j’ai été associée lui sera facturée finalement aux alentours de 5 000 euros, intégrant le réalisation du site Internet, le référencement du site, l’installation d’un reverse proxy sur un serveur Linux, la page Extranet.

Face au refus de l’éditeur de passer son serveur Web en SSL qui a cherché à me pourrir la vie, j’ai pensé, afin de sécuriser les échanges de données entre le site Internet et le serveur de l’application, à installer un serveur proxy inverse Apache en SSL sur une Fedora Server 23. J’aurais pu utiliser Nginx.

Dans les fichiers de configuration ci-dessous, 192.168.0.220 désigne le serveur Web de l’application métier ; 192.168.0.221 l’adresse ip du serveur Fedora sur lequel le reverse proxy écoute sur le port 3128. Je n’ai pas pu utiliser le port 443, étant utilisé par l’entreprise pour un Webmail.

Installation du serveur Apache

Sur Fedora Server 23, l’installation de paquets supplémentaires se fait avec la commande dnf :

dnf install httpd mod_ssl

Modification du fichier de configuration /etc/httpd/conf/httpd.conf

J’ai modifié les directives Listen et ServerName du fichier de configuration principal /etc/httpd/conf/httpd.conf du serveur Apache comme suit :

Listen 3128
ServerName 192.168.0.221:3128

Création des certificats

La création de certificats SSL autosignés se réalise à l’aide de la commande openssl :

openssl req -new -x509 -nodes -out /etc/pki/tls/certs/srv-fedora.crt -keyout /etc/pki/tls/private/srv-fedora.key

Création du fichier /etc/httpd/conf.d/reverseproxy.conf

La configuration sur Apache du mode proxy inverse se fait à l’aide des directives suivantes :

<VirtualHost *:3128>

    ServerName 192.168.0.221

    ErrorLog /var/log/httpd/reverseproxy-error.log
    LogLevel warn
    CustomLog /var/log/httpd/reverseproxy-access.log combined

    SSLEngine On
    SSLCipherSuite HIGH:MEDIUM
    SSLProtocol all -SSLv2
    SSLCertificateFile /etc/pki/tls/certs/srv-fedora.crt
    SSLCertificateKeyFile /etc/pki/tls/private/srv-fedora.key
    SSLProxyEngine          On
    SSLProxyCheckPeerExpire On
    SSLProxyVerifyDepth     10

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
        RewriteRule .* - [F]
    </IfModule>

    <IfModule mod_rewrite.c>
        <IfModule mod_proxy.c>
            ProxyRequests Off
            ProxyPreserveHost On
            ProxyPass         / http://192.168.0.220/
            ProxyPassReverse  / http://192.168.0.220/
        </IfModule>
    </IfModule>
    <Location />
        Order deny,allow
        Allow from all
    </Location>
</VirtualHost>

Lancement du serveur

Depuis le remplacement du système Init V par systemd, le lancement des services se fait à l’aide de la commande systemctl :

systemctl enable httpd
systemctl start httpd

Pare-feu

Vous devrez ensuite jouer avec votre pare-feu pour faire une translation à partir de votre adresse ip publique vers l’adresse 192.168.0.221 sur le port 3128 de votre reverse proxy.

 

Apache / , , , , , , , ,