Installer de A à Z son serveur debian 6 sur VPS 2013 OVH avec ISPCONFIG :
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. Idem si vous n’êtes pas sous débian 6 :
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”
Vous devrez confirmer, puis donner le mot de passé que vous voulez pour l’utilisateur root
Installation d’apache :
« apt-get install apache2 »
Vous devrez confirmer en tapant Y à la question.
Installer PHP :
“apt-get install php5 libapache2-mod-php5”
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 »
Sur l’application en route, pointez « apache » avec la barre d’espace et validez
A la prochaine question, dites non.
Installation de l’antivirus :
« 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 »
« 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
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 »
Et on change sur ce fichier la ligne VIRTUALCHROOT=false, en VIRTUALCHROOT=true
Et on sauve
Puis on relance le service
« /etc/init.d/pure-ftpd-mysql restart »
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
filter = sasl
logpath = /var/log/mail.log
maxretry = 5
[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=\[.*:\]
# 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=\[.*:\]
# 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=\[.*:\]
# 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=\[.*:\]
# 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
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 :
À changer en ceci si vous voulez le port 7654 à la place du 8080 :
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
----------------------
En suivant scrupuleusement tout ça, votre serveur sera prêt et fonctionnel.
Il n'y à plus qu'a vous lancer dans l'experience !
Edited by Jean Francois G, 24 July 2014 - 11:01 AM.