🐧 Получение информации о сетевых соединениях с помощью tcpdump на Linux |

🐧 Получение информации о сетевых соединениях с помощью tcpdump на Linux

Мануал

Получить информацию о сетевых соединениях с помощью tcpdump очень просто.

В примере ниже я ищу подключения к/от 192.168.1.5.

В результате я получаю информацию о текущем сеансе SSH на порту 22.

$ sudo tcpdump -i any -c5 -nn host 192.168.1.5
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked v1), capture size 262144 bytes
05:55:14.592053 IP 192.168.1.2.22 > 192.168.1.5.49360: Flags [P.], seq 3579182045:3579182241, ack 1274452714, win 501, options [nop,nop,TS val 3756719200 ecr 2269762149], length 196
05:55:14.592189 IP 192.168.1.2.22 > 192.168.1.5.49360: Flags [P.], seq 196:416, ack 1, win 501, options [nop,nop,TS val 3756719200 ecr 2269762149], length 220
05:55:14.592259 IP 192.168.1.2.22 > 192.168.1.5.49360: Flags [P.], seq 416:612, ack 1, win 501, options [nop,nop,TS val 3756719200 ecr 2269762149], length 196
05:55:14.592315 IP 192.168.1.2.22 > 192.168.1.5.49360: Flags [P.], seq 612:808, ack 1, win 501, options [nop,nop,TS val 3756719200 ecr 2269762149], length 196
05:55:14.592361 IP 192.168.1.5.49360 > 192.168.1.2.22: Flags [.], ack 196, win 9150, options [nop,nop,TS val 2269762181 ecr 3756719200], length 0
5 packets captured
5 packets received by filter
0 packets dropped by kernel

Вот еще один пример, здесь перечислены только пакеты, содержащие данные.

Это предназначено для использования с HTTP-пакетами, но это также работает и для SSH-пакетов через порт 22.

$ sudo tcpdump -c5 'tcp port 22 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s25, link-type EN10MB (Ethernet), capture size 262144 bytes
06:24:48.513622 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 3584238861:3584239049, ack 1274477390, win 501, options [nop,nop,TS val 3758493121 ecr 2271536054], length 188
06:24:48.518531 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 188:416, ack 1, win 501, options [nop,nop,TS val 3758493126 ecr 2271536132], length 228
06:24:48.518651 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 416:620, ack 1, win 501, options [nop,nop,TS val 3758493126 ecr 2271536132], length 204
06:24:48.518878 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 620:824, ack 1, win 501, options [nop,nop,TS val 3758493126 ecr 2271536137], length 204
06:24:48.518972 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 824:1028, ack 1, win 501, options [nop,nop,TS val 3758493126 ecr 2271536137], length 204
5 packets captured
6 packets received by filter
0 packets dropped by kernel

Данный пример ищет все пакеты размером более 200 байт, поступающие на порт 22.

$ sudo tcpdump -c20 'tcp port 22 and ip[2:2] > 200'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s25, link-type EN10MB (Ethernet), capture size 262144 bytes
06:51:16.313363 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 3584589481:3584589669, ack 1274520426, win 501, options [nop,nop,TS val 3760080921 ecr 2273123892], length 188
06:51:16.318296 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 188:416, ack 1, win 501, options [nop,nop,TS val 3760080926 ecr 2273123960], length 228
06:51:16.318412 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 416:620, ack 1, win 501, options [nop,nop,TS val 3760080926 ecr 2273123960], length 204
06:51:16.318494 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 620:824, ack 1, win 501, options [nop,nop,TS val 3760080926 ecr 2273123960], length 204
06:51:16.318594 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 824:1028, ack 1, win 501, options [nop,nop,TS val 3760080926 ecr 2273123960], length 204
06:51:16.318673 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 1028:1232, ack 1, win 501, options [nop,nop,TS val 3760080926 ecr 2273123965], length 204
06:51:16.318745 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 1232:1444, ack 1, win 501, options [nop,nop,TS val 3760080926 ecr 2273123965], length 212
06:51:16.318794 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 1444:1656, ack 1, win 501, options [nop,nop,TS val 3760080926 ecr 2273123965], length 212
06:51:16.318850 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 1656:1868, ack 1, win 501, options [nop,nop,TS val 3760080926 ecr 2273123965], length 212
06:51:16.318905 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 1868:2080, ack 1, win 501, options [nop,nop,TS val 3760080926 ecr 2273123965], length 212
06:51:16.318983 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 1028:1232, ack 1, win 501, options [nop,nop,TS val 3760080926 ecr 2273123965], length 204
06:51:16.319037 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 1444:1656, ack 1, win 501, options [nop,nop,TS val 3760080927 ecr 2273123965], length 212
06:51:16.319169 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 2080:2716, ack 1, win 501, options [nop,nop,TS val 3760080927 ecr 2273123965], length 636
06:51:16.319230 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 2716:2928, ack 1, win 501, options [nop,nop,TS val 3760080927 ecr 2273123965], length 212
06:51:16.319283 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 2928:3140, ack 1, win 501, options [nop,nop,TS val 3760080927 ecr 2273123965], length 212
06:51:16.319336 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 3140:3352, ack 1, win 501, options [nop,nop,TS val 3760080927 ecr 2273123965], length 212
06:51:16.319392 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 3352:3564, ack 1, win 501, options [nop,nop,TS val 3760080927 ecr 2273123965], length 212
06:51:16.319501 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 3564:3776, ack 1, win 501, options [nop,nop,TS val 3760080927 ecr 2273123965], length 212
06:51:16.319612 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 2928:3140, ack 1, win 501, options [nop,nop,TS val 3760080927 ecr 2273123965], length 212
06:51:16.319670 IP jason-Lenovo-H50-55.ssh > 192.168.1.5.49360: Flags [P.], seq 3352:3564, ack 1, win 501, options [nop,nop,TS val 3760080927 ecr 2273123966], length 212
20 packets captured
20 packets received by filter
0 packets dropped by kernel

Максимальный реальный размер пакета в Ethernet составляет 1500 байт, но если вы используете начальный размер в 200 байт, это довольно надежно.

Вы можете увидеть пакеты трафика SSH, но не содержимое сетевых пакетов.

Тем не менее, это очень полезный совет для поиска такого трафика.

Эта команда перехватывает только пакеты SYN и FIN и может помочь в анализе жизненного цикла TCP-соединения.

Еще один способ увидеть SSH-соединение на машине Linux.

$ netstat | grep ssh
tcp        0      0 jason-Lenovo-H50-55:ssh 192.168.1.5:49360       ESTABLISHED

Более того, можно использовать этот пример, чтобы увидеть, что пользователь вошел по SSH.

$ pgrep -af "sshd: $LOGNAME"
918 sshd: jason [priv]  
1072 sshd: jason@pts/0

или эту версию.

Это работает лучше.

~$ pgrep -af "sshd: $LOGNAME@"
1072 sshd: jason@pts/0

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий