Installer de A à Z son serveur debian 6 ou debian 7 sur VPS OVH avec ISPCONFIG : (tuto modifié et mis a jour pour les dernières versions de débian 7 et ovh de 2015) Vous lirez dans plein de topics : "Si tu n'es pas un administrateur de génie, alors ne tente pas l'expérience des serveurs dédiés car c'est impossible. Tu dois faire appel à un professionnel payant." Nous allons tenter ici de casser ce discours et de faire en sorte que vous puissiez vous aussi avoir votre serveur dédié avec juste un minimum de connaissances. C'est parti ! Nous allons avoir besoin des données que nous avons reçu d’OVH lors de la création du VPS. Notamment son nom (vpsxxxxx.ovh.net) Le mot de passe root pour le ssh L’adresse IP du serveur 1 / Si vous avez déjà tenté quelque chose sur votre VPS il faut le réinstaller. : 1A / POUR LES VPS OVH APRES 2013 (DONC ACTUELS 2014 et 2015) Vous devez vous rendre dans votre espace d'administration de votre compte sur le site OVH Vous cliquez sur le nom de votre VPS En haut à droite une case est marquée "REINSTALLER" Vous choisissez la version de Débian 6 (ou 7 c'est selon votre choix). NOTEZ QUE VOUS POUVEZ CHOISIR D'INSTALLER DEBIAN 7 WHEEZY, LA PROCEDURE SERA LA MÊME. IL SUFFIRA DE NE PAS MODIFIER VOTRE FICHIER /etc/apt/sources.list QUI EST DÉJÀ CORRECT. 1B /POUR LES VPS DE 2013 et AVANT : La réinstallation est beaucoup plus compliquée que sur un kimsufi ou un semi dédié classique. Allez sur https://api.ovh.com/ et loguez vous avec vos codes de compte OVH Dans la liste étrange qui apparait, allez sur « /VPS » Cliquer sur « /vps/{serviceName}/templates », et renseignez le nom de votre serveur (vpsxxxx.ovh.net) Puis cliquez sur « execute » Une liste numérotée affiche les codes des versions de linux disponibles Maintenant allez juste en dessous et cliquez sur /vps/{serviceName}/templates/{id} Renseignez dans la zone 1 le nom du serveur, puis dans la zone 2 un des numéros de version, et cliquez sur execute. Vous saurez alors à quoi correspond le numéro car cela affiche le nom en clair. Répétez l’opération jusqu'à trouver la version de Debian 6 squeeze et notez son numéro. Allez sur /vps/{serviceName}/reinstall , tapez le nom du serveur et le numéro que vous avez noté, puis cliquez sur execute. Le message « to do » s’affiche. Votre serveur est en cours de réinstallation. Ouvrez votre gestionnaire de mail et attendez le nouveau message de confirmation. Cela dira que l’installation est finie. 2/ Préparation du serveur : Nous allons tout paramétrer par SSH. Donc il faut télécharger un programme pour cela. Par exemple le logiciel Putty : http://www.clubic.co...0874-putty.html Lancez putty, puis connectez vous sur l’IP de votre serveur. Une fenêtre noir apparait, c’est la que tout se passe. Tapez votre login : root Puis votre mot de passe reçu sur le mail de confirmation que vous venez de recevoir. 2a : Changer le mot de passe du root Pour mieux vous rappeler du mdp root, nous allons le changer. Tapez « passwd root » Et choisissez un mot de passe qui vous plait. 2b : Faire la mise à jour des sources « apt-get update », validez “apt-get upgrade”, validez 2c : Installer un éditeur de fichier « apt-get install vim-nox » Dans cet éditeur, il faut connaitre les fonctions : Pour écrire dans le fichier : appuyer sur « inser » du clavier (ajoute / remplace) Pour abandonner les modifications : CTRL/C puis écrire « :q ! » Pour sauver les modifs et revenir aux commandes : CTRL/C puis « ZZ » (en majuscule) 2d : Configurer la langue et les caractères Par défaut, le serveur est configuré pour en_EN.utf8, nous allons le paramétrer pour les caractères français : « Dpkg-reconfigure locales » Un panneau apparait. Répondez « toutes les régions » Et dans région par défaut, choisissez « fr_FR.UTF-8 » Ça va mouliner un moment, mais comme ça on n’aura pas de message d’erreurs pendant les installations. 2e : Installer les programmes obligatoires Installation de mysql : “apt-get install mysql-server mysql-client” OK! Vous devrez confirmer, puis donner le mot de passé que vous voulez pour l’utilisateur root Installation d’apache : « apt-get install apache2 » OK! Vous devrez confirmer en tapant Y à la question. Installer PHP : “apt-get install php5 libapache2-mod-php5” OK! Et on relance le service « /etc/init.d/apache2 restart » Installation des modules optionnelles selon votre utilisation : « apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl » Et on reboot « Reboot » La fenêtre SSH va se fermer. Relancez putty et reconnectez-vous en root avec votre nouveau mot de passe. Installation de phpmyadmin : « apt-get install phpmyadmin » OK! Sur l’application en route, pointez « apache » avec la barre d’espace et validez A la prochaine question, dites non. Installation de l’antivirus : POUR DEBIAN 6 IL FAUT METTRE A JOUR LES SOURCES (pas besoin pour debian 7) : « vi /etc/apt/sources.list » Et ajoutez la ligne : "http://ftp.fr.debian.org/debian squeeze-updates main" À celles déjà existantes. Sauvez le fichier. Puis « apt-get update && apt-get upgrade » OK! POUR DEBIAN 7 TAPEZ DIRECTEMENT : « 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 » Ce qui installe clamAV, amavisd et spam-assassin Comme c'est amavisd qui sera utilisé avec isp-config et que ce logiciel se sert des configs de spam-assasin, on va pouvoir l'annuler. "/etc/init.d/spamassassin stop" "update-rc.d -f spamassassin remove" On installe les serveurs de courriers et les appli utiles : « 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 gamin » Aux questions répondez : « site internet », puis renseignez votre nom de VPSxxx.ovh.net, puis SSL « non » Maintenant, on autorise mySQL à écouter partout : « vi /etc/mysql/my.cnf » Commentez la ligne bind-address = 127.0.0.1 Ce qui donne « # bind-address = 127.0.0.1 » Sauvez le fichier Relancez le service « /etc/init.d/mysql restart » Maintenant on configure les certificats pour notre serveur : « cd /etc/courier » « rm -f /etc/courier/imapd.pem » « rm -f /etc/courier/pop3d.pem » « vi /etc/courier/imapd.cnf » Changez le CN présent (localhost) par votre serveur CN=vpsxxxxx.ovh.net et sauvez Faites pareil avec ce fichier la : « vi /etc/courier/pop3d.cnf » Puis on génère les certificats « mkimapdcert » « mkpop3dcert » Et relancez le service : « /etc/init.d/courier-imap-ssl restart » « /etc/init.d/courier-pop-ssl restart » On installe maintenant FCGI, suExec, Pear, et mcrypt : « 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 » Puis on active les modules de redirections etc.. “a2enmod suexec rewrite ssl actions include” “a2enmod dav_fs dav auth_digest” On relance le service : « /etc/init.d/apache2 restart » Installation du serveur FTP : « apt-get install pure-ftpd-common pure-ftpd-mysql » « vi /etc/default/pure-ftpd-common » OK ! Et on change sur ce fichier la ligne VIRTUALCHROOT=false, en VIRTUALCHROOT=true OK! Et on sauve Puis on relance le service « /etc/init.d/pure-ftpd-mysql restart » OK! Installation du serveur DNS : « apt-get install bind9 dnsutils » Installation des logs et des stats : “apt-get install vlogger webalizer awstats geoip-database” « vi /etc/cron.d/awstats » Et dans ce fichier commentez toutes les lignes Installation de fail2ban : « apt-get install fail2ban » Puis on crée les fichiers de configuration pour chaque service « vi /etc/fail2ban/jail.local » en insérant ces lignes : [pure-ftpd] enabled = true port = ftp filter = pure-ftpd logpath = /var/log/syslog maxretry = 3 [sasl] enabled = true port = smtp, smtps filter = sasl maxretry = 2 bantime = 36000 [courierpop3] enabled = true port = pop3 filter = courierpop3 logpath = /var/log/mail.log maxretry = 5 [courierpop3s] enabled = true port = pop3s filter = courierpop3s logpath = /var/log/mail.log maxretry = 5 [courierimap] enabled = true port = imap2 filter = courierimap logpath = /var/log/mail.log maxretry = 5 [courierimaps] enabled = true port = imaps filter = courierimaps logpath = /var/log/mail.log maxretry = 5 Puis : « vi /etc/fail2ban/filter.d/courierpop3.conf » en inserant : # Fail2Ban configuration file # # $Revision: 100 $ # [Definition] # Option: failregex # Notes.: regex to match the password failures messages in the logfile. The # host must be matched by a group named « host ». The tag « » can # be used for standard IP/hostname matching and is only an alias for # Values: TEXT # failregex = pop3d: LOGIN FAILED.*ip=\[.*:\] from # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex= Puis « vi /etc/fail2ban/filter.d/courierpop3s.conf » En inserant : # Fail2Ban configuration file # # $Revision: 100 $ # [Definition] # Option: failregex # Notes.: regex to match the password failures messages in the logfile. The # host must be matched by a group named « host ». The tag « » can # be used for standard IP/hostname matching and is only an alias for # Values: TEXT # failregex = pop3d-ssl: LOGIN FAILED.*ip=\[.*:\] from # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex = Puis « vi /etc/fail2ban/filter.d/courierimap.conf » En insérant : # Fail2Ban configuration file # # $Revision: 100 $ # [Definition] # Option: failregex # Notes.: regex to match the password failures messages in the logfile. The # host must be matched by a group named « host ». The tag « » can # be used for standard IP/hostname matching and is only an alias for # Values: TEXT # failregex = imapd: LOGIN FAILED.*ip=\[.*:\] from # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex = Puis « vi /etc/fail2ban/filter.d/courierimaps.conf » En insérant : # Fail2Ban configuration file # # $Revision: 100 $ # [Definition] # Option: failregex # Notes.: regex to match the password failures messages in the logfile. The # host must be matched by a group named « host ». The tag « » can # be used for standard IP/hostname matching and is only an alias for # Values: TEXT # failregex = imapd-ssl: LOGIN FAILED.*ip=\[.*:\] from # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex = Puis on relance le service : « /etc/init.d/fail2ban restart » Et enfin on installe ISPCONFIG : “cd /tmp” “wget http://www.ispconfig...3-stable.tar.gz” “tar xfz ISPConfig-3-stable.tar.gz” “cd ispconfig3_install/install/” “php -q install.php » Répondez à toutes les questions en utilisant la réponse par défaut et en renseignant aussi les vrais réponses. N’oubliez pas de renseigner votre mdp de mysql Maintenant on va modifier le fichier sasl.conf qui par défaut n'est pas correctement paramétré. Normalement il sert à détecter les tentatives de prise en main de votre serveur de mail, mais avec ses valeurs par défaut j'ai remarqué que ce filtre ne fonctionne pas. On le modifie ainsi : "vi /etc/fail2ban/filter.d/sasl.conf" et on remplace l'ensemble par ceci : # # Author: Yaroslav Halchenko # # $Revision: 728 $ # [Definition] # Option: failregex # Notes.: regex to match the password failures messages in the logfile. The # host must be matched by a group named "host". The tag "" can # be used for standard IP/hostname matching and is only an alias for # (?:::f{4,6} :)?(?P[\w\-.^_]+) # Values: TEXT # failregex = (?i): warning: [-._\w]+\[\]: SASL LOGIN authentication failed # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex = un petit tour dans jail.local pour vérifier l'appel au filtre : "vi /etc/fail2ban/jail.local" et dans la partie SASL, il doit y a voir ça (vu plus haut) : [sasl] enabled = true port = smtp,ssmtp filter = sasl maxretry = 2 bantime = 36000 Moi j'ai été hard, j'ai mis 2 tentative maximum en erreur car les russes ont bien compris que tout le monde mettait 5 et ils tentent que 3 fois par 20 minutes... Vous pouvez remonter à 5 si vous avez peur de vous tromper vous même ... Mais bon si vous connaissez vos codes, normalement c'est zero mauvaises tentatives... L’installation de base est terminée. Pour acceder a ispconfig : Vpsxxxxx.ovh.net :8080 Pour acceder à phpmyadmin Vpsxxxxx.ovh.net/phpmyadmin 3/ Réglages essentiels de sécurité 3a : Edition de php.ini pour autoriser l’importation des gros fichiers dans phpmyadmin : « vi /etc/php5/apache2/php.ini » Et mettez 20M en face de upload_max_filesize = 3b : securiser et changer le port d’accès pour ispconfig « vi /etc/apache2/sites-available/ispconfig.vhost » Vous trouverez ceci : Listen 8080 NameVirtualHost *:8080 À changer en ceci si vous voulez le port 7654 à la place du 8080 : Listen 7654 NameVirtualHost *:7654 3c : Changer l’adresse d’accès de phpmyadmin « vi /etc/phpmyadmin/apache.conf » Vous trouverez ceci : Alias /phpmyadmin /usr/share/phpmyadmin A changer en ceci (ou monraccourci = l’adresse souhaitée) Alias /monraccourci /usr/share/phpmyadmin 4 : Parametrer un nouveau site dans ISPCONFIG Dans ISP CONFIG : / Enlever les prefixes : Si on ne compte pas utiliser son dédier pour vendre des sites a des clients, on peut enlever les préfixes automatiques que ISP config met dans les paramètres. Onglet « system » : « Interface config » : onglet « sites » Supprimer tous les préfixes déjà préconfigurés. Cela évitera de ne plus se rappeler des différents login que ispconfig aurait modifié lui-même. / Créer son propre compte client : Histoire de ne pas avoir de messages de rappel a répétition ou de zones vides dans la config. Onglet « Client » « Ajouter un nouveau client » et on renseigne les zones / On crée l’espace du futur site web : Onglet « Site »: « Add new site » Sous onglet « domaine » : - Serveur : sélectionner son serveur - Client : le fameux client créé précédemment - Adresse ip : * (choisir l’etoile et ne pas choisir l’adresse IP du serveur, sauf si vous ne voulez jamais rajouter d’autres sites. En gros laisser l’étoile) - Domaine : nomdomaine.com (ne pas mettre le www.) - De CGI à SuEXEC, remplissez selon les technologies utilisées - Auto sous-domaine : *. - SSL : cochez si vous administrez via SSL - ]PHP : choisissez votre fonctionnement de PHP (fast-CGI) - Actif : Coché (évidemment) Et : ENREGISTRER / On crée l’utilisateur FTP pour le site : Onglet « site » : Sous onglet « utilisateur FTP » + Nouvel utilisateur FTP : puis Site web : on choisi le domaine concerné Nom d’utilisateur : Choisir un login (qui ne sera pas modifié puisqu’on a supprimé les préfixes) Choisir un mot de passe Quota de disque : -1 (c’est vous donc pas de restriction) Actif : ben oui On peut maintenant accéder via FTP a l’espace web et uploader le site dans le dossier « web » / La base de données : Sous ISPConfig, J’ai essayé l’onglet « base de données » de l’onglet « site », mais ça ne fait rien. Même si on crée un nouvelle base, cela ne la crée pas réellement (PHPmyadmin le confirme) Donc je passe par PHPmyadmin pour créer ma base de données puis l’importation pour transférer les tables . Sous phpmyadmin créez une nouvelle base de donnée (rappelez vous de son nom pour plus tard), puis dans cette base de données, grâce à l’onglet « importer », restaurez votre sauvegarde SQL que vous avez faite via votre mutualisé. Pour cela cliquez sur parcourir et allez cherchez le fichier Zip ou sql (c’est selon) puis cliquez sur « executer ». Ca mouline …. On attends (ça peut durer longtemps) … et hop c’est bon. Dans privileges, créez un nouvel utilisateur, donnez lui un nom, laissez « tout serveur », donnez lui un mot de passe, et les privilèges passe partout. (vous pouvez aussi donnez tous les droits sur cette base uniquement, en cliquant sur le choix plus bas, plus facile mais c’est plus risqué) . Cliquez sur « éxecuter » La base est prête 5 / Pointer votre DNS de domaine sur votre serveur Chez votre registar, accédez au zones DNS, puis dans la zone A, mettez votre serveur vps.xxxxx.ovh.com ou votre adresse IP de serveur Dans la zone MX, faites pareil (si vous voulez gérer vos mails sur votre serveur) 6 / Sécuriser son accès SSH Actuellement votre accès à distance est sur ROOT sur le port 22, c'est à dire sur l'utilisateur maître (un dieu en somme) sur le port par défaut. Nous allons changer cela afin de compliquer une éventuelle tentative d'utilisation de votre SSH par un tiers. 6a : Changement du port d'accès : Avec putty, accedez à votre serveur et loguez vous en root. puis : "vi /etc/ssh/sshd_config" vous allez avoir ceci : # What ports, IPs and protocols we listen for Port 22 # Use these options to restrict which interfaces/protocols sshd will bind to #ListenAddress :: #ListenAddress 0.0.0.0 Protocol 1 (Quelques fois protocol 2) à changer en ceci (ou 7654 est à changer dans le numéro de port que vous souhaitez) : # What ports, IPs and protocols we listen for Port 7654 # Use these options to restrict which interfaces/protocols sshd will bind to #ListenAddress :: #ListenAddress 0.0.0.0 Protocol 2 et sauvegardez 6b : Maintenant nous allons créer un utilisateur autre que root: Création de l'utilisateur : "adduser teteatoto" Pas bien compliqué ça ... Mais pour l'instant root peut toujours accéder au SSH 6c : Interdiction du SSH à root et autorisation d'accès à teteatoto Attention : Cette étape va interdire le login SSH de root, ne vous trompez pas concernant le nouveau nom d'utilisateur. Si vous l'oubliez = Réinstallation "vi /etc/ssh/sshd_config" vous allez avoir ceci : # Authentication: LoginGraceTime 120 PermitRootLogin yes StrictModes yes à changer en ceci : # Authentication: LoginGraceTime 120 PermitRootLogin no StrictModes yes AllowUsers teteàtoto sauvez le fichier relancez le service : "/etc/init.d/ssh restart" Dorénavant pour accéder au serveur en ssh vous devrez vous loguer en tant teteatoto (et mot de passe de teteatoto), puis dès que vous accedez à la ligne de commande, vous devrez demander les droits du root pour travailler à sa place avec la lignes suivante : "su -" Il sera demandé le mot de passe du root et une fois fait, hop vous avez pris sa place :) 7 / METTRE A JOUR CLAMAV SOUS DEBIAN 7 : Pour ceux qui ne supportent pas d'avoir des lignes d'avertissements dans les logs, vous avez remarquez que clamav affiche toujours des messages indiquant qu'il est "out to date". Ça n'empêche en rien son fonctionnement mais si vous souhaitez corriger cela alors : "vi /etc/apt/sources.list" Ajoutez la source suivante : deb http://ftp.de.debian.org/debian/ wheezy-updates main contrib non-free deb-src http://ftp.de.debian.org/debian/ wheezy-updates main contrib non-free puis lancez la mise a jour des sources et du programme : "apt-get update" "apt-get install clamav" "apt-get -u upgrade" Relancer amavis pour qu'il prenne en compte les modifs : "/etc/init.d/amavis restart" et voila. ---------------------- En suivant scrupuleusement tout ça, votre serveur sera prêt et fonctionnel. Il n'y à plus qu'a vous lancer dans l'experience !