Sécuriser et surveiller votre serveur dédié : quelques trucs et astuces

Vous disposez d’un serveur dédié ? Peut-être même que vous êtes plusieurs à l’utiliser ? Si comme moi, vous êtes un parano de la sécurité ou tout du moins, vous voulez savoir à n’importe quel moment ce qu’il peut se passer sur votre machine… Et bien, voici quelques conseils.

Surveillance des fichiers logs : Logwatch

securiteUne première étape peut-être d’installer un logiciel qui va vérifier régulièrement vous envoyer un récapitulatif des différents fichiers logs contenus sur votre serveur afin de mieux cerner l’activité journalière de votre serveur. Dans ce domaine, j’aurais tendance à conseiller Logwatch. Il s’agit d’un analyseur de logs systèmes pour Unix qui vous enverra un mail chaque jour en vous précisant les différentes connexion ssh, ftp (qu’elles soient réussies que échouées). Cet utilitaire est d’autant plus intéressant qu’il est entièrement personnalisable.

L’installation est très simple. Sous Ubuntu :

>> apt-get install logwatch

La configuration est d’ailleurs tout aussi simple puisqu’il vous suffira de configurer les quelques paramètres dans le fichier se trouvant :

>> /usr/share/logwatch/default.conf

Et d’y repérer le fichier configuration nommé logwatch.conf. Dans ce fichier, pas grand chose à modifier pour que cela fonctionne :

# The default detail level for the report.
Detail = Med
#Default email to send the report
MailTo = you@yourdomain.net

Evidemment, ce ne sont que des choix personnels. N’hésitez pas à modifier ces lignes en fonction de vos besoins.

Monitoring de votre serveur – Surveillance charge

Pour ce faire, je ne vous conseillerais que Monit. En réalité, c’est le seul que je connais : je le trouve à la fois simple à configurer et fonctionnel.

>> apt-get install monit
>> nano /etc/default/monit

Modifiez l’option startup=1 (retirez le #).

Editons ensuite le fichier configuration :

>> nano /etc/monit/monitrc

Vous trouverez ici un fichier configuration exemple. Téléchargez le et modifiez le à votre guise en fonction de la configuration de votre serveur : exemple_configuration_monit. Pensez notamment à modifier la partie login/password pour vous connecter à l’interface web et pensez également à vérifiez le fonctionnement des ports des différents services en fonction de votre configuration. En effet, d’une machine à l’autre le port MySQL ou SSH ne sont pas les mêmes…

Vous pouvez rajouter tous les services que vous souhaitez surveiller. La syntaxe est assez abordable pour pouvoir être modifiée facilement. Il vous est également possible de faire vérifier la syntaxe de votre fichier configuration par Monit ; pour ce faire utilisez la commande suivante :

>> sudo /etc/init.d/monit syntax

Et, s’il vous dit que c’est correct. Vous pouvez ensuite lancer Monit :

>> sudo /etc/init.d/monit start

* Utilisez la commande monit -v pour vérifier l’état de Monit à tout moment.

Avec une configuration similaire à celle ci-dessus vous pouvez ensuite vous connecter à l’adresse suivante : http://domaine:8080. Vous devrez vous identifier avec le login/mdp que vous avez déclaré dans le fichier configuration. Au final, vous devriez voir un fenêtre semblable à celle-ci (volontairement pas la mienne) :

monit-ss

Connexions SSH & Envoi d’emails…

C’est votre serveur ? Mais d’autres potes ont l’habitude de s’y connecter pour partager leurs fichiers, s’occuper de leurs blogs etc… ?

Vous avez également la possibilité d’être prévenu par email dès qu’une connexion SSH à votre serveur a réussie. Cela peut-être intéressant de pouvoir suivre ces connexions sans avoir à décrypter les fichiers logs chaque jour. De plus, l’avantage de cette méthode et de pouvoir être prévenu en temps réel. Ainsi, si vous voyez par exemple l’un de vos potes se connecter de Taiwan (ou autre) alors qu’il habite dans la même rue que vous… Vous pouvez vous poser des questions sur la complexité de son MDP…

Pour ce faire, il vous suffit de créer un nouveau fichier appelé sshrc dans le dossier /etc/ssh/.

screen-capture

Dans ce fichier, collez-y ceci :

DATE=`date "+%d.%m.%Y--%Hh%Mm"`
IP=`echo $SSH_CONNECTION | awk '{print $1}'`
REVERSE=`dig -x $IP +short`

echo "User connected - User : $USER - IP: $IP - REVERSE: $REVERSE - Date: $DATE"
sendEmail -f root@votredomaine.net -t vous@votredomaine.net -u "User connecte sur $HOSTNAME" -m "Connexion sur Serveur de IP: $IP - Date: $DATE - User : $USER"

Vous serez alors averti par email à chaque connexion SSH !

Notez quand même que si vous avez beaucoup d’utilisateurs différents et des connexion régulières : il vous faudra ajouter une règle de filtrage dans votre client mail.

Si vous avez des questions, n’hésitez pas! :16: