Geeek - Le blog Geek & High-tech

Chaque minute, nombreuses sont les tentatives d'intrusion sur l'ensemble des ordinateurs connectées à Internet.

Parmi les attaques les plus virulentes, il y a bien sûr les tentatives d'accès SSH, l'exploitation de failles de sécurité sur des services Web (Wordpress, PhpMyAdmin ...) et l'exploitation des failles de sécurité sur des services contenant des failles de sécurité connues : services SMB (139), service RDP(3389), service Docker(2376), bases MongoDB ... Ces tentatives d'attaques sont pour la majorité automatisées depuis des serveurs eux-mêmes vulnérables.

Portsentry, une solution pour se protéger des scans de ports

Pour détecter les serveurs qui scannent les ports de votre machine où qui tentent d'exploiter un service défaillant pour se répandre sur Internet, vous pouvez utiliser le logiciel OpenSource Portsentry.

Portsentry est un service Linux très simple qui ouvre des ports réseau pour imiter la présence de réels services et qui se charge d'exécuter des commandes Linux dès que ces ports réseau sont ouverts par un ordinateur tiers.

La réponse par défaut de Portsentry à la tentative de connexion consiste à bloquer les flux réseau de la machine appelante au niveau du système afin que celle-ci ne puisse pas rebondir sur d'autres services. C'est violent comme réaction par défaut, mais efficace !

Portsentry pour se protéger de Shodan ?

Au dela des tentatives d'intrusion, il existe de nombreux systèmes sur la toile qui cataloguent les services qu'exposent vos serveurs. C'est par exemple ce que fait Shodan, le moteur de recherche que je vous avais présenté dans un précédent article. Les données qu'il capture peuvent être ensuite utilisées par des personnes malveillantes pour exécuter des attaques sur des vulnérabilités connues.

Portsentry utile contre les attaques de type Bruteforce ?

Pour vous protéger des attaques de type force brute, au-delà de restreindre le service via votre firewall, la solution la plus simple à mettre en place s'appelle Fail2ban.

Cette solution vous permet de définir des règles de blocage réseau quand Fail2ban détecte des patterns spécifiques dans vos logs.
Vous trouverez plus d'information sur l'usage de Fail2ban dans un précédent article consacré à l'usage Fail2ban.

Comment installer Portsentry ?

L'installation du service Portsentry se fait au travers de votre gestionnaire de package préféré, sur Ubuntu la commande suivante vous permettra d'installer ce service :

$ sudo apt-get install portsentry

Une fois le service installé, la première étape est d'éviter tout risque de se faire bannir soit même, pour cela ajoutez l'IP de votre box Internet dans le fichier "portsentry.ignore.static"

$ sudo vi /etc/portsentry/portsentry.ignore.static

Editer le fichier de configuration principal de Portsentry :

$ sudo vi /etc/portsentry/portsentry.conf

Comment configurer Portsentry ?

Vous avez deux manières d'utiliser Portsentry :

  1. Soit vous définissez vous-même la liste de ports TCP et UDP à écouter depuis les paramètres UDP_PORTS et TCP_PORTS du fichier de configuration. Portsentry écoutera le port.
  2. Soit vous laissez Portsentry ouvrir tous les ports disponibles avant le port 1024, port défini par défaut dans les paramètres ADVANCED_PORTS_TCP et ADVANCED_PORTS_UDP du fichier de configuration de Portsentry.

Dans le premier cas, les paramètres présents dans le fichier "/etc/default/portsentry" devront avoir les paramètres suivants :

TCP_MODE="tcp"
UDP_MODE="udp"

Vous pouvez aussi détecter les "stealth scan" en modifiant les paramètres aux valeurs suivantes, utile pour détecter les scans de ports furtifs :

TCP_MODE="stcp"
UDP_MODE="sudp"

Pour laisser Portsentry ouvrir tous les ports disponibles, vous devrez positionner les valeurs suivantes :

TCP_MODE="atcp"
UDP_MODE="audp"

Dans tous les cas, n'oubliez pas d'ouvrir votre Firewall sur les ports configurés pour que ces ports soient accessibles depuis Internet.

$ sudo iptables -t filter -A INPUT -p tcp --match multiport --dports 1,2,3,4....  -j ACCEPT
$ sudo iptables -t filter -A INPUT -p udp --match multiport --dports 1,2,3,4....  -j ACCEPT

Une fois ce paramétrage réalisé, vous pouvez modifier le comportement par défaut à réaliser en cas de détection de connexion par Portsentry :

# 0 = Ne rien faire, juste loguer ....
# 1 = Bloquer les ports au niveau du réseau
# 2 = Exécuter seulement une commande Linux externe (KILL_RUN_CMD)

BLOCK_UDP="0"
BLOCK_TCP="0"

La première option, l'option 0, vous permettra de loguer les tentatives d'accès, vous pourrez utiliser Fail2ban pour prendre en charge l'action de mise en prison de l'attaquant pendant une durée configurable avec une gestion de la récidive.

L'option 1 bloquera définitivement les flux réseau de l'attaquant dans votre firewall.

Il ne vous reste plus qu'à démarrer le service :

$ sudo service portsentry restart

Comment vérifier que Porsentry fonctionne correctement ?

Vous pouvez maintenant vérifier les tentatives d'accès aux faux services que Portsentry expose sur Internet :

$ sudo less /var/lib/portsentry.history

Vous devrez très vite voir apparaitre des IP dans ce fichier. D'autant plus si vous avez choisi d'ouvrir des ports sensibles comme les ports 139, 22, 3389 .. etc.

Enfin, pour permettre à Portsentry de démarrer à chaque redémarrage de votre serveur :

$ sudo systemctl enable portsentry

Comment réagir contre des scans ?

Je vous avais partlé du logiciel Fail2ban dans un précédent article. Il est possible de connecter Portsentry à Fail2ban pour appliquer des mesures de blocage automatiques.

Pour cela il suffit de créer un fichier "portsentry.conf" dans "/etc/fail2ban/conf.d" avec le contenu suivant :

[portsentry]
enabled = true

Vous pouvez allez aussi plus loin dans la configuration de Fail2ban/Portsentry dénoncer automatiquement auprès d'AbuseIPDB les adresses IP qui ont réalisées des activités malveillantes envers votre serveur.

Vous voilà protégé contre les scans et autres tentatives d'intrusion sur des services non exposés par votre serveur ! N'hésitez pas à passer dire bonjour sur le serveur Discord Geeek si vous souhaitez discuter avec la communauté de lecteurs.


Vous êtes correctement abonné à Geeek
Bienvenue ! Vous êtes correctement connecté.
Parfait ! Vous êtes correctement inscrit.
Votre lien a expiré
Vérifiez vos emails et utiliser le lien magique pour vous connecter à ce site