La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Apache + mod_ssl Créez un serveur Web « sécurisé » Arnaud Abdoul Aziz AMELINA AFNOG 2015.

Présentations similaires


Présentation au sujet: "1 Apache + mod_ssl Créez un serveur Web « sécurisé » Arnaud Abdoul Aziz AMELINA AFNOG 2015."— Transcription de la présentation:

1 1 Apache + mod_ssl Créez un serveur Web « sécurisé » Arnaud Abdoul Aziz AMELINA amelnaud@gmail.com AFNOG 2015

2 2 Historique de cette présentation Création du support en septembre 2004 Présentation librement inspirée du support de cours AFNOG 2004 et en particulier du document « Apache + mod_ssl » de Patrick Okui plus la mise à jour de Arnaud A. A. AMELINA Site Web des ateliers AFNOG http://www.ws.afnog.org/

3 3 Serveurs HTTP Un ordinateur sur lequel fonctionne un serveur HTTP est appelé serveur web. Indifféremment le terme « serveur web » peut désigner le serveur HTTP (le logiciel) lui-même Il est bon de savoir qu'il existe d’autres serveurs http que celui que nous utiliserons

4 4 Serveurs HTTP (2) Liste de quelques serveurs HTTP :  Apache Serveur HTTP de la Fondation Apache Software  Internet Information Services (IIS) de Microsoft  Oracle Java System Web de Oracle (anciennement appartenant à Sun Microsystem)  Zeus Web Server de Zeus Technology  Lighthttpd de Jean Kneschke ;  Nginx d'Igor Sysoev ;  Cherokee de Alvaro Lopez Ortega  … Outil choisi : APACHE dans sa version 2

5 5 Apache & mod_ssl Apache est un serveur HTTP –libre, populaire et très apprécié mod_ssl –module permettant d’utiliser SSL dans Apache Ce module est inclus dans Apache 2 –et notre cours utilisera Apache 2 sur Ubuntu !

6 6 Comparaison des Serveurs HTTP sur le marché

7 7

8 8 Installation d' Apache (1) Le faire sois même –http://httpd.apache.org/ –permet d’être à niveau des versions –Mais pas conseillé sur les serveurs en production pour cause de mise à jour automatique non prise en charge. Les systèmes d’exploitation –disponible prêt à l’emploi avec presque tous les systèmes –pas forcément dans les versions les plus récentes –il y a des avis de sécurité de temps en temps…

9 9 Installation d' Apache (2) OpenSSL doit être installé au préalable ! Pour le faire sois-même à partir des sources tar zxvf apache2*tar.gz cd apache*./configure –enable-mods-shared=’ssl all’ make && make install Il ne reste plus qu’à configurer…

10 10 Installer Apache (3) A partir du dépôt ou des portages des distribution Unix ou GNU/Linux Pour le faire à partir du Dépôt d'Ubuntu ~$ sudo apt-get update ~$ sudo apt-get upgrade ou ~$ sudo aptitude update ~$ sudo aptitude safe-upgrade ~$ sudo apt-get install apache2 Ou ~$ sudo aptitude install apache2

11 11 Installer Apache (4) Fichier et commande de démarrage –/etc/init.d/apache (ou similaire) – ~$ sudo /etc/init.d/apache2 [start|restart|stop|reload|force- reload|status] ou – ~$ sudo service apache2 [start|restart|stop|reload|force- reload|status] Programme apachectl –avec SSL : apachectl startssl (au-lieu de start) Clé & certificat X.509 –si vous utilisez les SSL il faut avoir ces données avant le démarrage d’Apache

12 12 Sites Web « virtuels » Mots anglais : « virtual hosting » –utiliser une instance d’Apache pour héberger plusieurs sites Web –voire plusieurs centaines ou milliers de sites Deux modes avec Apache –par IP : une adresse IP (ou un numéro de port) par site –par nom : plusieurs sites se partagent la même IP

13 13 Sites virtuels par nom Très économique, à préférer –quelques très très anciens clients Web pourraient ne pas s’en sortir : tant pis pour eux –facile à configurer et fiable –une IP, port 80 peut héberger des centaines ou milliers de sites Web –chaque site est séparé des autres Ne convient pas aux Web sécurisés (HTTPS)

14 14 Sites virtuels par IP Nécessite beaucoup de ressources –un couple IP:port par site Indispensable pour les Web SSL –parce que l’échange des certificats se fait dès le début de la connexion SSL (avec le HTTP) –le certificat est lié au nom du serveur, Apache ne peut donc pas par avance savoir quel certificat utiliser

15 15 Si une seule IP est disponible… Utiliser des numéros de ports séparés –port 80 : tous les serveurs standard –port 443 : le « privilégié » en https –port 8443 : un autre site https –… Risque pour l’accès aux sites –hélas de nombreuses politiques de sécurité d’entreprises interdisent l’accès aux sites Web ailleurs que sur les numéros de ports standard (80 et 443)

16 16 DNS & Sites Web En plus de la configuration Apache il faut un enregistrement DNS adéquat pour renvoyer le trafic Proposition –utiliser pour chaque site un enregistrement de type A (www.mondomaine.bf IN A 1.2.3.4) plutôt qu’un CNAME –utiliser l’IP du serveur –il n’y a pas de numéro de port : c’est dans l’URL que cela se trouve

17 17 Configuration d’Apache (1) Sur Ubuntu le fichier de configuration est segmenté en plusieurs qui sont inclus au fichier /etc/apache2/apache2.conf –/etc/apache2/sites-[avalaible|enable]/nom_du_site.conf –/etc/apache2/mods-[avalaible|enable]/nom_du_module.conf –/etc/apache2/conf-[available|enable]/fichier_de_configuration.conf

18 18 Configuration d’Apache (2) Structure des fichiers de configuration d'Apache2 /etc/apache2/ |-- apache2.conf | `-- ports.conf |-- mods-enabled | |-- *.load | `-- *.conf |-- conf-enabled | `-- *.conf `-- sites-enabled `-- *.conf

19 19 Configuration d’Apache (3) Structure des fichiers de configuration d'Apache2 Une structure simple à comprendre avec des sections contenu de la section Un fichier additionnel qui peut être utile : mime.types

20 20 Configuration d’Apache (3) Nombre de serveurs à lancer (StartServers, MinSpareServers, …) –à adapter en fonction de l’activité du site –petit site : prendre des valeurs très basses (StartServers = 1 par exemple) Listen 80 –indique sur quelle(s) IP et numéros de ports Apache doit accepter les connexions –il faut indiquer toutes les combinaisons qui seront utilisées Listen 80 Listen 443

21 21 Configuration d’Apache (4) User / Group – ne pas oublier de « ne pas faire tourner Apache sous l’identité privilégiée » ! HostnameLookups Off – il est conseillé de conserver cette option : sinon délais supplémentaires liés au DNS significatifs – les logiciels de statistiques s’occuperont de cela plus tard

22 22 Configuration d’Apache (5) NameVirtualHost *:80 – permet de définir les adresses et numéro de ports utilisés pour de l’hébergement virtuel par nom – toutes les autres adresses sont par définition « virtuelles par adresse » – n’a pas de sens pour HTTPS (c’est à dire *:443 par exemple) Il faut ensuite définir les VirtualHost associés

23 23 QUESTIONS ?

24 24 Configuration VirtualHost (1) Serveur virtuel basé sur le nom ServerAdmin admin@mon-domaine.bf DocumentRoot /var/www/www.mon-domaine.bf/htdocs ServerName www.mon-domaine.bf ServerAlias web.mon-domaine.bf ErrorLog /var/www/www.mon-domaine.bf/logs/error_log CustomLog /var/www/www.mon-domaine.bf/logs/access_log common Autant d’entrée que de NameVirtualHost

25 25 Configuration VirtualHost (2) Choix du VirtualHost « nommé » – la liste est balayée séquentiellement – dès que le nom correspond (ServerName ou ServerAlias) on s’arrête – si le nom n’est pas trouvé, c’est la 1 ère entrée qui sera utilisée Attention au nombre de fichiers ouverts ! – 2 fichiers par site rien que pour les journaux

26 26 Configuration VirtualHost (3) Serveur virtuel basé sur l’adresse IP ServerAdmin admin@mon-domaine.bf DocumentRoot /var/www/www.mon-domaine.bf/htdocs ServerName www.mon-domaine.bf ServerAlias web.mon-domaine.bf ErrorLog /var/www/www.mon-domaine.bf/logs/error_log CustomLog /var/www/www.mon-domaine.bf/logs/access_log common Exactement une entrée par adresse IP/Port – ne pas oublier de mettre le « Listen » qui va bien

27 27 Configuration SSL Un VirtualHost par IP/Port ServerAdmin admin@mon-domaine.bf DocumentRoot /var/www/www.mon-domaine.bf/htdocs ServerName www.mon-domaine.bf ServerAlias web.mon-domaine.bf ErrorLog /var/www/www.mon-domaine.bf/logs/error_log CustomLog /var/www/www.mon-domaine.bf/logs/access_log common SSLEngine On SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+SSLv2:+EXP:+eNULL SSLCertificateFile /local/apache/ssl.crt/www.mon-domaine.bf.pem SSLCertificateKeyFile /local/apache/ssl.key/www.mon-domaine.bf.pem Cf. fichier ssl.conf d’Apache pour le reste des options & exercices

28 28 Création des fichiers et répertoires Les répertoires doivent exister – mkdir –p /var/www/www.mon-domaine.bf/ – mkdir /var/www/www.mon-domaine.bf/logs Et avoir les bonnes permissions – www-data : utilisateur d'Apache – logs : root ? Ne pas oublier de faire « tourner » les fichiers journaux (logs)

29 29 Dernières vérifications apachectl configtest – permet de vérifier la bonne syntaxe du fichier de configuration apachectl graceful – recharge le fichier de configuration sans interrompre brutalement les connexions en cours apachectl restart – la même chose en plus violent apachectl start / startssl / stop – arrêt et redémarrage d’Apache Il est conseillé d'utiliser les scripts de démarrage et redémarrage fournis par le système d'exploitation pour une meilleur cohérence des processus d'Apache : ~$ sudo service apache2 start|restart|reload|stop|status

30 30 Créer son autorité de certification ? Possibilité 1 : non –les programmes classiques (par exemple Apache + mod_ssl) savent générer avec OpenSSL un certificat auto-signé –c’est facile mais pas homogène Possibilité 2 : oui –assure un minimum d’homogénéité dans votre entité –c’est rigolo et intéressant de manipuler et comprendre ces outils

31 31 Exercices avec Apache Nous prenons le scénario 2 –installer une autorité de certification locale –artisanale –générer son Root CA –générer ses certificats serveur Ne pas oublier de diffuser votre certificat racine


Télécharger ppt "1 Apache + mod_ssl Créez un serveur Web « sécurisé » Arnaud Abdoul Aziz AMELINA AFNOG 2015."

Présentations similaires


Annonces Google