Иногда нужно быстро проанализировать количество tcp-соединений как во всей системе, так и по конкретному порту.
Какими способами это можно сделать в Debian Linux ?
1. Анализ соединений на 80 порт с использованием tcpdump:
Вначале пишем в лог-файл 1000 пакетов:
tcpdump -i eth0 -v -n -w attack.log dst port 80 -c 1000
Далее анализируем данные с сортировкой
tcpdump -nr attack.log | awk '{print $3}' |grep -oE '[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}' |sort |uniq -c |sort -rn
или сокращенный вариант вывода
tcpdump -nr attack.log | awk '{print $3}' |grep -oE '[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}' |sort |uniq -c |sort -rn | head -20
2. Анализ количества tcp-соединений через /proc/net/ip_conntrack
awk '{print $5}' /proc/net/ip_conntrack | sort | uniq -c | sort -rn | head -25 | column -t
Смотрим количество соединений и с каких IP их больше всего.
3. Анализ количества tcp-соединений через netstat
Общий анализ количества tcp-соединений через netstat:
netstat -npt | awk '{print $5}' | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
Общее количество tcp-соединений в разных состояниях:
netstat -npt | awk '{print $6}' | sort | uniq -c | sort -nr | head
Анализ количества tcp-соединений через netstat на 80 порт в состоянии ESTABLISHED:
netstat -npt | grep 80 | grep ESTABLISHED | awk '{print $5}' | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
Анализ количества tcp-соединений через netstat на 80 порт:
netstat -plane | grep :80 | awk {'print $5'} | cut -d ':' -f1 | sort -n | uniq -c | sort -rn | head -10
или
netstat -npt | grep 80 | awk '{print $5}' | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.
Профессионально занимаюсь системным администрированием Linux -серверов и баз данных (MySQL, PostgreSQL) на протяжении последних 24 лет.