Tips : Configuration de serveurs

Pour bien configurer un serveur, il existe plusieurs façons, chaque administrateur ayant la plupart du temps sa propre conf en fonction de ses habitudes et celles de ses users.
Je vous propose ici quelques petits tips à mettre en place sur votre serveur pour voir un peu se qui s’y passe.
Connexion SSH
Il est toujours intéressant de connaître les connexions ssh des utilisateurs sur votre serveur, que ce soit pour des statistiques ou tout simplement surveiller les différentes connexions pour par exemple intervenir rapidement en cas d’intrusion.
Pour cela, il existe un moyen très simple avec l’utilisation de sshrc. Dans le man, il est dit :
/etc/ssh/sshrc Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started. See the sshd(8) manual page for more information.
Nous allons donc y introduire un petit bout de script qui enverra un mail automatiquement.
#!/bin/sh DATE=`date "+%d-%m-%Y %H:%M"` IP=`echo $SSH_CONNECTION | awk '{print $1}'` REVERSE=`dig -x $IP +short` # Message + envoi du mail echo "USER : $USER IP : $IP ReverseDNS : $REVERSE Date : $DATE " | mail -s "[SSH] $DATE - Connexion de $USER" your_email@domaine.com
A chaque connexion ssh d’un utilisateur, vous recevrez un mail contenant diverses informations. Je souligne au passage qu’un authentification ssh par clef est toujours plus sûre ;)
Modifications de fichiers
Il existe plusieurs applications (plus ou moins performantes) permettant de voir les fichiers modifiés sur votre serveur. Ici, un petit script tout bête qui va vous permette de voir les modifications effectuées depuis X jours sur votre serveur dans un ou plusieurs répertoires donnés.
Bien entendu c’est une surveillance basique, rien de comparable avec un contrôleur d’intégrité (tripwire par exemple), mais cela peut s’avérer très pratique, notamment pour retrouver rapidement une erreur faite dans un script après une modification, mais aussi pour vérifier qu’aucune modification externe n’est faite sur des fichiers sensibles.
#!/bin/sh DATE=`date "+%d-%m-%Y %H:%M"` LAPS=1 INFOS="Liste des fichiers modifiés :\n" for i in `find /etc/ -mtime -$LAPS` `find /home/user/ -mtime -$LAPS`; do if [ -f $i ]; then INFOS="$INFOS\n$i" fi; done echo $INFOS | mail -s "[MODIF] $DATE - Fichiers modifies" your_email@domaine.com
N.B : Une vérification est faite pour n’avoir que les fichiers et non les répertoires + fichiers.
Dans l’instruction for i in … ; do vous pouvez mettre plusieurs répertoire en utilisant `find /rep/ -mtime -$LAPS`.
Une fois le script créé, il vous suffit de mettre en place un cron (ici à 23h59 tous les jours) qui le lancera automatiquement et vous avertira par mail des changements.
59 23 * * * /path/to/your/script
Consommation de bande passante
Savoir qui consomme le plus de bande passante sur un serveur est souvent très intéressant, je vous propose donc ici un petit script qui va vous permettre de recevoir par mail les informations concernant les hôtes qui consomment le plus de bande passante, ici sur les 10000 derniers paquets.
#!/bin/sh DATE=`date "+%d-%m-%Y %H:%M"` tcpdump -c 10000 -ni eth0 | perl -lane 'END{@keys=sort{$h{$a} <=> $h{$b}} keys %h;for(reverse(@keys)){printf("%32s => %i\n", $_, $h{$_}) if($h{$_}>100);}} $h{$F[1]}++;' | mail -s "[BP] $DATE - Consommation bande passante" your_email@domaine.com
A noter que pour faire plaisir à Vincent, j’ai utilisé du perl et non du python ^^
Une fois le script en place, un petit ajout dans le cron et c’est partit. Vous pouvez le faire tourner autant de fois que vous voulez, cela dépend surtout du traffic de votre serveur, ici 4 fois par jour soit toutes les 6 heures.
* */6 * * * /path/to/your/script
Voilà, si cela vous intéresse, il y aura surement d’autres tips à venir et surtout n’hésitez pas à demander si vous cherchez un petit truc particulier ou si vous avez des remarques.
Tags: config, Linux, perl, server, ssh, tcpdump, tips
6 Réponses
Laisser un message

Très bonnes astuces! Je vais monter ça de suite!
Bonsoir,
J’ai essayé de mettre en place le script sur la consommation de bande passante, mais j’obtiens les erreurs suivantes :
Scalar found where operator expected at -e line 1, near « } $h »
(Missing operator before $h?)
syntax error at -e line 1, near « } $h »
syntax error at -e line 1, near « > »
syntax error at -e line 1, near « ;} »
Execution of -e aborted due to compilation errors.
tcpdump: socket: Operation not permitted
Je ne comprend pas trop d’où vient l’erreur.
Cordialement
Salut,
En effet, il y’a une erreur lors de la mise en ligne de l’article, les caractères spéciaux ont été transformés.
L’article a été updaté, merci du retour.
Bonsoir Ben,
Merci pour la réponse même si j’avais déjà résolu le probleme de chevron ^^
Toujours est-il que le script ne marche toujours pas :/
Le mail que je reçois est vide, et le terminal à l’air de tourner dans le vent en attendant une action de ma part.
Cordialement,
ps: il y a encore une erreur, dans la ligne « if($h{$_}>;100); » => « if($h{$_}>100); » il y a un point virgule en trop devant le 100. ^^
Oui en effet, mais j’ai un petit problème d’interprétation des caractères spéciaux quand je poste, il faudra que je fasse un peu plus attention, ici le « ; » restant vient du « > » d’avant correction ^^
Merci pour ce retour ;)
[...] se connecte), voici un petit script fourni par Thomas Pointel, qu'il a lui-même repris de Amicalement Web. Il vous faudra le rajouter dans le fichier /etc/ssh/sshrc, qui est exécuté dès q'un utilisateur [...]