« Reverse proxy ActiveSync pour Serveur Microsoft Exchange » : différence entre les versions
(23 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"> | ## 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"> | ## 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"> | ## 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"> | ## 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"> | # 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"> | # 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"> | # 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"> | # 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 55 : | Ligne 59 : | ||
{{ Box Attention | objet=Avant de poursuivre, vérifier sur votre pare-feu que la machine est autorisée à sortir sur Internet. }} | {{ 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"> | # À 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 -}} | # 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}} | # Pour récupérer l’'''adresse IP locale''' de l’équipement, saisir la commande :<br/>{{Commande|ip addr}} | ||
Ligne 66 : | Ligne 70 : | ||
== Génération du certificat auto signé pour le serveur web == | == Génération du certificat auto signé pour le serveur web == | ||
* Génération de la clé privée :<br />{{Commande|openssl genrsa -out activesync.ncad.fr.key 2048}} | * 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}} | * Génération de la demande de certificat :<br />{{Commande|openssl req –new –key activesync.ncad.fr.key –out activesync.ncad.fr.csr}} | ||
Ligne 74 : | Ligne 78 : | ||
e is 65537 (0x010001) | 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 :<br />{{Commande|openssl req -new -key activesync.ncad.fr.key -out activesync.ncad.fr.csr}} | * 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> : | * 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 | You are about to be asked to enter information that will be incorporated | ||
into your certificate request. | into your certificate request. | ||
Ligne 87 : | Ligne 92 : | ||
State or Province Name (full name) [Some-State]:<span style="color:red">FRANCE</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> | Locality Name (eg, city) []:<span style="color:red">FIGEAC</span> | ||
Organization Name (eg, company) [Internet Widgits Pty Ltd]:<span style="color:red"> | Organization Name (eg, company) [Internet Widgits Pty Ltd]:<span style="color:red">NCAD</span> | ||
Organizational Unit Name (eg, section) []:<span style="color:red"> | 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> | Common Name (e.g. server FQDN or YOUR name) []:<span style="color:red">mail.ncad.fr</span> | ||
Email Address []:<span style="color:red"> | Email Address []:<span style="color:red">noc@ncad.fr</span> | ||
Please enter the following 'extra' attributes | Please enter the following 'extra' attributes | ||
Ligne 97 : | Ligne 102 : | ||
An optional company name []: | An optional company name []: | ||
* Signature du certificat :<br />{{Commande|openssl x509 –req –days 3650 –in activesync.ncad.fr.csr –signkey activesync.ncad.fr.key –out activesync.ncad.fr.crt}} | * 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/''' : | * 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 /> | {{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/}} | 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 || — || 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)''''' : | |||
{{ 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 —
Certificats SSL Web | .htaccess | Authentification par carte à puce | Certificats Let's Encrypt
Archives : Ancien article sur Apache2 | Module Whois | ProFTPd
|
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.
- Depuis le menu Debian GNU/Linux installer menu (BIOS mode) sélectionner le mode Install puis taper sur Entrée.
- Depuis la liste des Languages, sélectionner French – Français puis taper sur Entrée.
- Depuis la liste des Pays (territoire ou région), sélectionner France puis taper sur Entrée.
- Depuis la liste des Disposition de clavier à utiliser, sélectionner Français puis taper sur Entrée.
- Si la configuration réseau via DHCP ne fonctionne pas :
- Au message La configuration automatique a échoué taper sur 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 Entrée.
- Dans le champ Adresse IP, saisir 192.168.1.10 puis taper sur Entrée.
- Dans le champ Valeur du masque-réseau, saisir 255.255.255.0 puis taper sur Entrée.
- Dans le champ Passerelle, saisir 192.168.1.1 puis taper sur Entrée.
- Dans le champ Adresses des serveurs de noms, saisir 192.168.1.1 puis taper sur Entrée.
- Dans le champ Nom de machine, saisir SRVPROXY puis taper sur Entrée.
- Dans le champ Domaine, saisir ncad.fr puis taper sur Entrée.
- Dans le champ Mot de passe du superutilisateur (‘root’), saisir <MDP_ROOT> puis taper sur Entrée.
- Dans le champ Confirmation du mot de passe, saisir de nouveau <MDP_ROOT> puis taper sur Entrée.
- Dans le champ Nom complet du nouvel utilisateur, saisir SRVPROXY puis taper sur Entrée.
- Dans le champ Identifiant pour le compte utilisateur, saisir de nouveau SRVPROXY puis taper sur Entrée.
- Dans le champ Mot de passe pour le nouvel utilisateur, saisir <MDP_LOGIN> puis taper sur Entrée.
- Dans le champ Confirmation du mot de passe, saisir <MDP_LOGIN> puis taper sur Entrée.
- Depuis la liste Méthode de partitionnement, sélectionner Assisté – utiliser tout un disque avec LVM.
- Depuis la liste Disque à partitionner, sélectionner SCSI1 (0,0,0) (sda) – XXX GB ATA XXX puis taper sur Entrée.
- Depuis la liste Schéma de partitionnement, sélectionner Partition /home séparée puis taper sur Entrée.
- À la question Ecrire les modifications sur les disques et configurer LVM, tabuler sur Oui puis taper sur Entrée.
- Depuis le champ Quantité d’espace sur le groupe de volumes pour le partitionnement assisté, saisir la valeur 10% puis taper sur Entrée.
- À la question Faut-il appliquer les changements sur les disques, tabuler sur Oui puis taper sur Entrée.
- Depuis la liste de sélection Pays du miroir de l’archive Debian, sélectionner France puis taper sur Entrée.
- Depuis la liste Miroir de l’archive Debian, sélectionner deb.debian.org puis taper sur Entrée.
- Depuis le champ Mandataire http (laisser vide si aucun), laisser vide puis taper sur Entrée.
- Si la machine ne parvient pas à se connecter aux serveurs de mise à jour Debian :
- À 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.
- À la question Faut-il continuer sans miroir sur le réseau, tabuler sur Oui puis taper sur Entrée .
- À la question Souhaitez-vous participer à l’étude statistique sur l’utilisation des paquets, tabuler sur Non puis taper sur Entrée.
- Depuis la liste des Logiciels à installer :
- Sélectionner utilitaires usuels du système et serveur SSH.
- Désélectionner environnement de bureau Debian et …GNOME puis tabuler sur Continuer et taper sur Entrée.
- À la question Installer le programme de démarrage GRUB sur le disque principal, tabuler sur Oui puis taper sur 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 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.
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. |
- À l’invite de commande, saisir le login SRVPROXY 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 :
su -
- Pour récupérer l’adresse IP locale de l’équipement, saisir la 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 :
apt-get update
- Procéder à la mise à jour du système d’exploitation avec la commande :
dist-upgrade
et répondre O si besoin. - 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 - Rafraîchir la liste des dépôts Debian avec la commande :
apt-get update
- 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/ :
|
|
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 :
|
|
- Création du répertoire hébergeant la configuration de l’autorité de certification :
|
|
- Restriction d’accès au répertoire à l’utilisateur SRVPROXY uniquement :
|
|
- Initialisation de l’Infrastructure de Clés Publiques (ICP) :
|
|
- 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é :
|
|
- À 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 :
|
|
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 :
|
|
- Génération de la clé privée pour l’utilisateur CACHELN :
|
|
- Génération de la demande de certificat pour l’utilisateur CACHELN (adapter les éléments en rouge) :
|
|
- Importation de la demande de signature par l’autorité de certification :
|
|
- Signature du certificat (la saisie de la Passphrase de l’AC sera requise) :
|
|
- Exportation du certificat de l’utilisateur au format p12 (format exploitable par les terminaux utilisateurs) :
|
|
- Copier le certificat dans le répertoire SFTP /home/SRVPROXY/clients-csr pour pouvoir être téléchargé via un client SFTP :
|
|
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) :
|
|
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) :
|
|
- Procéder à la régénération de la CRL depuis la commande gen-crl :
|
|
- Copier le fichier dans le répertoire d’exploitation /etc/ssl/private :
|
|
- Redémarrer le service Apache2 pour la prise en compte des modifications :
|
|
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 :
|
|
- Activation des modules proxy_http, headers, proxy_http, ssl, rewrite et speling :
|
|
- Tout changement de configuration nécessite le redémarrage du service :
|
|
- 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 :
|
|
- 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 :
|
|
- Pour appliquer les paramètres, redémarrer le service.
|
|
- 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 :
|
|
- 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.
|
|
- 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 Intégration de l’AC au système d’exploitation section 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 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 :
|
|
- 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.
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) :
|
|
- Ajout des règles iptables conformément à la matrice des flux renseignées précédemment :
|
|
- Sauvegarde de la configuration et application automatique à chaque redémarrage du système :
|
|
Configuration ip6tables sur la couche IPv6
- Blocage des requêtes IPv6 :
|
|
- Sauvegarde de la configuration et application automatique à chaque redémarrage du système :
|
|
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 :
|
|
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.
|
|
Configuration supervision SNMP
- Installation du paquet 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.
|
|
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 :
|
|
- Lancement de l’utilitaire de configuration du paquet Postfix :
|
|
- Comme Configuration type du serveur de messagerie, choisir l’option Site Internet puis tabuler sur OK et taper sur Entrée :
- Comme valeur pour Nom de courrier, saisir le domaine mail.ncad.fr puis tabuler sur OK et taper sur Entrée :
- Comme Destinataire des courriels de “root” et “postmaster” indiquer l’adresse mail noc@ncad.fr puis tabuler sur OK et taper sur Entrée :
- 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 :
- 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 :
- Comme liste des Réseaux internet conserver la valeur par défaut puis tabuler sur OK et taper sur Entrée :
- Comme Taille maximale des boîtes aux lettres, conserver la valeur par défaut puis tabuler sur OK et taper sur Entrée :
- Comme Caractère d’extension des adresses locales, conserver la valeur par défaut puis tabuler sur OK et taper sur Entrée :
- Parmi la liste des Protocoles internet à utiliser, choisir la valeur ipv4 puis tabuler sur OK et taper sur Entrée :
- 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 :
|
|
- Redémarrer le service Postfix pour l’application des paramètres :
|
|
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 :
|
|
- 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 :
|
|
- Pour planifier l’exécution du script, éditer crontab :
|
|
- Puis, insérer la ligne suivante dans le fichier :
0 0 * * * /root/Scripts/Log/daily_extract.sh > /dev/null