Ce post décrit brièvement quelques précautions basiques à prendre pour sécuriser votre serveur apache. En particulier, il décrit comment utiliser le module mod_security pour installer une liste noire d’IP.

Sécurisation via les fichiers de configuration

Le dossier /etc/apache2/sites-available/ contient les dossiers de configuration des hôtes et des hôtes virtuels apache (voir les posts : installation d’un serveur apache et créer un hôte virtuel). On édite ces fichiers pour ajouter les directives suivantes :

  1. Empêcher le serveur de lire le répertoire à la racine du serveur

    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
  2. Empêcher le serveur de lire les fichiers .htaccess
    AccessFileName .httpdoverride</p>

    Order allow,deny
    Deny from all
    Satisfy All
    </span></li> </ol>

    En savoir plus : Documentation ubuntu francophone « sécuriser un serveur apache »

    Sécurisation via le module modsecurity

    ModSecurity est un module d’Apache spécialisé dans la sécurité qui joue le rôle de pare-feu applicatif :
    modsecurity(image tux-planet.fr).

    On installe le module par :

    sudo apt-get install libapache2-modsecurity

    Le fichier de configuration du module se trouve dans le dossier /etc/modsecurity/ en version “recommandée” (mais non active). On commence par copier le fichier de configuration basique :

    cp modsecurity.conf-recommended modsecurity.conf

    puis on édite modsecurity.conf pour ajouter quelques règles élémentaires :

      1. Activer le blocage des requêtes détectées par les règles mises en place
        SecRuleEngine On

    (si l’option est laissée à DetectionOnly, le modules se contentera de journaliser les erreurs rencontrées.

    1. Ajout d’une signature personnalisée(pour empêcher l’utilisation de la description de votre configuration à des fins d’attaque)
      SecServerSignature "Tuxette OS"

      Pour que cette règle soit active, il faut de plus éditer le fichier /etc/apache2/conf.d/security et choisir l’option ServerTokens="Full".</li>

    2. Création d’une liste noire (pour bloquer les IP indésirables : je pêche mes IP indésirables via l’utilisation du plugin wordpress “Limit Login Attempts”)

      SecAction “phase:1,pass,nolog,setvar:tx.remote_addr=/%{REMOTE_ADDR}/”
      SecRule TX:REMOTE_ADDR “@pmFromFile blacklist.txt” “deny,status:403

      Une fois cette règle ajoutée, il faut créer un fichier /etc/modsecurity/blackllist.txtcontenant les IPs entourées du caractère “/” :</p>
      /1.2.3.4/
    3. </ol>

      Enfin, le module est activé par :

      sudo a2enmod mod_security
      sudo service apache2 reload

      et les logs peuvent être consultés dans le fichier /var/log/apache2/modsec_audit.log. On peut créer un deuxième fichier de log plus condensé avec l’activation des lignes suivantes dans le fichier modsecurity.conf :

      SecDebugLog /var/log/apache2/modsecurity_debug.log
      SecDebugLogLevel 0

      .
      En savoir plus :

       

      </div>