Firewalld: разрешить только ICMP и SSH с определённого IP

Вопрос или проблема

Я пытаюсь использовать Firewalld для ограничения доступа к/из сервера Linux

Окружение

  • сервер Linux имеет один сетевой интерфейс: ens160

Требования

  • Разрешить доступ только машинам с IP-адресами 192.168.3.0/24 к этому серверу Linux с помощью SSH и ICMP
  • Никакие другие IP-адреса или службы не должны иметь доступ к этому серверу Linux

Сделанные настройки

sudo firewall-cmd --set-default-zone=internal
sudo firewall-cmd --zone=internal --add-interface=ens160 --permanent
sudo firewall-cmd --permanent --zone=internal --add-rich-rule="rule family="ipv4" \
    source address="192.168.3.0/24" service name="ssh" accept"
sudo firewall-cmd --zone=internal --add-icmp-block={echo-request,echo-reply} \
    --permanent
sudo firewall-cmd --permanent --zone=internal --add-rich-rule="rule family="ipv4" \
    source address="192.168.3.0/24" icmp-type name="echo-request" accept"
sudo firewall-cmd --permanent --zone=internal --add-rich-rule="rule family="ipv4" \
    source address="192.168.3.0/24" icmp-type name="echo-reply" accept"

Статус конфигурации

user@server:~$ sudo firewall-cmd --list-all

internal (активно)
  target: default
  icmp-block-inversion: нет
  interfaces: ens160
  sources:
  services:
  ports:
  protocols:
  masquerade: нет
  forward-ports:
  source-ports:
  icmp-blocks: echo-reply echo-request
  rich rules:
        rule family="ipv4" source address="192.168.3.0/24" service name="ssh" accept
        rule family="ipv4" source address="192.168.3.0/24" icmp-type name="echo-request" accept
        rule family="ipv4" source address="192.168.3.0/24" icmp-type name="echo-reply" accept

Результаты проверки

Работает с SSH:

  • IP-адреса, отличные от 192.168.3.0/24, не могут использовать SSH для подключения к серверу Linux.

Похоже, что это не работает с ICMP:

  • IP-адреса 192.168.3.0/24 не могут пинговать сервер Linux

Я понимаю, что проблема, вероятно, заключается в “icmp-blocks: echo-reply echo-request“, который блокирует весь ICMP-трафик, а также в двух правилах riche для icmp. Я много гуглил и просто не смог найти правильное решение.

Может кто-нибудь помочь мне с этим? Буду признателен.

Я понимаю, что это старый пост, но я прохожу свой собственный процесс обучения firewalld и подумал, что это может помочь другим, кто столкнется с этим вопросом.

Я нашёл команды из оригинального поста полезными, и думаю, что причина, по которой это не сработало, может быть в том, что icmp-block-inversion все еще установлен на no, также возможно, что --reload не был выполнен, следующие команды должны это исправить:

$ sudo firewall-cmd --permanent --zone=internal --add-icmp-block-inversion

$ sudo firewall-cmd --reload

Мне любопытно относительно комментария, что “Rich rules aren’t a good way to do this …“, почему?

Моя конкретная задача заключается в том, чтобы предотвратить всех хостов от использования ping, и да, я знаю, что это не добавляет много безопасности, но ты попробуй объяснить это руководителям безопасности, вздох.
Тем не менее, я обнаружил, что когда сервер Oracle пытается инициировать резервное копирование, сервер NetBackup по какой-то причине использует ping, и резервное копирование завершается неудачей, потому что его блокируют. Поэтому я внес следующие изменения в зону, которые, похоже, работают (адрес .0.50 – это сервер NB):

$ sudo firewall-cmd --permanent --zone=internal --add-icmp-block-inversion

$ sudo firewall-cmd --permanent --zone=internal --add-rich-rule="family="ipv4" source address="192.168.0.50/32" icmp-type name="echo-request" accept"

$ sudo firewall-cmd --permanent --zone=internal --add-rich-rule="family="ipv4" source address="192.168.0.50/32" icmp-type name="echo-reply" accept"

$ sudo firewall-cmd --reload

Я не заблуждаюсь ли, потому что ссылка в комментарии о rich rules, кажется, подразумевает наличие уникальной зоны только для сервера NetBackup, но интерфейс, который он пытается ping, является производственным, используемым для всего остального доступа, который разрешен.

Надеюсь, это имеет смысл, и я приветствую любые комментарии или предложения.

С уважением,

Ник

Ответ или решение

Чтобы настроить Firewalld на ограничение доступа к вашему серверу под управлением Linux таким образом, чтобы только машины с IP-адресами в диапазоне 192.168.3.0/24 могли осуществлять подключения по SSH и ICMP, необходимо внести несколько изменений в конфигурацию брандмауэра.

Пошаговая настройка

  1. Установите зону по умолчанию на internal:

    sudo firewall-cmd --set-default-zone=internal
  2. Добавьте интерфейс ens160 в зону internal:

    sudo firewall-cmd --zone=internal --add-interface=ens160 --permanent
  3. Разрешите SSH для источников из диапазона 192.168.3.0/24:

    sudo firewall-cmd --permanent --zone=internal --add-rich-rule='rule family="ipv4" source address="192.168.3.0/24" service name="ssh" accept'
  4. Блокируйте ICMP-пакеты, включая echo-request и echo-reply:

    sudo firewall-cmd --permanent --zone=internal --add-icmp-block={echo-request,echo-reply}
  5. Разрешите ICMP (ping) для источников из диапазона 192.168.3.0/24:

    sudo firewall-cmd --permanent --zone=internal --add-rich-rule='rule family="ipv4" source address="192.168.3.0/24" icmp-type name="echo-request" accept'
    sudo firewall-cmd --permanent --zone=internal --add-rich-rule='rule family="ipv4" source address="192.168.3.0/24" icmp-type name="echo-reply" accept'
  6. Включите инверсию блокировки ICMP:
    Ваша проблема с ICMP может быть связана с тем, что icmp-block-inversion установлен в no. Убедитесь, что инверсия включена:

    sudo firewall-cmd --permanent --zone=internal --add-icmp-block-inversion
  7. Примените изменения:
    После внесения всех изменений важно перезагрузить конфигурацию Firewalld:

    sudo firewall-cmd --reload

Проверка статуса конфигурации

После выполнения команд проверьте текущую конфигурацию брандмауэра:

sudo firewall-cmd --list-all

Убедитесь, что в выводе присутствуют ваши правила, включая icmp-blocks и правила, разрешающие SSH и ICMP для указанного диапазона.

Дополнительные соображения

  • Rich rules (богатые правила): Они позволяют более гибко настраивать правила, но могут быть менее производительными по сравнению с предопределенными правилами, так как анализа требует больше ресурсов. Однако они отлично подходят для специфических сценариев, таких как ваш.

  • Советы по безопасности: Имейте в виду, что ICMP может быть полезным для диагностики, и иногда блокировка всех ICMP-пакетов может повлечь за собой затруднения в сетевом администрировании. Убедитесь, что блокировка соответствует требованиям безопасности вашей сети.

Следуя вышеописанным шагам, вы сможете настроить Firewalld так, чтобы он ограничивал доступ к серверу только для определенных IP-адресов, при этом разрешая необходимый трафик.

Оцените материал
Добавить комментарий

Капча загружается...