Association Générale des Utilisateurs de logiciels libres en Côte-d'Or

logo_coagul

Installation - Sécurisation Apache2 sur une Debian Sarge .

Rubrique : Serveurs
Le : samedi 24 décembre 2005
Par : Laurent Deschaumes  
Visites : 46169

- Installation des packages :

apt-get install apache2

apt-get install openssl

apt-get install php4-cli

ap-get install php4-mysql

apt-get install libapache2-mod-security

apt-get install awstats

contrôle : dans un navigateur verifier si apache tourne (http://localhost)

Création du certificat pour le mode SSL

apache2-ssl-certificate

répondre aux questions qui sont posées

contrôle : vérifier la création du fichier /etc/apache2/apcahe.pem et d’un lien symbolique sur ce fichier. Ce fichier contient la clé publique et la clé privée qui seront utilisées par apache. Il existe une autre méthode plus complexe avec openssl pour créer ces clés.

Activation du mode SSL

- Editer le fichier /etc/apache2/httpd.conf et ajouter les lignes ci-dessous

SSLProtocol -all +SSLv2
SSLCipherSuite SSLv2:+HIGH:+MEDIUM:+LOW:+EXP
SSLCertificateFile /etc/apache2/ssl/apache.pem

- Editer le fichier /etc/apache2/ports.conf et ajouter si elle n’existe pas déjà la ligne ci-dessous

Listen 443

Configuration des sites par défault pour fonctionner en mod ssl.

cp /etc/apache2/sites-available/default cp /etc/apache2/sites-available/default-ssl

- Editer le fichier /etc/apache2/sites-available/default-ssl et modifier/ajouter comme ci dessous(Ajout de la ligne « SSLEngine on » et ajout de « :443 » après « NameVirtualHost * » et « VirtualHost * » )

NameVirtualHost *:443
<VirtualHost *:443>
           SSLEngine on
...
...

- Activer le site avec la commande suivante

a2ensite default-ssl

- Activer le mod ssl d’apache avec la commande suivante

a2enmod ssl

- Forcer Apache à relire son fichier de configuration

/etc/init.d/apache2 reload

contrôle : dans un navigateur verifier si apache tourne en mode ssl https://localhost

- Pour créer une partie du site (chemin physique /var/www/secret) uniquement accessible en https editer le fichier /etc/apache2/sites-available/default-ssl et ajouter entre les tags VirtualHost :

<VirtualHost *:443>
......
  Alias /secret "/var/www/secret/"
   Directory "/var/www/secret/">
           AllowOverride None
          Order deny,allow
          Allow from all
  </Directory>
...
...
</VirtualHost>

- Forcer Apache à relire son fichier de configuration

/etc/init.d/apache2 reload

contrôle : dans un navigateur verifier si https://localhost/secret fonctionne, et http://localhost/secret ne fonctionne pas .

Activation/désactivation des modules d’Apache

- Pour voir les modules disponibles tapez la commande

a2enmod

puis pour activer le module

a2enmod <nom_module>

- Pour voir les modules chargés tapez la commande

a2dismod

puis pour désactiver le module

a2dismod <nom_module>

- Forcer Apache à relire son fichier de configuration

/etc/init.d/apache2 reload

Activation/désactivation site/répertoire virtuel

- Dans le répertoire /etc/apache2/sites-availables créez un fichier de configuration de site dans l’exemple suivant je créé un répertoire virtuel dans le fichier mon_repertoire_virtuel :

Alias /test/ "/var/www/test/"
   <Directory "/var/www/test/">
       Options Indexes MultiViews FollowSymLinks
       AllowOverride None
       Order deny,allow
       Allow from all
   </Directory>

- Pour activer ce répertoire virtuel tapez la commande

a2ensite  mon_repertoire_virtuel

et forcer Apache à relire son fichier de configuration

/etc/init.d/apache2 reload

- Pour désactiver ce répertoire virtuel tapez la commande

a2dissite  mon_repertoire_virtuel

et forcer Apache à relire son fichier de configuration

/etc/init.d/apache2 reload

Les commandes a2ensite et a2dissite créent/suppriment des liens symboliques dans le répertoire /etc/apache2/sites-enabled/

Configuration du mod_security d’Apache

- Editer le fichier /etc/apache2/httpd.conf et rajouter les lignes suivantes

# Turn ModSecurity On
SecFilterEngine On

# Reject requests with status 403
SecFilterDefaultAction "deny,log,status:403"
# Some sane defaults
SecFilterScanPOST On
SecFilterCheckURLEncoding On
SecFilterCheckUnicodeEncoding Off

# Accept almost all byte values
SecFilterForceByteRange 1 255

#Injection SQL
SecFilter "delete[[:space:]]+from"
SecFilter "insert[[:space:]]+into"
SecFilter "select.+from"

#Attaque par chemin transversal
SecFilter "\.\./"

#Injection javascript
SecFilter "<script"

#Attaques XSS
SecFilter "<.+>"
SecFilter "<[[:space:]]*script"

#Necessite headers HTTP_USER_AGENT ou HTTP_POST
SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^$"

# Server masking is optional
# SecServerSignature "Microsoft-IIS/5.0"
SecUploadDir /tmp
SecUploadKeepFiles Off

# Only record the interesting stuff
SecAuditEngine RelevantOnly
SecAuditLog logs/audit_log

# You normally won't need debug logging
SecFilterDebugLevel 0
SecFilterDebugLog logs/modsec_debug_log

# Only accept request encodings we know how to handle
# we exclude GET requests from this because some (automated)
# clients supply "text/html" as Content-Type
SecFilterSelective REQUEST_METHOD "!^(GET|HEAD)$" chain
SecFilterSelective HTTP_Content-Type \
"!(^application/x-www-form-urlencoded$|^multipart/form-data;)"

# Do not accept GET or HEAD requests with bodies
SecFilterSelective REQUEST_METHOD "^(GET|HEAD)$" chain
SecFilterSelective HTTP_Content-Length "!^$"

# Require Content-Length to be provided with
# every POST request

Pour que tout fonctionne créez le répertoire logs dans /etc/apache2

Je n’ai pas inventé ces règles le les ai pêchées dans la doc directement sur le site de mod_security.

- Forcer Apache à relire son fichier de configuration

/etc/init.d/apache2 reload

Vérifier cycliquement ou mettre sous surveillance le fichier /etc/apache2/log/audit.log dans lequel apparaitront les tentatives d’intrusion.

Configuration de AWSTATS

Copier le fichier de configuration standard.de AWSTATS

cp /etc/awstats/awstats.conf.local /etc/awstats.mon_serveur.conf

Editer le fichier etc/awstats.mon_serveur.conf
et renseigner les lignes Logfile (fichier de log
d'apache) et SiteDomain (personnalisation affichage)
.......
LogFile="/var/log/apache2/access.log"
......
SiteDomain="Nom de mon serveur"
.......
LogFormat=1

Il existe bon nombre d’autres options que je vous laisse découvrir

Pour vérifier que tout fonctionne lancez la commande
/usr/lib/cgi-bin/awstats.pl -config= mon_serveur

Vous devriez avoir une réponse de ce style


Update for config "/etc/awstats/awstats.mon_serveur.conf"
With data in log file "/var/log/apache2/access.log"...
Phase 1 : First bypass old records, searching new record...
Direct access to last remembered record has fallen on another record.
So searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 17400
Found 0 dropped records,
Found 0 corrupted records,
Found 0 old records,
Found 17400 new qualified records.

Il n’y a plus qu’a automatiser cette tache avec crontab

commande

crontab -e

ajouter la ligne suivante pour une mise à jour des stats tout les jours à minuit

0 0 * * * /usr/lib/cgi-bin/awstats.pl -config=mon_site

Pour atteindre les stats depuis un butineur

http://127.0.0.1/cgi-bin/awstats.pl?config=mon_site->http://127.0.0.1/cgi-bin/awstats.pl?config=mon_site

La configuration web de AWSTATS a été ajoutée au fichier /etc/apache2/httpd.conf

par mesure de sécurité restreindre l’accès web des stats en modifiant la ligne

<Directory "/usr/local/awstats/wwwroot">
....
....Allow from all
....
</Directory>

en

<Directory "/usr/local/awstats/wwwroot">
....
....Allow from 127.0.0.1
....
</Directory>

- Forcer Apache à relire son fichier de configuration

/etc/init.d/apache2 reload

Version imprimable de l'article

Forum


  • Installation - Sécurisation Apache2 sur une Debian Sarge .
    9 juillet 2007
    Ton tutorial ne marche plus du tout sous Debian Etch... Le package "libapache2-mod-security" n’existe plus visiblement et la commande "apache2-ssl-certificate" ne fonctionne pas non plus... J’espère qu’il y aura une nouvelle version de ton tutorial actualisée bientôt...
  • Installation - Sécurisation Apache2 sur une Debian Sarge .
    18 avril 2007, par rhaamo

    salut. pour tout ceux etant sous debian etch 4.0 et voulant avoir le ssl, la commande apache2-ssl-certificate n’existe pas. vous pouvez donc faire sa :

    openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

    puis chmod 600 /etc/apache2/apache.pem

    et en adaptant SSLCertificateFile /etc/apache2/ssl/apache.pem par SSLCertificateFile /etc/apache2/apache.pem

    voila.

  • Installation - Sécurisation Apache2 sur une Debian Sarge .
    9 mars 2007, par Pouic

    Configuration des sites par défault pour fonctionner en mod ssl.

    cp /etc/apache2/sites-available/default cp /etc/apache2/sites-available/default-ssl

    c’est le fichier default que l’on duplique (changement de nom) donc : cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default-ssl

    Si je me trompe merci deme corriger

  • Installation - Sécurisation Apache2 sur une Debian Sarge .
    9 mars 2007

    Petite modification pour debian sarge

    Création du certificat pour le mode SSL

    apache2-ssl-certificate

    répondre aux questions qui sont posées

    contrôle : vérifier la création du fichier /etc/apache2/ssl/apache.pem et d’un lien symbolique sur ce fichier. Ce fichier contient la clé publique et la clé privée qui seront utilisées par apache. Il existe une autre méthode plus complexe avec openssl pour créer ces clés.

  • Installation - Sécurisation Apache2 sur une Debian Sarge .
    1er mars 2007, par Moctar

    Bonjour

    Dans la partie installation de awstats il ya un oubli :

    cp /etc/awstats/awstats.local.conf /etc/mon_sites.conf

    qui doit etre

    cp /etc/awstats/awstats.local.conf /etc/awstats/mon_sites.conf

  • Installation - Sécurisation Apache2 sur une Debian Sarge .
    17 février 2007

    Bonjour,

    http://localhost/secret/ et https://localhost/secret/

    fonctionne, je ne comprend pas ! peut-on m’expliquer d’ou cela vient ?

    Par ailleurs, firefox, me dit que c’est une ancienne version de ssl et ne veut pas se connecter, avez-vous une solution ?

    Merci

    • Installation - Sécurisation Apache2 sur une Debian Sarge .
      17 février 2007, par Laurent

      Bonjour,

      1 - C’est que le répertoire secret est dans le repertoire par défaut du serveur web. 2 - pour SSL il faut parametrer le navigateur web pour fonctionner en SSL2 Outils > Options > Avancé décoché SSL3

      @+

  • Installation - Sécurisation Apache2 sur une Debian Sarge .
    17 février 2007

    il manque un ’<’ dans :

    ...... Alias /secret "/var/www/secret/" Directory "/var/www/secret/"> AllowOverride None Order deny,allow Allow from all ... ...

  • Installation - Sécurisation Apache2 sur une Debian Sarge .
    24 novembre 2006, par El Chupito
    Voila ce que j’ai dans mon httpd.conf. Ca fonctionne avec Firefox2 ;-)

    SSLProtocol all
    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
    SSLCertificateFile /etc/apache2/ssl/apache.pem
    • Installation - Sécurisation Apache2 sur une Debian Sarge .
      14 décembre 2006, par SargeGirl

      slt après avoir fait la modification du fichier httpd.conf pr la configuration du mod_security, le reload ne fonctionne pas. j’ai comme message d’erreur :

      Reloading web server config...Syntax error on line 11 of /etc/apache2/httpd.conf : Invalid command ’SecFilterEngine’, perhaps mis-spelled or defined by a module not included in the server configuration

      ... jvoi s vraiment pas ...

      • Installation - Sécurisation Apache2 sur une Debian Sarge .
        17 décembre 2006, par Laurent
        J’ai remarqué le problème, après un upgrade de la distro , mod_security ne faisait plus parti de la distribution debian.
  • Installation - Sécurisation Apache2 sur une Debian Sarge .
    16 novembre 2006, par mtieum

    salut ! très bon tuto ca fonctionne impecablement seul chose constaté, la version 2 de firefox nous dit que l’on utilise une ancienne version non sur du protocol ssl

    je viens de faire le tuto alors je n’ai pas encore resolu le problème, donc je posterai à nouveau quand ca sera fait

    en tous cas merci pour ce site exellent !!

  • Installation - Sécurisation Apache2 sur une Debian Sarge .
    5 septembre 2006, par Dimitri

    Attention erreur de frappe dans cette doc, dans la section "Configuration des sites par défault pour fonctionner en mod ssl."

    La commande correcte est : cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default-ssl

    (Il y a un "cp" en trop)

  • Installation - Sécurisation Apache2 sur une Debian Sarge .
    30 mars 2006, par Patix

    Bonjour,

    J’ai installé apache2 php4 mysql et phpmyadmin. J’utilise une Sarge

    php a l’air de fonctionner mais quand je veux utiliser phpmyadmin, il me demande si je veux le telécharger.

    Si quelqu’un a une idée je suis tout ouie. Cela fait plus d’une semaine que je cherche la soluce sur le net

    PS : Bravo pour ce site :-)

    • Installation - Sécurisation Apache2 sur une Debian Sarge .
      31 mars 2006, par Laurent

      Vérifie si tu as cette ligne non commentée dans ton httpd.conf

      AddType application/x-httpd-php .php

    • Installation - Sécurisation Apache2 sur une Debian Sarge .
      25 juillet 2006, par Coko Tracy Mirindi

      Salut !!

      je viens de vivre ton problème, moi c’est sur Squirrelmail, quand je veux le tester, je reçois un message qui dit si je veux bien le télécharger ou enregistrer la page démandée sur le disque dure ! Hola hola ! Pout ton cas, Il serait bien de verifier si MySQl est installé sur ta machine car phpmyadmin fonctionne avec celui là ! dans ta commande je ne vois pas le module php4-mysql ? peux-tu verifier si tu as installé ce paquetage ? # apt-get install php4-mysql a apporté la solution pour ce qui était le cas de mon installation, mais le message d’enregistrment persiste lors du test par un navigateur. j’avais la meme complication ,et son installation a permis après l’installation de mon squirrelmail qui ne voulait pas s’installer avant. En ceque qui est de commun, les deux environnement utilise bien le php. Courage tu t’en sortira !!

    • Installation - Sécurisation Apache2 sur une Debian Sarge .
      25 octobre 2006, par ikvat
      Vide le cache de ton navigateur.
  • > Installation - Sécurisation Apache2 sur une Debian Sarge .
    9 janvier 2006

    Merci pour ce tutoriel, mais la regle : SecFilter "<.+>"

    entraine des erreurs avec squirrelmail 1.4.4 qui empeche d’ecrire des mails (Erreur : forbidden /src/compose.php)

Site réalisé sous Spip. Merci à NFrance pour son hébergement gracieusement offert. Tous les articles de ce site sont sous licence Creative Commons by-nc-sa (CC).