ISPConfig sous Linux-VServer

Un article de Bulles.

Installation de ISPConfig sous Linux-VServer

Sommaire

Installation du VServer

Le VServer est installe comme décrit dans le HowTo

Lors de l'exécution du base-config, on ne séléctionne rien dans les paquets et on ne configure pas Exim.

Compilation de bind

Pour pouvoir utiliser bind dans un Linux-VServer, il faut le reconfigurer avec l'option --disable-linux-caps.
A noter que sans les capabilities, le démon ne peut tourner que sous root si bind utilise les POSIX-threads. On désactive donc aussi les threads...

$ apt-get source -t sarge bind9
$ cd bind9-9.2.4
$ vi debian/rules                   # Add the --disable-linux-caps / -disable-threads to configure
$ debchange -i 'Disable capabilities and threads'
$ debuild -us -uc

Il faut aussi que bind écoute sur la bonne IP. Mettre dans named.conf.options

 query-source address <adresse du vserver>;

Post-install

Mettre à jour /etc/hosts. Il est imporant que l'adresse du Linux-VServer se résolve.

Ajout/supression de paquets:

# apt-get install wget bzip2 rdate fetchmail libdb3++-dev unzip zip ncftp xlispstat \
  libarchive-zip-perl zlib1g-dev libpopt-dev nmap openssl lynx fileutils iproute
# apt-get remove lpr nfs-common portmap pidentd

Quotas

Pour que les quotas fonctionnent, il faut que le serveur virtuel soit sur une partition séparée.
C'est le de momment suivre l'article Linux-VServer et Quotas!

Bind

Installation des paquets compilés ci dessus.
On ne fera pas tourner bind en chroot (on est déjà dans un v-server!)

MySQL

Installation de MySQL:

# apt-get install mysql-server-4.1 mysql-client-4.1 libmysqlclient14-dev

Par défaut, le serveur bind 127.0.0.1, ce qui n'est pas possible sur un Linux-VServer. On choisi ici de désactiver TCP/IP. Alternativement, on pourrait faire le bind sur une adresse non publique.
On peut éventuellement aussi désactiver le logging de réplication et InnoDB...

--- my.cnf.orig        2006-01-24 22:40:27.000000000 +0100
+++ my.cnf     2006-02-03 10:00:16.000000000 +0100
@@ -49,7 +49,8 @@
 #
 # Instead of skip-networking the default is now to listen only on
 # localhost which is more compatible and is not less secure.
-bind-address          = 127.0.0.1
+# bind-address                = 127.0.0.1
+skip-networking
 #
 # * Fine Tuning
 #
@@ -77,7 +78,7 @@
 #
 # The following can be used as easy to replay backup logs or for replication.
 #server-id            = 1
-log-bin                       = /var/log/mysql/mysql-bin.log
+#log-bin                      = /var/log/mysql/mysql-bin.log
 # See /etc/mysql/debian-log-rotate.conf for the number of files kept.
 max_binlog_size         = 104857600
 #binlog-do-db         = include_database_name
@@ -93,6 +94,7 @@
 #
 # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
 # Read the manual for more InnoDB related options. There are many!
+skip-innodb
 #
 # * Security Features
 #


On change le mot de passe root et on cree un compte pour ISPConfig

# mysqladmin -u root password <mot de passe>
# mysql --user=root mysql -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'ispconfig'@'localhost' 
    -> IDENTIFIED BY '<pass>' WITH GRANT OPTION;

Mail

PostFix

Installation du MTA PostFix; cela va désinstaller Exim.

# apt-get install postfix postfix-tls libsasl2 sasl2-bin libsasl2-modules
# postconf -e 'inet_interfaces = all'

SASL

Pour pouvoir faire de l'authentification SMPT (SMPTAUH), on utilise SASL

Configuration de PostFix pour SASL:

# postconf -e 'smtpd_sasl_auth_enable = yes'
# postconf -e 'smtpd_sasl_security_options = noanonymous'
# postconf -e 'smtpd_sasl_local_domain ='
# postconf -e 'broken_sasl_auth_clients = yes'
# postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

Configuration de SASL: creer le fichier /etc/postfix/sasl/smtpd.conf avec:

pwcheck_method: saslauthd
mech_list: plain login

(On ne peux pas utilser md5-digest/md5-cram avec pam...)

Comme par défaut PostFix est chrooté, il faut s'assurer qu'il puisse parler au démon saslauthd:

# mkdir -p /var/spool/postfix/var/run
# mv /var/run/saslauthd /var/spool/postfix/var/run/saslauthd
# ln -s  /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
# adduser postfix sasl

Et on termine par activer le demon SASL dans /etc/default/saslauthd:

# This needs to be uncommented before saslauthd will be run automatically
START=yes

TLS

Configuraton de PostFix pour TLS:

# postconf -e 'smtpd_use_tls = yes'
# postconf -e 'smtpd_tls_auth_only = no'
# postconf -e 'smtpd_tls_key_file = /etc/ssl/private/mail.key'
# postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/mail.crt'
# postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.crt'
# postconf -e 'smtpd_tls_loglevel = 1'
# postconf -e 'smtpd_tls_received_header = yes'
# postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
# postconf -e 'tls_random_source = dev:/dev/urandom'

Pour le client:

# postconf -e 'smtp_use_tls = yes'
# postconf -e 'smtp_tls_note_starttls_offer = yes'
# postconf -e 'smtp_tls_key_file = /etc/ssl/private/mail.key'
# postconf -e 'smtp_tls_cert_file = /etc/ssl/certs/mail.crt'
# postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/cacert.crt'

Generation des certificates (on utilise CAcert pour la certification):

# cd /etc/ssl/private
# openssl req -nodes -new -keyout mail.key -out mail.csr

Le certificat signé va alors dans /etc/ssl/certs/.
Copier aussi le certificat CAcert

# cd /etc/ssl/certs
# wget http://www.cacert.org/cacert.crt

Courier-IMAP et Courier-POP3

Installation des paquets

# apt-get install courier-imap courier-imap-ssl courier-pop courier-pop-ssl

Configuration de PostFix pour les MailDirs

# postconf -e 'home_mailbox = Maildir/'
# postconf -e 'mailbox_command ='

Mise en forme du certificat (on utilise le même certificat que pour smtp):

# cd /etc/courier
# mv imapd.pem imapd.pem.selfsigned
# cat /etc/ssl/private/mail.key /etc/ssl/certs/mail.crt > imapd.pem            
# openssl gendh >> imapd.pem
# chmod 0600 imapd.pem
# mv pop3d.pem pop3d.pem.selfsigned
# cp imapd.pem pop3d.pem

Apache

Installation des paquets

# apt-get install apache2 apache2-doc
# apt-get install curl libwww-perl imagemagick
# apt-get install libapache2-mod-php4 php4 php4-cli php4-common php4-curl php4-dev php4-domxml \
  php4-gd php4-imap php4-ldap php4-mcal php4-mhash php4-mysql php4-odbc php4-pear php4-xslt  
# apt-get install libapache2-mod-perl2

Mise a jour de /etc/apache2/ports.conf pour écouter sur le port 443:

Listen 80
Listen 443

Activation des modules:

# a2enmod ssl
# a2enmod rewrite
# a2enmod suexec 
# a2enmod include

Et redémarrage de Apache:

# /etc/init.d/apache2 restart

ProFTPD

Installation des paquets (le serveur est installé en mode standalone)

# apt-get install proftpd

Et ajout/changement des paramtres dans /etc/proftpd.conf:

ServerName    "<MyName> FTP Server"
ServerIdent   on "FTP Server ready."
DefaultRoot   ~
IdentLookups  off

Redémarrage...

# /etc/init.d/proftpd restart

Webalizer

Installation du paquet

# apt-get install webalizer

Specifier le répertoire de logs de Apache2: /var/log/apache2/error.log.1 lors de la configuration

Perl

Packages nécessaire pour SpamAssassin qui sera intallé avec ISPConfig:

# apt-get install libhtml-parser-perl libnet-dns-perl

ISPConfig

Installation

A ce stade nous avons installé sur le Linux-VServer tous les pré-requis.
Aller sur ISPConfig pour télécharger le logiciel et revoir la procédure d'installation.
Cette section paragraphe reprend les poinst importants de l'installation de ISPConfig

Téléchargement et démarrage de l'install

# wget http://belnet.dl.sourceforge.net/sourceforge/ispconfig/ISPConfig-2.1.2.tar.gz
# tar xzf ISPConfig-2.1.2.tar.gz
# cd install_ispconfig
# ./setup

L'installation prend un certain temps, ISPConfig utilise son propre serveur Apache/PHP qu'il doit compiler...

En général, on peut accepter toutes les valeurs par défaut et choisir le mode d'installation standard (voir toutefois le paragraphe Apache suExec).

En cas d'erreur...

La procedure d'installation est assez frustrante, si on fait une erreur, il faut recommencer dès le départ:

# cd ..
# rm -rf install_ispconfig /home/admispconfig /root/admispconfig

Apache suExec

Si on désire utiliser la fonctionalité suExec de Apache, les sites doivent se trouver dans /var/www sous Debian. Il faut:
soit changer la valeur par défaut de ISPConfig en éditant mod/httpd/httpd:

dist_path_httpd_root:/var/www:Web-Root:read::debian31

soit choisir le mode Expert, accepter toutes les valeurs par défaut à l'exeption de Web-Root qu'on mettra à /var/www.

Certificats SSL

Vous pouvez accepter les défauts pour les certificats SSL, mais ne les encryptez pas, sinon il faudra donner le mot de passe à chaque démarrage du serveur.

MySQL

Lors de la configuration MySQL, entrez localhost et l'utilisateur configuré ci-dessus:

Entrez le nom d'hote de votre serveur MySQL:localhost
Entrez votre nom d'utilisateur MySQL:ispconfig
Entrez votre mot de passe MySQL:
OK
Entrez le nom a donner à la base de donnees d'ISPConfig (ex: db_ispconfig):db_ispconfig


Serveur HTTP

Exemple de configuration (attention, l'adresse IP et les noms sont vérifiés, on ne peux pas entrer quelque chose qui n'est pas encore configuré!):

Entrez l'adresse IP ou installer le panel ISPConfig (ex: 192.168.0.1):xxx.yyy.zzz.www
OK
Merci d'entrer le nom d'hote (e.g. ispconfig):admin
Merci d'entrer votre domaine (e.g. xyz.fr):mondomaine.be
OK
Merci de selectionner un protocole (http ou https (Cryptage SSL) pour acceder au systeme ISPConfig:
1) HTTPS
2) HTTP
Votre choix: 1


Post-install

MySQL

Lors de l'installation, ISPConfig enlève le disable-networking de MySQL. Vérifier/restaurer les paramètres.

# cp /etc/my.cnf_orig /etc/my.cnf

Le script de démarrage /etc/init.d/ispconfig_server démarre MySQL, ce n'est pas nécessaire...

Serveur Apache d'admin

Remplacer les certificats par des vrais certificats -- on procède comme ci-dessus:

# cd /etc/ssl/private
# openssl req -nodes -new -keyout mail.key -out mail.csr

On place le certificat signé dans /etc/ssl/certs/ et on met à jour /root/ispconfig/httpd/conf/httpd.conf

SSLCertificateFile      /etc/ssl/certs/admin.crt
SSLCertificateKeyFile   /etc/ssl/private/admin.key
SSLCertificateChainFile /etc/ssl/certs/cacert.crt

Liens