Configuration d’un intranet sur le serveur web

Ici nous allons configurer un intranet sur le serveur web. Cet intranet sera un virtual host dédié intranet.vbox.tp. Le DNS est déjà paramétré et un enregistrement CNAME est déjà défini.

Toutes les manipulations de cette page s’effecutent sur la machine web, en tant qu’utilisateur root. Si elle n’est pas démarrée, c’est le moment de le faire

vagrant up web
  1. En premier lieu, il est nécessaire d’installer et de configurer les outils Kerberos.

  2. Commencer par installer les paquets du serveur web Apache2.

    root@web$ apt-get  install apache2 apache2-doc libapache2-mod-auth-kerb
    
  3. Dans le fichier /etc/apache2/ports.conf, activer l’écoute du serveur sur le port 443.

    <IfModule mod_ssl.c>
        NameVirtualHost *:443
        Listen 443
    </IfModule>
    
  4. Dans le répertoire /etc/apache2/site-available, ajouter un fichier intranet pour définir un nouveau VirtualHost.

    <VirtualHost *:443>
      ServerName intranet.vbox.tp
      ServerAdmin webmaster@vbox.tp
    
      DocumentRoot /var/www/intranet
    
      <Directory />
        Options FollowSymLinks
        AllowOverride None
      </Directory>
    
      <Directory /var/www/intranet>
        Options Indexes FollowSymLinks MultiViews
        Satisfy all
        AuthType Kerberos
        AuthName "Intranet avec acces restreint"
        KrbMethodNegotiate on
        KrbMethodK5Passwd on
        KrbAuthRealm VBOX.TP
        KrbVerifyKDC off
        Krb5Keytab /etc/apache2/http.keytab
        KrbServiceName HTTP
        KrbSaveCredentials on
        require valid-user
        Order allow,deny
        allow from all
      </Directory>
    
      ErrorLog ${APACHE_LOG_DIR}/intranet_error.log
      LogLevel warn
      CustomLog ${APACHE_LOG_DIR}/intranet_access.log combined
    
      SSLEngine on
      SSLCertificateFile /etc/apache2/intranet.crt
      SSLCertificateKeyFile /etc/apache2/intranet.key
    </VirtualHost>
    
  5. S’agissant d’un service authentifiant les utilisateurs à travers Kerberos, le serveur web aura besoin de demander un ticket de service. Avec l’outil kadmin, créer un principal sur le KDC et déposer le secret dans une keytab. Le préfixe du nom du principal doit être en adéquation avec la valeur donnée à la directive KrbServiceName ci-dessus (les majuscules ont une importance).

    root@web$ kadmin -p jack/admin@VBOX.TP
    kadmin: addprinc -randkey HTTP/web.vbox.tp@VBOX.TP
    kadmin: ktadd -k /etc/apache2/http.keytab HTTP/web.vbox.tp@VBOX.TP
    
  6. S’agissant d’un secret Kerberos, il convient d’en protéger l’accès.

    root@web$ chown root.www-data /etc/apache2/http.keytab
    root@web$ chmod 640 /etc/apache2/http.keytab
    
  7. Déposer le certificat et sa clé privée dans le répertoire /etc/apache2, et y associer les bonnes permissions de façon à protéger la clé privée du certificat.

    root@web$ chown root.www-data /etc/apache2/intranet.key /etc/apache2/intranet.crt
    root@web$ chmod 640 /etc/apache2/intranet.key
    root@web$ chmod 644 /etc/apache2/intranet.crt
    
  8. Créer le répertoire qui contiendra l’intranet et y déposer une page web.

    root@web$ mkdir /var/www/intranet
    root@web$ cat << EOF > /var/www/intranet/index.html
    <html>
      <head><title>Page de test de l'intranet</title></head>
      <body>
        <h1>Un intranet de test</h1>
      </body>
    </html>
    EOF
    
  9. Désactiver le site SSL par défaut, activer celui qui vient d’être créé, activer le module SSL, puis relancer le serveur Apache.

    root@web$ a2dissite default-ssl
    root@web$ a2ensite intranet
    root@web$ a2enmod ssl
    root@web$ service apache2 restart