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.
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.
II : Installer les programmes obligatoires
Installation de mysql, apache & php:
apt-get -y install mysql-server mysql-client && apt-get -y install apache2 && apt-get -y 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 :
“ftp.de.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 :
Listen 8080
NameVirtualHost *:8080
<VirtualHost _default_:8080>
<IfModule mod_fcgid.c>
À changer en ceci si vous voulez le port 7654 à la place du 8080 :
Listen 7654
NameVirtualHost *:7654
<VirtualHost _default_:7654>
<IfModule mod_fcgid.c>
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
“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 🙂
—————-