Закрыть ping

Если нужно, чтобы сервер перестал отвечать на ICMP ping-запросы, есть несколько вариантов.

Отключаем на уровне ядра через sysctl:

Открываем файл:

nano /etc/sysctl.conf

Добавляем строку:

net.ipv4.icmp_echo_ignore_all = 1

Применяем изменения:

sysctl -p

Разрешаем пинг только для определенных IP через nftables:

Открываем конфиг:

nano /etc/nftables.conf

Добавляем:

table inet filter {
    chain input {
        type filter hook input priority 0;

        # Пинг только от 192.168.0.1
        ip saddr 192.168.0.1 icmp type echo-request accept

        # Блокируем пинг от всех
        icmp type echo-request drop

        # счетчик пакетов для диагностики если нужно
        counter
    }

    chain forward {
        type filter hook forward priority 0;
    }

    chain output {
        type filter hook output priority 0;
    }
}

Если у вас в конфигурации есть policy drop, то не забудьте разрешить остальные нужные порты, например:

tcp dport { 80, 443 } accept

Применяем конфигурацию:

nft -f /etc/nftables.conf
systemctl restart nftables

Чтобы настройки сохранялись после перезагрузки (если включены counter, то добавляем -s):

nft -s list ruleset > /etc/nftables.conf
systemctl enable nftables
systemctl restart nftables
systemctl status nftables

Проверка правил:

nft list ruleset

Отключение пинга через iptables

Сначала разрешаем пинг для 192.168.0.1, а затем отключаем для всех:

iptables -I INPUT -s 192.168.0.1 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Добавляем разрешение для нужных портов:

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Проверяем правила:

iptables -L -n

Сохраняем и применяем:

iptables-save > /etc/iptables/rules.v4
netfilter-persistent save
netfilter-persistent reload

Перед использованием команд netfilter-persistent убедитесь, что установлен пакет iptables-persistent:

apt install iptables-persistent