Site Web (LAMP) et installation de ProFTPD

Site Web (LAMP) et installation de ProFTPD

« Notamax, comme de plus en plus de sociétés aujourd’hui, avait besoin d’un site web. Quelque chose leur permettant de tenir leur clients informés des nouveautés, des changements, ainsi que leur permettre de toucher plus de personnes. »

Les attentes

Réaliser un site web sécurisé et simple permettant de publier des articles et des vidéos. L’utilisation d’un CMS semble de rigueur pour la rapidité de création et d’édition d’articles, la gestion de membres et autre.

La partie technique

  • Linux Debian 9.3 Stretch
  • Apache2
  • MariaDB
  • PHP
  • CMS WordPress
  • ProFTPD

Configuration

1) Téléchargement et installation d’Apache, MariaDB, et PHP

Rien de très compliqué ici:

sudo apt-get install apache2 mysql-server mysql-client mysql-common php php-mysql

 

2) Création de la base de données

Ici on créer donc une base de données nommée site_web, puis on créer un utilisateur du nom de wordpress et enfin on lui donne les accès:

sudo mysql -u root -p
create database site_web;
create user wordpress@localhost identified by 'P@ssword';
grant all privileges on site_web.* to wordpress@localhost;
exit

3) Installation et configuration du serveur FTP ProFTPD

Pour l’installer:

sudo apt-get install proftpd

Pour configurer le serveur (comme changer le nom ou le port utilisé par exemple) :

nano /etc/proftpd/proftpd.conf

Encore une fois, par mesure de sécurité, il convient de dé-commenter la ligne ‘DefaultRoot’ pour chrooter les users dans leur home et rajouter une ligne ‘RootLogin on’ pour autoriser le login ftp en root (à ne pas effectuer en prod bien entendu).

Ensuite, un simple nano /etc/ftpusers pour supprimer l’utilisateur root et donc permettre sa connexion.

4) Téléchargement et installation de WordPress

Un simple wget puis on extrait l’archive et on la déplace dans le dossier approprié:

wget https://fr.wordpress.org/wordpress-4.8.1-fr_FR.tar.gz
tar zxvf wordpress-4.8.1-fr_FR.tar.gz
sudo rm -R /var/www/html/
sudo mv wordpress /var/www/html

(Ou bien uploader le contenu du zip via FTP, dans /var/www/html/)

5) Configuration de WordPress

On démarre donc notre navigateur et nous nous rendons sur l’adresse de notre serveur, puis il nous suffit de suivre la procédure, faire les mises à jours du CMS, installer des modules de sécurité, un thème, et au passage modifier les permaliens.

(Modifier le fichier apache2.conf pour résoudre l’erreur 404 des permaliens).

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

Ne pas oublier d’activer la ré-écriture d’URL via le module Apache:

a2enmod rewrite

6) Changement du port SSH

Pour se prémunir des attaques de bots, il est important de changer le port SSH par défaut.

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.save
nano /etc/ssh/sshd_config

Modifiez le port d’écoute en 2222 au lieu de 22 par exemple.

7) Création d’un pare-feu Iptables:

Par mesures de sécurité, j’ai décidé de créer un script ip-tables servant de pare-feu, et se lançant à chaque démarrage du serveur. Un exemple basique est disponible à cette adresse.

Pour résumer

Cet article n’est pas énormément détaillé, je n’ai pas abordé la configuration de l’outil Fail2Ban (un indispensable pour la sécurité de votre serveur…) ainsi que la liaison de votre nom de domaine à votre site, le passage en HTTPS via Let’s Encrypt, etc. Cela fera sûrement l’objet d’autre articles*.

Je ferais éventuellement un article entier dédié à la sécurisation d’Apache2 et de WordPress, car il y a énormément de matière. Cependant, je me suis dis que certaines options de sécurité doivent quand même être décrites ici, histoire de ne pas se retrouver piraté quelque heures après avoir réalisé son premier site web 🙂.

*Il s’avère que j’ai récemment rédigé un nouvel article parlant de WordPress, son installation se passe sur NGINX mais est bien plus détaillé, notamment la partie sécurité. Pour les curieux, il se trouve ici