La sécurité de votre serveur sous linux

La sécurité de votre serveur sous linux

Vous êtes administrateur de serveur, installateur, vous gérer des sites et vous en avez l’infogérance. Si vous êtes sur un serveur personnel ou un virtuel, un dédié alors les questions de sécurité sont à se poser. Surtout si l’on héberge des données personnelles et confidentielles.

Il existe de nombreux outils sur linux qui permettent de se protéger mais il faut aussi s’armer de rigueur et avoir le réflexe de rendre les attaques plus compliquées et garder un oeil sur ce qui se passe sur le serveur afin d’agir en conséquence.

Les configurations par défaut des serveur Web laissent quelques failles et un brin de manipulations rapides peuvent palier à cela et rendre une machine sécurisée.

Commençons par le début en listant les petits points importants mais souvent négligés :

  1. – installation d’un firewall et paramétrage (n’autoriser que les ports nécessaires et bloquer tout par défaut)
  2. – bloquer tout accès root à la machine depuis l’extérieur
  3. – renforcer les mots de passe et les changer régulièrement
  4. – changer de port pour le ssh
  5. – n’installer pas de serveur ftp, le ssh suffit à moins d’en avoir réellement besoin
  6. – installer les outils de banissement en cas de connexions répétées sans succès : fail2ban
  7. – faites tourner automatiquement et régulièrement les logiciels contre les virus/rootkits avec chkrootkit et rkhunter
  8. – Soyez alerté à chaque connexion au serveur par email.
  9. – Monitorer automatiquement le serveur avec l’outil : monit.

Firewall / Parefeu – UFW (uncomplicated firewall)

Le parefeu est indispensable, l’outil ufw sur debian qui installe le fameux iptables est parfait :

# apt-get install ufw

Les fichiers de règles et de configuration se logent dans /etc/ufw

mais l’essentiel des configurations peuvent se faire en ligne de commande.

Par exemple avant d’activer le firewall, ouvront les ports voulus :

# ufw allow 22

C’est le port par défaut de ssh, remplacez ce port par le votre (vous n’avez pas laisser 22 n’est ce pas ? Nous y venons bientôt :)).

# ufw allow 80

# ufw allow 443

# ufw allow 25

# ufw allow 80

Vous reconnaissez les ports, nous ne nous attarderons pas sur ces derniers. Vous aurez peut être besoin des ports DNS, smtp en sécurisés, pop…

Une fois fait vous pouvez vérifier avec la commande :

# ufw status

et enfin fermer le reste :

# ufw default deny

Un petit détail encore mais qui peut avoir son importance : bloquer les PINGs.

Pour ce faire il faut commenter les lignes suivantes au sein du fichier /etc/ufw/before.rules

# ok icmp codes

#-A ufw-before-input -p icmp –icmp-type destination-unreachable -j ACCEPT
#-A ufw-before-input -p icmp –icmp-type source-quench -j ACCEPT
#-A ufw-before-input -p icmp –icmp-type time-exceeded -j ACCEPT
#-A ufw-before-input -p icmp –icmp-type parameter-problem -j ACCEPT
#-A ufw-before-input -p icmp –icmp-type echo-request -j ACCEPT

Cela peut dérouter un peu les hackers ! En tout cas les moins avertis.

Lorsque vous ferez les mises à jour de vos paquets, n’oubliez pas d’ouvrir le port temporairement.

Bloquer les accès du root sur ssh / changer de port

Chose simple mais efficace, il s’agit d’une double sécurité. Allons dans le fichier de configuration de ssh :

/etc/ssh/sshd_config

et modifier les lignes telles que :

# What ports, IPs and protocols we listen for
Port 2265

PermitRootLogin no

AllowUsers USERNAME

Vous pouvez ajouter les utilisateurs pour maitriser ceux qui sont autorisés ou mieux encore générer une clé de sécurité à installer uniquement sur les machines clientes. Cela fera l’objet d’un autre tutoriel.

Pensez à générer des mots de passe bien compliqués par exemple avec le logiciel Keepass (10 caractères avec alternances chiffres, lettres capitales et symboles…).

Les changer une fois tous les 6 mois est judicieux. Ajouter vous cette tâche à votre agenda !

Alerte email / login

Placez simplement la ligne suivante dans /root/.bashrc :

echo ‘ALERT – Root Shell Access (HOSTNAME) on:’ `date` `who` | mail -s « Alert: Root Access from `who | cut -d'(‘ -f2 | cut -d’)’ -f1` » contact@votredomaine.com

Fail2ban

Les méthodes de bruteforce (attaques par force brute) sont de coutume avec pour cible les protocoles SSH mais aussi les ports ouverts tels que FTP, POP…

Les scripts de soumissions de codes d’identification sont nombreux et plutôt que de garder un oeil sur vos logs, Fail2ban permet d’automatiser le blocage automatiquement en identifiant ces tentatives d’intrusion.

En ajoutant une règle à votre parefeu et/ou en vous envoyant un email, vous pourrez dormir sur vos deux oreilles.

Installons et configurons sur Debian :

# apt-get install fail2ban

Le fichier de configuration se trouve à présent dans :

/etc/fail2ban/fail2ban.conf

et /etc/fail2ban/jail.conf présente divers services que l’on peut activer, ssh est actif par défaut.

Les actions entreprises sont définies dans le dossier /etc/fail2ban/action.d

Les filtres dans filter.d/filters

Afin de configurer correctement fail2ban, les modifications se font dans le fichier /etc/fail2ban/jail.local

Voici ce que vous pouvez renseigner :

ignoreip = 127.0.0.1 ipduserveur ipdevotrebureau ipdevotremaison

destemail = votreemail@votredomaine.com

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6
port = VOTREPORTSSH

[ssh-ddos]

enabled = false
port    = ssh
filter  = sshd-ddos
logpath  = /var/log/auth.log
maxretry = 6

Ce dernier est pour les attaques Denial Of Service.

Et maitenant Apache :
[apache]

enabled = true
port    = http,https
filter  = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6

# on bannit les petits joueurs qui essaient de faire tourner les setup.php et install.php
[apache-noscript]

enabled = true
port    = http,https
filter  = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 3

[apache-overflows]

enabled = false
port    = http,https
filter  = apache-overflows
logpath = /var/log/apache*/*error.log
maxretry = 2

On peut vite penser à ajouter des règles pour les CMS tels que Wordpres, Drupal et autres. il suffit de s’inspirer des existantes. Ce sera peut être l’objet d’un autre châpitre.

En attendant, redémarrez fail2ban :

# /etc/init.d/fail2ban restart

Et testez le :

# fail2ban-client -d

Rkhunter (Rootkit Hunter)

Châsseur de Rootkits, rkhunter est un outil qui analyse votre système à la recherche de rootkits, backdoors et autres failles exploitées. En comparant à des listes en ligne, il permet de déceler la plupart des exploits sur votre machine.

L’installation :

# apt-get install rkhunter

Le fichier de configuration se loge dans /etc/rkhunter.conf

Si vous répondez aux questions lors de l’installation, vous devriez obtenir des tâches dans /etc/cron.daily pour l’analyse quotidienne et /etc/cron.weekly pour la mise à jour des bases chaque semaine.

Au sein du fichier rkhunter.conf vous pouvez ajouter votre email pour les alertes en cas de détection :

MAIL-ON-WARNING= »contact@votredomaine.com »

Si vous souhaitez voir l’analyse en direct, tapez la commande :

# rkhunter –checkall

Chkrootkit

Ce dernier présente les mêmes fonctions que rkhunter mais il peut être complémentaire alors pourquoi ne pas les installer tout les deux :

# apt-get install chkrootkit

En fonction de votre réponse, il sera lancé une fois par jour comme rkhunter.

Sinon voici comment le faire tourner :

# chkrootkit

Que ce soit avec chkrootkit ou rkhunter, si quelque chose est détecté, il vous faudra prendre l’action pour y remédier. Faites attention également aux faux positifs souvent mis en avant par ce type d’outils.

Monit

Garder un oeil sur votre machine de façon automatique est indispensable surtout sur un serveur en production. Monit est efficace et vous connaitrez mieux votre machine et ce qui fonctionne dessus lorsque vous l’aurez bien configuré.

Rendez vous sur l’article sur monit pour plus d’informations.

Voilà qui clôture un article qui peut vous mettre sur la voie dans la configuration d’un serveur sécurisé.

Reste à attendre de pied ferme les tentatives d’attaques !

Faites des tests avec nmap et autres outils disponibles sur le site : http://sectools.org/tag/crackers/

Sources 

https://help.ubuntu.com/community/UFW

http://www.fail2ban.org/wiki/index.php/Main_Page

http://www.rootkit.nl/projects/rootkit_hunter.html

http://www.chkrootkit.org/

http://www.chkrootkit.org/README

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Copyrights © 2017 : RHM - Optimisation et développement informatique pour Entreprises et Associations