Surveiller les route avec netstat

Tags: #<Tag:0x00007f50b09f05a8> #<Tag:0x00007f50b09fbe80>

Bonjour à tous !
Voila j’ai un petit soucis.
J’aimerai bien voir les connexions active avec la commande netstat, petit soucis il n’affiche pas les connexion des route qui passe par mon VPS.
J’ai chercher toutes l’après-midi, sans trouver de solution, je me tourne donc vers vous.
Avez vous une solution ?

Voici la commande que j’ai entrée pour faire ma route: ip route add 192.168.99.202 via 192.168.99.102 dev eth0

Elle apparait bien dans ma table de routage, et sans elle je peux aussi me connecter à montre autre VPS

Désoler si je m’y prend pas, je m’y connais peu en réseau;
A savoir que mes VPS tourne grâce à Proxmox,
Merci à tous de votre aide !

Est ce ça que tu veux?

netstat -nputw

ou plutot

netstat -r

?

ou tu as

route

La première commande ne me renvoie rien, la seconde me renvoie juste les routes actif…
Je me suis mal exprimé, ce que je souhaite, c’est que depuis mon routeur, je sache qu’elle connexion est ouverte.

Par exemple, si je suis un utilisateur est connecté sur le serveur apache de mon VPS qui est routé, j’aimerai que celui apparaisse dans le netstat du routeur (il apparait bien sur le VPS lui même, mais pas sur le routeur)

Je ne vois pas comment ca serait envisageable hormi peut etre avec

tcpdump

et en mettant les arguments corrects

ps: la seule autre chose à laquelle je pourrais penser est d’installer et configurer snort

arf :confused: Donc y a vraiment aucune solution à part le TCPDump…
Car j’ai une commande netstat qui permet de détecter si le VPS subit un « DDoS », mais je ne sais pas comment la traduire avec tcpdump justement

La voici:
netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | uniq -c | awk '{ if ($1 > 20) print "Attaque DDoS en cours !"; }'

Pour résumer ce qu’elle fait, même si je pense que vous le savez mieux que moi, elle calcul le nombre de connexion ouverte avec une IP et si celle ci est trop élever, alors on lance une alerte (par mail par exemple)

Je ne sais pas si c’est possible de la traduire en tcpdump, j’ai vaguement chercher en n’ayant rien de concluant

Installe snort ca te prendra la matinée mais tu auras ce que tu veux

ps: j’ai fait une installe snort et c’est vraiment un super outil

Très bien je vais aller voir !
Un ami m’a conseiller PRTG aussi, je ne sais pas si c’est similaire voir mieux.

J’aurai une dernière question, si c’est un de mes VPS qui effectue une attaque DDoS (car il a était compromis par exemple) ca le détectera aussi ?

Outre ta méconnaissance du réseau, ta confusion vient peut-être du mot « connexion » qui est vague et peut désigner des choses différentes.

netstat n’affiche pas des « connexions » mais des « sockets », qui sont des points de communication entre un processus local et un hôte distant. Une socket de type TCP indique implicitement une connexion car TCP est un protocole dit « connecté ». Par contre une socket de type UDP n’indique pas forcément une connexion car UDP est un protocole dit « non connecté », bien que certains protocoles applicatifs qui l’utilisent se comportent comme des connexions.

D’autre part, une socket n’existe que pour les communications avec un processus local. Si la machine fait seulement office de routeur pour des communications entre des hôtes distants, elle n’ouvre pas de sockets ; les sockets sont ouvertes sur les hôtes distants.

Un routeur « pur » ne s’occupe pas des connexions. Son travail se limite à router des paquets IP en appliquant sa table de routage. Sur ce type de routeur, la seule façon d’avoir une idée des connexions est de capturer le trafic et de le traiter, comme le font iftop ou ntop par exemple. Mais un routeur peut aussi faire du filtrage à état (stateful filtering) ou de la translation d’adresse (NAT/masquerading). Dans ce cas il doit maintenir une table d’état de toutes les connexions qu’il gère. Cette table peut être manipulée avec le programme conntrack ou consultée directement quelque part dans /proc/net/ip_conntrack ou /proc/net/nf_conntrack (je ne me souviens plus du chemin exact).

Salut !
Merci à toi pour cette réponse très détailler.
Effectivement, pour moi un socket et une connexion c’était la même chose, et je viens de documenté sur le sujet pour en apprendre plus :slight_smile:

Je vois, mais des logiciel comme snort ou PRTG peuvent faire cette surveillance à la place de iftop ou ntop ?

Je te confirme que c’est celui-là … je m’en suis servi cet après midi pour détecter un brute force effectuer sur la machine par un paquet d’ip (ça remplissez la capacité maximale pour dire :/)

J’ai étais obligé de jouer sur la valeur de time_out des connexions le temps que l’équipe réseau mitige l’attaque.

Tu as la main sur ton Hyperviseur ? si oui surveille depuis celui-ci le nombre de connexions, mais comment estimé lorsque tu prends un pic de fréquentation légitime et une attaque (c’est à toi d’y réfléchir) ?

un simple cat /proc/net/nf_conntrack | wc -l devrais déjà te permettre de connaître le nombre de connexion en cours lorsque tu as du suivi de connexion.

#!/bin/bash

# Quick script to check nf_conntrack table and potentially block troublesome IPs

# IP addresses originating more than $THRESHOLD conntrack entried
# will be banned.
THRESHOLD=30


cat /proc/net/nf_conntrack | awk -F '  *|=' '{print $8}' | \
   sort | uniq -c | awk -v threshold=$THRESHOLD '$1 > threshold {print $0}' |

while read count ip 
do
   # "blacklist1" is the name of a locally defined ipset.
   echo ipset add blacklist1 $ip
   ipset add blacklist1 $ip

   # Delete the conntrack entries of the offending IP, so a second ban attempt
   # is not made next time this script is run.
   conntrack -D --src $ip > /dev/null

   echo

done

Script déjà testé mais fonctionne avec Iptables (attention utilisation d’ipset, ne pas se tromper et bien analyser pour ne pas bloqué" les ip privé de tes machines.

Sinon un articles dans la langue de Shapkespear expliquant comment mettre ne place une limitations d’ip mais encore une fois attention à l’effet de bord, il faudra bien analyser et définir ce qui est légitime de ce qu’il ne l’est pas.

Je ne faisais que suggérer utiliser des outils dédiés

Screenshot_2021-02-17 (PDF) Mitigation of DoS and Port Scan Attacks Using Snort

Screenshot_2021-02-17 Detection and Prevention of Criminal Attacks in Cloud Computing Using a Hybrid Intrusion Detection Sy...

Le script est sympa mais comment fais tu pour anticiper des attaques vu que les attaques ne viennent jamais des mêmes ip?

Anticiper ? je vois pas de’ quoi tu parle là …

Le mieux étant tout de même de mettre un ipset avec des ip whitlistées, et ensuite enrichir un ipset à grand coup d’ip via un fail2ban, le tout avec une règle de DROP.
Mais comme déjà dit c’est juste pour virer du pénible qui allonge les logs, pas pour se protéger d’un vrai DDOS.

PS AH au passage proposer Snort pour surveiller un simple hyperviseur ou quelques machines c’est comme utiliser un bazooka pour tuer une mouche …

Enfaite mon soucis n’est pas tant d’anticiper les attaques ou autre, pour le moment c’est un petit projet, mais je pense dans l’avenir ouvrir un hébergeur de VPS, donc je chercher une technique fiable pour détecter les DDoS sortant de mes machines pour bloquer le VPS en question.

Pour les DDoS on a déjà une protection au niveau du DataCenter mais ajouter une couche en plus ne fait pas de mal j’ai envie de dire.

En tout cas merci de toutes vos réponse, j’ai appris beaucoyp grâce à vous et je pense que je vous pouvoir faire quelque chose d’assez fiable !