Alors aujourd’hui je dois installer comme à mon habitude un web serveur complet, et comme je ça sympa d’écrire des mini tuto, je vous donne ma façon de faire!
L’idée c’est de créer un wordpress multi-site pour accueillir plein de site et seulement avoir une administration centralisée.
Alors pour commencer je m’achète un petit serveur debian 8 64bits chez ovh: cloud 1, histoire d’avoir le service backup et snapchot pour la suite. (je sais pas l’utiliser mais on sait jamais)
De mon côté je suis habitué à utiliser la suis lamp, je vais donc faire comme je fais d’habitude 😉
Je me connecte donc en ssh et met de suite mon serveur à jour.
root@vpsxxxxxx:~# apt-get update root@vpsxxxxxx:~# apt-get upgrade
Ensuite j’installa la suite lamp !
root@vpsxxxxxx:~# apt-get install apache2 mysql-server php5 php5-mysql
Mysql me demande un bon mot de passe pour root! Perso j’utilise mon générateur keepass2 pour me fournir un truck plutôt bien chiant à retenir 🙂
Bien maintenant, je vais jeter un coup d’oeil en tapant l’adresse ip de mon serveur dans la barre de navigation de mon navigateur web favori: http://xxx.xxx.xxx.xxx
Et bims!
OK, la prochaine étape, c’est écrit ci-dessous, on va aller dans /var/www/html et télécharger WordPress, pour ça faut que je vais copier le lien du zip de téléchargement sur le site de wordpress. Perso je vais juste me mettre là /var/www pour quand je vais extraire le zip wordpress juste le renommer.
root@vpsxxxxxx:~# cd /var/www/ root@vpsxxxxxx:/var/www/# wget https://fr.wordpress.org/wordpress-4.3.1-fr_FR.zip
D’abord je dézippe le fichier compressé. Evidemment faut installer unzip …
root@vpsxxxxxx:/var/www/# apt-get install unzip root@vpsxxxxxx:/var/www/# unzip wordpress-4.3.1-fr_FR.zip
Je supprime mon archive et mon dossier html, puis je renomme mon fichier wordpress dézippé par html.
root@vpsxxxxxx:/var/www/# rm wordpress-4.3.1-fr_FR.zip root@vpsxxxxxx:/var/www# rm html/ -r root@vpsxxxxxx:/var/www# mv wordpress/ html
Là je vérifie que tout soit ok au niveau de mon navigateur favori => http://xxx.xxx.xxx.xxx
Tout se passe comme sur des roulettes! Au point ou j’en suis je dois me créer une petite base de donnée pour mon site. Allez hop encore une ou deux petite ligne de commande et on est bon 🙂
Je me connecte à mysql avec le super mot de passe de tout à l’heure
root@vpsxxxxxx:/var/www# mysql -u root -p
Puis je crée une base de donnée, un utilisateur et je limite les droits de cet utilisateur à cette base de donnée. Simplement.
Vous n’avez qu’à modifier ce qui se trouve entre crochet (et enlever les crochets of course.) Finalement on applique les privilèges! Ne prenez pas le même mot de passe que root, c’est pas terrible du tout comme idée. Je vous conseille d’utiliser un trousseaux de mots de passe si comme moi vous avez des petits alzheimer temporaires ..
mysql> CREATE DATABASE [nom-de-la-base-de-donnee]; mysql> CREATE USER '[nom-d-utilisateur]'@'localhost' IDENTIFIED BY '[mot-de-passe]'; mysql> GRANT ALL PRIVILEGES ON [nom-de-la-base-de-donnee].* TO '[nom-d-utilisateur]'@'localhost' IDENTIFIED BY '[mot-de-passe]'; mysql> FLUSH PRIVILEGES; mysql> quit
Il nous reste donc à configurer les permissions de fichier du wordpress, en premier lieu on modifie le propriétaire par www-data, et on modifie les droits en fonctions s’il sag’it d’un fichier un dossier ou un fichier. Je vous présente un type de permissions, vous pouvez l’optimiser à vos souhaits.
root@vpsxxxxxx:/var/www# cd html root@vpsxxxxxx:/var/www/html# chown -R www-data:www-data * root@vpsxxxxxx:/var/www/html# find . -type f -exec chmod 664 {} ; root@vpsxxxxxx:/var/www/html# find . -type d -exec chmod 775 {} ; root@vpsxxxxxx:/var/www/html# chmod 660 wp-config.php
ATTENTION: la dernière commande ne ser réalisée qu’une fois l’installation de wordpress terminée.
Je vous propose de suivre le tuto suivant pour savoir: comment installer wordpress.
Je passe donc par l’installation de deux trois bricole et par la modification des VirtualHost du serveur, pour les rendres plus mieux!
- Installer/ activer le mod rewrite
- Utiliser une meilleur configuration pour le VHOST
Bon on va ajouter une petite touche de sécurité à tout ça. On va donc créer un utilisateur debian sans droits précifique, juste pour se connecter, puis interdire la connexion depuis root.
La connexion avec cet utilisateur via un certificat SSH ! Ouais c’est sur qu’il faut un peu d’ambitions. Allez hop! Ambitions!
root@vpsxxxxxx:/var/www# adduser [debian-user]
On suit les instructions et on obtient un joli user avec lequel on peux dans une nouvelle fenetre se connecter en parallèle, on veille à bien pouvoir se connecter avec de faire la manip d’interdiction de se loguer via root, sinon vous allez devoir réinstaller tout depuis le debut! hahah! Moi j’arrive a me connecter avec mon nouvel utilisateur, je peux donc procéder.
root@vpsxxxxxx:/var/www# vim /etc/ssh/sshd_config
il faut donc changer la ligne PermitRootLogin yes
en PermitRootLogin no
et on redémarre ssh.
root@vpsxxxxxx:/var/www# /etc/init.d/ssh restart
On essaie de se connecter avec root? bin non, c’est plus possible 🙂 Alors l’avantage de cette technique c’est que si jamais le mec arrive à trouver le mot de passe de l’user qu’on vient de se créer, il ne sait pas faire grand chose de mal sur le serveur, en plus on va être vicieux et mettre un petit script qui va nous envoyer un email pour nous signaler que quelqu’un vient de se connecter au serveur en tant que user sans privileges.
Bien sur dans ce cas de configuration il ne faut surtout pas permettre à l’utilisateur l’élévation sudo. On force l’utilisateur à utiliser un mot de passe différent pour root. Le hacker est contraint de connaitre et le mot de passe et de trouver le username avec lequel se connecter ce qui est on peux le dire le top de la sécurité.
Bon pas vraiment le top si le mot de passe qu’on as mis pour l’utilisateur est rikiki. Perso mes clefs font min 40 caractères. (évidemment c’est grâce à keepass, je ne retient pas des mots de passes aussi longs)
Voilà le tuto est fini. On a une bonne base de travail pour la suite.