« Reverse proxy ActiveSync pour Serveur Microsoft Exchange » : différence entre les versions

De NCad Wiki
Aller à la navigation Aller à la recherche
 
(28 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{Serveur Web}}
{{Serveur Web}}
{{Box Construction | article }}
__TOC__


== Prérequis ==
== Prérequis ==
Ligne 17 : Ligne 21 :
## Au message '''La configuration automatique''' a échoué taper sur {{Bouton|Entrée}}.
## Au message '''La configuration automatique''' a échoué taper sur {{Bouton|Entrée}}.
## Depuis la liste '''Méthode pour la configuration du réseau''', sélectionner '''Configurer vous-même le réseau''' puis taper sur {{Bouton|Entrée}}.
## Depuis la liste '''Méthode pour la configuration du réseau''', sélectionner '''Configurer vous-même le réseau''' puis taper sur {{Bouton|Entrée}}.
## Dans le champ '''Adresse IP''', saisir <span style="color:red"><@IP_LAN_LOCALE></span> puis taper sur {{Bouton|Entrée}}.
## Dans le champ '''Adresse IP''', saisir <span style="color:red">192.168.1.10</span> puis taper sur {{Bouton|Entrée}}.
## Dans le champ '''Valeur du masque-réseau''', saisir <span style="color:red"><@IP_MASQUE_LOCAL></span> puis taper sur {{Bouton|Entrée}}.
## Dans le champ '''Valeur du masque-réseau''', saisir <span style="color:red">255.255.255.0</span> puis taper sur {{Bouton|Entrée}}.
## Dans le champ '''Passerelle''', saisir <span style="color:red"><@IP_PASSERELLE_LOCALE></span> puis taper sur {{Bouton|Entrée}}.
## Dans le champ '''Passerelle''', saisir <span style="color:red">192.168.1.1</span> puis taper sur {{Bouton|Entrée}}.
## Dans le champ '''Adresses des serveurs de noms''', saisir <span style="color:red"><@IP_DNS_LOCAL></span> puis taper sur {{Bouton|Entrée}}.
## Dans le champ '''Adresses des serveurs de noms''', saisir <span style="color:red">192.168.1.1</span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Nom de machine''', saisir <span style="color:red"><HOSTNAME></span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Nom de machine''', saisir <span style="color:red">SRVPROXY</span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Domaine''', saisir <span style="color:red"><DOMAINE></span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Domaine''', saisir <span style="color:red">ncad.fr</span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Mot de passe du superutilisateur ''(‘root’)''''', saisir <span style="color:red"><MDP_ROOT></span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Mot de passe du superutilisateur ''(‘root’)''''', saisir <span style="color:red"><MDP_ROOT></span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Confirmation du mot de passe''', saisir de nouveau <span style="color:red"><MDP_ROOT></span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Confirmation du mot de passe''', saisir de nouveau <span style="color:red"><MDP_ROOT></span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Nom complet du nouvel utilisateur''', saisir <span style="color:red"><LOGIN></span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Nom complet du nouvel utilisateur''', saisir <span style="color:red">SRVPROXY</span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Identifiant pour le compte utilisateur''', saisir de nouveau <span style="color:red"><LOGIN></span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Identifiant pour le compte utilisateur''', saisir de nouveau <span style="color:red">SRVPROXY</span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Mot de passe pour le nouvel utilisateur''', saisir <span style="color:red"><MDP_LOGIN></span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Mot de passe pour le nouvel utilisateur''', saisir <span style="color:red"><MDP_LOGIN></span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Confirmation du mot de passe''', saisir <span style="color:red"><MDP_LOGIN></span> puis taper sur {{Bouton|Entrée}}.
# Dans le champ '''Confirmation du mot de passe''', saisir <span style="color:red"><MDP_LOGIN></span> puis taper sur {{Bouton|Entrée}}.
Ligne 48 : Ligne 52 :
# Depuis la liste '''Périphérique où sera installé le programme de démarrage''', tabuler sur '''/dev/sda (ata-XXX_XXXXXXXXXXXXXXXX)''' puis taper sur {{Bouton|Entrée}}.
# Depuis la liste '''Périphérique où sera installé le programme de démarrage''', tabuler sur '''/dev/sda (ata-XXX_XXXXXXXXXXXXXXXX)''' puis taper sur {{Bouton|Entrée}}.
# À l’affichage de la fenêtre '''Installation terminée''', retirez le support d’installation UBS puis taper sur '''Continuer''' pour redémarrer l’équipement.
# À l’affichage de la fenêtre '''Installation terminée''', retirez le support d’installation UBS puis taper sur '''Continuer''' pour redémarrer l’équipement.
== Installation de base ==
{{ Box Information | objet=Cette section est nécessaire uniquement si vous avez rencontré des problèmes de connexion réseau tel que décrit au point 23 de la section précédente. }}
{{ Box Attention | objet=Avant de poursuivre, vérifier sur votre pare-feu que la machine est autorisée à sortir sur Internet. }}
# À l’invite de commande, saisir le login <span style="color:red">SRVPROXY</span> puis le '''mot de passe associé'''. Taper sur '''Entrée''' pour valider.
# Une fois connecter, basculer sur le compte '''root''' à l’aide de la commande :<br/>{{Commande|su -}}
# Pour récupérer l’'''adresse IP locale''' de l’équipement, saisir la commande :<br/>{{Commande|ip addr}}
# Une fois l’accès à Internet autorisé, '''mettre à jour la liste des paquets''' depuis les dépôts Debian avec la commande :<br/>{{Commande|apt-get update}}
# Procéder à la '''mise à jour du système d’exploitation''' avec la commande :<br/>{{Commande|dist-upgrade}}<br />et répondre '''O''' si besoin.
# Editer le fichier de configuration '''/etc/apt/sources.list''' et y ajouter à la fin les lignes suivantes :<br /><code>deb http://deb.debian.org/debian/ bullseye main<br />deb-src http://deb.debian.org/debian/ bullseye main<br /><br />deb http://deb.debian.org/debian/ bullseye-updates main<br />deb-src http://deb.debian.org/debian/ bullseye-updates main</code>
# Rafraîchir la liste des dépôts Debian avec la commande :<br/>{{Commande|apt-get update}}
# Puis, relancer l’installation des paquets '''openssh-server''' et '''vim''' en lançant la commande :<br/>{{Commande|apt-get install openssh-server vim sshpass zip mutt}}.
== Génération du certificat auto signé pour le serveur web ==
* Génération de la '''clé privée''' et enregistrement dans le fichier '''activesync.ncad.fr.key''' :<br />{{Commande|openssl genrsa -out activesync.ncad.fr.key 2048}}
* Génération de la demande de certificat :<br />{{Commande|openssl req –new –key activesync.ncad.fr.key –out activesync.ncad.fr.csr}}
Generating RSA private key, 2048 bit long modulus (2 primes)
.................................................................................................................+++++
..............................+++++
e is 65537 (0x010001)
* Une fois la '''clé privée''' générée, procéder à la génération du '''fichier de demande de certificat''' et l'enregistrer dans le fichier '''activesync.ncad.fr.csr''' :<br />{{Commande|openssl req -new -key activesync.ncad.fr.key -out activesync.ncad.fr.csr}}
* Puis, répondre au question du prompt en adaptant les éléments en <span style="color:red">rouge</span> :
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:<span style="color:red">FR</span>
State or Province Name (full name) [Some-State]:<span style="color:red">FRANCE</span>
Locality Name (eg, city) []:<span style="color:red">FIGEAC</span>
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<span style="color:red">NCAD</span>
Organizational Unit Name (eg, section) []:<span style="color:red">Direction des Systèmes d'Information</span>
Common Name (e.g. server FQDN or YOUR name) []:<span style="color:red">mail.ncad.fr</span>
Email Address []:<span style="color:red">noc@ncad.fr</span>
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<span style="color:red">***</span>
An optional company name []:
* Signature du certificat à l'aide du '''fichier de demande de certificat''' et de la '''clé privée''' :<br />{{Commande|openssl x509 –req –days 3650 –in activesync.ncad.fr.csr –signkey activesync.ncad.fr.key –out activesync.ncad.fr.crt}}
* Déplacement de la '''clé privée''' et du '''certificat''' dans le répertoire '''/etc/ssl/private/''' :
{{Box Console | objet=mv <span style="color:red">activesync.ncad.fr.crt</span> /etc/ssl/private/<br />
mv <span style="color:red">activesync.ncad.fr.key</span> /etc/ssl/private/}}
== Installation de l’autorité de certification (AC) ==
L’autorité de certification est gérée avec le programme '''easy-rsa'''. Ce dernier permet l’installation de l’'''AC''' ainsi que les opérations courantes sur cette dernière.
* Installation du paquet '''easy-rsa''' :
{{ Box Console | objet=root@SRVPROXY:~# apt-get install easy-rsa -y }}
* Création du répertoire hébergeant la configuration de l’autorité de certification :
{{ Box Console | objet=root@SRVPROXY:~# mkdir /home/SRVPROXY/easy-rsa<br />
root@SRVPROXY:~# ln –s /usr/share/easy-rsa/* /home/SRVPROXY/easy-rsa }}
* Restriction d’accès au répertoire à l’utilisateur '''SRVPROXY''' uniquement :
{{ Box Console | objet=root@SRVPROXY:~# chmod 700 /home/SRVPROXY -R }}
* Initialisation de l’'''Infrastructure de Clés Publiques ''(ICP)''''' :
{{ Box Console | objet=root@SRVPROXY:~# cd /home/SRVPROXY/easy-rsa<br />
root@SRVPROXY:~# ./easyrsa init-pki }}
* Editer le fichier '''/home/SRVPROXY/easy-rsa/vars''' puis y insérer les lignes suivantes ''(adapter les éléments en <span style="color:red">rouge</span>)'' :
set_var EASYRSA_REQ_COUNTRY    "<span style="color:red">FR</span>"
set_var EASYRSA_REQ_PROVINCE  "<span style="color:red">OCCITANIE</span>"
set_var EASYRSA_REQ_CITY      "<span style="color:red">FIGEAC</span>"
set_var EASYRSA_REQ_ORG        "<span style="color:red">NCAD</span>"
set_var EASYRSA_REQ_EMAIL      "<span style="color:red">noc@ncad.fr</span>"
set_var EASYRSA_REQ_OU        "<span style="color:red">Direction des Systèmes d'Information</span>"
set_var EASYRSA_ALGO          "ec"
set_var EASYRSA_DIGEST        "sha512"
* Génération de la paire de clés root '''public''' et '''privé''' :
{{ Box Console | objet=root@SRVPROXY:~# ./easyrsa build-ca }}
* À la demande du prompt, renseigner une '''Passphrase secrète'''. Elle sera demandée pour toutes opérations sur L’'''Autorité de Certification''' ''(création de certificats, renouvellement, révocation)''.
* À la demande d’un '''Common Name ''(CN)''''' taper {{Bouton|Entrée}}.
== Intégration de l’AC au système d’exploitation ==
{{ Box Attention | objet=Si le '''certificat racine de l’AC''' n’est pas intégrée au système d’exploitation du client, ce dernier retournera un '''message d’alerte de sécurité''' pour tous les certificats délivrée pas l’AC. }}
* Exportation du '''certificat publique''' de l’autorité de certification :
{{ Box Console | objet=root@SRVPROXY:~# cp /home/SRVPROXY/easy-rsa/pki/ca.crt /etc/ssl/certs/ }}
=== Génération d’un certificat client ===
{{ Box Information | objet=Ce certificat sera à installer sur le terminal de l’utilisateur. }}
* Création du répertoire spécifique pour les demandes de certificats des utilisateurs :
{{ Box Console | objet=root@SRVPROXY:~# mkdir /home/SRVPROXY/clients-csr }}
* Génération de la '''clé privée''' pour l’utilisateur '''CACHELN''' :
{{ Box Console | objet=root@SRVPROXY:~# cd /home/SRVPROXY/clients-csr<br />
root@SRVPROXY:~# openssl genrsa -out CACHELN_19052022.key }}
* Génération de la '''demande de certificat''' pour l’utilisateur '''CACHELN''' ''(adapter les éléments en <span style="color:red">rouge</span>)'' :
{{ Box Console | objet=root@SRVPROXY:~# openssl req –new –key CACHELN_19052022.key –out CACHELN_19052022.req<br />
Country Name (2 letter code) [XX]:<span style="color:red">FR</span><br />
State or Province Name (full name) []:<span style="color:red">OCCITANIE</span><br />
Locality Name (eg, city) [Default City]:<span style="color:red">FIGEAC</span><br />
Organization Name (eg, company) [Default Company Ltd]:<span style="color:red">NCAD</span><br />
Organizational Unit Name (eg, section) []:<span style="color:red">Direction des Systèmes d'Information</span><br />
Common Name (eg, your name or your server's hostname) []:<span style="color:red">CACHELN</span><br />
Email Address []:<span style="color:red">cach3ln@ncad.fr</span><br /><br />
Please enter the following 'extra' attributes<br />
to be sent with your certificate request<br />
A challenge password []:<span style="color:red"><NE_RIEN_SAISIR></span><br />
An optional company name []:<span style="color:red"><NE_RIEN_SAISIR></span> }}
* Importation de la '''demande de signature''' par l’'''autorité de certification''' :
{{ Box Console | objet=root@SRVPROXY:~# cd ../easy-rsa<br />
root@SRVPROXY:~# ./easyrsa import-req ../clients-csr/CACHELN_19052022.req CACHELN_19052022 }}
* Signature du certificat ''(la saisie de la Passphrase de l’AC sera requise)'' :
{{ Box Console | objet=root@SRVPROXY:~# ./easyrsa sign-req client CACHELN_19052022 }}
* Exportation du '''certificat de l’utilisateur''' au format '''p12''' ''(format exploitable par les terminaux utilisateurs)'' :
{{ Box Console | objet=root@SRVPROXY:~# openssl pkcs12 -export -out pki/private/CACHELN_19052022.p12 -in pki/issued/CACHELN_19052022.crt -inkey ../clients-csr/CACHELN_19052022.key }}
* Copier le certificat dans le répertoire SFTP '''/home/SRVPROXY/clients-csr''' pour pouvoir être téléchargé via un client SFTP :
{{ Box Console | objet=root@SRVPROXY:~# cp pki/private/CACHELN_19052022.p12 /home/SRVPROXY/clients-csr<br />
root@SRVPROXY:~# chmod 777 /home/SRVPROXY/clients-csr/* }}
=== Renouveller un certificat ===
{{ Box Information | objet=Le certificat doit expirer dans '''moins de 30 jours''' pour pouvoir être renouvelé. }}
* Depuis le répertoire d’installation de l’AC, utiliser l’utilitaire '''easyrsa''' suivit de la commande '''renew''' pour reconduire la validité du certificat d’un utilisateur ''(la saisie de la Passphrase de l’AC sera requise)'' :
{{ Box Console | objet=root@SRVPROXY:~# cd /home/SRVPROXY/easy-rsa<br />
root@SRVPROXY:~# ./easyrsa renew CACHELN_19052022 }}
=== Révocation d’un certificat ===
* Depuis le répertoire d’installation de l’AC, utiliser l’utilitaire '''easyrsa''' suivit de la commande '''revoke''' pour mettre fin à la validité du certificat d’un utilisateur ''(la saisie de la Passphrase de l’AC sera requise)'' :
{{ Box Console | objet=root@SRVPROXY:~# cd /home/SRVPROXY/easy-rsa<br />
root@SRVPROXY:~# ./easyrsa revoke CACHELN_19052022 }}
* Procéder à la régénération de la '''CRL''' depuis la commande '''gen-crl''' :
{{ Box Console | objet=root@SRVPROXY:~# ./easyrsa gen-crl }}
* Copier le fichier dans le répertoire d’exploitation '''/etc/ssl/private''' :
{{ Box Console | objet=root@SRVPROXY:~# cp pki/crl.pem /etc/ssl/private }}
* Redémarrer le service '''Apache2''' pour la prise en compte des modifications :
{{ Box Console | objet=root@SRVPROXY:~# /etc/init.d/apache2 restart }}
== Configuration du service Apache2 ==
Le service '''Apache2''' assure la fonction de '''Reverse Proxy'''. Il sera chargé d’écouter les requêtes et de les transmettre au serveur '''Microsoft Exchange'''. Il pourra également assurer les fonctions de '''filtrage''' basé sur le '''Device Id''' ainsi que l’'''authentification par certificat'''.
=== Installation du service ===
* Installation du serveur web '''Apache2''' :
{{ Box Console | objet=root@SRVPROXY:~# apt-get install apache2 -y }}
* Activation des modules '''proxy_http''', '''headers''', '''proxy_http''', '''ssl''', '''rewrite''' et '''speling''' :
{{ Box Console | objet=root@SRVPROXY:~# a2enmod proxy headers proxy_http ssl rewrite speling }}
* Tout changement de configuration nécessite le '''redémarrage du service''' :
{{ Box Console | objet=root@SRVPROXY:~# service apache2 restart }}
* En cas d’erreur, vérifier les logs enregistrés dans '''/var/log/syslog''' ainsi que ceux d’'''Apache2''' situés dans '''/var/log/apache2/'''.
=== Configuration de base ===
* Editer le fichier de configuration '''/etc/apache2/sites-availables/000-default''' :
* Adapter la ligne suivante :
ServerAdmin noc@ncad.fr
* Commenter la ligne :
#DocumentRoot /var/www/html
* Puis ajouter à la suite la ligne :
Redirect "/" "http://www.ncad.wiki"
* Pour appliquer les paramètres, '''redémarrer''' le service :
{{ Box Console | objet=root@SRVPROXY:~# service apache2 restart }}
* En cas d’erreur, vérifier les logs enregistrés dans '''/var/log/syslog''' ainsi que ceux d’'''Apache2''' situés dans '''/var/log/apache2/'''.
=== Création du vhost ActiveSync.ncad.fr ===
Ce vhost est dédié au '''trafique ActiveSync''' de '''Microsoft Exchange''' pour la '''synchronisation''' des terminaux mobiles.
* Créer le fichier de configuration '''/etc/apache2/sites-available/activesync.ncad.fr.conf''' et y insérer les éléments suivants ''(adapter les éléments en <span style="color:red">rouge</span>)'' :
ProxyRequests Off
RewriteEngine on
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
<VirtualHost *:443>
ServerAdmin <span style="color:red">noc@ncad.fr</span>
ServerName <span style="color:red">mail.ncad.fr</span>
Redirect "/" "<span style="color:red">http://www.ncad.wiki</span>"
ProxyPreserveHost On
ProxyVia Full
RequestHeader edit Transfer-Encoding Chunked chunked early
RequestHeader unset Accept-Encoding
CheckSpelling On
TimeOut 1800
SSLCertificateFile <span style="color:red">/etc/ssl/private/activesync.ncad.fr.crt</span>
SSLCertificateKeyFile <span style="color:red">/etc/ssl/private/activesync.ncad.fr.key</span>
<Location /Microsoft-Server-ActiveSync>
ProxyPass <span style="color:red">https://firewall.ncad.fr</span>:44300/Microsoft-Server-ActiveSync
ProxyPassReverse <span style="color:red">https://firewall.ncad.fr</span>:44300/Microsoft-Server-ActiveSync
SSLRequireSSL
</Location>
</VirtualHost>
* Chargement du '''vhost''' dans la configuration courante d’'''Apache2''' :
{{ Box Console | objet=root@SRVPROXY:~# a2ensite activesync.ncad.fr }}
* Pour appliquer les paramètres, '''redémarrer''' le service.
{{ Box Console | objet=root@SRVPROXY:~# service apache2 restart }}
* En cas d’erreur, vérifier les logs enregistrés dans '''/var/log/syslog''' ainsi que ceux d’'''Apache2''' situés dans '''/var/log/apache2/'''.
=== Authentification par certificat ===
* Copie du '''certificat de l’AC''' dans le répertoire d’exploitation '''/etc/ssl/certs''' :
{{ Box Console | objet=root@SRVPROXY:~# cp /home/SRVPROXY/easy-rsa/pki/ca.crt /etc/ssl/certs }}
* Modifier la configuration du fichier '''/etc/apache2/sites-available/activesync.ncad.fr.conf''' et y ajouter les éléments en <span style="color:red">rouge</span> :
ProxyRequests Off
RewriteEngine on
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
<VirtualHost *:443>
ServerAdmin noc@ncad.fr
ServerName mail.ncad.fr
Redirect "/" "http://www.wiki.ncad"
ProxyPreserveHost On
ProxyVia Full
RequestHeader edit Transfer-Encoding Chunked chunked early
RequestHeader unset Accept-Encoding
CheckSpelling On
TimeOut 1800
SSLCertificateFile /etc/ssl/private/activesync.ncad.fr.crt
SSLCertificateKeyFile /etc/ssl/private/activesync.ncad.fr.key
<span style="color:red">SSLCACertificateFile /etc/ssl/certs/ca.crt
SSLOptions +StdEnvVars
SSLVerifyClient require
SSLVerifyDepth 10
SSLCARevocationFile /etc/ssl/private/crl.pem
SSLCARevocationCheck chain</span>
<Location /Microsoft-Server-ActiveSync>
ProxyPass https://firewall.ncad.fr:44300/Microsoft-Server-ActiveSync
ProxyPassReverse https://firewall.ncad.fr:44300/Microsoft-Server-ActiveSync
SSLRequireSSL
</Location>
</VirtualHost>
* Pour appliquer les paramètres, '''redémarrer''' le service.
{{ Box Console | objet=root@SRVPROXY:~# service apache2 restart }}
* En cas d’erreur, vérifier les logs enregistrés dans '''/var/log/syslog''' ainsi que ceux d’Apache2 situés dans '''/var/log/apache2/'''.
** Vérifier l’existance du fichier '''/etc/ssl/private/crl.pem'''. Si ce dernier n’a pas été généré, reportez vous au chapitre [[:Reverse_proxy_ActiveSync_pour_Serveur_Microsoft_Exchange#Intégration_de_l’AC_au_système_d’exploitation | Intégration de l’AC au système d’exploitation]] section [[:Reverse_proxy_ActiveSync_pour_Serveur_Microsoft_Exchange#Révocation_d’un_certificat | Révocation Certificat ]].
=== Filtrage par le Device ID ===
* Modifier la configuration du fichier '''/etc/apache2/sites-available/activesync.ncad.fr.conf''' et y ajouter les éléments en <span style="color:red">rouge</span> :
ProxyRequests Off
RewriteEngine on
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
<VirtualHost *:443>
ServerAdmin noc@ncad.fr
ServerName mail.ncad.fr
Redirect "/" "http://www.wiki.ncad"
ProxyPreserveHost On
ProxyVia Full
RequestHeader edit Transfer-Encoding Chunked chunked early
RequestHeader unset Accept-Encoding
CheckSpelling On
TimeOut 1800
SSLCertificateFile /etc/ssl/private/activesync.ncad.fr.crt
SSLCertificateKeyFile /etc/ssl/private/activesync.ncad.fr.key
SSLCACertificateFile /etc/ssl/certs/ca.crt
SSLOptions +StdEnvVars
SSLVerifyClient require
SSLVerifyDepth 10
SSLCARevocationFile /etc/ssl/private/crl.pem
SSLCARevocationCheck chain
<Location /Microsoft-Server-ActiveSync>
ProxyPass https://firewall.ncad.fr:44300/Microsoft-Server-ActiveSync
ProxyPassReverse https://firewall.ncad.fr:44300/Microsoft-Server-ActiveSync
SSLRequireSSL
<span style="color:red">RewriteBase /
RewriteCond %{THE_REQUEST} "!(^OPTIONS /Microsoft-Server-ActiveSync HTTP/1.[0-1]$)|(DeviceId\=)('''monidentifiantandroid_01'''|'''monidentifiantandroid_02''')"
RewriteRule . / [R=403,L]</span>
</Location>
</VirtualHost>
* Remplacer '''monidentifiantandroid_XX''' par l’'''identifiant du téléphone''' à autoriser.
* Pour appliquer les paramètres, '''redémarrer''' le service :
{{ Box Console | objet=root@SRVPROXY:~# service apache2 restart }}
* En cas d’erreur, vérifier les logs enregistrés dans '''/var/log/syslog''' ainsi que ceux d’'''Apache2''' situés dans '''/var/log/apache2/'''.
== Paramétrage du pare-feu ==
=== Matrice des flux autorisés ===
Par défaut, les flux non listés ci-dessous ne sont pas autorisés sur l’équipement.
{| class="wikitable" style="margin:auto"
|+ Matrice de flux
|-
! Source !! Protocole(s) !! Port(s) !! Description
|-
| 192.168.1.0/24 || tcp || 22 || Accès SSH, SFTP depuis le LAN.
|-
| <IP_PUBLIQUE_IPV4> || tcp || 22 || Accès SSH, SFTP depuis le WAN.
|-
| 192.168.1.0/24 || udp || 161,162 || Supervision SNMP depuis le LAN.
|-
| <IP_PUBLIQUE_IPV4> || udp || 161,162 || Supervision SNMP depuis le WAN.
|-
| 192.168.1.0/24 || icmp || &mdash; || Requête ping depuis le LAN.
|-
| <IP_PUBLIQUE_IPV4> || icmp || &mdash; || Requête ping depuis le WAN.
|-
| * || tcp || 443 || Accès ActiveSync.
|}
=== Configuration iptables sur la couche IPv4 ===
* Installation des paquets '''iptables ''(pare-feu)''''' et '''iptables-persistent ''(sauvegarde persistante de la configuration)''''' :
{{ Box Console | objet=root@SRVPROXY:~# apt-get install iptables iptables-persistent -y }}
* Ajout des règles iptables conformément à la '''matrice des flux''' renseignées précédemment :
{{ Box Console | objet=root@SRVPROXY:~# iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT<br />
root@SRVPROXY:~# iptables -A INPUT -p tcp -s <IP_PUBLIQUE_IPV4> --dport 22 -j ACCEPT<br />
root@SRVPROXY:~# iptables -A INPUT -p udp -m multiport -s 192.168.1.0/24 --dports 161,162 -j ACCEPT<br />
root@SRVPROXY:~# iptables -A INPUT -p udp -m multiport -s <IP_PUBLIQUE_IPV4> --dports 161,162 -j ACCEPT<br />
root@SRVPROXY:~# iptables -A INPUT -p icmp -s 192.168.1.0/24 -j ACCEPT<br />
root@SRVPROXY:~# iptables -A INPUT -p icmp -m multiport -s <IP_PUBLIQUE_IPV4> -j ACCEPT<br />
root@SRVPROXY:~# iptables -A INPUT -p tcp --dport 443 -j ACCEPT<br />
root@SRVPROXY:~# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT<br />
root@SRVPROXY:~# iptables -P INPUT DROP }}
* '''Sauvegarde de la configuration''' et '''application automatique''' à chaque redémarrage du système :
{{ Box Console | objet=root@SRVPROXY:~# dpkg-reconfigure iptables-persistent }}
=== Configuration ip6tables sur la couche IPv6 ===
* '''Blocage''' des requêtes '''IPv6''' :
{{ Box Console | objet=root@SRVPROXY:~# ip6tables -P INPUT DROP }}
* '''Sauvegarde de la configuration''' et '''application automatique''' à chaque redémarrage du système :
{{ Box Console | objet=root@SRVPROXY:~# dpkg-reconfigure iptables-persistent }}
== Désactivation de IPv6 ==
* Editer le fichier '''/etc/sysctl.conf''' puis ajouter la ligne suivante à la fin :
net.ipv6.conf.all.disable_ipv6 = 1
* Un '''redémarrage''' de l’équipement est nécessaire :
{{ Box Console | objet=root@SRVPROXY:~# reboot }}
== Configuration réseau ==
{{ Box Information | objet=Jusqu'à présent, l'équipement est configuré sur le réseau locale ''(192.168.1.0/24)''. Pour son déploiement définif, il faut lui paramétrer une adresse IP publique. }}
* Editer le fichier de configuration '''/etc/network/interfaces''' puis '''ajouter/adapter''' les éléments suivants :
iface enXXXX inet static
address <IP_PUBLIQUE_IPV4>
gateway <GW_PUBLIQUE_IPV4>
Ces éléments correspondent à la configuration de l’'''adressage publique''' de l’équipement lorsqu’il est déployé en '''environnement de production'''.
* Editer le fichier de configuration '''/etc/network/interfaces''' puis '''ajouter/adapter''' les éléments suivants :
auto enXXXX:1
iface enpXXXX:1 inet static
address 192.168.1.10/24
Ces éléments correspondent à la configuration de l’'''adressage privée''' de l’équipement lorsqu’il est déployé en '''environnement de test''' sur le réseau d’administration.
* Remplacer la configuration du fichier '''/etc/resolv.conf''' par :
search ncad.fr
nameserver 8.8.8.8
* Pour appliquer la configuration, il est nécessaire de '''redémarrer''' le service réseau.
{{ Box Console | objet=root@SRVPROXY:~# /etc/init.d/networking restart }}
== Configuration supervision SNMP ==
* Installation du paquet '''snmpd'''.
{{ Box Console | objet=root@SRVPROXY:~# apt-get install snmpd }}
* Depuis le fichier de configuration '''/etc/snmp/snmpd.conf''', rechercher la ligne :
sysLocation
sysContact
* Puis, remplacer son contenu par :
sysLocation PARIS,DC5
sysContact webmaster@domaine.tld
* Rechercher la ligne :
agentaddress 127.0.0.1,[::1]
* Puis, remplacer son contenu par :
agentaddress <IP_PUBLIQUE_IPV4>
* Rechercher la ligne :
rocommunity public default –V systemonly
* Puis, remplacer son contenu par :
rocommunity public default
* Redémarrer le service '''snmp''' pour appliquer les changements.
{{ Box Console | objet=root@SRVPROXY:~# service snmpd restart }}
== Configuration de Postfix ==
Le service '''Postfix''' est un service de '''messagerie électronique'''. Il sera déployé ici pour permettre au '''Reverse Proxy''' d’envoyer des '''notifications''' par courriel.
* Installation des paquets '''postfix''' et '''mutt''' :
{{ Box Console | objet=root@SRVPROXY:~# apt-get install postfix mutt }}
* Lancement de l’utilitaire de configuration du paquet '''Postfix''' :
{{ Box Console | objet=root@SRVPROXY:~# dpkg-reconfigure postfix }}
* Comme '''Configuration type du serveur de messagerie''', choisir l’option '''Site Internet''' puis tabuler sur '''OK''' et taper sur '''Entrée''' :<br />[[Image:POSTFIX_INSTALL_INTERNET_REVERSEPROXY_STEP1.png]]
* Comme valeur pour '''Nom de courrier''', saisir le domaine '''mail.ncad.fr''' puis tabuler sur '''OK''' et taper sur '''Entrée''' :<br />[[Image:POSTFIX_INSTALL_INTERNET_REVERSEPROXY_STEP2.png]]
* Comme '''Destinataire des courriels de “root” et “postmaster”''' indiquer l’adresse mail '''noc@ncad.fr''' puis tabuler sur '''OK''' et taper sur '''Entrée''' :<br />[[Image:POSTFIX_INSTALL_INTERNET_REVERSEPROXY_STEP3.png]]
* Comme '''Autres destinations pour lesquelles le courrier sera accepté''' conserver les paramètres par défaut puis tabuler sur '''OK''' et taper sur '''Entrée''' :<br />[[Image:POSTFIX_INSTALL_INTERNET_REVERSEPROXY_STEP4.png]]
* Pour la question '''Faut-il forcer des mises à jour synchronisées de la file d’attente des courriels''' sélectionner comme réponse '''Oui''' puis tabuler sur '''OK''' et taper sur '''Entrée''' :<br />[[Image:POSTFIX_INSTALL_INTERNET_REVERSEPROXY_STEP5.png]]
* Comme liste des '''Réseaux internet''' conserver la valeur par défaut puis tabuler sur '''OK''' et taper sur '''Entrée''' :<br />[[Image:POSTFIX_INSTALL_INTERNET_REVERSEPROXY_STEP6.png]]
* Comme '''Taille maximale des boîtes aux lettres''', conserver la valeur par défaut puis tabuler sur '''OK''' et taper sur '''Entrée''' :<br />[[Image:POSTFIX_INSTALL_INTERNET_REVERSEPROXY_STEP7.png]]
* Comme '''Caractère d’extension des adresses locales''', conserver la valeur par défaut puis tabuler sur '''OK''' et taper sur '''Entrée''' :<br />[[Image:POSTFIX_INSTALL_INTERNET_REVERSEPROXY_STEP8.png]]
* Parmi la liste des '''Protocoles internet à utiliser''', choisir la valeur '''ipv4''' puis tabuler sur '''OK''' et taper sur '''Entrée''' :<br />[[Image:POSTFIX_INSTALL_INTERNET_REVERSEPROXY_STEP9.png]]
* Editer le fichier '''/etc/aliases''' puis après la ligne :
postmaster: root
:: Ajouter la ligne suivante :
root: noc@ncad.fr
* Editer le fichier '''/etc/postfix/main.cf''' puis ajouter à la fin :
local_header_rewrite_clients = static :all
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
sender_canonical_maps = hash:/etc/postfix/sender_canonical
* Editer le fichier '''/etc/postfix/recipient_canonical''' puis ajouter à la fin :
root noc@ncad.fr
* Editer le fichier '''/etc/postfix/sender_canonical''' puis ajouter à la fin :
root SRVPROXY@mail.ncad.fr
* Procéder à la '''mise à jour''' des tables de correspondances de '''Postfix''' à partir des fichiers de configuration renseignés :
{{ Box Console | objet=root@SRVPROXY:~# postmap /etc/postfix/sender_canonical<br />
root@SRVPROXY:~# postmap /etc/postfix/recipient_canonical }}
* '''Redémarrer''' le service '''Postfix''' pour l’application des paramètres :
{{ Box Console | objet=root@SRVPROXY:~# service postfix restart }}
== Robot d’analyse des logs ==
Le robot inspecte les journaux d’'''activité du service Apache2''' à la recherche des erreurs suivantes :
* '''Error ''(20)'' :''' Tentative de connexion avec un '''certificat non valide'''.
* '''Error ''(23)'' :''' Tentative de connexion avec un '''certificat révoqué'''.
* '''Error ''(10)'' :''' Tentative de connexion avec un '''certificat expiré'''.
* '''Erreur 403 :''' Tentative de connexion avec un terminal dont le DeviceID n’est pas autorisé.
{| class="wikitable"
|-
! Emplacement(s) :
| '''/root/Scripts/Log''' – emplacement des scripts d’analyse.
|-
! Fichier(s) :
| '''daily_extract.sh''' – robot d’analyse des logs d’Apache2.<br />'''activite.log''' – rapport d’activité journalier transmis par courriel.
|}
* Création du '''répertoire d’extraction''' et de '''stockage''' des logs :
{{ Box Console | objet=root@SRVPROXY:~# mkdir /root/Scripts/Log }}
* Créer le fichier '''/root/Scripts/Log/daily_extract.sh''' et y insérer les lignes suivantes :
#!/bin/bash
#########################################################################
# PARAMETRES DU SCRIPTS
# À adapter selon votre environnement
#
#########################################################################
# Par défaut, le nom de machine du serveur proxy est SRVPROXY.
# Si vous changez ce nom de machine, pensez à le changer dans
# l'objet du mail (variable MAIL_OBJET).
# Adresse mail où seront envoyés les rapports
MAIL_DESTINATAIRE="administrateur@ncad.fr"
# Objet du mail
MAIL_OBJET="Rapport d'activité Apache2 pour SRVPROXY"
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# Ne pas modifier ce qui suit après
# FIN PARAMETRES DU SCRIPT
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
cd /root/Scripts/Log
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" > activite.log
echo "%                      RAPPORT D'ACTIVITE                                " >> activite.log
echo "%                Proxy ActiveSync Microsoft Exchange                    " >> activite.log
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> activite.log
echo "" >> activite.log
echo "> Rapport du $(date)" >> activite.log
echo "" >> activite.log
echo "Connexion de terminaux non autorisés" >> activite.log
echo "========================================" >> activite.log
echo "" >> activite.log
cat "/var/log/apache2/other_vhosts_access.log.1" | grep " 403 " >> activite.log
echo "" >> activite.log
echo "Certificat invalide" >> activite.log
echo "========================================" >> activite.log
echo "" >> activite.log
cat "/var/log/apache2/other_vhosts_access.log" | grep "Error (20)" >> activite.log
echo "" >> activite.log
echo "Certificat révoqué" >> activite.log
echo "========================================" >> activite.log
echo "" >> activite.log
cat "/var/log/apache2/other_vhosts_access.log" | grep "Error (23): certificate revoked" >> activite.log
echo "" >> activite.log
echo "Certificat expiré" >> activite.log
echo "========================================" >> activite.log
echo "" >> activite.log
cat "/var/log/apache2/other_vhosts_access.log" | grep "Error (10): certificate has expired" >> activite.log
echo "" >> activite.log
echo | mutt -s "$MAIL_OBJET" -i /root/Scripts/Log/activite.log $MAIL_DESTINATAIRE
exit 0
* '''Autoriser''' l’exécution du script :
{{ Box Console | objet=root@SRVPROXY:~# chmod +x /root/Scripts/Log/daily_extract.sh }}
* Pour '''planifier''' l’exécution du script, éditer '''crontab''' :
{{ Box Console | objet=root@SRVPROXY:~# crontab -e }}
* Puis, insérer la ligne suivante dans le fichier :
0 0 * * * /root/Scripts/Log/daily_extract.sh > /dev/null


[[Category:Microsoft Exchange]]
[[Category:Microsoft Exchange]]

Dernière version du 14 juillet 2024 à 10:13

Serveur Web

Installation d'Apache2 Paramétrage courant

Certificats SSL Web | .htaccess | Authentification par carte à puce | Certificats Let's Encrypt


Archives : Ancien article sur Apache2 | Module Whois | ProFTPd


Note de version

Cet article est en cours de rédaction.

Prérequis

  • Disposer d'un PC qui sera dédié à cette fonction.
  • Disposer d'une adresse IPv4 publique fixe dédiée pour cet équipement.

Installation du système d’exploitation Debian Bullseye

  • Adapter les élément en rouge à votre configuration.
  1. Depuis le menu Debian GNU/Linux installer menu (BIOS mode) sélectionner le mode Install puis taper sur Entrée.
  2. Depuis la liste des Languages, sélectionner French – Français puis taper sur Entrée.
  3. Depuis la liste des Pays (territoire ou région), sélectionner France puis taper sur Entrée.
  4. Depuis la liste des Disposition de clavier à utiliser, sélectionner Français puis taper sur Entrée.
  5. Si la configuration réseau via DHCP ne fonctionne pas :
    1. Au message La configuration automatique a échoué taper sur Entrée.
    2. Depuis la liste Méthode pour la configuration du réseau, sélectionner Configurer vous-même le réseau puis taper sur Entrée.
    3. Dans le champ Adresse IP, saisir 192.168.1.10 puis taper sur Entrée.
    4. Dans le champ Valeur du masque-réseau, saisir 255.255.255.0 puis taper sur Entrée.
    5. Dans le champ Passerelle, saisir 192.168.1.1 puis taper sur Entrée.
    6. Dans le champ Adresses des serveurs de noms, saisir 192.168.1.1 puis taper sur Entrée.
  6. Dans le champ Nom de machine, saisir SRVPROXY puis taper sur Entrée.
  7. Dans le champ Domaine, saisir ncad.fr puis taper sur Entrée.
  8. Dans le champ Mot de passe du superutilisateur (‘root’), saisir <MDP_ROOT> puis taper sur Entrée.
  9. Dans le champ Confirmation du mot de passe, saisir de nouveau <MDP_ROOT> puis taper sur Entrée.
  10. Dans le champ Nom complet du nouvel utilisateur, saisir SRVPROXY puis taper sur Entrée.
  11. Dans le champ Identifiant pour le compte utilisateur, saisir de nouveau SRVPROXY puis taper sur Entrée.
  12. Dans le champ Mot de passe pour le nouvel utilisateur, saisir <MDP_LOGIN> puis taper sur Entrée.
  13. Dans le champ Confirmation du mot de passe, saisir <MDP_LOGIN> puis taper sur Entrée.
  14. Depuis la liste Méthode de partitionnement, sélectionner Assisté – utiliser tout un disque avec LVM.
  15. Depuis la liste Disque à partitionner, sélectionner SCSI1 (0,0,0) (sda) – XXX GB ATA XXX puis taper sur Entrée.
  16. Depuis la liste Schéma de partitionnement, sélectionner Partition /home séparée puis taper sur Entrée.
  17. À la question Ecrire les modifications sur les disques et configurer LVM, tabuler sur Oui puis taper sur Entrée.
  18. Depuis le champ Quantité d’espace sur le groupe de volumes pour le partitionnement assisté, saisir la valeur 10% puis taper sur Entrée.
  19. À la question Faut-il appliquer les changements sur les disques, tabuler sur Oui puis taper sur Entrée.
  20. Depuis la liste de sélection Pays du miroir de l’archive Debian, sélectionner France puis taper sur Entrée.
  21. Depuis la liste Miroir de l’archive Debian, sélectionner deb.debian.org puis taper sur Entrée.
  22. Depuis le champ Mandataire http (laisser vide si aucun), laisser vide puis taper sur Entrée.
  23. Si la machine ne parvient pas à se connecter aux serveurs de mise à jour Debian :
    1. À l’affichage de l’erreur Veuillez vérifier le miroir indiqué ou en essayer un autre, tabuler sur Revenir en arrière sur puis taper sur Entrée.
    2. À la question Faut-il continuer sans miroir sur le réseau, tabuler sur Oui puis taper sur Entrée .
  24. À la question Souhaitez-vous participer à l’étude statistique sur l’utilisation des paquets, tabuler sur Non puis taper sur Entrée.
  25. Depuis la liste des Logiciels à installer :
    1. Sélectionner utilitaires usuels du système et serveur SSH.
    2. Désélectionner environnement de bureau Debian et …GNOME puis tabuler sur Continuer et taper sur Entrée.
  26. À la question Installer le programme de démarrage GRUB sur le disque principal, tabuler sur Oui puis taper sur Entrée.
  27. Depuis la liste Périphérique où sera installé le programme de démarrage, tabuler sur /dev/sda (ata-XXX_XXXXXXXXXXXXXXXX) puis taper sur Entrée.
  28. À l’affichage de la fenêtre Installation terminée, retirez le support d’installation UBS puis taper sur Continuer pour redémarrer l’équipement.

Installation de base

Cette section est nécessaire uniquement si vous avez rencontré des problèmes de connexion réseau tel que décrit au point 23 de la section précédente.

Avant de poursuivre, vérifier sur votre pare-feu que la machine est autorisée à sortir sur Internet.

  1. À l’invite de commande, saisir le login SRVPROXY puis le mot de passe associé. Taper sur Entrée pour valider.
  2. Une fois connecter, basculer sur le compte root à l’aide de la commande :
    su -
  3. Pour récupérer l’adresse IP locale de l’équipement, saisir la commande :
    ip addr
  4. Une fois l’accès à Internet autorisé, mettre à jour la liste des paquets depuis les dépôts Debian avec la commande :
    apt-get update
  5. Procéder à la mise à jour du système d’exploitation avec la commande :
    dist-upgrade

    et répondre O si besoin.
  6. Editer le fichier de configuration /etc/apt/sources.list et y ajouter à la fin les lignes suivantes :
    deb http://deb.debian.org/debian/ bullseye main
    deb-src http://deb.debian.org/debian/ bullseye main

    deb http://deb.debian.org/debian/ bullseye-updates main
    deb-src http://deb.debian.org/debian/ bullseye-updates main
  7. Rafraîchir la liste des dépôts Debian avec la commande :
    apt-get update
  8. Puis, relancer l’installation des paquets openssh-server et vim en lançant la commande :
    apt-get install openssh-server vim sshpass zip mutt
    .

Génération du certificat auto signé pour le serveur web

  • Génération de la clé privée et enregistrement dans le fichier activesync.ncad.fr.key :
    openssl genrsa -out activesync.ncad.fr.key 2048
  • Génération de la demande de certificat :
    openssl req –new –key activesync.ncad.fr.key –out activesync.ncad.fr.csr
Generating RSA private key, 2048 bit long modulus (2 primes)
.................................................................................................................+++++
..............................+++++
e is 65537 (0x010001)
  • Une fois la clé privée générée, procéder à la génération du fichier de demande de certificat et l'enregistrer dans le fichier activesync.ncad.fr.csr :
    openssl req -new -key activesync.ncad.fr.key -out activesync.ncad.fr.csr
  • Puis, répondre au question du prompt en adaptant les éléments en rouge :
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:FRANCE
Locality Name (eg, city) []:FIGEAC
Organization Name (eg, company) [Internet Widgits Pty Ltd]:NCAD
Organizational Unit Name (eg, section) []:Direction des Systèmes d'Information
Common Name (e.g. server FQDN or YOUR name) []:mail.ncad.fr
Email Address []:noc@ncad.fr

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:***
An optional company name []:
  • Signature du certificat à l'aide du fichier de demande de certificat et de la clé privée :
    openssl x509 –req –days 3650 –in activesync.ncad.fr.csr –signkey activesync.ncad.fr.key –out activesync.ncad.fr.crt
  • Déplacement de la clé privée et du certificat dans le répertoire /etc/ssl/private/ :

mv activesync.ncad.fr.crt /etc/ssl/private/
mv activesync.ncad.fr.key /etc/ssl/private/

Installation de l’autorité de certification (AC)

L’autorité de certification est gérée avec le programme easy-rsa. Ce dernier permet l’installation de l’AC ainsi que les opérations courantes sur cette dernière.

  • Installation du paquet easy-rsa :

root@SRVPROXY:~# apt-get install easy-rsa -y

  • Création du répertoire hébergeant la configuration de l’autorité de certification :

root@SRVPROXY:~# mkdir /home/SRVPROXY/easy-rsa
root@SRVPROXY:~# ln –s /usr/share/easy-rsa/* /home/SRVPROXY/easy-rsa

  • Restriction d’accès au répertoire à l’utilisateur SRVPROXY uniquement :

root@SRVPROXY:~# chmod 700 /home/SRVPROXY -R

  • Initialisation de l’Infrastructure de Clés Publiques (ICP) :

root@SRVPROXY:~# cd /home/SRVPROXY/easy-rsa
root@SRVPROXY:~# ./easyrsa init-pki

  • Editer le fichier /home/SRVPROXY/easy-rsa/vars puis y insérer les lignes suivantes (adapter les éléments en rouge) :
set_var EASYRSA_REQ_COUNTRY    "FR"
set_var EASYRSA_REQ_PROVINCE   "OCCITANIE"
set_var EASYRSA_REQ_CITY       "FIGEAC"
set_var EASYRSA_REQ_ORG        "NCAD"
set_var EASYRSA_REQ_EMAIL      "noc@ncad.fr"
set_var EASYRSA_REQ_OU         "Direction des Systèmes d'Information"
set_var EASYRSA_ALGO           "ec"
set_var EASYRSA_DIGEST         "sha512"
  • Génération de la paire de clés root public et privé :

root@SRVPROXY:~# ./easyrsa build-ca

  • À la demande du prompt, renseigner une Passphrase secrète. Elle sera demandée pour toutes opérations sur L’Autorité de Certification (création de certificats, renouvellement, révocation).
  • À la demande d’un Common Name (CN) taper Entrée.

Intégration de l’AC au système d’exploitation

Si le certificat racine de l’AC n’est pas intégrée au système d’exploitation du client, ce dernier retournera un message d’alerte de sécurité pour tous les certificats délivrée pas l’AC.

  • Exportation du certificat publique de l’autorité de certification :

root@SRVPROXY:~# cp /home/SRVPROXY/easy-rsa/pki/ca.crt /etc/ssl/certs/

Génération d’un certificat client

Ce certificat sera à installer sur le terminal de l’utilisateur.

  • Création du répertoire spécifique pour les demandes de certificats des utilisateurs :

root@SRVPROXY:~# mkdir /home/SRVPROXY/clients-csr

  • Génération de la clé privée pour l’utilisateur CACHELN :

root@SRVPROXY:~# cd /home/SRVPROXY/clients-csr
root@SRVPROXY:~# openssl genrsa -out CACHELN_19052022.key

  • Génération de la demande de certificat pour l’utilisateur CACHELN (adapter les éléments en rouge) :

root@SRVPROXY:~# openssl req –new –key CACHELN_19052022.key –out CACHELN_19052022.req
Country Name (2 letter code) [XX]:FR
State or Province Name (full name) []:OCCITANIE
Locality Name (eg, city) [Default City]:FIGEAC
Organization Name (eg, company) [Default Company Ltd]:NCAD
Organizational Unit Name (eg, section) []:Direction des Systèmes d'Information
Common Name (eg, your name or your server's hostname) []:CACHELN
Email Address []:cach3ln@ncad.fr

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<NE_RIEN_SAISIR>
An optional company name []:<NE_RIEN_SAISIR>

  • Importation de la demande de signature par l’autorité de certification :

root@SRVPROXY:~# cd ../easy-rsa
root@SRVPROXY:~# ./easyrsa import-req ../clients-csr/CACHELN_19052022.req CACHELN_19052022

  • Signature du certificat (la saisie de la Passphrase de l’AC sera requise) :

root@SRVPROXY:~# ./easyrsa sign-req client CACHELN_19052022

  • Exportation du certificat de l’utilisateur au format p12 (format exploitable par les terminaux utilisateurs) :

root@SRVPROXY:~# openssl pkcs12 -export -out pki/private/CACHELN_19052022.p12 -in pki/issued/CACHELN_19052022.crt -inkey ../clients-csr/CACHELN_19052022.key

  • Copier le certificat dans le répertoire SFTP /home/SRVPROXY/clients-csr pour pouvoir être téléchargé via un client SFTP :

root@SRVPROXY:~# cp pki/private/CACHELN_19052022.p12 /home/SRVPROXY/clients-csr
root@SRVPROXY:~# chmod 777 /home/SRVPROXY/clients-csr/*

Renouveller un certificat

Le certificat doit expirer dans moins de 30 jours pour pouvoir être renouvelé.

  • Depuis le répertoire d’installation de l’AC, utiliser l’utilitaire easyrsa suivit de la commande renew pour reconduire la validité du certificat d’un utilisateur (la saisie de la Passphrase de l’AC sera requise) :

root@SRVPROXY:~# cd /home/SRVPROXY/easy-rsa
root@SRVPROXY:~# ./easyrsa renew CACHELN_19052022

Révocation d’un certificat

  • Depuis le répertoire d’installation de l’AC, utiliser l’utilitaire easyrsa suivit de la commande revoke pour mettre fin à la validité du certificat d’un utilisateur (la saisie de la Passphrase de l’AC sera requise) :

root@SRVPROXY:~# cd /home/SRVPROXY/easy-rsa
root@SRVPROXY:~# ./easyrsa revoke CACHELN_19052022

  • Procéder à la régénération de la CRL depuis la commande gen-crl :

root@SRVPROXY:~# ./easyrsa gen-crl

  • Copier le fichier dans le répertoire d’exploitation /etc/ssl/private :

root@SRVPROXY:~# cp pki/crl.pem /etc/ssl/private

  • Redémarrer le service Apache2 pour la prise en compte des modifications :

root@SRVPROXY:~# /etc/init.d/apache2 restart

Configuration du service Apache2

Le service Apache2 assure la fonction de Reverse Proxy. Il sera chargé d’écouter les requêtes et de les transmettre au serveur Microsoft Exchange. Il pourra également assurer les fonctions de filtrage basé sur le Device Id ainsi que l’authentification par certificat.

Installation du service

  • Installation du serveur web Apache2 :

root@SRVPROXY:~# apt-get install apache2 -y

  • Activation des modules proxy_http, headers, proxy_http, ssl, rewrite et speling :

root@SRVPROXY:~# a2enmod proxy headers proxy_http ssl rewrite speling

  • Tout changement de configuration nécessite le redémarrage du service :

root@SRVPROXY:~# service apache2 restart

  • En cas d’erreur, vérifier les logs enregistrés dans /var/log/syslog ainsi que ceux d’Apache2 situés dans /var/log/apache2/.

Configuration de base

  • Editer le fichier de configuration /etc/apache2/sites-availables/000-default :
  • Adapter la ligne suivante :
ServerAdmin noc@ncad.fr
  • Commenter la ligne :
#DocumentRoot /var/www/html
  • Puis ajouter à la suite la ligne :
Redirect "/" "http://www.ncad.wiki"
  • Pour appliquer les paramètres, redémarrer le service :

root@SRVPROXY:~# service apache2 restart

  • En cas d’erreur, vérifier les logs enregistrés dans /var/log/syslog ainsi que ceux d’Apache2 situés dans /var/log/apache2/.

Création du vhost ActiveSync.ncad.fr

Ce vhost est dédié au trafique ActiveSync de Microsoft Exchange pour la synchronisation des terminaux mobiles.

  • Créer le fichier de configuration /etc/apache2/sites-available/activesync.ncad.fr.conf et y insérer les éléments suivants (adapter les éléments en rouge) :
ProxyRequests Off
RewriteEngine on
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

<VirtualHost *:443>
	ServerAdmin noc@ncad.fr
	ServerName mail.ncad.fr
	Redirect "/" "http://www.ncad.wiki"
	ProxyPreserveHost On
	ProxyVia Full
	RequestHeader edit Transfer-Encoding Chunked chunked early
	RequestHeader unset Accept-Encoding
	CheckSpelling On
	TimeOut 1800

	SSLCertificateFile /etc/ssl/private/activesync.ncad.fr.crt
	SSLCertificateKeyFile /etc/ssl/private/activesync.ncad.fr.key

	<Location /Microsoft-Server-ActiveSync>
		ProxyPass https://firewall.ncad.fr:44300/Microsoft-Server-ActiveSync
		ProxyPassReverse https://firewall.ncad.fr:44300/Microsoft-Server-ActiveSync
		SSLRequireSSL
	</Location>
</VirtualHost>
  • Chargement du vhost dans la configuration courante d’Apache2 :

root@SRVPROXY:~# a2ensite activesync.ncad.fr

  • Pour appliquer les paramètres, redémarrer le service.

root@SRVPROXY:~# service apache2 restart

  • En cas d’erreur, vérifier les logs enregistrés dans /var/log/syslog ainsi que ceux d’Apache2 situés dans /var/log/apache2/.

Authentification par certificat

  • Copie du certificat de l’AC dans le répertoire d’exploitation /etc/ssl/certs :

root@SRVPROXY:~# cp /home/SRVPROXY/easy-rsa/pki/ca.crt /etc/ssl/certs

  • Modifier la configuration du fichier /etc/apache2/sites-available/activesync.ncad.fr.conf et y ajouter les éléments en rouge :
ProxyRequests Off
RewriteEngine on
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

<VirtualHost *:443>
	ServerAdmin noc@ncad.fr
	ServerName mail.ncad.fr
	Redirect "/" "http://www.wiki.ncad"
	ProxyPreserveHost On
	ProxyVia Full
	RequestHeader edit Transfer-Encoding Chunked chunked early
	RequestHeader unset Accept-Encoding
	CheckSpelling On
	TimeOut 1800

	SSLCertificateFile /etc/ssl/private/activesync.ncad.fr.crt
	SSLCertificateKeyFile /etc/ssl/private/activesync.ncad.fr.key
	SSLCACertificateFile /etc/ssl/certs/ca.crt

	SSLOptions +StdEnvVars
	SSLVerifyClient require
	SSLVerifyDepth 10
	SSLCARevocationFile /etc/ssl/private/crl.pem
	SSLCARevocationCheck chain

	<Location /Microsoft-Server-ActiveSync>
		ProxyPass https://firewall.ncad.fr:44300/Microsoft-Server-ActiveSync
		ProxyPassReverse https://firewall.ncad.fr:44300/Microsoft-Server-ActiveSync
		SSLRequireSSL
	</Location>
</VirtualHost>
  • Pour appliquer les paramètres, redémarrer le service.

root@SRVPROXY:~# service apache2 restart

Filtrage par le Device ID

  • Modifier la configuration du fichier /etc/apache2/sites-available/activesync.ncad.fr.conf et y ajouter les éléments en rouge :
ProxyRequests Off
RewriteEngine on
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

<VirtualHost *:443>
	ServerAdmin noc@ncad.fr
	ServerName mail.ncad.fr
	Redirect "/" "http://www.wiki.ncad"
	ProxyPreserveHost On
	ProxyVia Full
	RequestHeader edit Transfer-Encoding Chunked chunked early
	RequestHeader unset Accept-Encoding
	CheckSpelling On
	TimeOut 1800

	SSLCertificateFile /etc/ssl/private/activesync.ncad.fr.crt
	SSLCertificateKeyFile /etc/ssl/private/activesync.ncad.fr.key
	SSLCACertificateFile /etc/ssl/certs/ca.crt

	SSLOptions +StdEnvVars
	SSLVerifyClient require
	SSLVerifyDepth 10
	SSLCARevocationFile /etc/ssl/private/crl.pem
	SSLCARevocationCheck chain

	<Location /Microsoft-Server-ActiveSync>
		ProxyPass https://firewall.ncad.fr:44300/Microsoft-Server-ActiveSync
		ProxyPassReverse https://firewall.ncad.fr:44300/Microsoft-Server-ActiveSync
		SSLRequireSSL

		RewriteBase /
		RewriteCond %{THE_REQUEST} "!(^OPTIONS /Microsoft-Server-ActiveSync HTTP/1.[0-1]$)|(DeviceId\=)(monidentifiantandroid_01|monidentifiantandroid_02)"
		RewriteRule . / [R=403,L]
	</Location>
</VirtualHost>
  • Remplacer monidentifiantandroid_XX par l’identifiant du téléphone à autoriser.
  • Pour appliquer les paramètres, redémarrer le service :

root@SRVPROXY:~# service apache2 restart

  • En cas d’erreur, vérifier les logs enregistrés dans /var/log/syslog ainsi que ceux d’Apache2 situés dans /var/log/apache2/.

Paramétrage du pare-feu

Matrice des flux autorisés

Par défaut, les flux non listés ci-dessous ne sont pas autorisés sur l’équipement.

Matrice de flux
Source Protocole(s) Port(s) Description
192.168.1.0/24 tcp 22 Accès SSH, SFTP depuis le LAN.
<IP_PUBLIQUE_IPV4> tcp 22 Accès SSH, SFTP depuis le WAN.
192.168.1.0/24 udp 161,162 Supervision SNMP depuis le LAN.
<IP_PUBLIQUE_IPV4> udp 161,162 Supervision SNMP depuis le WAN.
192.168.1.0/24 icmp Requête ping depuis le LAN.
<IP_PUBLIQUE_IPV4> icmp Requête ping depuis le WAN.
* tcp 443 Accès ActiveSync.

Configuration iptables sur la couche IPv4

  • Installation des paquets iptables (pare-feu) et iptables-persistent (sauvegarde persistante de la configuration) :

root@SRVPROXY:~# apt-get install iptables iptables-persistent -y

  • Ajout des règles iptables conformément à la matrice des flux renseignées précédemment :

root@SRVPROXY:~# iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
root@SRVPROXY:~# iptables -A INPUT -p tcp -s <IP_PUBLIQUE_IPV4> --dport 22 -j ACCEPT
root@SRVPROXY:~# iptables -A INPUT -p udp -m multiport -s 192.168.1.0/24 --dports 161,162 -j ACCEPT
root@SRVPROXY:~# iptables -A INPUT -p udp -m multiport -s <IP_PUBLIQUE_IPV4> --dports 161,162 -j ACCEPT
root@SRVPROXY:~# iptables -A INPUT -p icmp -s 192.168.1.0/24 -j ACCEPT
root@SRVPROXY:~# iptables -A INPUT -p icmp -m multiport -s <IP_PUBLIQUE_IPV4> -j ACCEPT
root@SRVPROXY:~# iptables -A INPUT -p tcp --dport 443 -j ACCEPT
root@SRVPROXY:~# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
root@SRVPROXY:~# iptables -P INPUT DROP

  • Sauvegarde de la configuration et application automatique à chaque redémarrage du système :

root@SRVPROXY:~# dpkg-reconfigure iptables-persistent

Configuration ip6tables sur la couche IPv6

  • Blocage des requêtes IPv6 :

root@SRVPROXY:~# ip6tables -P INPUT DROP

  • Sauvegarde de la configuration et application automatique à chaque redémarrage du système :

root@SRVPROXY:~# dpkg-reconfigure iptables-persistent

Désactivation de IPv6

  • Editer le fichier /etc/sysctl.conf puis ajouter la ligne suivante à la fin :
net.ipv6.conf.all.disable_ipv6 = 1
  • Un redémarrage de l’équipement est nécessaire :

root@SRVPROXY:~# reboot

Configuration réseau

Jusqu'à présent, l'équipement est configuré sur le réseau locale (192.168.1.0/24). Pour son déploiement définif, il faut lui paramétrer une adresse IP publique.

  • Editer le fichier de configuration /etc/network/interfaces puis ajouter/adapter les éléments suivants :
iface enXXXX inet static
	address <IP_PUBLIQUE_IPV4>
	gateway <GW_PUBLIQUE_IPV4>

Ces éléments correspondent à la configuration de l’adressage publique de l’équipement lorsqu’il est déployé en environnement de production.

  • Editer le fichier de configuration /etc/network/interfaces puis ajouter/adapter les éléments suivants :
auto enXXXX:1
iface enpXXXX:1 inet static
	address 192.168.1.10/24

Ces éléments correspondent à la configuration de l’adressage privée de l’équipement lorsqu’il est déployé en environnement de test sur le réseau d’administration.

  • Remplacer la configuration du fichier /etc/resolv.conf par :
search ncad.fr
nameserver 8.8.8.8
  • Pour appliquer la configuration, il est nécessaire de redémarrer le service réseau.

root@SRVPROXY:~# /etc/init.d/networking restart

Configuration supervision SNMP

  • Installation du paquet snmpd.

root@SRVPROXY:~# apt-get install snmpd

  • Depuis le fichier de configuration /etc/snmp/snmpd.conf, rechercher la ligne :
sysLocation
sysContact
  • Puis, remplacer son contenu par :
sysLocation	PARIS,DC5
sysContact	webmaster@domaine.tld
  • Rechercher la ligne :
agentaddress	127.0.0.1,[::1]
  • Puis, remplacer son contenu par :
agentaddress	<IP_PUBLIQUE_IPV4>
  • Rechercher la ligne :
rocommunity	public default –V systemonly
  • Puis, remplacer son contenu par :
rocommunity	public default
  • Redémarrer le service snmp pour appliquer les changements.

root@SRVPROXY:~# service snmpd restart

Configuration de Postfix

Le service Postfix est un service de messagerie électronique. Il sera déployé ici pour permettre au Reverse Proxy d’envoyer des notifications par courriel.

  • Installation des paquets postfix et mutt :

root@SRVPROXY:~# apt-get install postfix mutt

  • Lancement de l’utilitaire de configuration du paquet Postfix :

root@SRVPROXY:~# dpkg-reconfigure postfix

  • Comme Configuration type du serveur de messagerie, choisir l’option Site Internet puis tabuler sur OK et taper sur Entrée :
    POSTFIX INSTALL INTERNET REVERSEPROXY STEP1.png
  • Comme valeur pour Nom de courrier, saisir le domaine mail.ncad.fr puis tabuler sur OK et taper sur Entrée :
    POSTFIX INSTALL INTERNET REVERSEPROXY STEP2.png
  • Comme Destinataire des courriels de “root” et “postmaster” indiquer l’adresse mail noc@ncad.fr puis tabuler sur OK et taper sur Entrée :
    POSTFIX INSTALL INTERNET REVERSEPROXY STEP3.png
  • Comme Autres destinations pour lesquelles le courrier sera accepté conserver les paramètres par défaut puis tabuler sur OK et taper sur Entrée :
    POSTFIX INSTALL INTERNET REVERSEPROXY STEP4.png
  • Pour la question Faut-il forcer des mises à jour synchronisées de la file d’attente des courriels sélectionner comme réponse Oui puis tabuler sur OK et taper sur Entrée :
    POSTFIX INSTALL INTERNET REVERSEPROXY STEP5.png
  • Comme liste des Réseaux internet conserver la valeur par défaut puis tabuler sur OK et taper sur Entrée :
    POSTFIX INSTALL INTERNET REVERSEPROXY STEP6.png
  • Comme Taille maximale des boîtes aux lettres, conserver la valeur par défaut puis tabuler sur OK et taper sur Entrée :
    POSTFIX INSTALL INTERNET REVERSEPROXY STEP7.png
  • Comme Caractère d’extension des adresses locales, conserver la valeur par défaut puis tabuler sur OK et taper sur Entrée :
    POSTFIX INSTALL INTERNET REVERSEPROXY STEP8.png
  • Parmi la liste des Protocoles internet à utiliser, choisir la valeur ipv4 puis tabuler sur OK et taper sur Entrée :
    POSTFIX INSTALL INTERNET REVERSEPROXY STEP9.png
  • Editer le fichier /etc/aliases puis après la ligne :
postmaster:	root
Ajouter la ligne suivante :
root:		noc@ncad.fr
  • Editer le fichier /etc/postfix/main.cf puis ajouter à la fin :
local_header_rewrite_clients = static :all
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
sender_canonical_maps = hash:/etc/postfix/sender_canonical
  • Editer le fichier /etc/postfix/recipient_canonical puis ajouter à la fin :
root		noc@ncad.fr
  • Editer le fichier /etc/postfix/sender_canonical puis ajouter à la fin :
root		SRVPROXY@mail.ncad.fr
  • Procéder à la mise à jour des tables de correspondances de Postfix à partir des fichiers de configuration renseignés :

root@SRVPROXY:~# postmap /etc/postfix/sender_canonical
root@SRVPROXY:~# postmap /etc/postfix/recipient_canonical

  • Redémarrer le service Postfix pour l’application des paramètres :

root@SRVPROXY:~# service postfix restart

Robot d’analyse des logs

Le robot inspecte les journaux d’activité du service Apache2 à la recherche des erreurs suivantes :

  • Error (20) : Tentative de connexion avec un certificat non valide.
  • Error (23) : Tentative de connexion avec un certificat révoqué.
  • Error (10) : Tentative de connexion avec un certificat expiré.
  • Erreur 403 : Tentative de connexion avec un terminal dont le DeviceID n’est pas autorisé.
Emplacement(s) : /root/Scripts/Log – emplacement des scripts d’analyse.
Fichier(s) : daily_extract.sh – robot d’analyse des logs d’Apache2.
activite.log – rapport d’activité journalier transmis par courriel.
  • Création du répertoire d’extraction et de stockage des logs :

root@SRVPROXY:~# mkdir /root/Scripts/Log

  • Créer le fichier /root/Scripts/Log/daily_extract.sh et y insérer les lignes suivantes :
#!/bin/bash

#########################################################################
# PARAMETRES DU SCRIPTS
# À adapter selon votre environnement
#
#########################################################################

# Par défaut, le nom de machine du serveur proxy est SRVPROXY.
# Si vous changez ce nom de machine, pensez à le changer dans
# l'objet du mail (variable MAIL_OBJET).

# Adresse mail où seront envoyés les rapports
MAIL_DESTINATAIRE="administrateur@ncad.fr"

# Objet du mail
MAIL_OBJET="Rapport d'activité Apache2 pour SRVPROXY"

#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# Ne pas modifier ce qui suit après
# FIN PARAMETRES DU SCRIPT
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

cd /root/Scripts/Log
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" > activite.log
echo "%                      RAPPORT D'ACTIVITE                                " >> activite.log
echo "%                 Proxy ActiveSync Microsoft Exchange                    " >> activite.log
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" >> activite.log
echo "" >> activite.log
echo "> Rapport du $(date)" >> activite.log
echo "" >> activite.log
echo "Connexion de terminaux non autorisés" >> activite.log
echo "========================================" >> activite.log
echo "" >> activite.log
cat "/var/log/apache2/other_vhosts_access.log.1" | grep " 403 " >> activite.log
echo "" >> activite.log
echo "Certificat invalide" >> activite.log
echo "========================================" >> activite.log
echo "" >> activite.log
cat "/var/log/apache2/other_vhosts_access.log" | grep "Error (20)" >> activite.log
echo "" >> activite.log
echo "Certificat révoqué" >> activite.log
echo "========================================" >> activite.log
echo "" >> activite.log
cat "/var/log/apache2/other_vhosts_access.log" | grep "Error (23): certificate revoked" >> activite.log
echo "" >> activite.log
echo "Certificat expiré" >> activite.log
echo "========================================" >> activite.log
echo "" >> activite.log
cat "/var/log/apache2/other_vhosts_access.log" | grep "Error (10): certificate has expired" >> activite.log
echo "" >> activite.log

echo | mutt -s "$MAIL_OBJET" -i /root/Scripts/Log/activite.log $MAIL_DESTINATAIRE

exit 0
  • Autoriser l’exécution du script :

root@SRVPROXY:~# chmod +x /root/Scripts/Log/daily_extract.sh

  • Pour planifier l’exécution du script, éditer crontab :

root@SRVPROXY:~# crontab -e

  • Puis, insérer la ligne suivante dans le fichier :
0	0	*	*	*	/root/Scripts/Log/daily_extract.sh > /dev/null