Що таке ICMP?

Що таке ICMP

Що таке ICMP?

ICMP (Internet Control Message Protocol) – це протокол, який мережеві пристрої (наприклад, маршрутизатори) використовують для генерування повідомлень про помилки, коли мережеві проблеми не дозволяють IP-пакетам проникати через.

Протокол повідомлень про Інтернет-контроль є однією з основних систем, що змушують Інтернет працювати. Хоча ви, можливо, не чули про ICMP, напевно, ви чули про одну з його особливостей: Ping. У цьому посібнику ви дізнаєтесь більше про цей важливий протокол.

Історія ICMP

ICMP є частиною проекту TCP / IP стек протоколів. Він розміщений у с Інтернет-шар і це стандарт повідомлення про помилку, який підтримує основний Інтернет-протокол. Оригінальне визначення ICMP написав Джон Постель, один із засновників Інтернету. Перший стандарт був опублікований у квітні 1981 р. У RFC 777. З тих пір оновлено кілька разів. Стабільне визначення протоколу міститься в RFC 792, який також написав Postel і був опублікований журналом Завдання Інтернет-інженерії у вересні 1981 року.

Мета ICMP

Хоча нижчий рівень Інтернет-шару не повинен стосуватися забезпечення підключення, ICMP дає трохи відгуків про комунікації, коли справи йдуть не так. Отже, навіть якщо ви використовуєте UDP, який має a без зв’язку Модель зв’язку, досі можна з’ясувати, чому передача не вдалася. Усі пристрої, підключені до мережі, можуть обробляти ICMP-повідомлення, включаючи маршрутизатори та пристрої кінцевих точок. ICMP адаптований, щоб він міг працювати з IPv6 так само ретельно, як він обслуговував IPv4.

Оскільки цей протокол знаходиться на Інтернет-шарі, його повідомлення несуть IP-пакети і так існують на більш високому рівні, ніж діючі структури комутаторів. Хоча ICMP знаходиться в пакеті IP, він не існує всередині пакетів, що несуть дані. Пакет ICMP генерується лише у відповідь на вхідний пакет даних, коли передача цього вхідного повідомлення не вдається. Умови помилки, які провокують пакет ICMP, часто є результатом даних, що містяться в заголовку IP невдалого пакету.

Структура пакетів ICMP

Коли маршрутизатор повертає назад пакет ICMP, щоб повідомити про помилку, він відтворює всі поля в початковому IP-заголовку пакета, про який він повідомляє. Отже, програма збору помилок на оригінальному комп’ютері, що відправляє, могла би проаналізувати заголовок і точно визначити, який із IP-пакетів, які він надсилав, не вдався.

Після заголовка IP, приходить три польових заголовка ICMP. Вони містять код, який класифікує помилку, поле під кодом, яке уточнює опис коду помилки, а потім контрольну суму. Після поля ICMP з’являються перші вісім байтів корисного навантаження заголовок транспортного шару (TCP або UDP).

Коди повідомлень ICMP

Перше кодове поле в блоці ICMP містить деяку дуже корисну інформацію. Код є числовим, і ось деякі цікавіші значення, які може мати поле:

0: відповідь ехо – використовується для ping

3: пункт недоступного

4: гасіння джерела – маршрутизатор перевантажений

5: переадресація – використовуйте інший роутер

8: запит ехо – використовується для ping

9: відповідь на рекламу маршрутизатора

10: прохання маршрутизатора

11: перевищено час – використовується для слідування

Час жити

Одним із полів заголовка IP, яке є найбільш відомим для спровокування помилки, що генерує ICMP, є Час жити поле (TTL). Це поле містить число, яке виражає максимальна кількість маршрутизаторів, через які може пройти пакет. Ця кількість зменшується на одиницю, кожен маршрутизатор, який обробляє пакет. Якщо маршрутизатор отримує пакет з нульовою TTL, він скидає цей пакет і відправляє повідомлення ICMP назад на ініціатор цієї невдалої передачі.

У випадку вичерпання TTL причина того, що пакет не досяг свого призначення, не має нічого спільного з проблемами маршрутизатора або неправильними даними в заголовку пакета. TTL – це конструкція, яка була створена для запобігання засміченню пакетів, що засмічують Інтернет коли помилки таблиці маршрутизатора призводили до кругових шляхів. Однак побічний продукт цього поля є дуже корисним інструментом адміністрування мережі: Слідуйте.

Дивись також:  Огляд інструментів Traceroute SolarWinds

Простежте за допомогою ICMP

Traceroute – це добре відомий інструмент мережевого адміністрування, який показує типовий шлях від запуску комп’ютера до вказаної IP-адреси призначення. Утиліта надсилає ряд порожніх IP-пакетів. Важливою особливістю кожної з цих передач є значення TTL в заголовку IP.

Програма Traceroute починає відправляти пакет із a TTL 0. Це скине перший маршрутизатор, який його отримує, а це, як правило, мережевий шлюз. Цей маршрутизатор відправляє назад пакет ICMP. Єдині відомості, які Traceroute хоче від цієї відповіді, – це час, необхідний для повернення, та адресу джерела пакету. Це повідомляє Traceroute адресу першого маршрутизатора на шляху до пункту призначення. Потім програма надсилає пакет з TTL 1. Це потрапляє через шлюз, який зменшує TTL на 1. Маршрутизатор, який отримує пакет, бачить, що TTL дорівнює нулю, скидає пакет і відправляє назад пакет ICMP. Таким чином, виявляється другий маршрутизатор на шляху і Traceroute відзначає час, необхідний для отримання відповіді. Збільшуючи TTL на 1 з кожною передачею, Traceroute врешті-решт створює карту всіх посилань через Інтернет на вказану адресу.

Простежте проблеми

Traceroute – це дуже простий інструмент, який використовує перевагу існуючої адміністративної функції та робить її ефективна та інформативна утиліта з нього. У Traceroute є кілька слабких моментів.

Мережевий адміністратор, ймовірно, скористається утилітою, щоб зрозуміти, чому недавнє з’єднання пройшло так погано – повільно чи не вдалося. Однак, Traceroute не може сказати вам, що сталося в минулому. Він може дати вам лише відгуки про хід поточного маршруту.

Кожен з маршрутизаторів самостійно приймає рішення щодо того, хто з сусідів пропонує найкоротший шлях до IP-адреси призначення на пакеті. Однак це рішення не завжди може бути абсолютно однаковим кожен раз. Якщо маршрутизатор перевантажений або вимкнений, сусідні маршрутизатори незабаром дізнаються про проблему та відрегулюйте свої таблиці маршрутизації, щоб вирішити проблему. Ця змінена інформація про маршрутизацію потрапляє на всі маршрутизатори в Інтернеті, але проблема може бути усунена до того, як всі маршрутизатори дізнаються про неї. Тоді знову відрегульований маршрут поширюється по всьому світу.

Варіант із командою “-j“Дозволяє вказати адреси маршрутизаторів, які ви хочете, щоб Traceroute слідував як шлях. Однак для використання цього засобу вам доведеться вже знаю шлях, який пройшла несправна передача і ви можете отримати цю інформацію лише за допомогою виконання Traceroute точно такого ж шляху.

Тож, якщо ви відчуваєте повільний зв’язок, Команда Traceroute, яку ви видали згодом, може не виявити, що сталося бо до того часу Проблема, яка спричинила затримку, можливо була виправлена, і ваш шлях Traceroute може бути не тим самим, який використовувався повільним з’єднанням.

Інша проблема Traceroute полягає в тому, що він показує цікавий показ шляху, який ваша передача, ймовірно, пройде до певного пункту призначення. Однак, це не дає вам ніяких інструментів, щоб зробити що-небудь із отриманою вами інформацією. Неможливо вказати шлях, і тому, якщо ви бачите, що один з маршрутизаторів в Інтернеті надає повільний час відгуку, все, що ви можете зробити, це знати, який маршрутизатор уповільнює ваші з’єднання. Оскільки цей маршрутизатор не належить до вашої компанії, і ви не можете його прискорити, ви здобули знання через Traceroute, але не можете на нього діяти.

Дивись також: Кращі інструменти для Traceroute

ICMP Ping

Ping використовує два коди ICMP: 8 (ехо-запит) і 0 (ехо відповідь). Коли ви видаєте команду Ping у запиті, програма Ping надсилає пакет ICMP, що містить код 8 у Тип поле. Відповідь матиме: Тип з 0. Програма розраховує розрив між відправленням пакета запитів ехо-сигналу та надходженням відповіді. Отже, ви можете отримати “час туди і назад“Пакета до заданого пункту призначення та назад.

Пакет запиту ехо незвичний тим, що це єдиний пакет ICMP, який надсилається без спровоку на помилку. Отже, Ping не потребує емуляції умови помилки, щоб повернути повідомлення ICMP. У Ping є два варіанти, які дозволяють вказати список адрес для шляху, який має пройти передача. Це “-j“, Який пропонує маршрут та”“, Який диктує маршрут.

Порт ICMP Ping

Ви можете задуматися який порт використовує Ping. Відповідь: жоден. Якщо утиліта дозволяє «пінг» порту, це не буквально команда Ping. Натомість ця утиліта використовує пакет TCP або UDP для тестування порту. По правді кажучи, цей тип функції називають “сканером порту” або “порт-перевірка.”

Ping не може використовувати порти, оскільки це протокол, який існує на нижчому рівні, ніж Транспортний шар, де порти є головною особливістю.

Найближчий доступ до наявного звіту про порт ICMP Ping – це відправити пакет UDP на певний порт. Якщо цей порт не активний, передача спровокує повідомлення ICMP від ​​хоста типу 3 (пункт недоступного) підтип 3 (Порт призначення недоступний). Отже, хоча можливо спровокувати повідомлення ICMP про порт, неможливо використовувати механізм Ping для відправлення пакета ICMP на цей порт, в першу чергу як запит ехо. Якщо ви встановите номер порту на IP-адресу в команді Ping (тобто ping :), команда не запуститься, а поверне синтаксичну помилку.

Шлях

Pathping – це утиліта, яка є вбудований в операційну систему Windows і він доступний у всіх версіях з Windows NT. Ця програма є комбінацією Пінг і Слідуйте, тому він експлуатує три типи повідомлень ICMP. Це тип запиту ехо та відповіді ехо (8 та 0) та перевищений час повідомлення (11).

Як і в Traceroute, і в Ping, можна вказати список адрес для запропонованого шляху в якості параметра для команди і утиліта спробує надіслати пакет до пункту призначення через ці адреси.

Pathping створює відформатований звіт про результати, який показує маршрут та час у обидва кінці до кожного маршрутизатора. Він буде надсилати повторні запити ping кожному маршрутизатору на шляху, а не просто багаторазово звертатися до пункту призначення. Це те, що робить Ping, або просто реєструвати кожен маршрутизатор на шляху один раз, що і робить Traceroute.

Pathping не такий пружний, як Ping або Traceroute. Хоча кожен пристрій в Інтернеті здатний надсилати повідомлення ICMP, не кожен пристрій активує свої функції ICMP. Деякі власники маршрутизаторів та серверів навмисно вимикають функції ICMP як захист від хакерської атаки.

Якщо проміжний маршрутизатор не використовуватиме ICMP, Ping все одно проходить через цей маршрутизатор для перевірки пункту призначення. Якщо Traceroute стикається з маршрутизатором, який не надсилатиме пакети ICMP, він просто переходить до наступного маршрутизатора, представляючи рядок зірочок для некомунікативного маршрутизатора. У тій же ситуації, Pathping закінчує запити на маршрутизаторі, на якому відключена ICMP.

Атака Смурфа

Основна причина того, що деякі власники обладнання відключають можливості ICMP своїх пристроїв, полягає в тому, що система може використовуватися хакерами в якості каналу для атак. Напад Смурфа – один з таких випадків.

Напад Смурфа використовує стратегію відбиття. Він не атакує ціль безпосередньо, але викликає інші комп’ютери та маршрутизатори, щоб надсилати повідомлення жертві. Зловмисник розробляє адресу трансляції, яка використовується в мережі жертви, а потім надсилає ICMP-запит на ехо (Пінг). Кожен пристрій у мережі надішле відклик відповіді на маршрутизатор, на якому розміщена IP-адреса.

Ця атака працює лише у великих мережах. Це ефективно провокує атаку розподіленого відмови в обслуговуванні (DDoS) зсередини мережі, тоді як більшість атак запускаються через віддалені комп’ютери через Інтернет.. Тип атаки можна запобігти, вимкнувши можливості ICMP на маршрутизаторі шлюзу або відфільтрувавши прийняття запитів, що несуть трансляцію IP-адреси мережі на пакети, що надходять у мережу з віддаленого місця.

Пінг повінь

Потоп Ping – це стратегія DDoS, яка переповнює цільовий комп’ютер ICMP-ехо-запити. Деякі реалізації Ping працюють краще, ніж інші. Наприклад, атака є більш ефективною, якщо команда Ping запускається за допомогою “повінь“Варіант. Однак ця опція доступна не для всіх версій Ping – це не допустимий варіант для версії, вбудованої у Windows, наприклад. Той факт, що варіант затоплення не є універсальним, представляє проблеми для хакерів, які хочуть направляти віддалені комп’ютери, заражені вірусом a ботнет програма контролю для надсилання запитів Ping. Оскільки варіант повені зустрічається рідко, ймовірно, що це більшість пристроїв в ботнеті не зможуть запустити атаку.

Ця стратегія нападу мала б більший успіх, якби хакер гарантував, що всі заражені комп’ютери, які використовували спробу запуску атаки, мали варіант затоплення, доступний у їх Ping-реалізаціях. Один із способів забезпечити тестування комп’ютерів перед будь-якою атакою та класифікувати група, яка має правильну форму Пінг, або встановити Ping з підтримкою повені на всіх комп’ютерах, заражених вірусом ботнету.

Найпростіша оборона від повінь Пінг – це вимкнути можливості ICMP на маршрутизаторі. Якщо ви працюєте з веб-сервером, то брандмауер веб-додатків повинен захищати вас від повінь Ping.

Пінг смерті

Ping of Death передбачає надсилання надмірних пакетів запитів ping. Запит матиме велику кількість наповнювача на його кінці в корисному навантаженні. Оскільки дейтаграма занадто довга для передачі, процесор Інтернет-протоколу розбиває рядок на шматки, розміром яких є блок максимальної передачі (MTU) відправника. Одержувач помітить, що це надзвичайно довгий пакет, який був розбитий, і спробуйте щоб зібрати оригінальний довгий пакет перед тим, як надіслати його до призначення програми. Якщо довжина пакета більше байтів, ніж об’єм доступної пам’яті в приймальному комп’ютері, спроба зібрати пакет зашкодить комп’ютер.

Пінг смерті – тепер добре відомий тип атаки і так потужні брандмауери та системи виявлення вторгнень можуть помітити його і заблокувати. Як і будь-який хакерський трюк, про який стає відомо, його ефективність вже не загрожує. Отже, хакери значною мірою відмовилися від стратегії Ping of Death на користь Пінг повінь.

ICMP тунель

Маршрутизатори розглядають лише заголовки пакету ICMP, включаючи заголовок TCP / UDP, який може стояти за даними ICMP. Тому звичайний пакет з великою кількістю даних в ньому буде переданий так само, доки в ньому був розділ ICMP. Це потенційно заднім куточком щоб відвідувачі могли обійти процедури аутентифікації та тарифікації загальнодоступних мереж. Це називається тунель ICMP або тунель Ping.

Неможливо пройти тунель через шлюзи та брандмауери лише за допомогою стандартної утиліти Ping, яку має більшість людей на своїх комп’ютерах. Тунель ICMP повинен був бути запрограмований. Це також можливий шлях в мережу для хакера. На жаль, для мережевих адміністраторів, Є ряд безкоштовних пакетів тунелів ICMP, доступних для завантаження з Інтернету.

Як і у попередніх двох типів атак ICMP, Пінг-тунелі можуть бути заблоковані брандмауерами веб-додатків, системами виявлення вторгнень або просто блокуючи всі дії ICMP на мережевому шлюзі.

Напад Twinge

Twinge – це програма хакерських атак. Він запускається повені ICMP перевантажувати цільовий комп’ютер. Хоча всі запити Ping, які отримує ціль, здаються, надходять із багатьох різних джерел, вони фактично є з одного джерела, кожен із фальшивою IP-адресою джерела у заголовку. Twinge, можливо, є лише перейменованою утилітою Ping із реалізованою опцією “poplava”. Це було б дуже корисним інструментом для ботнет власники завантажуються на свої зомбі-комп’ютери, щоб запустити Пінг-атаки повінь.

По суті, потоп Twinge – це те саме, що і повінь Ping і рішення захисту мережі від нього такі ж, як і для основної категорії DDoS-атаки через ICMP: вимкнути ICMP, встановити брандмауер веб-додатків або стаціонарний брандмауер або встановити систему виявлення вторгнень.

Відкриття MTU шляху

Блок максимальної передачі (MTU) – це налаштування на мережевих пристроях, що диктує найдовша довжина IP-пакетів, які пристрій повинен обробляти. Він виражається в октетів, що є восьмибітовим байтом. Початкова рекомендація MTU щодо Інтернет-протоколу становила 576 октетів. Однак стандарт Ethernet рекомендує 1500 октетів і це стало стандартом для всіх мережевих та інтернет-пристроїв.

Налаштування MTU можна налаштувати на будь-якому маршрутизаторі. Тому, якщо ваші пакети проходять через маршрутизатор з нижчим MTU, кожен буде розділений на два IP-пакети. Це уповільнює доставку ваших переказів, оскільки одержувач повинен повторно зібрати оригінальний пакет, перш ніж він може прогресувати до обробки транспортного шару а потім переходимо до програми призначення.

Також можна вказати в заголовку IP те розщеплення, яке називається “роздробленість”Не слід виконувати на пакеті. У цьому випадку маршрутизатор з MTU, меншою за довжину пакета, скине пакет і потім повідомить про це з повідомленням про помилку ICMP. Це повідомлення про помилку було б типу ICMP 3 (пункт недоступного) підтип 4 (потрібна фрагментація, але встановлено прапор “не фрагмент”).

Спроба виявлення Шляху МТУ долає проблему роздроблених або скинутих пакетів. Якщо ви зможете знайти найнижчу MTU на шляху, який пройде ваша передача, вам просто потрібно встановити свій власний MTU до цього розміру.

Механізм виявлення реалізується за допомогою описаних вище процедур відмов. Пакет IP виходить до місця призначення із завантаженою корисною навантаженням, щоб досягти розміру MTU відправника та “не фрагмент”Встановити прапор Якщо це вирішиться, у вас не виникне жодних проблем із підключенням до пункту призначення, на який ви надіслали тестовий пакет. Якщо передача спровокує помилку ICMP, ви просто спробували тест кілька разів, зменшуючи довжину пакету щоразу. З цим ви врешті-решт надішлете пакет, який пройде, і довжина цього пакета підкаже вам найнижчу MTU на шляху до місця призначення.

У Ping є можливість встановити “не фрагментПрапор. Однак це буде ефективно лише в тому випадку, якщо пакет Ping довший, ніж MTU маршрутизаторів на своєму шляху. Ping не накладає розмір MTU, тож сумнівно, що короткий пакет Ping коли-небудь випаде.

The На базі Linux Пакет IPutils містить трацепт, який здійснить відкриття MTU для вас. На Windows комп’ютери, ви можете перевірити безкоштовну утиліту mturoute.

Світ ICMP

Система ICMP – це дуже простий механізм звітування про збій передачі. Однак це теж є один з найпотужніших наборів інструментів, доступних адміністраторам мережі. Хороша новина в тому ICMP безкоштовний і автоматично доступний на будь-якому пристрої, підключеному до мережі. Погана новина в тому ICMP можуть використовуватися хакерами формувати атаки або навіть проривати з’єднання через брандмауери.

Той факт, що ICMP можна використовувати зловмисно, заохочує безліч адміністраторів мережі, що не мають ризику, щоб вимкнути систему обміну повідомленнями. Це шкода, оскільки він вимикає багато дуже корисних утиліт, які описані в цьому посібнику.

Якщо ви користуєтесь мережею, і особливо якщо у вас є маршрутизатор, який передає інтернет-трафік, розглянути можливість використання безпечних брандмауерів та систем виявлення вторгнень для блокування використання ICMP замість того, щоб повністю вимкнути протокол обміну повідомленнями. Вивчіть параметри та функції вбудованого програмного забезпечення вашого маршрутизатора, щоб дізнатися, чи є у нього процедури розв’язання зловживань ICMP, які дозволять продовжувати працювати з ICMP на пристрої.

Чи використовуєте методи ICMP, щоб перевірити свої з’єднання? Чи є у вас утиліта GUI на основі ICMP, яку ви регулярно використовуєте та можете рекомендувати іншим? Ви вимкнули ICMP на маршрутизаторі, щоб захистити свою мережу? Залиште повідомлення в Коментарі розділ нижче та поділіться своїм досвідом.