Installer Portsentry : Anti-scan de ports

⇑ Aller au dossier complet : Une histoire de Pirates !

 

Portsentry est un petit utilitaires en ligne de commande permettant d’empêcher le scan de port. Le scan de port (sniffeurs) est l’une des première étapes d’un piratage. Les hackers vont collecter des données sur vos ports ouverts afin de vérifier les vulnérabilités au niveau de votre réseau.

 

Installation

sudo apt-get update
sudo apt-get install portsentry

 

Configuration

Attention, cette configuration n’est valable que si vous utilisez iptables comme pare-feux.

Cela se passe dans les fichiers :

  • /etc/portsentry/portsentry.conf.
  • /etc/default/portsentry
  • /etc/portsentry/portsentry.ignore.static

 

1. /etc/default/portsentry

Pour un fonctionnement plus simple et plus efficace il faut éditer ce fichier de la manière suivante  :

TCP_MODE="atcp"
UDP_MODE="audp"

Ainsi vous passez en mode avancé et Portsentry va gérer la liste de ports automatiquement. Il va checker vos ports ouverts et les surveiller de fait.

 

2. /etc/portsentry/portsentry.conf

 

  • section ignore option

placez les deux lignes block de 0 à 1

BLOCK_UDP="1"
BLOCK_TCP="1"

 

  • section tcp wrapper

Vérifiez que cette ligne est décommentée.

KILL_HOSTS_DENY="ALL: $TARGET$ : DENY"

 

  • section dropping route

Commentez toute les kill_route puis décommentez la ligne :

KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"

(Verifiez qu’aucune autre option kill_route ne soit active (décommentée). En effet seule une règle à la fois peut fonctionner.)

Cette ligne va permettre à portsentry d’ajouter une ligne à votre pare-feux iptables lors d’une détection d’un scan afin d’en bloquer l’origine.

 

  • section external command

Cette ligne doit bien être décommentée. Vérifiez également que « debug » soit bien en minuscules.

KILL_RUN_CMD="/sbin/iptables -I INPUT -s $TARGET$ -j DROP && /sbin/iptables -I INPUT -s $TARGET$ -m limit --limit 3/minute --limit-burst 5 -j LOG --log-level debug --log-prefix 'Portsentry: dropping: '"

 

3. portsentry.ignore.static

Vous pouvez donc également définir des hôtes (ip) à ignorer dans ce fichier. Ce peut être les ip de votre réseau par exemple. Ce fichier est assez intuitif à modifier, donc pas besoin de plus d’explication.

4. Autres

Vous pouvez définir les ports que portsentry ne doit pas surveiller dans /etc/portsentry/portsentry.conf à la section « advanced stealth ».

 

5. Utilisations

Pour gérer le service voici les commandes principale. Apres chaque modification n’oubliez donc pas de redémarrer le service.

sudo service portsentry {start|stop|restart}

 

Tests et suppléments

 

 

1. Test

Depuis une autre machine lancez la commande suivante. Veillez à bien vérifier que vous pourrez toujours avoir acces à votre machine cible après l’attaque afin de « libérer » l’ip attaquante.

 

nmap -v 192.168.x.x

 

Puis on check les logs :

grep attackalert /var/log/syslog

Puis,

cat /etc/hosts.deny

Enfin,

iptables -S

 

On pourra alors apprécier le travail effectué par portsentry !

 

2. Rapports

Voici un script permettant de recevoir des mails de rapport lors de scan de port sur votre serveur.

I faudra rajouter la commande externe dans /etc/portsentry/portsentry.conf

KILL_RUN_CMD="chemin/vers/votre/script $TARGET$ $PORT$ $MODE$"

 

#!/bin/bash

sendemail_bin="/opt/send_mail"

mail_from="security@zb2oby.fr"

mail_to="security@zb2oby.fr"

# grep into /etc/services to check which port was scanned

MODE=${3/[sa]/} # get rid of s and a

SERVICEINFO=`grep "[[:space:]]$2/$MODE" /etc/services`



# can we get some info about the attacker?

FINGERINFO=`/usr/sbin/safe_finger -l @$1 2>/dev/null`



cat <> /var/lib/portsentry/notify.log

PortSentry: $1 scanned $HOSTNAME:$2/$3

Someone @$1 scanned on host $HOSTNAME

the service (from /etc/services): 

$SERVICEINFO

additional information (from reverse finger):

$FINGERINFO

EOF



$sendemail_bin -f $mail_from \

 -t $mail_to \

 -u "[portsentry] - A scan has been spotted on `hostname --fqdn`" \

 -m "PortSentry: $1 scanned $HOSTNAME:$2/$3

Someone @$1 scanned on host $HOSTNAME

the service (from /etc/services): 

$SERVICEINFO

additional information (from reverse finger):

$FINGERINFO

 " > /dev/null 2>&1

⇑ Aller au dossier complet : Une histoire de Pirates !

Notez l’article !! J’espère que cela à été clair et utile pour vous. Le « must » serait de me laisser un petit commentaire. C’est toujours sympa de savoir ce qu’il y a de bien ou moins bien, et s’il y a une question ou une remarque discutons-en 😉

 

Pour en savoir plus suivez ces liens :

https://openclassrooms.com/courses/securiser-son-serveur-linux

https://wiki.debian-fr.xyz/Portsentry

7 réflexions sur “Installer Portsentry : Anti-scan de ports

  • janvier 15, 2018 à 5:33
    Permalien

    Bonjour,

    Merci, ce tuto m’a bien aidé à configurer portsentry sur Debian Stretch

    Répondre
    • janvier 15, 2018 à 6:54
      Permalien

      Bonjour, merci pour ce retour ça fait toujours plaisir 😉 et n’hésitez pas si vous voyez des choses à améliorer

      Répondre
  • novembre 2, 2018 à 10:45
    Permalien

    bonjour,

    j’essaye de configurer knockd avec portsentry;
    le problème c’est quand je mets portsentry
    knockd ne fonctionne plus

    Répondre
    • novembre 2, 2018 à 12:10
      Permalien

      Bonjour,

      Peut-être utilisez vous un ou plusieurs ports surveillés par portsentry dans votre séquence knockd ?

      Répondre
  • mars 15, 2019 à 11:22
    Permalien

    Bonjour, j’essaye de faire en sorte de filtrer le port 80 et 443 mais j’ai bien l’impression qu’apache recoit les informations avant portsentry du coup quand je scan les ports web il me les affiche en ouvert.. Aurez-tu une solution… ?

    Répondre
    • mars 16, 2019 à 11:39
      Permalien

      Bonjour,
      Ce qu’il faut comprendre c’est qu’un scan de port en soi n’est pas dangereux. Il annonce juste une preparation d’attaque.
      Portsentry n’est absolument pas un firewall. C’est un outil de détection qui donne l’alarme. C’est tout. Ce que peut éventuellement faire portsentry c’est bloquer l’ip du sniffer a posteriori. Portsentry ne s’occupe donc pas de bloquer le trafic ni de cacher les ports ouverts mais d’alerter sur un scan et selon les options parametrées de bloquer le sniffer sur la machine afin d’éviter que ce scan ne se transforme en attaque.

      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.

Show Buttons
Hide Buttons