Какво е 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: ехо отговор – използва се за пинг
3: дестинация недостъпна
4: източване на източника – рутерът е претоварен
5: пренасочване – използвайте различен рутер
8: заявка за ехо – използва се за ping
9: отговор на рутера реклама
10: искане на рутер
11: Време е надвишено – използва се за проследяване
Време е за живот
Едно от IP заглавните полета, което е най-известно за предизвикване на генериране на ICMP грешка, е Време е за живот поле (TTL). Това поле съдържа число, което изразява максималният брой рутери, през които може да премине пакетът. Този брой се намалява с един, от всеки рутер, който обработва пакета. Ако маршрутизатор получи пакет с нула TTL, той изпуска този пакет и изпраща обратно ICMP съобщение до инициатора на това неуспешно предаване.
В случай на изчерпване на TTL, причината пакетът да не успее да достигне местоназначението си няма нищо общо с проблеми с рутера или с неправилни данни в заглавката на пакета. TTL е конструкция, която е създадена, за да предотврати нечестиви пакети, запушващи интернет когато грешките в таблицата на рутера доведоха до кръгови пътеки. Въпреки това, страничен продукт от това поле е много полезен инструмент за администриране на мрежата: Traceroute.
Вижте също: SolarWinds Traceroute Tools преглед
Проследявайте с 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 адрес на пакет. Това решение обаче не винаги може да бъде абсолютно едно и също. Ако рутер се претовари или изключи, съседните рутери скоро ще разберат за проблема и коригирайте техните таблици за маршрутизиране, за да заобиколите проблема. Тази променена информация за маршрутизиране се изчерпва до всички рутери в интернет, но проблемът може да бъде отстранен, преди всички рутери да разберат за него. Тогава пренастроеният маршрут се разпространява по целия свят.
Опция с командата „-к”Ви позволява да укажете адресите на рутерите, които искате Traceroute да следва като път. За да използвате това съоръжение обаче, ще трябва вече знам пътя, който пое погрешно предаване и можете да извлечете тази информация само с изпълнение на Traceroute на абсолютно същия път.
Така че, ако имате бавна връзка, командата Traceroute, която впоследствие издавате, може да не разкрие какво се е случило защото дотогава Проблемът, който предизвика забавянето, може да е отстранен и пътят ви Traceroute може да не е същия път, който използва бавната връзка.
Друг проблем на Traceroute е, че той дава интересен дисплей по пътя, който вероятно вашето предаване ще поеме към дадена дестинация. въпреки това, не ви дава никакви инструменти, за да направите каквото и да било с информацията, която получавате. Не е възможно да посочите път и така, ако видите, че един от маршрутизаторите в интернет дава бавно време за реакция, всичко, което можете да направите, е да знаете кой маршрутизатор забавя вашите връзки. Тъй като този рутер не принадлежи на вашата компания и не можете да го ускорите, сте придобили знания чрез Traceroute, но не можете да действате по него.
Вижте също: Най-добри инструменти за Traceroute
ICMP Ping
Ping използва два ICMP кода: 8 (искане за ехо) и 0 (ехо отговор). Когато издадете командата Ping при подкана, програмата Ping изпраща пакет ICMP, съдържащ код 8 в Тип област. Отговорът ще има а Тип от 0. Програмата удължава разликата между изпращане на пакета за ехо и пристигането на отговора. Така че можете да получите „време за обратно пътуване”На пакет до дадената дестинация и обратно.
Пакетът за ехо искане е необичаен с това, че е единственият ICMP пакет, който се изпраща, без да бъде провокиран от грешка. Така че, Ping не трябва да емулира условие за грешка, за да получи обратно съобщение за ICMP. Ping има две опции, които ви позволяват да укажете списък с адреси за пътя, който трябва да поеме. Това са “-к„, Което предполага маршрут и“-к„, Което диктува маршрута.
ICMP Ping порт
Може би се чудите който порт използва Ping. Отговорът е: нито един. Ако помощна програма ви позволява да “ping” порт, това не е буквално командата Ping. Вместо това тази програма използва TCP или UDP пакет, за да тества порт. В интерес на истината този тип функция се нарича „скенер за порт“ или „порт проверка.”
Ping не може да използва портове, защото това е протокол, който съществува на по-ниско ниво от Транспортен слой, където портовете са основна характеристика.
Най-близкият метод до достъпа на ICMP Ping порта е да изпрати UDP пакет до определен порт. Ако този порт не е активен, предаването ще предизвика ICMP съобщение от хоста от тип 3 (дестинация недостъпна) подтип 3 (дестинация пристанище недостъпно). Така че, въпреки че е възможно да се провокира ICMP съобщение за порт, не е възможно да се използва механизмът Ping, за да се изпрати ICMP пакет до този порт на първо място като заявка за ехо. Ако поставите номер на порт върху IP адреса в Ping команда (т.е. ping :), командата няма да се стартира, но вместо това ще върне синтактична грешка.
Pathping
Pathping е полезна програма, която е вграден в операционната система Windows и се предлага във всички версии от Windows NT. Тази програма е комбинация от Ping и Traceroute, така че експлоатира три типа съобщения ICMP. Това са тип съобщение за ехо и отговор на ехо (8 и 0) и тип на съобщението, надвишено по време (11).
Както с Traceroute, така и с Ping, възможно е да се даде списък на адреси за предложен път като параметър на командата и помощната програма ще се опита да изпрати пакет до местоназначението чрез тези адреси.
Pathping създава форматиран отчет за резултатите, който показва маршрута и времената за обратно пътуване към всеки рутер. Той ще изпраща многократни заявки за ping до всеки рутер в пътя, а не просто многократно да се свързва с дестинацията. Това прави Ping или просто регистрира веднъж всеки рутер в пътя, което прави Traceroute.
Pathping не е толкова издръжлив като Ping или Traceroute. Въпреки че всяко устройство в интернет е в състояние да изпраща ICMP съобщения, не всяко устройство има активирани ICMP функции. Някои собственици на маршрутизатори и сървъри умишлено изключват функциите на ICMP като защита срещу хакерска атака.
Ако един междинен рутер няма да използва ICMP, Ping все още преминава през този рутер, за да тества дестинацията. Ако Traceroute срещне рутер, който няма да изпраща ICMP пакети, той просто преминава към следващия рутер, представяйки линия звездички за некомуникативния рутер. В същата ситуация, Pathping приключва запитванията си на рутера, който е изключен ICMP.
Смърф атака
Основната причина някои собственици на оборудване да изключват възможностите на ICMP на своите устройства е, че системата може да се използва от хакери като канал за атаки. Атаката на Смърф е един такъв случай.
Атаката на Смърф използва стратегия за рефлектор. Той не атакува директно целта, а извиква други компютри и рутери, за да изпраща съобщения до жертвата. Нападателят изработва излъчващия адрес, използван в мрежата на жертвата и след това изпраща ICMP заявка за ехо (Ping). Всяко устройство в мрежата ще изпрати ехов отговор обратно към рутера, който е домакин, който излъчва IP адрес.
Тази атака работи само в големи мрежи. Ефективно провокира атака на разпределено отказано обслужване (DDoS) от мрежата, докато повечето атаки се стартират чрез отдалечени компютри по интернет. Типът на атаката може да бъде предотвратен чрез изключване на възможностите на ICMP на маршрутизатора на шлюза или чрез филтриране на приемането на заявки, носещи излъчващия IP адрес на мрежата на пакети, влизащи в мрежата от отдалечено място.
Ping потоп
Наводнението в Ping е DDoS стратегия, която затрупва целевия компютър с ICMP заявки за ехо. Някои реализации на Ping работят по-добре от други. Например, атаката е по-ефективна, ако командата Ping се стартира с „наводнение”. Тази опция обаче не е налична при всички версии на Ping – не е валидна опция за версията, която е вградена в Windows, например. Фактът, че опцията за наводнение не е универсална, представлява проблеми за хакерите, които искат да насочат отдалечени компютри, заразени с a ботнет контролна програма за изпращане на Ping заявките. Тъй като вариантът за наводнение е рядък, вероятно е това повечето устройства в ботнета няма да могат да стартират атаката.
Тази стратегия за атака би имала по-голям успех, ако хакерът гарантира, че всички заразени компютри използват опит за стартиране на атаката, ако опцията за наводнение е налична в техните Ping реализации. Един от начините да се гарантира това е да се тестват компютрите преди всяка атака и да се категоризират група, която има правилната форма на Ping, или да инсталирате Ping с активиран наводнение на всички компютри, заразени от вируса на ботнет.
Най-простата защита срещу наводнение в Пинг е изключете възможностите на ICMP на рутера. Ако използвате уеб сървър, защитната стена на уеб приложението трябва да ви предпази от наводнения на Ping.
Пинг на смъртта
Ping of Death включва изпращане на прекалено дълги пакети за заявки за ping. Заявката ще съдържа голямо количество пълнител в края на полезния товар. Тъй като дейтаграмата е прекалено дълга за предаване, процесорът на интернет протокол ще раздели низа на парчета, които са с размерите на единицата за максимално предаване на изпращача (MTU). Приемникът ще забележи, че това е допълнително дълъг пакет, който е бил разбит и опитайте за да сглобя първоначалния дълъг пакет преди да го изпратите до приложението на местоназначение. Ако дължината на пакета е повече от байта, отколкото размерът на наличната памет в приемащия компютър, опитът за повторно сглобяване на пакета ще заседне компютъра.
Ping of Death вече е добре познат тип атака и толкова мощни защитни стени и системи за откриване на проникване могат да го забележат и блокират. Както при всеки хакерски трик, който става известен, ефективността му вече не е заплашителна. Така хакерите до голяма степен са отказали стратегията Ping of Death в полза на Ping потоп.
ICMP тунел
Маршрутизаторите разглеждат само заглавките на ICMP пакет, включително TCP / UDP заглавката, която може да стои зад данните на ICMP. Така нормален пакет с много данни в него ще бъде предаван, стига да има ICMP секция в него. Това е потенциално задна врата посетителите да заобиколят процедурите за удостоверяване и таксуване на обществени мрежи. Това се нарича ICMP тунел или Ping тунел.
Не е възможно да се тунели през шлюзи и защитни стени само със стандартната мрежова програма Ping, която повечето хора имат на своите компютри. Трябва да бъде програмиран ICMP тунел. Това също е възможен маршрут в мрежа за хакер. За съжаление за мрежовите администратори, има редица безплатни пакети за тунели на ICMP, достъпни за изтегляне от интернет.
Както и при предишните два типа ICMP атаки, Пинг тунелите могат да бъдат блокирани от защитни стени на уеб приложения, системи за откриване на проникване или просто блокиране на цялата ICMP дейност на мрежовия шлюз.
Twinge атака
Twinge е програма за хакерска атака. Стартира наводнение на ICMP за да затрупате целевия компютър. Въпреки че всички Ping заявки, които получава целта, идват от много различни източници, всички те всъщност са от един и същи източник, всеки с фалшив IP адрес в заглавката. Twinge вероятно е просто преименувана програма Ping с реализирана опция „наводнение“. Това би направило много полезен инструмент за ботнет собствениците да се заредят на своите зомби компютри, за да стартират Ping атаки наводнения.
по същество, наводнението на Twinge е същото като наводнението в Ping и решенията за защита на мрежа от нея са същите като за основната категория DDoS атака чрез ICMP: изключете ICMP, инсталирайте защитна стена на уеб приложение или състоятелна защитна стена или инсталирайте система за откриване на проникване.
Откриване на път MTU
Максималната предавателна единица (MTU) е настройка на съвместими с мрежата устройства, която диктува най-голямата дължина на IP пакетите, които устройството трябва да обработва. Тя се изразява в октета, което е осем битов байт. Първоначалната препоръка на MTU за интернет протокола беше 576 октета. Стандартът Ethernet обаче препоръчва 1500 октета и това се превърна в стандарт за всички мрежови и интернет устройства.
Възможно е да коригирате настройките на MTU на всеки рутер. Така, ако вашите пакети преминават през рутер с по-нисък MTU, всеки ще бъде разделен на два IP пакета. Това забавя доставката на вашите преводи, тъй като първоначалният пакет трябва да бъде сглобен отново от получателя, преди да може да прогресира до обработка на транспортен слой и след това преминете към приложението на местоназначение.
Също така е възможно в IP заглавката да се посочи разделянето, което се нарича „раздробяване”Не трябва да се изпълнява върху пакета. В този случай рутер с MTU, който е по-малък от дължината на пакета, ще изпусне пакета и след това ще докладва с уведомление за грешка в ICMP. Това съобщение за грешка ще бъде от тип ICMP тип 3 (дестинация недостъпна) подтип 4 (необходима е фрагментация, но е зададен флаг „не фрагментирайте“).
Опит за откриване на Path MTU заобикаля проблема с фрагментираните или изпуснати пакети. Ако можете да откриете най-ниската MTU по пътя, който ще поеме вашето предаване, просто трябва да настроите вашия собствен MTU до този размер.
Механизмът за откриване се осъществява чрез описаните по-горе процедури за отказ. IP пакет излиза до дестинация с подплатена полезна стойност, за да достигне размера на MTU на изпращача и „не фрагментирайте”Набор флаг. Ако това стане, не би трябвало да имате проблеми с връзките си до местоназначението, до което сте изпратили тестовия пакет. Ако предаването провокира ICMP грешка, тогава просто ще опитате теста многократно, намалявайки дължината на пакета всеки път. С това в крайна сметка ще изпратите пакет, който преминава, а дължината на този пакет ще ви каже най-ниската MTU по пътя към вашата дестинация.
Ping има опция за задаване на „не фрагментирайте”Знаме. Това обаче ще бъде ефективно само ако пакетът Ping е по-дълъг от MTU на рутерите по своя път. Ping не подрежда вашия MTU размер, така че е съмнително, че кратък пакет Ping някога ще отпадне.
Най- Linux-базирана Пакетът IPutils съдържа трацепт, който ще извърши откриване на MTU за вас. На Windows компютри, можете да проверите безплатната програма mturoute.
ICMP свят
Системата ICMP е много прост механизъм за отчитане на неизправност в предаването. Въпреки това, това също е така един от най-мощните набор от инструменти, достъпни за мрежовите администратори. Добрата новина е това ICMP е безплатен и автоматично достъпна на всяко свързано към мрежата устройство. Лошата новина е това ICMP може да се използва от хакери за формиране на атаки или дори промъкване на връзки чрез защитни стени.
Фактът, че ICMP може да се използва злонамерено, насърчава много администратори, опазващи риска, за да изключат системата за съобщения. Това е жалко, защото деактивира много от много полезните помощни програми, описани в това ръководство.
Ако използвате мрежа и особено ако притежавате рутер, който предава интернет трафик, обмислете да използвате защитни стени и системи за откриване на проникване, за да блокирате злоупотребата с ICMP вместо да изключите напълно протокола за съобщения. Изследвайте настройките и функциите на фърмуера на вашия рутер, за да видите дали има процедури за разрешаване на злоупотреби с ICMP, които ще ви позволят да продължите да работите с ICMP на устройството.
Използвате ли методите на ICMP, за да проверите връзките си? Имате ли основана на ICMP помощна програма за GUI, която използвате редовно и можете да препоръчате на други? Изключихте ли ICMP на вашия рутер, за да защитите вашата мрежа? Оставете съобщение в Коментари раздел по-долу и споделете своя опит.