Portsentry : Différence entre versions
(→Tests) |
|||
| Ligne 156 : | Ligne 156 : | ||
À 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. | À 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. | ||
| + | |||
| + | [[Catégorie:Système]] | ||
Version du 26 février 2015 à 10:45
Sommaire
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.
Installation
L’installation se fait simplement via apt :
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
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
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 :
Pour vérifier que Portsentry a bien démarré, taper la commande suivante :
Cette dernière devrait vous retourner ce message :
portsentry[30088]: adminalert: PortSentry is now active and listening.
Tests
Sur une autre machine, 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 :
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
ALL: 192.168.x.x : DENY
-À INPUT -s 192.168.x.x/32 -j DROP
192.168.x.x - 255.255.255.255 !H 0 - 0 -
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.
