Отже, що таке ICMP (англ. Internet Control Message Protocol) — Це мережевий протокол, що входить у стек протоколів TCP/IP. В основному ICMP використовується для передачі повідомлень про помилки та інші ситуації, що виникли при передачі даних, наприклад, запитуваний хост або маршрутизатор не відповідають.

Де це використовується на практиці? Всім вам відомий Ping, що служить для перевірки можливості доставлення IP-пакетів, використовує ICMP-повідомлення з типом 8. Або Traceroute, що відображає шлях проходження IP-пакетів, теж використовує ICMP-повідомлення з типом 11.
Підсумовуючи все вищесказане, виникає логічне запитання, а чим цей протокол, чи точніше буде сказано, використання протоколу таке небезпечне. Хоч деякі IT спеціалісти й скептично відносяться до цього, але все ж таки, існують певні типи атак, які використовують даний протокол, наприклад такі атаки як:
Smurf Attack:
- У цій атаці зловмисники відправляють великий обсяг ICMP Echo Request повідомлень на широкомовну IP-адресу, використовуючи фальшиву адресу, в якості джерела – адресу жертви. Усі пристрої у мережі, що відповідають на ці запити, надсилають відповіді (ICMP Echo Reply) до адреси жертви, збільшуючи трафік на неї та можливість перевантаження.
Ping of Death:
- У цій атаці зловмисники створюють фальшивий або дуже великий ICMP Echo Request пакет, який перевищує максимально допустимий розмір пакета для операційної системи або мережевого пристрою. Призначенням цієї атаки є зависання або відмова в роботі пристрою-жертви через некоректну обробку отриманого пакета.
ICMP Flood:
- У цьому виді атаки зловмисники надсилають велику кількість ICMP Echo Request повідомлень на мережевий пристрій або комп’ютер, щоб перевантажити його мережевий стек або обчислювальні ресурси, що в результаті може призвести до відмови в обслуговуванні.
ICMP Redirect Attack:
- У цій атаці зловмисники надсилають фальшиві ICMP Redirect повідомлення до комп’ютерів у мережі, щоб перемикнути їхні маршрути на вузол, контроль якого перебуває під управлінням зловмисника. Це може призвести до перенаправлення трафіку через контрольовані зловмисниками вузли, де вони можуть здійснювати перехоплення даних або інші види атак.
Яким же чином ми можемо захистити наш маршрутизатор? Тут все відносно просто, ми можемо дозволити тільки певні ICMP запити на наш маршрутизатор, а всі решта, заборонити
ПРИКЛАД ПРАВИЛ:
- /ip firewall filter
- add chain=icmp protocol=icmp icmp-options=0:0 action=accept comment=”echo reply”
- add chain=icmp protocol=icmp icmp-options=3:0 action=accept comment=”net unreachable”
- add chain=icmp protocol=icmp icmp-options=3:1 action=accept comment=”host unreachable”
- add chain=icmp protocol=icmp icmp-options=3:4 action=accept comment=”host unreachable fragmentation required”
- add chain=icmp protocol=icmp icmp-options=8:0 action=accept comment=”allow echo request”
- add chain=icmp protocol=icmp icmp-options=11:0 action=accept comment=”allow time exceed”
- add chain=icmp protocol=icmp icmp-options=12:0 action=accept comment=”allow parameter bad”
- add chain=icmp action=drop comment=”deny all other types”
Ці правила в MikroTik налаштовують фільтрацію ICMP пакетів на маршрутизаторі. Всі ці правила, крім останнього, вказують на те, що пакети даного типу будуть прийняті. Останнє правило забороняє всі ICMP запити, що не дозволені вище.
Чому саме ці типи ми дозволяємо?, тому що ці правила вважаються безпечними або корисними для правильної роботи мережі.
Щоб було більш зрозуміло, давайте по кожному пройдемось:
Echo Reply (0:0):
- Цей тип ICMP пакетів використовується для відповіді на ICMP Echo Request, що є частиною функціонування протоколу.
Destination Network Unreachable (3:0):
- Цей тип пакетів вказує на те, що мережа, до якої намагається звернутися пристрій, недоступна. Дозволяється для обробки помилок в маршрутизації.
Destination Host Unreachable (3:1):
- Цей тип пакетів вказує на те, що конкретний хост у мережі недоступний. Також дозволяється для обробки помилок в маршрутизації.
Host Unreachable – Fragmentation Needed and DF Set (3:4):
- Цей тип пакетів вказує на те, що потрібна фрагментація, але фрагментація заборонена (DF set). Дозволяється для обробки помилок в маршрутизації.
Echo Request (8:0):
- Цей тип ICMP пакетів використовується для запиту Echo, який часто використовується для діагностики мережі.
Time Exceeded (11:0):
- Цей тип пакетів вказує на те, що TTL (Time To Live) для пакета досягнув нуля. Використовується для виявлення проблем з маршрутизацією.
Parameter Problem (12:0):
- Цей тип пакетів вказує на те, що в IP заголовку пакета є помилки параметрів. Це може включати неправильну довжину заголовка або неправильні параметри.
Відкидання (DROP) всіх інших типів ICMP:
- Це загальне правило для відкидання всіх інших типів ICMP пакетів, які не відповідають ні одному з вищезазначених правил.
Отже, ці правила дозволяють лише певні типи ICMP пакетів, які є важливими для коректної роботи мережі та діагностики проблем, тоді як інші типи пакетів відкидаються для забезпечення безпеки мережі.
Налаштування ICMP MikroTik правил через WinBox
- Відкрийте WinBox, та під’єднайтеся до вашого маршрутизатора MikroTik.
- Перейдіть до меню IP → Firewall.
- Виберіть вкладку Filter Rules.
- Для створення нового правила натисніть кнопку Add (+).
- Для кожного правила ICMP налаштуйте:
Вкладка General:
- У полі Chain виберіть input
- У полі Protocol виберіть ICMP
Вкладка Advanced:
- У полі ICMP Options вкажіть відповідний тип та код
Вкладка Action:
- У полі Action виберіть accept для дозволених типів.
Для останнього правила (блокування всіх інших типів ICMP):
- У полі Chain input
- У полі Protocol ICMP
- У полі Action виберіть drop
- Додайте коментар “deny all other types“
Модифікація правил за допомогою лімітів
Щоб захистити маршрутизатор від потенційних DDoS-атак та надмірного навантаження, можна додати ліміти до дозволених ICMP-пакетів. Це обмежить кількість ICMP-запитів, які можуть бути оброблені за певний період часу.
Приклад налаштування лімітів у WinBox:
- Під час створення або редагування правила перейдіть на вкладку Extra.
- У розділі Limit налаштуйте:
- Count: максимальна кількість пакетів (Наприклад 10)
- Time: часовий інтервал (Наприклад 10 секунд)
- Burst: допустимі сплески трафіку
Приклад ICMP правил з лімітами:
- /ip firewall filter
- add chain=icmp protocol=icmp icmp-options=8:0 action=accept limit=5,10s comment=”allow echo request with rate limiting”
- add chain=icmp protocol=icmp icmp-options=0:0 action=accept limit=10,10s comment=”echo reply with rate limiting”
- add chain=icmp protocol=icmp icmp-options=3:0 action=accept limit=3,10s comment=”net unreachable with rate limiting”
- add chain=icmp protocol=icmp icmp-options=3:1 action=accept limit=3,10s comment=”host unreachable with rate limiting”
- add chain=icmp protocol=icmp icmp-options=3:4 action=accept limit=3,10s comment=”host unreachable fragmentation required with rate limiting”
- add chain=icmp protocol=icmp icmp-options=11:0 action=accept limit=3,10s comment=”allow time exceed with rate limiting”
- add chain=icmp protocol=icmp icmp-options=12:0 action=accept limit=3,10s comment=”allow parameter bad with rate limiting”
- add chain=icmp action=drop comment=”deny all other types”
У наведеному прикладі:
- Для Echo Request (ping) обмеження встановлено на 5 пакетів за 10 секунд
- Для Echo Reply обмеження встановлено на 10 пакетів за 10 секунд
- Для помилок маршрутизації обмеження встановлено на 3 пакети за 10 секунд
Використання лімітів дозволяє забезпечити додатковий рівень захисту маршрутизатора від атак типу ICMP flood, при цьому зберігаючи необхідну функціональність для діагностики мережі та обробки помилок маршрутизації.
Думаю у багатьох з вас виникло питання, що таке ті типи пакетів ICMP? Розберімось детально, що значить тип ICMP пакетів. В протоколі ICMP існує ієрархічна структура повідомлень, яка містити типи та підтипи. Розгляньмо ці терміни ближче:
Тип ICMP (ICMP Type):
- вказує на загальну категорію повідомлення. Це перший байт в ICMP-пакеті.
Підтип ICMP (ICMP Code або Subtype):
- деталізує конкретний тип повідомлення. Це другий байт в ICMP-пакеті.
Тип і підтип разом ідентифікують конкретний тип ICMP-повідомлення і допомагають системам та маршрутизаторам правильно обробляти ці повідомлення. Комбінація типу та підтипу визначає, який вид дії потрібно виконати з цим повідомленням.
Таким чином, в правилах фільтрації ICMP цифри відокремлені двокрапкою (“3:4”), щоб визначити конкретний тип та підтип ICMP повідомлення, які потрібно обробляти за цим правилом.
- Детальний список типів ICMP – https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml
- Посилання на документацію Mikrotik – https://help.mikrotik.com/docs/spaces/ROS/pages/48660574/Filter
- Посилання на відео в YouTube – https://youtu.be/WGKF9zIP9ZA




