Salut,
Mon avis va un peu dans le même sens que celui de bruno : ton tuto est une compilation de plein de trucs plus ou moins utiles, bien souvent sans explication, voire avec une explication erronée.
Mon but n'est pas de descendre ton billet, il y a des trucs qui se tiennent et je sais que c'est un gros boulot de réunir toutes ces infos, mais je vais donner mon avis sur quelques points, ceux qui me semblent les plus "sensibles" (il y aurait probablement plein d'autres commentaires à faire, mais c'est un gros boulot)...
II. Sécurisation du SSH
L'interdiction de connexion en root n'a aucun intérêt : que ce soit en root ou en utilisateur, il faut bien se connecter. Psychologiquement, l'administrateur va se dire qu'il est en sécurité car il ne se connecte pas directement en root, il va alors être plus détendu et moins vigilant de manière générale. Ensuite, deux possibilités :
- soit on utilise sudo et ça ne change rien en terme de sécurité : on a le mot de passe, on peut devenir admin
- soit on n'utilise pas sudo et il faut retenir deux mots de passe, qui seront peut-être moins complexes qu'un seul mot de passe.
Les autres réglages, comme l'autorisation de ne se connecter qu'avec cet utilisateur, sont inutiles quand on a un simple serveur dédié et qu'on est le seul utilisateur : personne d'autre ne pourrait se connecter de toute façon.
Non, le plus sécurisé est d'interdire totalement les authentifications par mot de passe et de n'utiliser que des clés SSH. Et une connexion directe en root, ça ne pose aucun problème.
IV. Autorisations diverses
De manière générale, il ne faut pas toucher aux fichiers système, qui seront de toute façon rétablis à leur situation précédente lors de la prochaine mise à jour des paquets concernés. Et puis de toute manière, sur un système bien sécurisé il n'y aura personne pour tenter d'exécuter ces commandes : une fois que quelqu'un a pénétré le système, c'est trop tard, il faut réinstaller. Il faut alors sécuriser en amont, pour que personne n'entre.
V.1) Mises à jour système
On n'automatise pas les mises à jour. S'il y a un problème lors de la mise à jour, aucun administrateur ne serait présent pour prendre les mesures correctrices adaptées. Il faut mieux installer quelque chose comme cron-apt, sans installation mais avec uniquement information par e-mail de la disponibilité de mises à jour (et téléchargement des paquets sans installation, tant qu'à faire), ensuite il ne reste qu'à se connecter à la machine pour appliquer les mises à jour.
(pour ma part je ne fais pas d'alerte par e-mail, j'intègre ça dans mon serveur de supervision)
VI.1) Paramètres système
Les infos que tu donnes sont bien trop concises et induisent parfois en erreur.
Je prendrai juste deux exemples :
- « Protection contre l’usurpation d’adresse IP » : non, rp_filter n'est pas une solution anti-spoofing, ça effectue un simple filtrage de certaines situations, qui permet de se prémunir d'une petite partie des possibilités de spoofing dans certains cas précis ;
- « Autoriser le routage IP (requis pour faire de la NAT) » : tu proposes de l'activer mais ne dis pas pourquoi, un néophyte prendra cette info pour argent comptant et appliquera ça sur son serveur dédié, alors qu'il n'en avait pas besoin.
VI.3) Firewall
Je ne vais pas m'étendre là-dessus, le conseil systématique d'un pare-feu me donne des boutons, il faut proposer intelligemment et dire quand et pourquoi c'est utile. J'ai participé à assez de discussions à ce propos sur ce forum pour qu'on y trouve plein d'infos ; tu peux également lire mon article à ce propos dans
le dernier numéro de Linux Pratique :
De l'utilité d'un pare-feu.
Protection du FTP
Et le fait de déconseiller complètement l'utilisation du protocole FTP, tu as mis ça où ? 🙂
Exemple de script Iptables
Pourquoi ne pas conseiller plutôt UFW, tant qu'à faire ? Avec un script iptables on risque facilement de faire une erreur, ça fait des années que des solutions plus simples et solides existent.
-----
Enfin, je termine en disant que faire un bon tutoriel est très difficile. Le plus dur est de se rappeler que les gens qui vont le lire n'ont aucune compétence et vont aveuglément taper les commandes que l'on donne : il faut alors expliquer de manière détaillée chaque étape pour que la personne comprenne ce qu'elle fait, sinon le tutoriel n'apporte rien en terme d'apprentissage.
Même après plus de 12 ans d'écriture d'articles dont des tutoriels, une facilité personnelle en terme de pédagogie et de nombreuses formation, je sais que mes tutos et mes cours sont encore très perfectibles (je vois que tu es étudiant au CESi de Grenoble, je suis pour ma part prof de Linux pour le cycle GMSI au CESi de Strasbourg).