Installation IspConfig3 avec Apache,Dovecot et Horde sur DEBIAN Squeeze

Avant d’installer IspConfig3 il faut re-compiler le noyau pour activer le support des QUOTAS, voir cet article.

Puis suivre le tutoriel: The Perfect Server – Debian Squeeze (Debian 6.0) With BIND & Dovecot [ISPConfig 3]

ATTENTION on saute la fin de la page 5 sur l’installation de Squirrelmail,car on préfèrera utiliser HORDE comme client WEBMAIL

Ensuite une fois l’installation terminé, il est préférable d’ajouter PEAR à l’include path des Sites Web.

Il faut modifier la valeur de « PHP open_basedir » en se connectant sur l’interface d’administration web ISPCONFIG, puis dans System->Server Config->Web et ajouter :/usr/share/php (cf capture écran)

Modifier le fichier  /etc/apache2/ports.conf qui liste les ports que apache gère

Ajouter le port 88443 qui sera le port du control panel IspConfig

NameVirtualHost *:80
Listen 80

    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
NameVirtualHost *:443
Listen 443
Listen 88443

NameVirtualHost *:443
Listen 443
Listen 88443

Modifier le fichier /etc/apache2/sites-available/ispconfig.vhost pour changer le port de IspConfig

3 lignes sont à modifier (les 3 premières après les commentaires)

Listen 88443
NameVirtualHost *:88443

Sécurisé accès à phpMyAdmin

nano /etc/apache2/conf.d/phpmyadmin.conf

Ajouter ceci à la fin du fichier

                        RewriteEngine on
                        RewriteCond %{HTTPS} !^on$ [NC]
                        RewriteRule . https://%{HTTP_HOST}:50443%{REQUEST_URI} [L]

Il faut redémarrer apache

/etc/init.d/apache2 restart

Installation de multitail

apt-get install multitail
mkdir /root/scripts
cd /root/scripts
nano mytail

Contenu du fichier /root/scripts/mytail

#!/bin/bash
multitail -ci yellow -e "ailed" -n 1000 /var/log/auth.log \
-ci red -e "Ban" -n 1000 -I /var/log/fail2ban.log \
-ci red -e "fw" -n 1000 -I /var/log/messages \
-ci green -e "Unban" -n 1000 -I /var/log/messages \
-ci blue -e "fail" -n 1000 -I /var/log/syslog

Éditer le fichier /etc/multitail.conf pour désactiver le check_mail

nano /etc/multitail.conf
check_mail:0

Sauvé et rendre exécutable le fichier

chmod 700 /root/scripts/mytail

Changer le port SSH pour utiliser le 88022

nano /etc/ssh/sshd_config
ATTENTION il faudra ajouter l’option -e’ssh -p 88022′ lors de l’utilisation du rsync
rsync -av -e 'ssh -p 88022' user@serveurdistant:/undossier /un/dossier/destination

Astuces : Si c’est un hôte ssh auquel on se connecte souvent, on peut spécifier directement le port dans /etc/ssh_config en ajoutant les lignes

Host serveurdistant
Port 88022

Installer des outils additionnels pratiques et un accélérateur PHP

apt-get install php-apc htop iptraf logwatch tiger

Editer le fichier de configuration d’apc pour définir la taille de la mémoire cache

nano /etc/php5/conf.d/apc.ini
apc.shm_size=128

Avec htop on peut voir les informations systèmes d’une meilleur manière qu’avec top, avec iptraf on peut voir des statistiques temps réel sur les connexion, avec logwatch on peut recevoir un résumé par mail de fichiers de log et avec tiger il est possible de recevoir un mail périodique avec les failles de sécurité éventuelles.

Comme un grand nombre de scripts envoient un nombre important de mail à l’utilisateur root il est préférable de modifier l’alias root’s mail afin que ces derniers soient envoyé sur une adresse mail personnelle.
Pour ce faire il faut:

nano /etc/aliases

modifier la ligne root:root ou ajouter en une du type

root:server1@example.com

ensuite exécuter

newaliases

MySql tuning

Télécharger tuning-primer.sh et mysqltuner.pl.
Ces scripts aiderons à améliorer la configuration des fichiers MySql.

cd /root/scripts
wget http://www.day32.com/MySQL/tuning-primer.sh
wget http://mysqltuner.com/mysqltuner.pl
chmod 700 tuning-primer.sh mysqltuner.pl

Pour exécuter ces scripts tapez:

perl /root/scripts/mysqltuner.pl
/root/scripts/tuning-primer.sh

Ces scripts vont poser quelques questions simples (user/pass) et afficherons en rouge leurs suggestions pour les configurations critiques.

Il est possible d’utiliser ces suggestions pour améliorer les performances du serveur MySql.

Installation de Horde et Imp pour le webmal

Ajouter un fichier de configuration à Apache pour Horde /etc/apache2/conf.d/horde.conf

# HORDE Apache configuration

Alias /horde /usr/share/horde
#Alias /webmail /usr/share/horde

# virtualhost attrape tout (catchall) pour le sous domaine webmail.nomdedomaine.com

        ServerName webmail.localhost
        DocumentRoot /usr/share/horde

        Options FollowSymLinks
        DirectoryIndex index.php
        Order deny,allow
        Allow from all

                AddType application/x-httpd-php .php
                php_flag magic_quotes_gpc Off
                php_flag track_vars On
                php_flag register_globals Off

# POUR HORDE SECU

    order deny,allow
    deny from all

    order deny,allow
    deny from all

    order deny,allow
    deny from all

    order deny,allow
    deny from all

    order deny,allow
    deny from all

    order deny,allow
    deny from all

# POUR IMP SECU

    order deny,allow
    deny from all

    order deny,allow
    deny from all

    order deny,allow
    deny from all

    order deny,allow
    deny from all

    order deny,allow
    deny from all

    order deny,allow
    deny from all

Sécurisé accès au webmail en forçant le HTTPS

nano /etc/apache2/conf.d/horde.conf

Remplacer la déclaration du virtual host dans le fichier /etc/apache2/conf.d/horde.conf par

# virtualhost attrape tout (catchall) pour le sous domaine webmail.nomdedomaine.com

        ServerName webmail.localhost
        DocumentRoot /usr/share/horde
        # Forcer utilisation du https pour accès webmail

                        RewriteEngine on
                        RewriteCond %{HTTPS} !^on$ [NC]
                        RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L]

        ServerName webmail.localhost
        DocumentRoot /usr/share/horde

        ErrorDocument 400 "Sorry can't allow you access today"

        #ErrorLog /var/log/apache2/error.log
        #CustomLog /var/log/apache2/access.log combined
        ServerSignature Off

                SecRuleEngine Off

        # SSL Configuration
        SSLEngine On
        SSLCertificateFile /usr/local/ispconfig/interface/ssl/ispserver.crt
        SSLCertificateKeyFile /usr/local/ispconfig/interface/ssl/ispserver.key

Pour les projets reposant sur SymFony il faut ajouter des fonctionnalités à Apache/PHP

Le support de XSL de CURL et un accélérateur/optimisateur ici APC (si pas déjà installé)

aptitude install php5-curl php5-xsl php-apc

Pour les sites reposant sur OsCommerce (et oui il y en a encore, après tout tant que ça marche) il faut ajouter ceci dans les options du Site Web

php_admin_flag register_globals on
php_admin_flag register_long_arrays on

Et pour eviter de retrouver dans les log tous les messages relatifs aux fonctions « deprecated » ou les « notice » il faut ajouter ceci en plus

php_admin_flag ignore_repeated_errors on
php_admin_flag ignore_repeated_source on
php_admin_flag error_reporting "E_ALL & ~E_DEPRECATED & ~E_NOTICE"

Je crois que tout y est là. bon courage…

Modification d’avril 2012 : découverte d’un nouveau tuto sur HowToForge pour IspConfig et Horde je mets le lien ici