Installer ISPConfig sur Debian Wheezy avec Nginx

Sur un serveur Debian Wheezy installé "à minima" (SSH Server, Standard system utilities) :

Configuration des dépôts de paquets, fichier /etc/apt/sources.list

deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy main contrib non-free

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

deb http://ftp.fr.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.fr.debian.org/debian/ wheezy-updates main contrib non-free

Ensuite :
aptitude upgrade && aptitude safe-upgrade

Installation des trousseaux de clefs GPG Debian :

aptitude install debian-archive-keyring debian-keyring debian-ports-archive-keyring
gpg --list-keys

Modification du shell par défaut (Bash à la place de Dash) :

dpkg-reconfigure dash
Répondre "non" permettra de passer à Bash.

Synchronisation de l’horloge :
aptitude install ntp ntpdate

Mise à jour automatique de l’horloge :

Dans le fichier /etc/crontab, il faut ajouter les lignes :

# Synchronisation à 2h00
0 2 * * * root /usr/sbin/ntpdate serveur.de.temps >/dev/null 

Avec pour serveur.de.temps, un serveur de la liste disponible ici : http://www.pool.ntp.org/zone/europe
(ou chez OVH : ntp.ovh.net)

Installation de Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, binutils

aptitude install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve

Répondre ceci aux questions :

  • General type of mail configuration : : Internet Site
  • System mail name : : Le "nom" du serveur (ex : serveur.moi.fr)
  • New password for the MySQL "root" user : : Un mot de passe "sécurisé"
  • Repeat password for the MySQL "root" user : : Le même mot de passe que précédemment

Ouverture des ports TLS/SSL et submission dans Postfix :

nano /etc/postfix/master.cf

Dé-commentez les sections submission et smtps sections comme ci-dessous (laissez commenté -o milter_macro_daemon_name=ORIGINATING car on n’en a pas besoin) :

[...]
submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
[...]

Relancez Postfix :
/etc/init.d/postfix restart

On veut que MySQL écoute sur toutes les interfaces, pas uniquement localhost, il faut donc modifier le fichier /etc/mysql/my.cnf et commenter la ligne bind-address = 127.0.0.1

#bind-address           = 127.0.0.1

Et relancez MySQL :

/etc/init.d/mysql restart

Installation d’Amavisd-new, SpamAssassin et Clamav :

aptitude install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

ISPConfig 3 n’a pas besoin du service SpamAssassin donc on le stoppe pour libérer de la mémoire :

/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove

Installation de Nginx, PHP5 (PHP-FPM) et Fcgiwrap

aptitude install nginx

On démarre nginx :

/etc/init.d/nginx start

Utilisation de PHP5 avec nginx via PHP-FPM :

aptitude install php5-fpm

Installation du module MySQL pour php 5

aptitude install php5-mysql

Installation de modules php 5 supplémentaires :

aptitude install php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-memcached php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached

Installation d’APC

aptitude install php-apc

Il faut ensuite modifier le fichier /etc/php5/fpm/php.ini, en modifiant ces lignes :

[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Paris"
[...]

On relance PHP-FPM :

/etc/init.d/php5-fpm reload

Pour le support de CGI dans nginx, il faut installer Fcgiwrap.

aptitude install fcgiwrap

Installation de phpMyAdmin

aptitude install phpmyadmin

Aux questions suivantes, répondre :

  • Serveur web à reconfigurer automatiquement : ne rien sélectionner car les seules options sont apache2 et lighttpd. Nginx n’est pas disponible
  • Faut-il configurer la base de données de phpmyadmin avec dbconfig-common ? : Non

phpMyAdmin se trouve dans le dossier /usr/share/phpmyadmin/

Le chemin d’accès sera par exemple :
http://serveur.moi.fr:8081/phpMyAdmin

If you want to use a /phpmyadmin or /phpMyAdmin alias that you can use from your web sites, this is a bit more complicated than for Apache because nginx does not have global aliases (i.e., aliases that can be defined for all vhosts). Therefore you have to define these aliases for each vhost from which you want to access phpMyAdmin.

To do this, paste the following into the nginx Directives field on the Options tab of the web site in ISPConfig :

Installation de BIND

aptitude install bind9 dnsutils

Installation de Jailkit (Chroot SSH

ATTENTION : Jailkit doit absolument être installé avant ISPConfig ! Il ne peut pas l’être ensuite.

aptitude install build-essential autoconf automake1.9 libtool flex bison debhelper binutils-gold

Ensuite :

cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz
tar xvfz jailkit-2.16.tar.gz
cd jailkit-2.16
./debian/rules binary

Il faut installer le paquet créé :

cd ..
dpkg -i jailkit_2.16-1_*.deb
rm -rf jailkit-2.16*
rm -rf jailkit_2.16*

Installation de fail2ban

aptitude install fail2ban

La configuration se fait via : /etc/fail2ban/jail.local

Installation d’ISPConfig 3

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/
php -q install.php