devtech.eu

Webmastering > Linux > Configuration de base d'un serveur linux et sécurisation

Configuration et sécurisation de base du serveur Linux

Maintenant que vous avez une idée du fonctionnement des lignes de commande SSH, et que vous êtes connecté en root sur votre serveur, on va pouvoir le configurer afin d’avoir une navigation plus aisée, une sécurité renforcée, et une distribution à jour

Configurer l’auto-completion (couleurs de interface)

Vous l’aurez remarqué, l’affichage putty est un peu triste. On va ajouter de la couleur dans l’affichage des répertoires afin de mieux s’y retrouver, et en profiter pour créer un alias (un raccourcis) pour la commande ll qui permet l’affichage des répertoires de façon détaillée.

On va éditer le fichier .bashrc qui se trouve dans le répertoire de l’utilisateur, ici root.
nano /root/.bashrc
Si ce fichier est vide, c’est pas normal, sortez par ctrl-x.Dans ce cas, on va chercher le bon fichier par la séquence:
cd /home
ls
cd nomutilisateur
nano .bashrc

Il suffit ensuite de décommenter les lignes suivantes, auquelles on a ajouté un –a au passage pour afficher les fichiers cachés
export LS_OPTIONS='--color=auto'
eval `dircolors`
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -la'

Appuyez sur ctrl-x puis entrée pour enregistrer et sortir de nano.

La prise en compte se fera à la prochaine connexion putty, vous aurez alors l’affichage des répertoires multicolor (c’est à l’étape suivante).

Sécurisation du serveur

On va améliorer la sécurité du serveur en procédant à quelques modifications. Mais il va de soit que même avec une telle protection, il restera des entrées potentielles si vous utilisez certains outils connus pour avoir des failles de sécurité: FTP mal configuré, upload de fichiers via http, utilisation de forums BB ou autres scripts tiers publics. Dans ces cas, veillez à avoir les dernières mises à jour et à savoir ce que vous faites (désactiver l’execution des scripts dans le répertoire où sont uploadés les fichiers utilisateurs par exemple).

Ajout d’un compte root de secours

Pour plus de sécurité et d’ergonomie, on va changer le password du login root (pour qu’il soit plus facile à retenir), et créer un compte root de secours (si jamais votre compte root normal venait à être innaccessible!).

Choisissez des passwords suffisamment sécurisé, c’est à dire contenant des majuscules, des minuscules, des chiffres, et pas un mot qui est dans le dictionnaire ni votre nom ou prénom ! Pensez aussi à noter ce password dans la récapitulation des informations techniques.
passwd root
adduser root2

On donne ensuite les droits root à root2 (en remplaçant 1000 par 0), et on désactive certains comptes obsolètes (en remplacement des x par *)
nano /etc/passwd
games:*:
news:*:
irc:*:
gnats:*:
nobody:*:
root2:x:0:1000:

Notez que pour plus de clareté, j’ai noté ici que le début des lignes, mais il faut conserver la fin des lignes qui sont déjà présentes dans le fichier. Si vous deviez réactiver un compte désactivé par erreur, il suffira de remplacer * par x.

Pour tester que tout va bien, sortez (tapez exit) puis reconnectez-vous avec le nouveau password. S’il venait à y avoir un problème de connexion (ça m’est déjà arrivé), utiliser le compte root2 puis redéfinissez le password de root
passwd root

Installation d’un système de banissement d’ip : fail2ban

Par expérience, un serveur n’est jamais tranquille dans son coin et y’a toujours des petits malins qui vont essayer de rentrer dedant en utilisant la force brute, c’est à dire essayer une multitude de passwords (ils le font pas à la main et utilisent souvent des dictionnaires!). Pour éviter ça, il existe fail2ban qui est un système qui rejette l’ip assaillante au bout de quelques tentatives, ce qui évite d’avoir 3000 à 10000 tentatives de hack par jour.

Installons fail2ban
apt-get install fail2ban
Par défaut, fail2ban est préconfiguré pour rejeter durant 10 minutes les attaques sur SSH. On va cependant activer les contrôles sur postfix en plus et augmenter cette durée à 30 minutes. Cherchez les lignes à modifier:
nano /etc/fail2ban/jail.conf
bantime  = 1800
[postfix]
enabled  = true

Eventuellement, si vous avez une ip ADSL fixe, vous pouvez l’ajouter pour ne jamais être vous même blacklisté:
ignoreip = 127.0.0.1, vo.tre.i.p
Redémarrez fail2ban :
sh /etc/init.d/fail2ban restart
Il est possible d’ajouter d’autres surveillances comme le FTP, les formulaires web, ou mysql, mais il faudra consulter l’aide de  fail2ban dans ce cas et probablement mettre en place une configuration spécifique.

Mise à jour du système

Pour gérer les logiciels dans le système linux debian, on utilise apt-get (mais il existe aussi "aptitude", que je trouve peu pratique). C’est un programme intégré qui permet de gérer des listes de sites contenant les sources, d’installer un logiciel, désinstaller un logiciel, et faire des mises à jours. Je vais commencer par vous donner la séquence nécessaire à la mise à jour du système, puis je ferais une récapitulation des fonctions usuelles d’apt-get.

Cette manipulation est à faire uniquement lors de la première installation de votre système. En effet, si vous faites une mise à jour par la suite, il est fort probable que vous ayez à reconfigurer quelques logiciels ce qui pourrait être catastrophique pour un serveur en production. Les mises à jours en production seront à faire une fois que vous connaitrez un peu mieux linux, et que vous aurez un peu de temps devant vous !
apt-get update
update-inetd --disable discard,daytime,time,ident
apt-get upgrade
apt-get dist-upgrade
apt-get clean

update-inetd permet ici de désactiver quelques routines inutiles dans le système.

Rebootez ensuite le serveur pour prendre en compte toutes ces mises à jour
reboot
Vous disposez maintenant d’un système à jour, sécurisé, et prêt à recevoir apache et les autres logiciels de production.

Mode d’emploi de apt-get et des packages

Au cas où par la suite vous souhaitiez installer ou desinstaller un logiciel, dépanner une situation de dépendance de paquets incompatibles, mettre à jour ou reconfigurer une application, voici un mode d’emploi sommaire de apt-get.

Configuration de apt-get

Apt-get utilise un fichier de configuration assez sommaire lui indiquant où trouver les sources des programmes. Vous pourriez avoir besoin de le modifier afin d’activer d’autres sources comme des sources testing (des logiciels en version béta). Voici un exemple de fichier de configuration sur un système debian lenny chez ovh.com
nano /etc/apt/sources.list
deb ftp://mir1.ovh.net/debian/lenny main contrib non-free
deb-src ftp://mir1.ovh.net/debian/lenny main contrib non-free
deb http://security.debian.org/lenny/updates main contrib non-free
deb-src http://security.debian.org/lenny/updates main contrib non-free
# testing
#deb http://ftp.oleane.net/pub/debian/testing main non-free contrib
#deb-src http://ftp.oleane.net/pub/debian/testing main non-free contrib

Vous remarquerez la partie testing (qui a été ajouté et n’est pas d’origine). Pour le moment la partie testing est désactivée (# devant), mais je vous explique à quoi ça sert dans la suite de cette rubrique.

En tout qu’à, à chaque modification de ce fichier, il faut penser à faire une mise à jour pour prendre en compte les modifications
apt-get update
apt-get clean

Commandes principales apt-get et dpkg

Voici un résumé des principales commandes apt-get qui vous seront utiles pour vous sortir de certaines situations.

Installer un logiciel xxx
apt-get install xxx
Si vous ne connaissez pas le nom du logiciel, vous pouvez faire une recherche
apt-cache search xxx | more
apt-cache search mysql | more

Au cas où vous ne trouvez pas votre bonheur, vous pouvez passer apt-get sur les listes testing temporairement:
nano /etc/apt/sources.list mettez # devant les lignes où y’en a pas, et enlevez # là où il y en a!
apt-get update
apt-get clean
apt-cache search xxx
apt-get install xxx
nano /etc/apt/sources.list Revenez en liste stable en mettant # sur les lignes testing, et en enlevant les # sur les autres
apt-get update
apt-get clean

Désinstaller un logiciel
apt-get remove xxx
dpkg --purge xxx

Si vous ne connaissez pas le nom exacte du paquet à désinstaller, ou quelque fois si vous avez des problèmes de dépendence et avez besoin de les désinstaller, vous pouvez lister les paquets installés
apt-get check
dpkg --l | more

Reconfigurer un logiciel
dpkg --configure xxx
Mettre à jour tous les logiciels (attention, il pourra être nécessaire de reconfigurer certains softs)
apt-get upgrade
Mettre à jour le système (attention, il pourra être nécessaire de reconfigurer certains softs)
apt-get dist-upgrade
Enfin, il est bon de consulter l’aide
man apt-get
man apt-search
man dpkg

Configuration et sécurisation de base du serveur Linux : dernières mises à jour (29/11/2011)

Copie interdite © 2008-2010 | Contact devtech.eu