Tcpdump утилитасы Linux жүйесінде желіні бақылауға арналған танымал пәрмен жолы құралдарының бірі болып табылады. Бұл желілік трафикті жөндеуге және оны тексеруге көмектеседі. Атауынан көрініп тұрғандай, tcpdump tcp пакеттерін (Жіберуді Басқару Протоколы) ұстап алады және файлға талдауға, тастауға жарамды деректер жиынтығын көрсетеді немесе сақтайды. Мұндай желілік трафик анализаторларын иісшілдер деп атайды.

Салыстырмалы қарапайымдылығы мен қарапайым сипатына қарамастан, бұл бағдарламаның көптеген мүмкіндіктері бар. Tcpdump зиянды трафикті анықтауға, рұқсатсыз кіру әрекетін анықтауға, деректердің ықтимал ағып кетуін немесе DDoS шабуылының басталуын анықтауға және т.б. көмектеседі. Бөлек, tcpdump графикалық қабығы жоқ қашықтағы серверлерде іске қосылуы мүмкін екенін ескереміз.

Tcpdump орнату

Tcpdump Бағдарламасы Барлық Негізгі Linux дистрибутивтеріне енгізілген, бұл орнату процесін мүмкіндігінше жеңілдетеді.

Debian / Ubuntu отбасында терминалда пәрменді орындау жеткілікті:

# apt update && apt install tcpdump

CentOS/Fedora жүйесінде орнату пәрмені келесідей көрінеді:

# dnf install tcpdump

tcpdump синтаксисі

Tcpdump пәрменінің жалпы синтаксисі келесідей:

# tcpdump [-i network_interface name] [parameters] [filters]

Ең қарапайым жағдайда, суперпайдаланушының атынан параметрлерсіз tcpdump пәрменін орындау арқылы барлық желілік трафикті ұстауға болады. Алайда, егер біз белгілі бір желілік интерфейс (адаптер) арқылы өтетін пакеттерді талдағымыз келсе,- i опциясын қолдана аламыз. Қол жетімді интерфейстердің атауын «tcpdump-D» пәрменімен табуға болады.:

қосымша-i параметрін өткізіп жіберсеңіз, әдепкі интерфейс пайдаланылады (әдетте, бұл тізімдегі бірінші адаптер). Сондықтан интерфейсті әрқашан нақты көрсеткен дұрыс, мысалы,»tcpdump-i ens3″. Осы пәрменді орындау нәтижесінде біз осындай пішіндегі пакет тақырыптарының тізімін аламыз:

Егер сізге егжей-тегжейлі нәтиже қажет болса, пәрменге-v,- vv немесе-vvv параметрін қосуға болады. Бұл, мысалы, пакеттің қызмет ету мерзімін, идентификаторын, жалпы ұзындығын және басқа параметрлерін алуға мүмкіндік береді.

Басқа пайдалы параметрлер:

-q-ең аз ақпаратты шығару.
—n-хост атаулары мен қызметтерін пайдаланбаңыз. Әдепкі бойынша, tcpdump IP мекенжайларын домендік атауларға, ал порт нөмірлерін қызмет атауларына түрлендіруге (шешуге) тырысады. -nn опциясы портты түрлендіруді де өшіреді. Бұл мүмкіндікті Домендік Атаулар Жүйесіне (DNS) қосымша қоңырауларды жою арқылы желіні жөндеу кезінде желілік трафикті азайту үшін пайдалануға болады.

-a-тарату мекенжайларын домендік атауларға Түрлендіру.
-tttt-күні бар уақыт белгілерінің шығысын пайдаланыңыз (әдепкі Бойынша, Тек Unix уақыт белгісі шығады).
-t-әр жолда уақыт белгісін көрсетпеңіз.
—c-үйіндідегі жолдар жиынын көрсетілген санмен шектеңіз.
-w-нәтижені файлға жазыңыз. Бұл мүмкіндікті кейінірек егжей-тегжейлі талқылаймыз.
-Z-файл атынан жазылып жатқан пайдаланушы (әдепкі бойынша, сақтау tcpdump пайдаланушысының атынан жүзеге асырылады).

Барлық параметрлер туралы tcpdump парағынан ресми құжаттамадан немесе «man tcpdump» пәрменімен анықтама бетіне қоңырау шалу арқылы білуге болады.

Tcpdump көмегімен пакетті түсіру

Бұл скриншотта tcpdump ens3 желілік интерфейсі арқылы өтетін 5 TCP/IP пакетін ұстап алып, әрқайсысын бөлек жолда көрсеткенін көреміз. Түсіру Ctrl+c пернелерін басқанша немесе-c параметрінде көрсетілген жолдар санына жеткенше жалғасатынын ескеріңіз.

Tcpdump шығысын түсіну

Мысалы, tcpdump шығыс жолдарының бірін қарастырайық.:

09:10:56.157002 IP debian.48464 > example.com.http: Flags [S], seq 4254890747, win 64240, options [mss 1460,sackOK,TS val 1993676504 ecr 0,nop,wscale 7], length 0

Бұл жолда біз көреміз:

1.Unix уақыт белгісі — 09: 10: 56.157002 (пакеттің нақты түсірілген уақыты). -Tttt параметрін пайдаланған кезде түсіру күні де көрсетілетінін ескеріңіз.
2.Хаттама IP болып табылады. Осы жолда веб-параққа http сұранысы орындалды. Утилита сонымен қатар, мысалы, udp, icmp, ip6 және т.б. арқылы берілетін пакеттерді шығара алады.
3.Пакет жіберушінің IP мекенжайы немесе хост атауы және порт нөмірі debian болып табылады.48464 (мұнда tcpdump жергілікті IP-мекен-жайды 10.0.2.15-те «debian»атауына ауыстырды).
4.Хост атауы немесе ip мекенжайы және пакет алушының порт нөмірі — firstvds.ru б .http (бұл жағдайда http 80 портына сұрауды білдіреді).
5.TCP жалауы-Бұл Жалаулар [S] (s-SYN үшін қысқа, бұл қосылыстың басталуын білдіреді). Бірнеше жалаулар болуы мүмкін, мысалы [F.] қосылымды жабуды (FIN) және алынған пакетті (dot) растауды білдіреді.
6.Пакеттегі деректердің абсолютті реттік нөмірі seq 4254890747 құрайды.
7.Терезенің өлшемі win 64240 (бұл қабылдау буферіндегі байттардың саны ғана).
8.TCP-параметрлер параметрлері […].
9.Пайдалы жүктің ұзындығы-ұзындығы 0. Пайдалы жүктеме пакетте берілетін деректер болып саналады. Бұл жағдайда қосылымды бастау сұрауы (SYN) орындалатындықтан, пакетте деректер жоқ.
Біздің мысалда веб-параққа сәтті қол жетімділік көрсетілген, пакеттерді жіберуде ешқандай проблемалар жоқ.

Пакеттік сүзу

Жоғарыда келтірілген мысалдарда біз сүзгілерді пайдаланбадық, сондықтан tcpdump таңдалған желілік интерфейс арқылы өткен барлық пакеттердің тақырыптарын көрсетті. Бұл шынымен қоқыс үйіндісіне ұқсайды. Бірақ егер біз қандай нақты ақпарат алғымыз келетінін білсек, қосымша параметрлерді пайдалана отырып, қажетсіз қоқыстардың шығуын оңай тазалай аламыз. Ол үшін утилита ыңғайлы сүзу құралдарын ұсынады.:

Хаттамаға сәйкес. Пәрмендегі протокол атауын көрсету арқылы tcp, udp, icmp, ip, ip6, arp және басқа пакеттерді бөлек бақылауға болады. Мысалы,» tcpdump-i ens3 tcp » тек TCP пакеттерін шығарады.:

IP мекенжайы, хост атауы немесе физикалық (MAC) мекенжайы бойынша. Тек бір хост туралы ақпаратты көрсету үшін оның IP мекенжайын немесе атауын «хост» кілт сөзінен кейін көрсету керек, мысалы, » tcpdump-i ens3 хосты example.com «:

Порт немесе порт ауқымы бойынша. Мысалы, тек 80 портқа (http) келетін пакеттерді ұстап қалу үшін» порт 80 » параметрін қосу керек:

Жіберуші (src) немесе алушы (dst) бойынша. Мысалы, » tcpdump-i ens3 dst example.com «:

Әрине, егер бізге пакетті дәлірек оқшаулау қажет болса, сүзгілерді біріктіруге болады. Логикалық операторлар AND (&&), OR (||) және NOT (!) бұл үшін пайдаланылады.

Мысалы,» tcpdump-i ens3 src 10.0.2.15 және dst порты 80 » тек жергілікті IP мекенжайынан 80 порттағы кез келген хостқа қоңырауларды шығарады.:

Қажет емес протоколдарды, МЫСАЛЫ, ICMP-ді алып тастау үшін» icmp емес » параметрін қосуға болады:

# tcpdump -i ens3 not icmp

Егер сізге сүзгілеудің күрделі ережелері қажет болса, жақшаларды олардың басымдылығын анықтау үшін пайдалануға болады. Қосымша сүзгілерді де пайдалануға болады.:

ішкі желі бойынша сүзуге арналған тор,

пакеттердің көлемін шектеу үшін аз немесе көп және т.б.

Күрделі сүзгілерді құрастыру кезінде алынған өрнекті тырнақшаға алу ұсынылады, мысалы:

# tcpdump -i ens3 "port 80 and (dst 10.0.2.3 or dst 10.0.2.15)"

Tcpdump утилитасы көптеген әртүрлі параметрлерді, сүзгілерді және оларды пайдалану жағдайларын қамтамасыз етеді, біз тек бірнеше негізгі комбинацияларды қарастырдық. Толық анықтаманы tcpdump сүзгілері туралы ресми құжаттамадан оқып шығуды ұсынамыз.

Пакеттің мазмұнын тексеру

Әзірге біз пакеттің тақырыптарын жоғарыдағы скриншоттардан ғана көрдік. Олардың мазмұнын көрсету үшін пәрменге-X (он алтылық пішімдегі шығыс) немесе-A (ASCII пішіміндегі) параметрін қосыңыз, мысалы, «tcpdump-i ens3-a src example.com және порт 80»:

Қауіпсіз қосылым (https) пакетінің мазмұнын осылайша талдай алмайтыныңызды ескеріңіз. Бұл мысалда хост қауіпсіз мекен-жайға (Орналасқан жеріне) қайта жіберу (301 Тұрақты Жылжытылған) арқылы 80 портқа қауіпті сұрауға жауап береді: https://example.com /).

Файлға сақтау

Tcpdump пәрменімен алынған деректерді екілік файлға форматта сақтауға болады .пәрменге-w параметрін қосу арқылы кейінгі талдау үшін pcap:

# tcpdump -i <interface> -c <number of lines> -w <file path .pcap>

Бұл, мысалы, кесте бойынша, түнде немесе терминал болмаған кезде ақпаратты жазу үшін ыңғайлы болуы мүмкін.

Пайдалану мысалы

et шағын қауіпсіздік аудитін жүргізеді Және терминал әлі қол жетімді болмаған кезде Linux сервері қосылғаннан кейін бірден қандай желілік ресурстарға қол жеткізетінін анықтайды. Әрине, желілік трафикті жергілікті желідегі бөлек түйінге орнатылған снайфердің көмегімен көруге болады. Бірақ бұл үшін, біріншіден, мұндай түйіннің болуы, екіншіден, қосылымды қайта бағыттауды (прокси) конфигурациялау қажет. Мұны импровизацияланған құралдармен жасау әрдайым оңай бола бермейді, tcpdump мәселені шешуді едәуір жеңілдетеді.

Зерттеу үшін Бірнеше танымал Linux дистрибутивтерін алайық: Debian/Ubuntu, CentOS/Fedora және AlmaLinux. Әрбір операциялық жүйеде біз ең аз орнатуды орындаймыз және барлық қажетсіз қызметтерді және автоматты жаңартуларды өшіреміз.

Желілік интерфейсті қосқаннан кейін tcpdump пәрменін автоматты түрде іске қосу үшін /etc/systemd/system/tcp-dump.service қызмет файлын жасаңыз.осындай мазмұндағы қызмет (блок) :

[Unit]
Description=TCP dump
Requires=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/bin/tcpdump -i ens3 -c 1000 -w /tmp/tcpdump.pcap
[Install]
WantedBy=multi-user.target

Қызметтік файлдармен жұмыс істеу үшін суперпайдаланушы (түбірлік) құқықтары қажет екенін ескеріңіз.

Сондай-ақ, tcpdump орындалатын файлына апаратын жол әр түрлі болуы мүмкін екенін ескерген жөн, бұл нүктені» қай tcpdump » пәрменімен тексерген дұрыс:

Файлды сақтағаннан кейін қызметті systemctl enable tcp-dump арқылы іске қосыңыз.қызмет пәрмені және жүйені қайта жүктеңіз. Енді сіз алынған tcpdump шифрын шеше аласыз.pcap файлы-r параметрімен бірдей tcpdump көмегімен немесе Wireshark GUI көмегімен иіскегіште. Нәтижелерді қарастырайық (қысқалығы үшін қайталанатын мекенжайлар нәтижеден шығарылады).

1. Debian

МҰНДА БІЗ IGMP (Internet Group Management Protocol, Internet Group Management Protocol), mDNS (Multicast DNS, Multicast DNS protocol), UDP (User Datagram Protocol, User datagram Protocol) және сыртқы NTP (Желілік Уақыт Протоколы) арқылы желілік түйіндерге техникалық қоңырауларды көреміз., Желілік Уақыт Протоколы) сұрауы.

2. Fedora

Жалпы алғанда, қызметтер жиынтығы шамамен бірдей, бірақ жүйе орналасқан жерді анықтауды қосымша орындайтынын ескеріңіз (геолокация қызметін сұрау арқылы beacondb.net ), сонымен қатар әртүрлі елдерде ОРНАЛАСҚАН NTP серверлеріне көбірек сұраулар жасайды.

3. AlmaLinux

AlmaLinux негізделген тарату Болып табылады Red Hat Enterprise Linux (RHEL) Қолдауды тоқтатуға жауап ретінде CentOS тарату Арқылы Қызыл Қалпақ. Көріп отырғаныңыздай, бұл операциялық жүйе әлдеқайда қарапайым әрекет етеді және сыртқы сұраныстарды тек аймақтық желілік ресурстарға орындайды.

Деректердің құпиялылығы тұрғысынан серверлерге немесе жұмыс станцияларына шетелдік желілік қызметтерге хабарласу трафик аудитін жүргізудің және аппараттық құралдардың параметрлерін тексерудің себептерінің бірі болып табылатынын атап өткен жөн.

Әрине, tcpdump мүмкіндіктері мұндай қарапайым мысалдармен шектелмейді. Бұл бағдарламаның көмегімен сіз пошта және вирус трафигін бақылай аласыз, «ақ» сұрауларды кибершабуылдардан ажырата аласыз және басқа да көптеген пайдалы әрекеттерді орындай аласыз.