Пинг (ICMP echo-request) – простой способ проверить, отвечает ли хост. На VPS и серверах за firewall его часто отключают: меньше шума от сканеров, меньше лишних ответов наружу. Ниже – рабочие способы в Linux через iptables, sysctl и ufw, плюс как вернуть пинг обратно.
Зачем отключать ICMP echo
Отключение пинга – не панацея от взлома. Сервисы на 22/80/443 по-прежнему видны, если порты открыты. Имеет смысл как один из слоёв hardening:
- сканеры и боты реже отмечают хост как «живой» по ICMP;
- меньше фонового ICMP-шума в логах и на слабом канале;
- на части политик безопасности «молчание» на echo – требование чеклиста.
Минус: сложнее диагностировать сеть «снаружи» (traceroute/ping от коллег, мониторинг по ICMP). Если мониторинг ходит именно пингом – сначала переведите проверки на HTTP/TCP, потом режьте echo.
Способ 1: iptables
Правило в INPUT: дропаем входящие echo-request.
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
Проверка правил:
sudo iptables -L -v -n
Чтобы правило пережило reboot на Debian/Ubuntu:
sudo apt install iptables-persistent sudo netfilter-persistent save
На nftables-стеке (современный Ubuntu) iptables часто frontend к nft. Если используете чистый nftables – лучше писать аналог в nft. Если firewall уже через ufw или firewalld – не смешивайте ручные iptables-правила без понимания, кто главный.
Способ 2: sysctl (уровень ядра)
Ядро может игнорировать все ICMP echo без правил firewall:
sudo sysctl -w net.ipv4.icmp_echo_ignore_all=1
Постоянно – строка в /etc/sysctl.conf или drop-in в /etc/sysctl.d/:
echo "net.ipv4.icmp_echo_ignore_all=1" | sudo tee /etc/sysctl.d/99-disable-ping.conf sudo sysctl --system
Либо классика через /etc/sysctl.conf и sudo sysctl -p. Параметр действует на IPv4. Для IPv6 смотрите отдельные настройки и firewall (icmpv6 type 128/129).
Способ 3: ufw
UFW по умолчанию пропускает часть ICMP через before.rules. Правило DROP нужно вставить в /etc/ufw/before.rules до секции # End required lines (в блок ufw-before-input):
sudo nano /etc/ufw/before.rules
Добавьте строку:
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
Перезагрузка правил ufw:
sudo ufw reload
Если reload не подхватил before.rules как ожидаете – sudo ufw disable && sudo ufw enable (учтите краткий разрыв политик; на удалённом SSH будьте осторожны).
Как снова включить пинг
iptables – удалить то же правило (флаг -D):
sudo iptables -D INPUT -p icmp --icmp-type echo-request -j DROP sudo netfilter-persistent save
sysctl:
sudo sysctl -w net.ipv4.icmp_echo_ignore_all=0
И уберите или закомментируйте строку в sysctl.conf / удалите drop-in, затем sudo sysctl --system.
ufw – удалите добавленную строку из /etc/ufw/before.rules и выполните sudo ufw reload.
Что выбрать
- sysctl – быстро и просто, если firewall не трогаете;
- iptables/nft – когда политика уже в netfilter и нужен точечный DROP;
- ufw – если весь firewall ведёте через ufw, держите правило там, а не параллельно в iptables.
Не дублируйте одно и то же тремя способами без нужды: потом сложнее понять, почему пинг «не оживает». Один выбранный слой и проверка с внешней машины: ping -c 3 IP.
Кратко
Отключить ответ на ping в Linux можно через DROP ICMP echo в firewall или через net.ipv4.icmp_echo_ignore_all=1. Сохраняйте правила после reboot, не ломайте мониторинг и помните: закрытый пинг не заменяет закрытые порты и обновления.

