Table des matières

Un pare-feu adaptatif

Synthèse

Une machine connectée à l'internet est soumise à une multitude d'agressions dont les buts sont très nombreux. En voici quelques-uns:

Compromettre une machine peut se faire de diverses manières:

Dans ce qui suit, nous allons étudier un système de détection d'anomalies comme principalement la recherche «logins» sur ssh, imap, smtp, http/https…

Fail2ban

Fail2ban est un ensemble de scripts qui vérifie dans les logs du système tout ce que les logiciels à surveiller notent comme anomalies et réagit en ajoutant à la volée des règles de filtrage fondées sur Netfilter. La version du jour (07/04/2025) est la 1.1.0 (2024/04/25). Disponible sur Debian Trixie (encore testing). Sur Bookworm, c'est la version 1.0.2 qui est empaquetée.

Les deux supportent désormais IPv6 et Nftables ce qui vaut donc la peine que l'on s'y intéresse de près.

Le banc de test

Notre machine virtuelle va subir quelques agressions. Il s'agit d'une machine virtuelle animée par Debian Trixie (Encore «testing» à l'heure où ces lignes sont rédigées), équipée des logiciels suivants:

La configuration réseau avec la double pile IPv4 et IPv6.

Le pare-feu de base est configuré comme suit:

table inet filter {
	chain input_ipv4 {
		icmp type echo-request limit rate 5/second burst 5 packets accept
	}

	chain input_ipv6 {
		icmpv6 type { nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert } accept
		icmpv6 type echo-request limit rate 5/second burst 5 packets accept
	}

	chain input {
		type filter hook input priority filter; policy drop;
		iifname "lo" accept
		ct state vmap { invalid : drop, established : accept, related : accept }
		meta protocol vmap { ip : jump input_ipv4, ip6 : jump input_ipv6 }
		tcp dport { 22, 80, 443 } accept
	}
}