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
    Order allow,deny
    Deny from all
    Satisfy All

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>