Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия | |||
— | icmp [2025/07/06 12:38] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== ICMP ====== | ||
+ | |||
+ | ~~Title: ICMP протокол диагностики перегрузки сети ~~ | ||
+ | {{htmlmetatags> | ||
+ | metatag-keywords=(icmp) | ||
+ | metatag-description=(Не трож фаервол. Не умеешь правильно фильтровать ICMP - не фильтруй вообще! IP фрагментация, | ||
+ | }} | ||
+ | |||
+ | |||
+ | **ICMP** (Internet Control Message Protocol — межсетевой протокол управляющих сообщений). ICMP является протоколом контрольных сообщений [[IPv4]]. Протокол ICMP используется устройствами сети для отправки управляющих сообщений и сообщений об ошибках на компьютеры и серверы. Существует несколько областей применения протокола ICMP, например, | ||
+ | <panel type=" | ||
+ | |||
+ | Правила фаервола, | ||
+ | <file bash> | ||
+ | # Это правило позволит вашему серверу принимать все ICMP-пакеты, | ||
+ | iptables -A INPUT -p icmp -j ACCEPT | ||
+ | |||
+ | # Это правило позволит вашему серверу принимать все ICMPv6-пакеты, | ||
+ | ip6tables -A INPUT -p icmpv6 -j ACCEPT | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Каждое сообщение протокола ICMP передается по сети внутри пакета IP. Пакеты IP с сообщениями ICMP маршрутизируются точно так же, как и любые другие пакеты, | ||
+ | |||
+ | ICMP только сообщает о возникших ошибках отправителю пакета; | ||
+ | |||
+ | Надо отметить, | ||
+ | |||
+ | Почему ограничивают протокол ICMP взаимодействием только с отправителем? | ||
+ | |||
+ | Если маршрутизатор обнаруживает ошибку, | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ===== Коды ICMP ===== | ||
+ | |||
+ | Расшифровка кодов ICMP сообщений: | ||
+ | * echo reply (0) — echo reply (echo-ответ, | ||
+ | * **destination unreachable** (3) — destination unreachable/ | ||
+ | * source quench (4) — source quench (подавление источника, | ||
+ | * redirect (5) — redirect (редирект) | ||
+ | * **echo request** (8) — echo request (echo-запрос, | ||
+ | * router adver-tisement (9) — router advertisement (объявление маршрутизатора) | ||
+ | * router solicitation(10) — router solicitation (ходатайство маршрутизатора) | ||
+ | * time-to-live exceeded (11) — time-to-live exceeded (истечение срока жизни пакета) | ||
+ | * **IP header bad** (12) — IP header bad (неправильный IP заголовок пакета) | ||
+ | * timestamp request (13) — timestamp request (запрос значения счетчика времени) | ||
+ | * timestamp reply (14) — timestamp reply (ответ на запрос значения счетчика времени) | ||
+ | * information request (15) — information request (запрос информации) | ||
+ | * information reply (16) — information reply (ответ на запрос информации) | ||
+ | * address mask request (17) — address mask request (запрос маски сети) | ||
+ | * address mask reply (18) — address mask reply (ответ на запрос маски сети) | ||
+ | |||
+ | Ответ на некоторые ICMP-сообщения может привести к разглашению некоторой информации о хосте, в то время как другие — привести к модификации таблицы маршрутизации, | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | ===== PF и ICMP ===== | ||
+ | |||
+ | |||
+ | Разрешение ICMP в [[Packet Filter Firewall (PF)]]. | ||
+ | - Пример< | ||
+ | # Разрешить входящие ICMP ping пакеты. Остальные ICMP относятся к | ||
+ | # TCP/UDP и разрешаются их статами. | ||
+ | # | ||
+ | pass in on $ext_if inet proto icmp to ($ext_if) icmp-type echoreq code 0 | ||
+ | </ | ||
+ | - Пример< | ||
+ | pass in log quick inet proto icmp from any to $AllIFs \ | ||
+ | icmp-type 8 keep state</ | ||
+ | * ICMP Echo Requests: the ICMP packet type used by ping< | ||
+ | icmp_types=" | ||
+ | |||
+ | pass in inet proto icmp all icmp-type $icmp_types keep state | ||
+ | </ | ||
+ | |||
+ | ===== ipfw и ICMP ===== | ||
+ | |||
+ | <code bash> | ||
+ | ${fwcmd} add 00300 allow icmp from any to внешний_IP in via внешний_интерфейс icmptype 0,3,4,11,12 | ||
+ | ${fwcmd} add 00301 allow icmp from внешний_IP to any out via внешний_интерфейс icmptype 3,8,12 | ||
+ | ${fwcmd} add 00304 allow icmp from внешний_IP to any out via внешний_интерфейс frag | ||
+ | ${fwcmd} add 00305 deny log icmp from any to any in via внешний_интерфейс | ||
+ | </ | ||
+ | ===== iptables и ICMP ===== | ||
+ | |||
+ | Правила для [[iptables]]. Список возможных типов выводится по команде< | ||
+ | # iptables -p icmp -h | ||
+ | |||
+ | Valid ICMP Types: | ||
+ | any | ||
+ | echo-reply (pong) | ||
+ | destination-unreachable | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | source-quench | ||
+ | redirect | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | echo-request (ping) | ||
+ | router-advertisement | ||
+ | router-solicitation | ||
+ | time-exceeded (ttl-exceeded) | ||
+ | | ||
+ | | ||
+ | parameter-problem | ||
+ | | ||
+ | | ||
+ | timestamp-request | ||
+ | timestamp-reply | ||
+ | address-mask-request | ||
+ | address-mask-reply | ||
+ | </ | ||
+ | <file bash> | ||
+ | # iptables -I INPUT -p icmp --icmp-type 8 -j ACCEPT | ||
+ | # iptables -I INPUT -p icmp --icmp-type echo-request -j ACCEPT | ||
+ | </ | ||
+ | Блокирует фрагменты ICMP-пакетов | ||
+ | < | ||
+ | iptables -I INPUT -p icmp -f -j DROP | ||
+ | </ | ||
+ | Рекомендуемые правила для ICMP: | ||
+ | < | ||
+ | #!/bin/sh | ||
+ | |||
+ | IPT="/ | ||
+ | |||
+ | $IPT -A INPUT -p icmp --icmp-type 3 -j ACCEPT # destination-unreachable 3/4 | ||
+ | $IPT -A INPUT -p icmp --icmp-type 8 -j ACCEPT # echo request | ||
+ | $IPT -A INPUT -p icmp --icmp-type 12 -j ACCEPT # IP header bad | ||
+ | $IPT -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT # | ||
+ | $IPT -A OUTPUT -p icmp --icmp-type 3 -j ACCEPT # | ||
+ | $IPT -A OUTPUT -p icmp --icmp-type 4 -j ACCEPT # | ||
+ | $IPT -A OUTPUT -p icmp --icmp-type 11 -j ACCEPT # | ||
+ | $IPT -A OUTPUT -p icmp --icmp-type 12 -j ACCEPT # | ||
+ | </ | ||
+ | * опция --reject-with | ||
+ | В отличие от цели DROP, где пакет просто отбрасывается, | ||
+ | |||
+ | < | ||
+ | # iptables -A INPUT -s 1.2.3.4 -j REJECT --reject-with icmp-net-unreachable | ||
+ | </ | ||
+ | |||
+ | У опции --reject-with есть следующие аргументы:< | ||
+ | icmp-net-unreachable — сеть недоступна; | ||
+ | icmp-host-unreachable — узел недоступен; | ||
+ | icmp-port-unreachable — порт недоступен; | ||
+ | icmp-proto-unreahable — неподдерживаемый протокол; | ||
+ | icmp-net-prohibited — сеть запрещена; | ||
+ | icmp-host-prohibited — узел запрещен. | ||
+ | </ | ||
+ | Вышеперечисленные аргументы являются ICMP error messages.В дополнение к опции --reject-with TCP-пакеты можно отклонить с помощью аргумента tcp-reset, который отправляет RST-сообщения отправителю. Это наилучший с точки зрения безопасности способ, | ||
+ | |||
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга