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

Introduction

Security Cette page est destinée à être une introduction pour l'implémentation d'un niveau d'authentification et de sécurité de serveur plus ardue, concentrée autour de l'interface web CGI.

Il y a de nombreuses façons de personnaliser la sécurité de son serveur de Supervision et l'environnement Nagios. Ce qui va venir ne doit pas être pris comme la finalité de toute approche à la sécurité. Au lieu de cela, considérez ce qui suit comme une introduction à certaines des techniques que vous pouvez utiliser pour gérer la sécurité de votre système. Comme toujours, vous devrez faire vos recherches et utiliser les meilleures techniques disponibles. Traitez votre serveur de Supervision comme si c'était l'élément le plus important dans votre réseau et vous en serez récompensés.

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! .