Stopper les intrus avec Fail2ban

D’après Wikipedia, Fail2ban est un framework de prévention contre les intrusions, écrit en Python. Il fonctionne sur les systèmes POSIX possédant une interface de contrôle des paquets (tel que TCP Wrapper) ou un pare-feux (tel que Netfilter). Fail2ban
bloque les adresses IP appartenant à des hôtes qui tentent de casser la sécurité du système. Il cherche ces adresses en parcourant les journaux système (par ex. : /var/log/pwdfail, /var/log/auth.log, etc.). Fail2ban est aussi capable de bloquer les attaques distribuées.

Installation

Apres avoir installé un serveur SSH sur mon pc , il me faut maintenant le sécuriser. Comme souvent sur Debian/Ubuntu, l’installation se résume a :

sous debian : 
# aptitude install fail2ban 
sous mageia : 
# urpmi fail2ban 
sous opensuse : 
# zypper install fail2ban

Ensuite suffit de lancer la commande pour activer fail2ban(je n’ai pas eu à le faire chez moi) :

# systemctl start fail2ban.service

Configuration

J’ai suivi de pres les conseils donné sur ubuntu-fr, j’ai édité le fichier/etc/fail2ban/jail.conf de cette manière :

[ssh]
enabled = true
port = ssh,sftp,2276
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

Il indique, par ordre, l’activation, les ports à bloquer avec les règles iptables, le nom du filtre (expression régulière) associé, le fichier de log à lire, le nombre maximal de tentatives. Un certain nombre de services disposent de tels blocs de configuration, vous pouvez les activer en passant si besoin false à true.

Attention, si vous avez changé le port ssh dans la configuration de OpenSSH (comme il est recommandé de le faire pour éviter les robots qui testent le port 22 par défaut), il semblerait qu’il faille le préciser à fail2ban ! Dans la configuration ci dessus, ajoutez à la ligne « port », votre port SSH, par exemple port =ssh,sftp,2276 si votre nouveau port ssh est 2276 sans quoi fail2ban ne surveillera que le port 22 !

j’ai ensuite relancé fail2ban comme demandé avec un :

# fail2ban-client reload

J’ai vérifié les prisons avec un :

# fail2ban-client status
Status 
|- Number of jail : 1 
`- Jail list : ssh

Enfin on va tenter de se faire passer pour un méchant, pour cela on se connecte plusieurs fois mais en donnant un pass bidon, au bout de trois tentatives, on ne pourra plus se connecter car banni… On regarde ce qui se passe coté serveur via cette commande :

# fail2ban-client status ssh

qui dans ce cas vous retournera le statut de la prison ’ssh’ (avec le nombre de tentative échouée et la liste des IP banni) :

# Status for the jail : ssh |- filter | |- File list : /var/log/auth.log | |- Currently failed : 3 | `- Total failed : 3 `- action |- Currently banned : 1  | `- IP list:192.168.1.18  `- Total banned : 1

Et c’est tout, apres on peut améliorer la bête, mais dans mon cas pas besoin de plus.

à voir : http://blog.pastoutafait.fr/billets/Protéger-un-serveur-avec-Fail2ban

Voir en ligne : doc.ubuntu-fr

Installation et utilisation d’un serveur SSH

Il peut être utile de prendre le contrôle a distance d’une machine, par exemple, la machine de mes parents, faire leurs mises a jour, ou géré l’installation du programme que mon père réclame, accéder a des fichiers stocké sur celle-ci, ou tout simplement administrer son serveur.

https://i2.wp.com/download.tuxfamily.org/passionlinux/images/png/logo_openssh323b.png?w=840

Le client SSH est installé par défaut sur debian/ubuntu et permet de se connecter a tout serveur SSH et peu importe la plate-forme (Linux, bsd, windows,…, pour windows on se servira du client putty…).

Le serveur/client SSH utilisé sous debian/ubuntu est OpenSSH qui nous vient du monde BSD, pour installer ce couple, il suffit de faire dans un terminal en root :

 # apt-get install openssh-server openssh-client

ou simplement

 # apt-get install ssh

Utilisation

Je prends mon cas comme exemple, j’ai un ordinateur équipé de debian et d’une connexion internet(ça va sans dire…), mes parents ont eux aussi une connexion internet et une machine équipé d’ubuntu(plus exactement ubuntu12.04). Chez moi je reçois un appel de mes parents me disant que telle tache ne peut être fait car il manque telle programme, ou que je dois faire leurs mises a jour(ils n’en sont pas friand) ou tout simplement besoin de transférer des dossiers.

Pour me connecter a cette machine, il faudra que la machine de mes parents réponde a une adresse fixe et du coup configuré la machine avec un serveur dns comme dyndns qui se chargera de me donner un nom de machine connu sur internet et reflétant mon adresse ip du style mesparents.ubuntu.org. Ou que mes parents fasse un whatismyip sur google ce qui pourrait donner 78.55.128.1. Je n’aurais plus qu’a utiliser la commande :

 $ ssh mesparents.ubuntu.org

ou l’adresse ip :

 $ ssh 78.55.128.1

On peut même préciser un port si on a changé le /etc/fail2ban/jail.conf de cette manière :

 $ ssh 78.55.128.1 -p 48888

Dans ce cas le -p veut dire port et 48888 est le numéro du port utilisé au lieu du port 22 par défaut. Dans tout les cas une demande de mot de passe utilisateur suivra, et une fois rentré j’aurais accès au Shell de leur machine. Quand j’en aurais fini, je fermerais la session avec la commande :

 papa@mesparents.ubuntu.org : $ exit

Pour en savoir un peu plus, je vous conseille l’excellent livre Debian Etch cahier de l’admin et surtout sa version plus recente. On pourra aussi se fier a la bonne documentation d’ubuntu.fr dont la partie 3.2 Authentification par un système de clés publique/privée.

Encore une fois je rajouterais une chose, comme tout service activé sur une machine personnel, il faudra sécuriser l’ensemble, des règles de pare-feu et notamment l’installation de Fail2ban.

 

Si vous ouvrez votre serveur SSH sur Internet, par exemple pour y accéder depuis l’ordinateur d’un ami(e) ou lui permettre d’accéder à certains de vos fichiers, n’oubliez JAMAIS qu’Internet est parcouru en permanence par des robots qui scannent et testent en permanence tous les serveurs (SSH et autres) et qu’ils vont faire des tentatives pour trouver vos mots de passe de compte.

L’usage des clés est donc fortement recommandé. Sinon utilisez des mots de passe longs et complexes ou encore utilisez des systèmes de protection comme fail2ban qui permet de bannir des adresses IP.