EDIT : J'ai pas trop le temps pour le moment mais j'ai mis la version écrite quelques messages plus bas. Je vais faire mon possible pour améliorer/corriger un peu, et pourquoi pas de faire une video par tuto (2 dans ce cas). Bref, hésitez pas à donner vos avis :)

EDIT 2 : Je les ai validé, du coup ils devraient toujours se retrouver au début :)

J'ai fait, il y a pas longtemps un tuto écrit pour un ami sur la mise en place d'un serveur web (Debian) securisé comprenant :

  • apache, php, mysql
  • ftp
  • ssh
  • firewall

J'avais aussi fait un serveur mail, mais j'ai eu quelque soucis car les mails arrivent constamment dans les spams, du coup je pense pas l'expliquer ici.

Je parle aussi de la mise en place d'un https, de l'utilisation des vhost pour plusieurs sites sur le même serveurs.

Du coup je voulais savoir si ça intéresserais certains que j'en fasse un tuto vidéo ?

Si vous êtes intéressé, je vous fais ça pendant les vacances de noël.

Et si vous avez des questions particulière, relative au sujet, dont vous voudriez que je parle, dites le moi, et si c'est possible, j'en parlerais.

14 réponses


elhebert
Auteur
Réponse acceptée

Dans ce tutoriel nous allons voir comment mettre un place un serveur LAMP (Linux Apache Mysql Php). J'ai choisis pour ce tutoriel d'utiliser Debian 8 (dit Jessie), la dernière version d'Apache (la 2.4 pour le moment) et php5-fpm. Dans un second tutoriel nous verrons comment sécuriser notre serveur pour le rendre moins vulnérable.

Avant de commencer

  • Même si vous pouvez le suivre sans connaissance, je vous recommande d'avoir quelques bases en Linux afin d'avoir plus simple à comprendre les différentes étapes.
  • Dans ce tutoriel on supposera que l'on utilise un serveur qui vient d'être installer.
  • un # devant une commande signifie que l'on est connecté en tant que root
  • un $ devant une commande signifie que l'on est pas connecté en tant que root
  • ni le $ ou # ne font partie des commandes, inutile des les copier/coller.
Connexion au serveur

Vous pouvez vous en doutez, la première chose à faire est de se connecter en ssh à notre serveur. Suivant votre OS (Système d'Exploitation) la méthode sera différente :

  • Pour Linux et MacOs : Ouvrer le terminal et entrez
    ssh NomDUtilisateur@IpOuHostName

    Exemple :

    ssh root@42.42.42.42
  • Pour windows malheureusement l'invite de commande ne supporte pas ssh, il faudra donc passer par un logiciel tiers (ex: putty).

Vous voilà connectez sur votre serveur, nous allons maintenant créer un nouvel utilisateur pour installer et gerer notre LAMP. Je fais ça tout simplement pour utiliser root le moins possible sur le serveur de production.

J'ai choisis de nommer l'utilisateur amp tout simplement.

# adduser amp

Des questions vous seront posées, libre à vous d'y répondre ou non. Dans mon cas j'ai laissé vide (ENTER pour laisser vide)

Nous allons ensuite devoir installer sudo afin de pouvoir installer nos différents services.

# apt-get install sudo -y

Le -y est là pour dit oui à notre place lorsqu'une validation d'installation nous sera demander. Vous n'êtes pas obligez de le mettre, mais dans ce cas, il faudra répondre Oui lorsqu'on vous le demandera.

Nous allons ensuite ajouter notre utilisateur amp au groupe sudo et redemarrer le serveur pour valider le changement.

# adduser amp sudo
# reboot

Lorsque le serveur aura redémmarer, reconnectez-vous en ssh, mais en tant que amp cette fois-ci. Nous n'utiliseront plus root pour le moment.

Apache + MySql + php (+phpmyadmin)

Apache, php5-fpm et fastcgi

Nous allons commencer par installer Apache et php. Comme dit plus haut, nous allons utiliser php-fpm, nous allons donc avoir besoin du module fastcgi d'apache. pour pouvoir l'installer il va falloir modifié notre fichier sources.list. Ce fichier spécifie à Debian où aller chercher les paquets d'installation.

$ sudo nano /etc/apt/sources.list

AJoutez contrib non-free à la fin des 4 premières lignes non commentée. Voici à quoi ces les lignes devraient ressemblée une fois modifiées :

deb http://ftp.us.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.us.debian.org/debian/ jessie main contrib non-free

deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

Maintenant nous allons activer nos modifications via un

$ sudo apt-get update

Nous pouvons maintenant installer apache, php5-fpm et le modules fastcgi

$ sudo apt-get install apache2 libapache2-mod-fastcgi php5-fpm -y

Pour permettre à Apache d'interpreter les fichier .php on va créer un fichier de configuration

$ sudo nano /etc/apache2/conf-available/php5-fpm.conf

Dans ce fichier on va expliquer à Apache ce qu'il doit faire dans le cas où il doit interpreter un page .php quand le module fastcgi est utilisé

<IfModule mod_fastcgi.c>
    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization

    <Directory /usr/lib/cgi-bin>
      Require all granted
    </Directory>
</IfModule>

Pour terminer il ne nous reste plus qu'a activer les différents modules nécessaire, activer notre configuration php5-fpm et recharger la configuration d'apache

$ sudo a2enmod actions fastcgi alias 
$ sudo a2enconf php5-fpm 
$ sudo service apache2 reload

MySql et PhpMyAdmin

Nous allons maintement nous occuper la partie partie Mysql de notre serveur. Cette partie est très courte puisqu'il suffit de faire

$ sudo apt-get install mysql-client mysql-server -y

On vous demandera de choisir uniquement un mot de passe root pour mysql.

Maintenant que Mysql est installer, on va pouvoir installer phpmyadmin. Vous pouvez passer cette étape si vous préférez utiliser un programme (heidiSQL ou MySQLWorkBench par exemple) ou Adminer.

$ sudo apt-get install phpmyadmin -y

Attention, lors de l'installation de phpmyadmin plusieurs questions seront posées.

  • Pour la première il faut choisir Apache, pour ce faire, via les flèches de votre clavier séléctionner Apache et utilise ESPACE pour le séléctionner, et seulement lorsqu'Apache est cocher, vous pouvez valider en appuyant sur ENTER
  • Dites Oui lorsqu'on vous demande d'utiliser dbconfig-common
  • Entrez votre mot de passe root Mysql
  • Et choississez le mot de passe root pout phpmyadmin

Vous pouvez maintenant vous connectez à phpmyadmin via l'url IpDeMonServeur/phpmyadmin ou MonHostName.xx/phpmyadmin

ftp

Nous avons fini d'installer notre serveur LAMP, ce qui vut dire que l'on peut héberger un site web sur notre serveur. Mais il va nous falloir un ftp afin de pouvoir y envoyer nos fichiers sources.

On va donc installer proftpd

$ sudo apt-get install proftpd -y

Une fois l'installation finie, vous pouvez (via FileZilla par exemple) vous connecter à votre serveur en ftp. Le site par défaut d'Apache doit se trouver dans le dossier /var/www/html.
C'est donc dans ce dossier que votre site web devra se trouver.

Sécu basique

Nous allons maintenant voir comment ajouter une petite sécurité sur le serveur.

Attention

Ce qu'on va faire ici ne suffit pas ! Il ne s'agit que d'une sécurité très très très basique.

En effet, nous allons simplement désactiver la connexion au ssh à l'utilisateur root et faire de même pour mysql.

Pour ssh il faut modifié le fichier de configuration

$ sudo nano /etc/ssh/sshd_config

Et y ajouter (ou décommenter) la ligne

PermitRootLogin no

Pour MySql c'est plus simple puisqu'un script est déjà prévu

$ sudo mysql_secure_installation

Plusieurs questions seront posées :
Change the root password? [Y/n] y (pour changer le mdp root, n sinon)
Remove anonymous users? [Y/n] y (pour désactiver l'acces anonyme)
Disallow root login remotely? [Y/n] y (pour désactiver la connexion en root depuis l'extérieur)
Remove test database and access to it? [Y/n] y (pour supprimer les bdd test et les access)
Reload privilege tables now? [Y/n] y (Pour recharger les privilèges)

Et voilà, vous disposez maintenant d'un serveur LAMP et un serveur ftp afin d'y envoyer votre site web.

elhebert
Auteur
Réponse acceptée

Nous allons maintenant voir comment sécurisé notre serveur web afin qu'il soit moins vulnérable aux attaques.

Dans ce tutoriel nous allons voir comment sécurisé

  • Le ssh : En changeant le port par défaut et en ne permettant qu'à certains utilisateur de s'y connecter.
  • le ftp : En cryptant la connexion et en ne permettant qu'à certains utilisateur de s'y connecter.
  • Apache : En créant un utilisateur différent par site (via le module userdir) et en bloquant l'accès ftp à tout autre dossier que le /home des utilisateur.
  • le serveur en générale en utilisant des IpTables pour bloquer tout les ports du serveur sauf ceux que l'on va avoir besoin.
ssh

Nous allons tout d'abord créer un groupe ssh_allowed_user qui contiendra tout les utilisateur ayant accès au serveur via ssh.

$ sudo addgroup ssh_allowed_users

On va maintenant y ajouter l'utilisateur amp (utilisateur créer pour installer et gerer notre serveur dans le tutoriel précédent)

$ sudo adduser amp ssh_allowed_users

Et on va modifier la configuration de ssh

$ sudo nano /etc/ssh/sshd_config

Nous allons en profiter pour modifier le port par défaut de ssh. Il faudra modifier (ou ajouter suivant les cas) les lignes suivant

Port 5896 (Ou n'importe quel autre port situé en 1024 et 49151)

AllowGroups ssh_allowed_users

Pour valider nos modification il va falloir redémarrer le ssh.

$ sudo service ssh restart

ATTENTION

Dés que vous allez redemmarer le ssh vous allez être déconnecté. Et si vous n'avez pas ajouter l'utilisateur amp dans le groupe ssh_allowed_users vous ne pourrez plus vous connecter à votre machine. il va donc falloir demander une reinstallation (si vou sn'avez pas accès physiquement au serveur) ou aller se connecter physiquement à la machine pour régler le soucis.

Lorsque vous allez vous reconnecter n'oublier de spécifié le numéro de port. Sur Mac et Linux il faudra ajouter -p NumDePort et sur windows il faudra le spécifié dans le programme que vous utilisé (ex: Putty)

ftp

Comment pour le ssh nous allons restreindre la liste des utilisateurs qui peuvent se connecter en ftp à notre serveur.

$ sudo addgroup ftp_allowed_users
$ sudo adduser amp ftp_allowed_users

On va maintenant aller dans le fichier de configuration pour limiter l'accès au groupe que l'on vient de créer et pour y activer le cryptage.

ATTENTION

Il est posible que l'activation du tls ralentisse TRES FORTEMENT les vitesses de transfert du ftp. J'ai le soucis en utilisant FileZila sous windows, je n'ai pas encore tester avec d'autre OS/programme.

$ sudo nano /etc/proftpd/proftpd.conf

Décommenter la ligne (en retirant le # devant):

Include /etc/proftpd/tls.conf

Et ajouter le bloc :

<Limit LOGIN>
    DenyGroup !ftp_allowed_users
</Limit>

On va modifier la configuration tls de proftpd, mais tout d'abord on va créer une sauvegarde du fichier original, puis vider le fichier et enfin écrire notre configuration

$ sudo cp /etc/proftpd/tls.conf /etc/proftpd/tls.conf.original
$ sudo -i
# cat /dev/null > /etc/proftpd/tls.conf
# exit

Quelques explications :

  • sudo -i : On se reconnecte en root pour vider le contenu du fichier (ne marche pas avec sudo)
  • cat /dev/null > /etc/proftpd/tls.conf : On remplace le contenu du fichier de configuration par celui de /dev/null (qui est vide)
  • exit : on quitte root

Modifier le fichier

$ sudo nano /etc/proftpd/tls.conf

Et ajoutez-y les lignes suivantes.

<IfModule mod_tls.c>
    TLSEngine                  on
    TLSLog                     /var/log/proftpd/tls.log
    TLSProtocol                SSLv23
    TLSOptions                 NoCertRequest
    TLSRSACertificateFile      /etc/proftpd/ssl/proftpd.cert.pem
    TLSRSACertificateKeyFile   /etc/proftpd/ssl/proftpd.key.pem
    TLSVerifyClient            off
    TLSRequired                on
</IfModule>

On y spécifie le fichier de log, le type de protocole à utilisé, où se trouve les clés RSA, ... (plus d'info dans /etc/proftpd/tls.conf.original).

On va maintenant créer le dossier ssl et y ajouter nos clés RSA

$ sudo mkdir /etc/proftpd/ssl
$ sudo openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem

Suite à cette commande une série de questions vont apparaitres, libre à vous d'y répondre ou non.

On va restreindre l'accès de la clef à amp et on redemmare le ftp pour que les modifications prennent effets

$ sudo chmod 660 /etc/proftpd/ssl/proftpd.key.pem
$ sudo service proftpd restart 
apache2

Vous vous demandez peut-être en quoi créer un utilisateur par site va sécurisé notre seveur ?
C'est fort simple, via le module userdir chaque utilisateur pourra héberger un site web en créant un dossier public_hmtl dans son dossier /home. Ce qui veut dire que si quelqu'un hack notre site, il se trouvera dans le dossier home d'un utilisateur n'ayant aucun droit, et ne pourra donc rien casser sur le serveur (autre que le site web).

On va donc activer userdir et créer un utilisateur pour notre site.

Je vais utiliser mon site web comme exemple pour avoir un cas concret

Afin que l'utilisateur gerant mon site puisse se connecter en ftp et en ssh au serveur on va devoir l'ajouter aux groupes ssh et ftp_allowed_users

$ sudo a2enmod userdir

$ sudo adduser elhebert
$ sudo adduser elhebert ftp_allowed_users
$ sudo adduser elhebert ssh_allowed_users

On va maintenant se connecter en tant qu'Elhebert pour créer les dossiers (public_hmtl et logs) et fichiers nécessaires (error.log et access.log)

$ sudo su elhebert
$ mkdir ~/public_html
$ mkdir ~/logs
$ touch ~/logs/error.log
$ touch ~/logs/access.log

Et ensuite on retourne sur amp pour continuer notre configuration via un

$ exit

On va maintenant créer un nouveau site dans apache.

$ sudo nano /etc/apache2/sites-available/elhebert.conf

Je vous ai mis ici la configuration de base que j'utilise, libre à vous de la copier ou de la modifier. Je vous invite à lire la doc d'apache pour plus d'infos

<VirtualHost *:80>
    ServerAdmin contact@elhebert.be
    ServerName www.elhebert.be
    ServerAlias elhebert.be
    DocumentRoot /home/elhebert/public_html

    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>

    <Directory /home/elhebert/public_html>
        Options FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog /home/elhebert/logs/error.log
    CustomLog /home/elhebert/logs/access.log combined
</VirtualHost>

Afin de rendre le site disponible il faudra l'activer et recharger la configuration d'apache via :

$ sudo a2ensite elhebert
$ sudo service apache2 reload

On va maintenant restreindre l'accès ftp des utilisateurs. Lorsqu'ils se connecterons en ftp, ils seront confiné dans leurs répertoire /home (/home/Elhebert dans le cas de mon utilisateur)

$ sudo nano /etc/proftpd/proftpd.conf

et on décommente la ligne

DefaultRoot ~
IpTable

Maintenant que les différents services sont sécurisés on va sécurisé l'accès au serveur en général grâce aux IpTables.

Les IpTables sont le système de firewall de Linux. Grâce à elles ont va donc pouvoir filtrer le trafic entrant et sortant de notre serveur.

Je vous donne ici encore une fois ma configuration, mais je vous invite à lire ce tutoriel afin de mieux comprendre ce qui se passe.

On va commencer par créer un nouveau script contenant nos iptables

$ sudo nano /etc/init.d/iptable.sh

Et on va y mettre l'ensemble des règles suivantes :

#!/bin/sh

### BEGIN INIT INFO
# Provides:          my iptable
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:
# Default-Stop:
# X-Interactive:     false
# Short-Description: my iptable
### END INIT INFO

iptables -t filter -F
iptables -t filter -X
echo "Reset"

iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
echo "On interdit tout"

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
echo "Loopback autorisé"

iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
echo "Ping Autorisé"

iptables -t filter -A INPUT -p tcp --dport 5896 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 5896 -j ACCEPT
echo "Connexion en ssh sur le port 5896 autorisée"

iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
echo "Trafic entrant et sortant du dns sur le port 53 en tcp et udp autorisé"

iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
echo "Connexion à un serveur temps (ntp) sur le port 123 autorisé"

iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 8443 -j ACCEPT
echo "Trafic entrant et sortant http sur les ports 80,443 et 8443 autorisé"

iptables -t filter -A OUTPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 20 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Trafic entrant et sortant du ftp sur les ports 20 et 21 autorisé"

#Les règles qui suivent sont utile UNIQUEMENT pour serveur mail
#Ne les ajouter pas dans le cas contraire !
iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
echo "Trafic smtp sur le port 25 autorisé"

iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT
echo "trafic POP3 sur le port 110 autorisé"

iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT
echo "trafic IMAP sur le port 143 autorisé"

iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT
echo "trafic POP3S sur le port 995 autorisé "

On rend le script exécutable et on l'ajoute au démarrage de la machine afin qu'a chaque reboot il soit exécuté.

$ sudo chmod +x /etc/init.d/iptable.sh
$ sudo update-rc.d iptable.sh defaults

Fail2ban

On va maintenant installer un système pour se prémunir des attaques de type brute force : Fail2ban. Ce système va empêcher un utilisateur d’accéder aux serveur après un certain nombre de tentative échouée.

$ sudo apt-get install fail2ban

Une fois installé on va se rendre dans le fichier de configuration pour y activer certaines règles. Dans ce même fichier vous pouvez aussi bien entendu y modifier la configuration du système fail2ban en changeant le nombre d'essais autorisé, le temps de ban et le port

$ sudo nano /etc/fail2ban/jail.conf

Pour activer une règle il faudra changer le

enabled = false

en

enabled = true

Personnellement j'utilise les règles suivantes : ssh, ssh-dos, apache, apache-multiport, apache-noscript, apache-overflows et proftpd.
Vous pouvez en activer d'autre et même ajouter vos propres règles.

Le mot de la fin

Le tutoriel est maintenant fini, si vous avez suivit jusqu'ici vous disposez maintenant d'un serveur web sécurisé.

Bien entendu il est toujours possible d'augmenter la sécurité de votre serveur, mais je pense que dans le cas d'un site à faible et moyen trafic, la configuration présentée dans ce tutoriel est suffisante. Mais n'hésitez pas à réagir en commentaire.

+1 !
Très bonne idée, je sur pour à 100% ! Le serveur est la base de travail du Web et je trouve qu'il n'y a pas assez de tutos bien complets dessus alors que l'on en trouve des brouettes pour expliquer comment créer un site.

Très bonne idée, sinon selon moi un des sujet les plus compliqué et qui manque d'explication sont les "DNS".

Notre registar nous permet de faire pointer notre domaine vers un addresse ip mais apres sa, comment mettre en place des ns1.monsite.com et ns2.monsite.com pour ne pas toujours devoir mettre l'ip serveur et gerer le tout sur notre propre serveur.

Effectivement :)

Pourquoi ne pas en faire un sur les VPS (ou simplement différencier le tout dans un gros tuto) qui sont très à la mode en ce moment ?

elhebert
Auteur

@zkiller : Je ne compte pas parler du dns, car c'est assez compliqué à comprendre, mais surtout, parce que dans la plupart des cas, le dns utilisé par nos serveur est celui de l'hebergeur (ovh par exemple).
Par contre, pour la mise en place de sous domaine, il n'y as pas de soucis, c'est faisable.

@SquallX : Qu'entend-tu par faire un tuto sur les VPS ?

@zkiller : Ton regsitrar devrait te premettre de déclarer tes sous-domaines aussi (en tous cas gandi), sans avoir a faire ton propre serveur dns pour eux. De ton coté tu n'as plus qu'a faire tes virtual hosts avec les noms et alias qui correspondent ...

Pour info il y a une série de tutos plutot pas mal fait par Alexis Madrzejewski qui reprend tout ceci en y ajoutant des outils de protection et de monitoring. Je trouve l'idée bonne mais il faudrait alors se démarquer de ce qu'il propose déja.

elhebert
Auteur

@Vallyan : Je vais regarder ça, voir un peu le niveau qu'il propose :)
Car je pense que sur Grafikart tout le monde à pas un niveau très bon en Linux, et par conséquent certaines notions peuvents être dure à assimilée.
Et puis, même si le tuto reste dans la même idée, en avoir un de plus dispo sur le site de grafikart ne fera pas de mal :D

elhebert
Auteur

@Vallyan J'ai donc regardé la série de tutoriel, et elle est vraiment bien faite, j'ai même découvert des outils bien pratique (suEXEC et suPHP) que je connaissait pas. Je vais mettre à jour mon pdf du coup ^^

Après, le niveau varie beaucoup dans les tutoriels, mais il explique très bien. J'ai remarqué quelques petits détails qui me gènent (genre l'utilisation permanente de root plutôt que d'utilisé le sudo) mais ce sont que des détails :)

Du coup je vais surement m'inspirer de cette série de tutoriel pour faire mon/mes tuto sur le sujet, et je tenterai d'avoir une autre approche.

Ouais ce serais une bonne idée, impatient de voir ça. :)

@mafzst : Pas de tuto la dessus ? Sinon, il y a les documentation officiels de chaque distribution qui permette de bien comprendre et de bien sécurisé le tout ;)

@elhebert : être tout le temps en root n'est pas une mauvaise pratique (ni une bonne), je suis toujours en root quand je bosse et tant que je gère mes commandes et mes actions, ben rien ne m'arrive, mais il m'est déjà arrivé de planter un serveur à cause d'un foutu raccourci et hop... je lance la commande en root et mon patron me flingue ^^

elhebert
Auteur

@eloyasGithub J'ai commencé l'enregistrement, mais pour le moment la qualité du son est vraiment pas top (le micro de mon casque est pas exeptionnel) du coup, je vais surement le refaire.

Je me demandais si le faire sur un VM ne serait pas plus simple, parce que pour le moment j'ai reinstaller 4x mon VPS en moins de deux semaine xD

Par ailleurs j'ai décidé de faire deux tutos sur le sujet :

  • Un basique : un seul utilisateur, un seul site et pas d'autres services. Du coup sécurité restreinte (iptables, restrcition ssh, changement de port)
  • Un plus poussé : multi-site, multi-user, plusieurs services (genre voice juste parce que je vais devoir en installer un pour moi). Niveau sécurité : fail2ban, rkHunter, iptables, ...

J'pense que ça devrait le faire. Par contre je sais pas quand ce sera dispo, si j'ai du temps, ce sera fait d'ici fin janvier.

elhebert
Auteur

Bon je déterre un peu mon sujet :D
J'ai pas fais les vidéos pour finir mais j'ai enfin eu le temps de ré écrire mon tutoriel sur la mise en place d'un LAMP et sur la sécurisation du serveur. (Bah oui passage à Debian 8, php-fpm ça fait des changement)
Je sais que j'aurais du le faire plus tôt, mais avec mes cours j'ai pas eu le temps :D

j'ai donc écrit deux tutoriel :

  • Le premier est sur la mise en place d'un serveur LAMP : debian 8, apache 2.4, mysql et php5-fpm. Avec bien entendu installation d'un ftp et de phpmyadmin.
  • Le second est sur la sécurisation du ssh et d'apache et cryptage du ftp. Ajout d'IpTables pour filtrer le trafic et de Fail2ban pour éviter les brute force.

Et tes tuto sont consultable ou ?