Утилита tcpdump — это очень мощный и популярный инструмент для перехвата и анализа сетевых пакетов. Она позволяет просматривать все входящие и исходящие из определенного интерфейса пакеты и работает в командной строке. Конечно, вы могли бы пользоваться Wirshark для анализа сетевых пакетов, это графическая утилита, но иногда бывают ситуации когда нужно работать только в терминале.
Анализ
- tcpdump -n -i eth0 -l | tee
- ssh [email protected] tcpdump -U -s0 -w — 'not port 22' | wireshark -k -i —
Фильтры
Фильтр | Определение |
host | Служит для указания имени хоста |
net | Указывает IP подсети и сети |
ip | Служит для указания адреса протокола |
src | Выводит пакеты, которые были отправлены с указанного адреса |
dst | Выводит пакеты, которые были получены указанным адресом |
arp, udp, tcp | Фильтрация по одному из протоколов |
port, portrange | Отображает информацию, относящуюся к определенному порту, диапазону портов |
and, or | Служит для объединения нескольких фильтров в команде |
less, greater | Вывод пакетов меньше или больше указанного размера |
- 15 примеров команды tcpdump
- Как пользоваться tcpdump | Losst
- Руководство по tcpdump — HackWare.ru
Ключи
- -i — Прослушиваемый интерфейс
- port 9000, port 80
- -A — выводить все пакеты в формате ASCII;
- -c — закрыть программу после перехвата n-ого количества пакетов;
- -C — при записи пакетов в файл, проверять размер файла, и если он больше заданного — создать новый файл;
- -D — вывести список доступных сетевых интерфейсов;
- -e — выводить информацию уровня соединения для каждого пакета, это может быть полезно, например, для отображения MAC адреса;
- -f — выводить доменное имя для ip адресов;
- -F — читать пакеты из файла, а не интерфейса;
- -G — создавать новый файл лога через указанный промежуток времени;
- -H — обнаруживать заголовки ;
- -i — имя интерфейса для перехвата пакетов. Вы можете захватывать пакеты со всех интерфейсов, для этого укажите any;
- -I — переключить интерфейс в режим монитора для захвата всех проходящих пакетов;
- -j — установить формат Timestamp для записи пакетов;
- -J — посмотреть доступные Timestamp;
- -K — не проверять контрольные суммы пакетов;
- -l — добавить поддержку прокрутки к выводу;
- -L — вывести поддерживаемые протоколы подключения для интерфейса;
- -n — не отображать доменные имена;
- -r — прочитать пакеты из файла, созданного с помощью -w;
- -v, -vv, -vvv — более подробный вывод;
- -q — выводить минимум информации;
- -w — записать вывод в файл;
- -Z — пользователь, от имени которого будут создаваться файлы.
Введение
Утилита tcpdump — это сниффер сетевых пакетов с интерфейсом командной строки, не имеющий ни графического, ни псевдографического интерфейса. Новичкам он может показаться неуклюжим и слишком старомодным, однако в умелых руках превращается в настоящий швейцарский нож для вскрытия любых сетевых пакетов и протоколов. Опытные сисадмины всегда рекомендуют начинающим использовать tcpdump вместо любых других утилит из-за наглядности и прямолинейности его отчетов.
Tcpdump появился на свет почти 25 лет назад в университете Беркли, до сих пор активно развивается и продолжает оставаться эталоном среди подобных инструментов для операционной системы UNIX. Разработанная специально для него библиотека захвата пакетов libpcap сегодня используется чуть ли не каждым сниффером для UNIX-систем и многими аналогичными программами для Windows.
В этой статье мы рассмотрим все аспекты работы с tcpdump, начиная от основ работы с программой и заканчивая способами применения утилиты для выявления сетевых атак, аномалий и различных видов сбоев.
Использование Tcpdump
Tcpdump — это универсальный инструмент. Таким образом, существует множество способов использовать его для мониторинга трафика в вашей системе Linux или Unix. Тем не менее, есть общие варианты, с которых вы можете начать знакомство с инструментом.
Начните с запуска tcpdump, чтобы посмотреть, как он работает. Если ничего не происходит сразу, вы можете попробовать открыть свой веб-браузер и перейти на страницу.
sudo tcpdump
Команда будет выполняться бесконечно, поэтому вам нужно будет остановить ее самостоятельно. Когда вы закончите контролировать вывод, нажмите Ctrl + C для выхода.
Теперь вы можете попробовать ограничить вывод с помощью флага -c . Число, которое вы указываете команде, будет таким же, как и количество перехваченных пакетов.
sudo tcpdump -c 25
Возможно, вы заметили другую проблему на этом пути. Что если tcpdump использует неправильный сетевой интерфейс? Вы можете указать тот, на котором вы хотите захватывать трафик, с флагом -i . Итак, если вы хотите захватить двадцать пять пакетов на интерфейсе eth0, вы должны использовать:
sudo tcpdump -c 25 -i eth0
- Примеры использования TCPDUMP | UNLIX
- TCPDUMP — полезное руководство с примерами
- Анализ дампов TCP с помощью Wireshark
Если вам нужно больше подробностей в своем отчете, вы можете использовать флаг -v для более подробного вывода.
sudo tcpdump -c 25 -i eth0 -v
Как указывалось ранее, tcpdump имеет возможность сохранить ваш вывод, что позволит вам просмотреть его позже. -W флаг будет написать свой вывод в указанный файл.
sudo tcpdump -c 25 -i eth0 -w
Затем прочитайте это с:
sudo tcpdump -r
Наконец, если вы хотите подать наш журнал в режиме реального времени, вы можете направить вывод в команду ‘ grep ‘. Это очень полезно, если вы ищете соединения с определенным хостом или упоминание определенного ключевого слова или ошибки.
sudo tcpdump -c 25 -i eth0 | grep -i имя хоста
Это только основы. Если вы хотите узнать больше, продолжайте читать для более технической разбивки tcpdump и его многочисленных опций.
Фильтры tcpdump
Фильтры разделяются на следующие классификации
host — адрес узла сети
port – порт на котором нужно ловить пакеты
portrange – диапазон портов
net – сеть
Tcpdump net
захват всего трафика в котором в качестве источника или получателя стоят ip адреса из сети
Tcpdump port 80
Будет захватываться весь трафик на 80-м порту.
Направление трафика по отношению к объекту мониторинга
src – отправитель
dst — получатель
например команда
Src host
Захват трафика у которого отправитель ip адрес
Протокол
ether – базовая сетевая технология Ethernet, как правило указывает на то что в фильтре используется аппаратный MAC адрес
ip – протокол IPv4
ip6 – протокол IPv6
arp – протокол ARP
tcp – протокол TCP
udp – протокол UDP
Если протокол не указан, то будет захвачен трафик по все протоколам
Например команда
Udp port 5060
захват трафика по протоколу udp порт 5060
Составные фильтры
Для того что бы более гибко фильтровать трафик можно использовать логические операции
«И» – and (&&)
«ИЛИ» – or (||)
«НЕ» – not (!) – инверсия значения
При этом приоритет этих операций следующий:
наивысшим приоритетом обладает операция инверсии
потом логическое «И»
наименьшим приоритетом обладает операция «ИЛИ».
Приоритет операций можно менять с помощью круглых скобок.
(net or host ) and tcp port 80
захват трафика протокола TCP и использующего порт 80 принадлежащего сети или хосту , как любому хосту по отдельности так и вместе
(net || host ) && not tcp port 80
захват любого трафика кроме трафика протокола TCP и использующего порт 80 принадлежащего сети или хосту как любому хосту по отдельности так и вместе
Опции tcpdump
Таблица наиболее интересных и полезных флагов tcpdump.
- 10.9. Инструменты Диагностики Сети
- Учебник по FreeBSD, OpenBSD, NetBSD …
- tcpdump | IT блоги — Windows …
- -i [интерфейс] — прослушиваемый сетевой интерфейс, для всех следует указать any.
- -n — не преобразовывать IP-адреса в DNS-имена.
- -nn — не преобразовывать IP-адреса и номера портов.
- -X — показывать содержимое пакета в текстовом и шестнадцатеричном форматах.
- -XX — то же самое плюс содержимое Ethernet-фрейма.
- -v, -vv, -vvv — увеличить количество показываемой информации и пакетов (больше, еще больше, все).
- -c [n] — показывать только первые n пакетов.
- -s [n] — количество байтов, отображаемых для каждого пакета (можно уменьшить для удобства чтения или увеличить для получения большей информации).
- -S — показывать абсолютные номера TCP-последовательности (TCP sequence numbers).
- -e — показывать заголовки Ethernet-фреймов.
- -q — показывать меньше информации (для удобства чтения).
- -E — расшифровать IPsec-трафик с помощью указанного ключа.
- -w — сохранить дамп программы в файл, аргумент — используется для указания stdout.