15/11/2024

Pare-Feu

Bloquer les individus qui scannent votre machine avec Portsentry

I. Présentation

Nos serveurs accessibles depuis internet sont de plus en plus vulnérables aux attaques, d'où ce tutoriel où je vais vous parler de Portsentry. Cet outil permet de détecter et de bloquer tout individu scannant les ports de votre machine.

II. Installation

L'installation se fait simplement via apt :

apt-get update
apt-get install portsentry

III. Configuration

Par défaut, Portsentry ne bloque rien et nous allons devoir le configurer afin de détecter et bloquer le scan de ports. Il va falloir modifier le fichier où sont notifiées les adresses IPs à ne pas bloquer afin de ne pas se bloquer soi-même. Pour cela il existe 2 fichiers : portsentry.ignore et portsentry.ignore.static. Toutes les IPs que vous allez ajouter dans portsentry.ignore.static seront ajoutées  dans portsentry.ignore après un redémarrage du service portsentry.

  •  Je décide de modifier le fichier /etc/portsentry/portsentry.ignore et de vérifier que l'adresse 127.0.0.1 soit bien définie :
# IP déjà notifié dans le fichier :

127.0.0.1/32
0.0.0.0

# autres @ip que vous souhaitez xxx.xxx.xxx.xxx
  •  Passons à la configuration de Portsentry :

Si vous choisissez les modes atcp et audp ("a" signifie avancé) dans /etc/defaults/portsentry, inutile de préciser les ports, Portsentry va vérifier les ports utilisés et automatiquement "lier" les ports disponibles. C'est l’option la plus efficace. Donc avec cette option, portsentry établit une liste des ports d'écoute, TCP et UDP, et bloque l'hôte se connectant sur ​​ces ports sauf s'il est présent dans le fichier portsentry.ignore configuré auparavant.

  •  Modification du fichier /etc/default/portsentry :
Remplacer
TCP_MODE="tcp"
UDP_MODE="udp"

Par
TCP_MODE="atcp"
UDP_MODE="audp"
  •  À présent nous allons nous attaquer au fichier de configuration principale : portsentry.conf
# vi /etc/portsentry/portsentry.conf
  • Mettez en place le blocage en modifiant la section "Ignore options"  de la façon suivante :
##################
# Ignore Options #
##################
...
# 0 = Do not block UDP/TCP scans.
# 1 = Block UDP/TCP scans.
# 2 = Run external command only (KILL_RUN_CMD)
 
BLOCK_UDP="1"
BLOCK_TCP="1"
  • Si comme moi vous utilisez Iptables, commentez toutes les lignes commençant par "KILL_ROUTE" sauf cette dernière qui permet de bloquer les IPs des machines pirates :
KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"
  • Redémarrez le service Portsentry :
sudo service portsentry restart
  • Pour vérifier que Portsentry a bien démarré, taper la commande suivante :
tail -n 5 /var/log/syslog

Cette dernière devrait vous retourner ce message :

portsentry[30088]: adminalert: PortSentry is now active and listening.

 IV. Tests

  •  Sur une autre machine (Linux pour ma part) nous allons effectuer un scan des ports de la machine précédemment configurée avec nmap :
# nmap -v 192.168.x.x

Starting Nmap 5.00 ( http://nmap.org ) at 2015-01-05 16:08 EAT
NSE: Loaded 0 scripts for scanning.
Initiating ARP Ping Scan at 16:08
Scanning 192.168.x.x [1 port]
Completed ARP Ping Scan at 16:08, 0.06s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 16:08
Completed Parallel DNS resolution of 1 host. at 16:08, 6.50s elapsed
Initiating SYN Stealth Scan at 16:08
Scanning sidlol.zehome.org (192.168.x.x) [1000 ports]
Discovered open port 111/tcp on 192.168.x.x
Discovered open port 80/tcp on 192.168.x.x
Discovered open port 22/tcp on 192.168.x.x
Discovered open port 143/tcp on 192.168.x.x
...
Completed SYN Stealth Scan at 16:08, 0.12s elapsed (2002 total ports)
Host sidlol.zehome.org (10.9.8.2) is up (0.000047s latency).
Interesting ports on sidlol.zehome.org (192.168.x.x):
Not shown: 1988 closed ports
PORT STATE SERVICE
1/tcp open tcpmux
11/tcp open systat
15/tcp open netstat
22/tcp open ssh
79/tcp open finger
80/tcp open http
...
MAC Address: xx:xx:xx:xx:xx:xx (xxxxx)
 
Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 6.95 seconds
 Raw packets sent: 2003 (88.130KB) | Rcvd: 2011 (80.594KB)
  • Si on regarde à présent sur le serveur hébergeant portsentry :
# grep attackalert /var/log/syslog

portsentry[30084]: attackalert: TCP SYN/Normal scan from host: 192.168.x.x/192.168.x.x to TCP port: 22
portsentry[30084]: attackalert: Host: 192.168.x.x/192.168.x.x is already blocked Ignoring
portsentry[18127]: attackalert: TCP SYN/Normal scan from host: 192.168.x.x/192.168.x.x to TCP port: 79
portsentry[18127]: attackalert: Host 192.168.x.x has been blocked via wrappers with string: "ALL: 192.168.x.x : DENY"
portsentry[18127]: attackalert: Host 192.168.x.x has been blocked via dropped route using command: "/sbin/iptables -I INPUT -s 192.168.x.x -j DROP"
portsentry[18127]: attackalert: External command run for host: 192.168.x.x using command: "/sbin/iptables -I INPUT -s 192.168.x.x -j DROP && /sbin/iptables -I INPUT -s 1 


# cat /etc/hosts.deny :
ALL: 192.168.1.14 : DENY


# iptables -S
-À INPUT -s 192.168.1.14/32 -j DROP

# route 
192.168.1.14 - 255.255.255.255 !H 0 - 0 -

 V. Conclusion

À présent l'adresse IP de notre pirate a été détectée par Portsentry et bloquée par IPtables. Outil très sympa qui rajoute une couche de sécurité à vos serveurs. Dans la continuité de cet article, il serait intéressant de créer un script nous avertissant par e-mail qu'une intrusion a été détectée et bloquée.

author avatar
Arnaud Baumard
Adepte des nouvelles technologies, passionné d'informatique et plus particulièrement dans l'administration systèmes et réseaux, je viens partager mes connaissances, mes trouvailles, mes projets.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

11 commentaires sur “Bloquer les individus qui scannent votre machine avec Portsentry

  • Je ne connaissais pas cet outils. Ca à l’air bien sympa !

    Niveau stabilité et mises à jour, c’est bien suivi ?

    Répondre
    • Bonjour jb lezoray,
      Pour l’avoir essayé et mise en place, je le trouve stable. Cet outils existe depuis quelques années déjà et je n’ai pas entendu parlé de problème 😉
      Pour les mises à jour je n’en ai aucune idée…je ne pourrai pas te répondre.

      Bonne soirée.

      Répondre
    • Bonjour, guidtz
      D’après ce que j’ai pu lire Psad va plus détecter une attaque et Portsentrys lui va détecter un balayage de port. Tout deux vont générer par la suite des règles de blocage.

      a+

      Répondre
  • Bonjour,

    merci pour ce tuto.
    est-il possible de renseigner plusieurs @IP à superviser?

    Merci d’avance

    Répondre
    • Bonjour,

      Non, il faut que tu install ce soft sur chaque serveur que tu souhaites surveiller.

      Bonne soirée.

      Répondre
  • Petite remarque tout bête mais … dans ton exemple, ta machine extérieur arrive à scanner les ports même si, après coup, elle se fait ban. On voit très clairement Not shown:

    1988 closed ports
    PORT STATE SERVICE
    1/tcp open tcpmux
    11/tcp open systat
    15/tcp open netstat
    22/tcp open ssh
    79/tcp open finger
    80/tcp open http

    Donc banni ou pas c’est déjà trop tard. Normalement tu dois arriver à un résultat du type

    Starting Nmap 6.47 ( http://nmap.org ) at 2015-05-26 12:19 CEST
    Initiating ARP Ping Scan at 12:19
    Scanning 192.168.x.x [1 port]
    Completed ARP Ping Scan at 12:19, 0.20s elapsed (1 total hosts)
    Initiating Parallel DNS resolution of 1 host. at 12:19
    Completed Parallel DNS resolution of 1 host. at 12:19, 0.00s elapsed
    Initiating SYN Stealth Scan at 12:19
    Scanning Test-Machine (192.168.x.x) [1000 ports]
    Discovered open port 111/tcp on 192.168.x.x
    Increasing send delay for 192.168.x.x from 0 to 5 due to 11 out of 21 dropped probes since last increase.
    Increasing send delay for 192.168.122.158 from 5 to 10 due to 11 out of 11 dropped probes since last increase.
    SYN Stealth Scan Timing: About 21.60% done; ETC: 12:21 (0:01:53 remaining)
    Increasing send delay for 192.168.x.x from 10 to 20 due to 11 out of 11 dropped probes since last increase.
    Increasing send delay for 192.168.x.x from 20 to 40 due to 11 out of 11 dropped probes since last increase.
    Increasing send delay for 192.168.x.x from 40 to 80 due to 11 out of 11 dropped probes since last increase.
    SYN Stealth Scan Timing: About 46.50% done; ETC: 12:22 (0:01:38 remaining)

    Sinon tout cela n’a aucun sens, OK l’attaquant a une IP de bannie mais il sait quels ports sont ouverts sur ton serveur et peut revenir avec une autre IP.

    Répondre
  • Attention à portsentry, source d’énormément de faux positifs.. Même avec un tunning qui va bien, j’ai finalement fini par le désactiver.

    En remplacement j’utilise pour le moment PSAD qui lui va plutôt bien. Tunné avec les bonnes options, sur un serveur web et un serveur de courrier, je n’ai pour le moment pas eu de mauvaises surprises comme avec Portsentry. A noter que psad permet de générer des rapports très clairs et détaillés (psad -S) contrairement à Portsentry, ce qui rendait (je trouve) son tunning pas forcément aisé.

    Répondre
  • Hello,

    Il est aussi possible de dédier à Fail2ban la gestion des blocage réseau en utilisant le module portsentry de fail2ban.
    Par défaut le mode « auto » ouvre tous les ports disponibles avant le port 1024. Cela implique de faire attention aux ouvertures de port sur l’IPTABLES, je préfère cibler des ports connus et largement exploités sur la toile : FTP, RDP, Docker … etc

    https://www.geeek.org/portsentry-linux-securite/

    Répondre

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.