Установка и использование tcpdump
tcpdump — мощный анализатор командной строки и Libpcap, портативная библиотека для захвата сетевого трафика. Tcpdump выводит описание содержимого пакетов на сетевом интерфейсе, которые соответствуют логическое выражение. Он также может быть запущен с ключом -w, который вызывает его, чтобы сохранить пакетные данные в файл для последующего анализа, и / или с -r флагом, который вызывает его для чтения из сохраненного файла пакета. С помощью этой утилиты можно перехватывать и так же анализировать сетевой трафик который проходит через ПК на котором запущенна данная программа.
Хотелось бы поговорить в данной теме «установка и использование tcpdump» об установке tcpdump, а так же как им пользоваться и для чего он нужен.
С помощью tcpdump можно:
- Можно делать отладку сетевых приложений.
- Можно производить отладку сети или сетевого оборудования в целом.
Чтобы установить tcpdump на debian/ubuntu/linux mint нужно выполнить:
# sudo apt-get install tcpdump
Для того чтобы установить tcpdump на RedHat/CentOS/Fedora используйте:
# sudo yum install tcpdump
Для того чтобы установить tcpdump на MacOS используйте.
Подключаем (устанавливаем) HOMEBREW.
# brew install tcpdump
Использование tcpdump.
Чтобы проверить работает ли у нас tcpdump можно выполнить команду:
# tcpdump -i eth0 port 80
Существует довольно много ключей для использования самой утилиты tcpdump, приведу список распространенных:
Если нужно узнать какими пакетами обменивается 21 сервера ( например your_server_1 и your_server_2), то для этого служит команда:
# tcpdump host your_server_1 and your_server_2
Если нужно отслеживать только исходящие пакеты из хоста, то выполните:
# tcpdump src host your_server
Если нужно отслеживать только входящие пакеты из хоста, то выполните:
# tcpdump dst host your_server
Так же можно прослушивать исходящие или входящие пакеты с сервера и по определенному порту для этого просто добавьте порт который нужно прослушивать ( в основном используется 80, 8080).
См. список интерфейсов, по которым tcpdumt можете слушать:
# tcpdump -D
Слушать интерфейс eth0:
# tcpdump -i eth0
Слушать на любом доступном интерфейсе (Требуется ядро Linux версии 2.2 или выше):
# tcpdump -i any
Вывод всего на экран (все что выполняется программой):
# tcpdump -v
Вывод много чего на экран (все что выполняется программой):
# tcpdump -vv
Вывод очень много всего на экран (все что выполняется программой):
# tcpdump -vvv
Выводить не сильно много информации когда идет захват пакетов (не как стандартный):
# tcpdump -q
Ограничить захват пакетов до 100:
# tcpdump -c 100
Записать все данные (перехваченные пакеты) в файл с именем capture.cap:
# tcpdump -w capture.cap
Записать все данные (перехваченные пакеты) в файл с именем capture.cap и вывести на экран в режиме реального времени:
# tcpdump -v -w capture.cap
Вывод пакетов с файла capture.cap:
# tcpdump -r capture.cap
Вывод пакетов с файла capture.cap используя максимально много информации:
# tcpdump -vvv -r capture.cap
Вывод IP и порты вместо доменов идет захват пакетов:
# tcpdump -n
Захват любых пакетов , где хост назначения — 192.138.1.1. Вывод ИП и порты на экран:
# tcpdump -n dst host 192.138.1.1
Захват любых пакетов c хоста 192.138.1.1. Вывод ИП и порты на экран:
# tcpdump -n src host 192.138.1.1
Захват любых пакетов c хоста 192.138.1.1. Вывод ИП и порты на экран:
# tcpdump -n host 192.138.1.1
Захват пакетов где сеть 192.138.1.0/24. Вывод ИП и порты на экран:
# tcpdump -n dst net 192.138.1.0/24
Захват пакетов с сети 192.138.1.0/24. Вывод ИП и порты на экран:
# tcpdump -n src net 192.138.1.0/24
Захват пакетов с сети 192.138.1.0/24. Вывод ИП и порты на экран:
# tcpdump -n net 192.138.1.0/24
Захват пакетов с порта 23. Вывод ИП и порты на экран:
# tcpdump -n dst port 23
Захват пакетов с портов 1 по 1023. Вывод ИП и порты на экран:
# tcpdump -n dst portrange 1-1023
Захватывать только TCP пакеты где destination на портах 1 по 1023. Вывод ИП и порты на экран:
# tcpdump -n tcp dst portrange 1-1023
Захватывать только UDP пакеты где destination на портах 1 по 1023. Вывод ИП и порты на экран:
# tcpdump -n udp dst portrange 1-1023
Захват пакетов с destination где ИП 192.138.1.1 и destination порт которого 23. Вывод на экран:
# tcpdump -n "dst host 192.138.1.1 and dst port 23"
Захват пакетов с destination где ИП 192.138.1.1 и destination по портам 80 или 443. Выводим на экран:
# tcpdump -n "dst host 192.138.1.1 and (dst port 80 or dst port 443)"
Захват любых ICMP пакетов:
# tcpdump -v icmp
Захват любых ARP пакетов:
# tcpdump -v arp
Захват любых ICMP или ARP пакетов:
# tcpdump -v "icmp or arp"
Захват любых пакетов которые broadcast или multicast:
# tcpdump -n "broadcast or multicast"
Захват больших пакетов (500 байт) а не стандартных 68б:
# tcpdump -s 500
Захват всех байт данных в пакете:
# tcpdump -s 0
Просмотр «тяжелых пакетов»:
# tcpdump -nnvvXSs 1514
Захват пакетов ICMP с ping и pong:
# tcpdump -nnvXSs 0 -c2 icmp
Вывод без многих вариантов:
# tcpdump -nS
Основные коммуникации (очень подробный режим), можно увидеть хороший объем трафика, с многословием:
# tcpdump -nnvvS
Глубокий взгляд на трафик, добавляет -X для полезной нагрузки:
# tcpdump -nnvvXS
Просмотр тяжелого пакета и увеличивает snaplength, захватывая весь пакет:
# tcpdump -nnvvXSs 1514
Вы можете также фильтровать на основе определенных частей пакета, а также объединить несколько условий в группы. Это полезно при поиске только SYNs или РСТ, например, и последний для еще более расширенный изоляцией трафика.
Показать мне все URGENT (URG) пакеты:
# tcpdump 'tcp[13] & 32!=0'
Показать мне всеACKNOWLEDGE (ACK) пакеты:
# tcpdump 'tcp[13] & 16!=0'
Показать мне все PUSH (PSH) пакеты:
# tcpdump 'tcp[13] & 8!=0'
Показать мне все RESET (RST) пакеты:
# tcpdump 'tcp[13] & 4!=0'
Показать мне все SYNCHRONIZE (SYN) пакеты:
# tcpdump 'tcp[13] & 2!=0'
Показать мне все FINISH (FIN) пакеты:
# tcpdump 'tcp[13] & 1!=0'
Показать мне все SYNCHRONIZE/ACKNOWLEDGE (SYNACK) пакеты:
# tcpdump 'tcp[13]=18'
Захват TCP Flags используя tcpflags:
# tcpdump 'tcp[tcpflags] & & tcp-syn != 0'
Пакеты с RST и SYN флагами (проверка):
# tcpdump 'tcp[13] = 6'
Траффик с ‘Evil Bit'(проверка):
# tcpdump 'ip[6] & 128 != 0'
На этом я завершу свою статью «установка и использование tcpdump», надеюсь все ясно и понятно. Спасибо за использование моего интернет ресурса http://linux-notes.org