ICMP (от англ. Internet Control Message Protocol) — сетевой протокол, используемый для передачи сообщений об ошибках и других сетевых событиях, диагностики и управления сетевыми соединениями. Блокировка ICMP-запросов, особенно Echo Request (эхо-запросов), может быть полезной по нескольким причинам:
- Злоумышленники используют протокол ICMP для сканирования сети и обнаружения активных хостов. Блокировка эхо-запросов затрудняет этот процесс.
- Защита от DDoS-атак. Сетевой протокол ICMP активно применяется для проведения распределенных атак отказа в обслуживании (DDoS), таких как Ping Flood.
В этой статье мы покажем три способа блокировки входящих ICMP-запросов в Linux.
Содержание:
- Написание правил iptables
- Использование брандмауэра UFW
- Игнорирование ICMP-запросов с помощью sysctl
- Выводы
Написание правил iptables
Утилита iptables
позволяет системным администраторам настраивать политики контроля входящего и исходящего сетевого трафика в ОС Linux. С ее помощью также можно ограничивать работу сетевых протоколов. Управление трафиком с помощью iptables
осуществляется путем написания правил.
Чтобы заблокировать все входящие на ПК ICMP-запросы, примените следующую команду:
Вы можете убедиться, что правило было создано. Для этого посмотрите содержимое таблицы iptables
:
Читайте также: 27 полезных советов по iptables для администратора Linux.
Также попробуйте отправить ICMP-запросы Echo Request на свой хост с помощью команды ping
:
На скриншоте выше показано, что все пакеты были потеряны, значит созданное правило работает.
Важно: блокировка всего ICMP-трафика может нарушить диагностику и связь в сети. Поэтому Вы можете запретить ОС отвечать только на запросы Echo Request. Для этого используйте следующую команду:
Другие ICMP-запросы будут по-прежнему разрешены, если они не заблокированы правилами.
Использование брандмауэра UFW
UFW (от англ. Uncomplicated Firewall) — программа для управления правилами брандмауэра в Linux. Ее разработали для упрощения процесса настройки межсетевого экрана. Она позволяет пользователям разрешать, запрещать или ограничивать доступ к службам на основе IP-адреса, порта или протокола.
Читайте также: Лучшие 25 команд брандмауэра UFW, которые должен знать каждый администратор Linux.
Чтобы заблокировать входящие ICMP-запросы Echo Request с помощью UFW, нужно отредактировать системный файл /etc/ufw/before.rules
. А именно — следует найти раздел, который начинается с комментария # ok icmp codes for INPUT
, и добавить в его начало следующее правило:
Затем сохраните и закройте файл. Напоследок перезагрузите программу UFW, выполнив в терминале:
Также рекомендуем проверить, что написанное правило вступило в силу. Для этого отправьте эхо-запросы на свой хост:
Игнорирование ICMP-запросов с помощью sysctl
Утилита sysctl
— инструмент системного администрирования, предназначенный для взаимодействия с параметрами ядра Linux. Главной особенностью этой команды является то, что изменения значений параметров ядра вступают в силу немедленно и Вы можете сохранять их как временно, так и на постоянной основе.
За управление эхо-запросами на уровне ядра отвечает параметр net.ipv4.icmp_echo_ignore_all
. Если его значение равняется:
0
, то операционная система будет отвечать на ICMP Echo Request;1
, то ОС будет игнорировать эхо-запросы.
Узнать значение параметра net.ipv4.icmp_echo_ignore_all
можно с помощью следующей команды:
Чтобы временно установить значение этого параметра на 1
, выполните в терминале:
Читайте также: Как узнать параметры ядра Linux для текущей загруженной ОС.
Внесенное изменение будет действовать только в текущем сеансе работы операционной системы. Чтобы значение 1
параметра net.ipv4.icmp_echo_ignore_all
стало постоянным, добавьте следующую строку в файл /etc/sysctl.conf
:
Чтобы настройка вступила в силу немедленно, примените команду sysctl
с опцией -p
:
Убедитесь, что операционная система не отвечает на эхо-запросы, отправив их на свой хост:
Выводы
Игнорирование ICMP-запросов помогает значительно улучшить безопасность компьютера, предотвращая потенциальные кибератаки. Теперь Вы знаете, как использовать утилиты iptables
, UFW и sysctl
для блокирования входящих эхо-запросов в ОС Linux.
Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
4 комментария. Оставить новый
Имеет место быть ошибка. Приведенная команда как бы удаляет правило:
firewall-cmd —zone=public —remove-icmp-block={echo-request,echo-reply,timestamp-reply,timestamp-request} —permanent
должно быть —add-icmp-block
Тут зависит от того что у вас по умолчанию в файерволе, обычно в конце стоит неявный запрет. Поэтому remove-icmp-block удалит разрешение, а так как у умолчанию все запрещено то пинга не будет.
Если у вас по умолчанию все разрешено всем, тогда я согласен нужно ставить правило add-icmp-block. Но лучше все запрещать по умолчанию, а то фиг его знает какой там трафик бегает, а так то что разрешил — то и бегает.
Странно, но после добавления правила -A ufw-before-input -p icmp —icmp-type echo-request -j DROP доступ к серверу по ssh пропадет(
добавьте пожалуйста как включить потом PING, если вдруг понадобится