Chapitre 61. Amélioration de l'authentification et de la Sécurité des CGIs

Techniques supplémentaires

  • Authentification plus ardue utilisant la technologie Digest . En suivant Le guide de démarrage rapide , il y a de grandes chances pour que vous utilisiez les fondamentaux d'authentification Apache . L'authentification basique envoie en texte clair le nom d'utilisateur et le mot de passe de connexion avec chacune des requêtes http. Considérez que d'utiliser la technologie Digest pour votre authentification s'avère plus sécurisé car elle s'appuie sur un principe de cryptage de clé MD5 lors du passage des requêtes.

  • Forcer TLS/SSL pour la totalité de votre protocole Web. Apache fournit TLS/SSL par le module mod_ssl. TLS/SSL fournit un tunnel sécurisé entre le client et le serveur ce qui prévient le fait d'écouter indiscrètement et de tripoter la cryptographie publickey/privatekey.

  • Restreindre les accès à apache. Cette restriction d'accès à Nagios peut être appliquée sur une adresse IP, une plage d'adresse IP ou un sous-réseaux. Si vous avez besoin d'un accès extérieur à votre réseau, vous pouvez utilisez un VPN ou des tunnels SSH

L'implantation de l'authentification Digest

L'implémentation de l'authentification Digest est simple. Vous devez créer un nouveau type de mot de passe en utilisant l'outil htdigest , puis modifiez la configuration apache pour Nagios (par défaut /etc/httpd/conf.d/nagios.conf).

Créer un nouveau mot de passe en utilisant l'outil htdigest .

#htdigest -c /usr/local/nagios/etc/.digest_pw "Nagios Access" nagiosadmin
           

Ensuite, éditer le fichier de configuration apache pour Nagios (typiquement /etc/httpd/conf.d/nagios.conf) en utilisant l'exemple suivant.

## BEGIN APACHE CONFIG SNIPPET - NAGIOS.CONF
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
    Options ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthType Digest
    AuthName "Nagios Access"
    AuthUserFile /usr/local/nagios/etc/.digest_pw
    Require valid-user
</Directory>

Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthType Digest
    AuthName "Nagios Access"
    AuthUserFile /usr/local/nagios/etc/.digest_pw
    Require valid-user
</Directory>
## END APACHE CONFIG SNIPPETS
           

Ensuite, redémarrer le service apache pour que la nouvelle configuration soit prise en compte.

#/etc/init.d/httpd restart
           

Forcer l'implémentation TLS/SSL

Vérifiez que vous avez installé apache et openssl. Par défaut, le mod_ssl doit être supporté. Si vous rencontrez encore des problèmes, vous pouvez vous référer à l'aide d'Apache TLS/SSL Documentation sur l'encryptage .

Ensuite, vérifiez que le support TLS/SSL fonctionne en visitant l'interface nagios en utilisant le HTTPS (https://your.domain/nagios). Si ça fonctionne, vous pouvez passer à l'étape suivante qui consistera à forcer la connexion en HTTPS et de bloquer toutes connexions via le HTTP à l'interface Web Nagios. Si vous rencontrez des problèmes, visitez les pages d'apache sur la TLS/SSL Documentation de Cryptage et Google pour des problèmes spécifique à votre installation apache. Ensuite, modifiez la configuration apache pour nagios (par défaut /etc/httpd/conf.d/nagios.conf) en ajoutant le paramètre SSLRequireSSL aux deux instructions pour les répertoires sbin et share.

## BEGIN APACHE CONFIG SNIPPET - NAGIOS.CONF
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
    ...
    SSLRequireSSL
    ...
    </Directory>
    
    Alias /nagios "/usr/local/nagios/share"
    <Directory "/usr/local/nagios/share">
    ...
    SSLRequireSSL
    ...
</Directory>
## END APACHE CONFIG SNIPPETS
           

Redémarrage du service Apache pour que la nouvelle configuration prenne effet.

#/etc/init.d/httpd restart
           

Implémentation de verrous de sous-réseaux IP

L'exemple suivant nous montre comment bloquer l'accès des CGIs Nagios à certaines adresses IP, plages d'adresses ou sous-réseaux en utilisant le contrôle des accès Apache . Modifiez le fichier de configuration apache pour Nagios (par défaut /etc/httpd/conf.d/nagios.conf) en utilisant les paramètres Allow, Deny, et Order en s'appuyant sur l'exemple ci-dessous.

## BEGIN APACHE CONFIG SNIPPET - NAGIOS.CONF
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
    ...
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 10.0.0.25          # Allow single IP addresses
    Allow from 10.0.0.0/255.255.255.0     # Allow network/netmask pair
    Allow from 10.0.0.0/24                # Allow network/nnn CIDR spec
    ...
</Directory>

Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
    ...
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 10.0.0.25        # Allow single IP addresses
    Allow from 10.0.0.0/255.255.255.0     # Allow network/netmask pair
    Allow from 10.0.0.0/24                # Allow network/nnn CIDR spec
    ...
</Directory>
## END APACHE CONFIG SNIPPET
           

Notes importantes

  • L'authentification Digest envoie les données en clair mais pas votre nom d'utilisateur ni votre mot de passe .

  • L'authentification par Digest n'est pas totalement compatible avec l'authentification de base .

  • TLS/SSL a le potentiel pour les attaques man-in-the-middle . Les attaques MITM sont vulnérables si l'attaquant est obligé de s'imisser entre le serveur et le client tout comme une attaque par Phishing, l'ISP monitoring ou LAN un certificat de pare-feu arrivant à expiration. Lire ci-dessus la vérification des certificats !

  • Le contrôle d'accès apache seulement le protocole HTTP/HTTPS . Veuillez vous référer à IPtables pour verrouiller votre système avec des règles de pare-feu.

  • Très important, la sécurité est un domaine en perpétuel mouvement et demande de se réserver du temps pour la recherche et développement! Peut-être en vous inscrivant aux newsletters comme Security Now! .