Fail2ban ne se présente plus. – Quoi tu ne connais pas ?… Bon, c’est un daemon qui parse (surveille) les activités du système (logs) de différents services pour y trouver les tentatives d’accès infructueuses et bloquer l’accès afin d’éviter les kikous ou les attaques brute-force.

Je ne vais pas revenir ici sur l’installation ou la configuration du service, je vais plutôt ici vous partager mes observations.

Ma configuration

Action par défaut en cas de ban:

actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP

En gros on DROP complètement l’ip sur tout les ports dès qu’une attaque est détectée. C’est un peu hard mais ça me plaît.

Je surveille un maximum de service (SSH, HTTP, HTTPS, IMAP, SMTP,…)

Il y a pas mal de filtres qui se trouvent sur internet, notamment pour se protéger des scripts kiddies.

J’ai également remarqué que depuis que j’ai changés les ports par défaut des services/applications hébergées, j’ai beaucoup moins de tentative de connexion.

Parfait donc ? Bah je trouve qu’il y a quelques défauts tout de même.

Changer de ports n’est pas toujours faisable et ça ne bloque pas les attaques, ça offusque juste certains services ultra-connus.

Fail2ban est codé en Python, niveau performance du code on peut faire mieux. Le daemon consomme un peu de ressources mais ça en vaut la peine si on a pas mal de trafics sur les services ouverts.
Le projet est toujours maintenu sur github, par contre la version des dépôts est assez vielle. Préférez donc la stable release depuis github.

Je déconseille l’utilisation de fail2ban sur les VPS premiers prix car cela peut saturer le pauvre petit qui n’a déjà pas beaucoup de ressources. Analysez et testez en fonction de votre matériel, vos besoins et vos contraintes (trafic,…).

N’oubliez pas que fail2ban ne fait pas tout ! Bref rappel en sécurité système:

  • Changez les ports par défaut des services dès que vous le pouvez (SSH par exemple !)
  • Tenez votre serveur à jour.
  • Implémentez de la sécurité ou vous le pouvez – Préférez des protocoles sécurisés (HTTPS, IMAPS,…)
  • Vérifiez la configuration de vos services
  • Mettez en place de la sécurité au niveau du réseau – Utilisez iptables comme firewall maison par exemple.
  • Tenez VOUS à jour – Soyez au courant des dernières vulnérabilités et soyez prêts à patcher !

 

Docs fail2ban

Pour faire une seedbox, il faut tout d’abord:

  • Un serveur (qu’il soit un dédié ou un vieu pc transformé en serveur pour la cause)
  • Une connaissance minimale en linux (prennez la distribution que vous souhaitez, ici je prend debian)

Quoi qu’il en soit, voici les instructions:

Installation:

apt-get install transmission-daemon

Configuration:

Important: la configuration du fichier se fait service éteint !

service transmission-daemon stop
nano /etc/transmission-daemon/settings.json

Maintenant nous pouvons configurer les options 😉

« download-dir »: « /home//Downloads », // le répertoire qui contiendra les fichiers téléchargés
« ratio-limit »: 2, //Stopper le torrent quand il a atteint un certain ratio (>1, sinon aucune utilité de la seedbox)
« ratio-limit-enabled »: false, //Activer le ratio
« rpc-authentication-required »: true, //laisser à true
« rpc-enabled »: true,
« rpc-password »: « Azerty123 », //votre mot de passe, il serra chiffré lors du démarrage du service
« rpc-port »: 9091, //Vous pouvez modifier le port si vous voulez
« rpc-username »: « transmission », //Vous pouvez modifier l’utilisateur pour vous connecter au webui
« rpc-whitelist-enabled »: false, //Mettre sur false pour autoriser toutes les ips a se connecter au webui

Je pense avoir fait le tour de toutes les options interessantes pour une seedbox

Il ne vous reste plus qu’a démarrer le service et à vous connecter au webui

service transmission-daemon start

Aller sur http://votreip:9091 authentifiez vous avec l’utilisateur et le mot de passe que vous avez configuré plus haut.

transmission-web-interface

Et vous etes prêts à télecharger des torrents sur votre seedbox.

Avant toute chose, un peu de théorie.

A quoi sert radius?

http://fr.wikipedia.org/wiki/Remote_Authentication_Dial-In_User_Service

En bref, il sert a authentifier une personne à un service, il permet d’autoriser ou refuser toto a se connecter a un service.
Par exemple: l’utilisateur toto veux se connecter à un serveur FTP, ce serveur est configuré pour tourner avec un serveur radius.
L’utilisateur se connecte au FTP, le FTP va demander au serveur RADIUS si la personne à bien la permission de se connecter au service FTP à l’heure actuelle. Le serveur RADUIS va retrouver l’utilisateur toto dans un annuaire LDAP ou comme ici dans une base de donnée SQL,  RADIUS va ensuite vérifier si l’utilisateur a bien la permission d’accéder ou non suivant les préférences. Et il va contacter le FTP pour lui dire si oui ou non l’utilisateur peux se connecter.

On y va

Installation des paquets nécessaires :

apt-get install mysql-server mysql-client phpmyadmin freeradius freeradius-utils freeradius-mysql

Création de la table et de l’utilisateur

echo "create database radius;" | mysql -u root –p
echo "grant all on radius.* to radius@'localhost' identified by 'password_bdd'; flush privileges;" | mysql -u root –p
mysql –u root -p radius < /etc/freeradius/sql/mysql/schema.sql
mysql –u root -p radius < /etc/freeradius/sql/mysql/nas.sql

Creation d’un utilisateur

echo "INSERT INTO radcheck(UserName,Attribute,Value) VALUES (‘Toto’,’Password’,'Azerty123');" | mysql -u root -p radius

Configuration de freeradius

nano /etc/freeradius/sql.conf

Modifier le contenu:

password=motDePasseSQL
readclient=yes

nano /etc/freeradius/radiusd.conf

Décommenter $INCLUDE sql.conf

nano /etc/freeradius/sites-available/default

Décommenter sql dans “authorize”, “accounting” et “session”

nano /etc/freeradius/clients.conf

secret = superSecret (mot de passe pour le radtest notamment)

On test :

service freeradius stop
freeradius -X

(et regarder si tout est OK, pas de message d’erreur)

radtest Toto Azerty123 127.0.0.1 0 superSecret

-> acces-accept = OK
CTRL+C

service freeradius restart