ISPConfig sous Linux-VServer
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;
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