Update : Des scripts d’installation on vu le jour depuis que j’ai fait ce tuto. Je vous invite à aller jeter un coup d’oeil ici.
Depuis le temps que je voulais le faire, voici un petit tutoriel pour installer ISPConfig.
Fonctionnalités
ISPConfig vous permet de gérer l’hébergement de votre serveur dédié à l’aide d’une interface web. C’est ce que l’on appelle un « webmin ».
Utilisateurs
3 différents niveaux d’utilisateurs existent
- Administrateur
- Revendeur
- Client
L’administrateur a tous les droits, le revendeur peut créer de nouveaux clients.
Les outils utilisés
- HTTP: Apache2 and nginx
- SMTP: Postfix
- POP3/IMAP: Courier et Dovecot (1.2.x)
- FTP: PureFTPd
- DNS: BIND et MyDNS
- Base de donnée: MySQL
- Statistiques: Webalizer et AWStats
- Virtualization: OpenVZ
Les services gérés
Sites web
- Domaines des Virtual Host
- SSL, CGI, SSI, Ruby, Python
- PHP sous différents modes mod_php, FCGI, CGI et SuPHP
- Différentes instances de PHP lancé par site web
- Re-écriture, alias, redirections.
Utilisateurs FTP
Bases de données MySQL
Utilisateurs Shell (chrooté ou non)
Mails
- SMTP
- POP3, IMAP, POP3s, IMAP
- Boites mails
- Alias mail
- Filtres de spam et virus
- Les listes blanches / noires
- La réponse automatique
- La collecte de mail avec fetchmail
- Listes de diffusion avec mailman
DNS
- Un DNS wizzard pour créer des zones facilement
- Réglage des zones et des enregistrements
- Import depuis des fichiers bind
- Support des enregistrements de type : A, AAAA, ALIAS, CNAME, HINFO, MX, NS, PTR, RP, SRV, TXT
- Gestion des DNS Master/Slave
Virtualisation (à travers OpenVZ)
Parefeu
Statistiques avec Webalizer et AWStat
Quotas et limites
- D’espace disque
- de boite mail
- De traffic
ISPConfig supporte beaucoup de langage et fonctionne sur la plupart des distributions Linux.
Je vais détailler ici la procédure d’installation et configuration sur une fraiche Debian Squeeze 6.
Mise a jour, synchronisation de l’heure et hostname
On fait les mise à jour :
apt-get update ; apt-get dist-upgrade
On fixe le nom de l’hôte
echo sheebypanda.com > /etc/hostname
/etc/init.d/hostname.sh start
On vérifie :
hostname -f
On synchronise l’horloge système :
apt-get install ntp ntpdate
Installation des services mails
Aller hop, cul-sec :
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4 rkhunter binutils sudo
Il vous sera alors demandé de répondre à certaines questions :
- Type général de configuration mail: Internet Site
- Domaine des mails système: sheebypanda.com
- Nouveau mot de passe pour l’utilisateur « root » MySQL: motdepasse
- Créer des répertoire pour l’administration web ?: Non
- Certificat SSL requis : Ok
Pendant l’installation, les certificats SSL pour IMAP et POP3 sont créés avec le domaine localhost. Pour changer cela, supprimer les 2 fichiers suivants :
rm -f /etc/courier/imapd.pem /etc/courier/pop3d.pem
et modifier les fichiers suivants :
nano /etc/courier/imapd.cnf
nano /etc/courier/pop3d.cnf
Puis dans chacun de ces fichiers, remplacer la ligne CN par votre domaine comme ci-dessous :
[...] CN=sheebypanda.com [...]
Puis recréer les certificats :
mkimapdcert
mkpop3dcert
On redémarer courier-pop-sll et courier-imap-ssl
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop-ssl restart
Installation des anti-spams :
apt-get 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
La configuration d’ISPConfig utilise amavisd qui charge SpamAssassin en interne, donc on peut arrêter SpamAssassin pour libérer un peu de RAM :
/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove
Installation d’apache et ses composants
apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libruby libapache2-mod-ruby
Il vous sera alors posé les questions suivantes :
- Serveur web à configurer automatiquement : apache2
- Configurer la base de donnée pour phpmyadmin avec dbconfig-common ? : Non
On autorise les nouveaux modules d’apache2 :
a2enmod suexec rewrite ssl actions include
Autorisez aussi ces deux derniers pour utiliser WebDav :
a2enmod dav_fs dav auth_digest
Puis redémarrez apache :
/etc/init.d/apache2 restart
Installation du FTP et des quotas :
apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool
Modifier le fichier suivant :
nano /etc/default/pure-ftpd-common
Puis vérifier que vous avez la même chose pour les deux lignes suivantes :
[...] STANDALONE_OR_INETD=standalone [...] VIRTUALCHROOT=true [...]
Pour que la partition accepte les quotas, éditer le fstab :
nano /etc/fstab
et ajouter « ,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 » aux options de la partition / comme ci-dessous :
#proc /proc proc defaults 0 0 # / was on /dev/sda1 during installation UUID=92bceda2-5ae4-4e3a-8748-b14da48fb297 / ext3 errors=remount-ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1
puis lancer :
mount -o remount /
quotacheck -avugm
quotaon -avug
Installation de fail2ban
apt-get install fail2ban
puis autoriser le blocage des services que vous souhaitez sur le fichier.
nano /etc/fail2ban/jail.local
Enfin, redémarrer fail2ban
/etc/init.d/fail2ban restart
Installation d’ISPConfig
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
Il vous sera alors demandé :
- Select language (en,de) [en]:ENTER
- Installation mode (standard,expert) [standard]: ENTER
- Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.example.com]: ENTER
- MySQL server hostname [localhost]: ENTER
- MySQL root username [root]: ENTER
- MySQL root password []: PASSWORD
- MySQL database to create [dbispconfig]: ENTER
- MySQL charset [utf8]: ENTER
- Country Name (2 letter code) [AU]: ENTER
- State or Province Name (full name) [Some-State]: ENTER
- Locality Name (eg, city) []: ENTER
- Organization Name (eg, company) [Internet Widgits Pty Ltd]: ENTER
- Organizational Unit Name (eg, section) []: ENTER
- Common Name (eg, YOUR name) []: ENTER
- Email Address []: ENTER
- ISPConfig Port [8080]:ENTER
Après cela, vous pouvez accéder à ISPConfig à l’adresse http://example.com:8080/
L’identifiant et mot de passe par défaut sont admin / admin
[source]
Pas de faille avec ispconfig 3 ?
Faut-il mieux faire une install de serveur à la main ou via cet outil ?