Вопрос или проблема
На сервере RHEL 7 в файле /etc/hosts.allow
указано несколько IP-адресов с полным доступом. Брандмауэр (подтверждено с помощью firewall-cmd
) не имеет определенных источников, и зона по умолчанию разрешает определенные порты и службы.
Что имеет приоритет? Или на конкретном примере, если IP-адрес, указанный в /etc/hosts.allow
, попытается подключиться к серверу, используя порт/службу, не разрешенные правилами брандмауэра, сможет ли он подключиться?
Ответ – нет.
Ни система TCP Wrapper, ни настройки брандмауэра не имеют приоритета; они работают как слои.
/etc/hosts.allow
и /etc/hosts.deny
— это файлы управления доступом к хосту, используемые системой TCP Wrapper. Каждый файл содержит ноль или более строк в формате демон:клиент. Учитывается первая подходящая строка.
Доступ предоставляется, когда пара демон:клиент совпадает с записью в /etc/hosts.allow
. В противном случае доступ отклоняется, когда пара демон:клиент совпадает с записью в /etc/hosts.deny
. В противном случае доступ предоставляется.
Теперь, если службе был предоставлен доступ через TCP Wrapper, но не через брандмауэр (и по умолчанию брандмауэр имеет правило “отклонить все”, как и должно быть), служба не сможет подключиться к машине.
Я не видел много настроек TCP Wrappers в наши дни — вы можете избежать этой системы, которая обеспечивает только базовую фильтрацию через libwrap, и использовать просто firewalld
для разрешения доступа к службам. Это проще в настройке и управлении, и более мощно.
/etc/hosts.allow
(TCP Wrappers) работает на уровне приложения (если он настроен для этого), в то время как брандмауэр работает на уровне сетевого интерфейса (для интерфейсов, настроенных в брандмауэре).
Поэтому вы можете “разрешить” трафик на уровне приложения, который никогда не приходит (так как брандмауэр его блокирует), но это мало смысла.
Смотрите на TCP Wrappers как на метод “тонкой настройки” брандмауэра, специально предназначенный для систем, у которых нет (локального) брандмауэра.
Таким образом, в этом смысле брандмауэр имеет приоритет перед TCP Wrappers.
Ответ или решение
Вопрос о приоритете между файлами /etc/hosts.allow и настройками firewalld на сервере RHEL 7 затрагивает важный аспект сетевой безопасности. Во-первых, необходимо понимать, что TCP Wrappers и брандмауэры, такие как firewalld, действуют на разных уровнях управления доступом.
Принципы работы TCP Wrappers
Файлы /etc/hosts.allow и /etc/hosts.deny управляют доступом к сервисам на уровне приложений. Всякий раз, когда клиент пытается получить доступ к службе, для которой настроены TCP Wrappers, система проверяет, есть ли соответствующая запись в /etc/hosts.allow. Если такая запись существует, доступ предоставляется. Если нет — возможно, доступ будет заблокирован записями из /etc/hosts.deny. Однако стоит отметить, что если нет ни одной соответствующей записи ни в одном из двух файлов, доступ также предоставляется по умолчанию.
Принципы работы firewalld
С другой стороны, firewalld работает на уровне сетевых интерфейсов. Его основная цель — управлять входящим и исходящим сетевым трафиком на уровне протоколов, таким как TCP/UDP. Если брандмауэр настроен на блокировку определенных портов или сервисов, никакие разрешения на уровне приложений (например, от TCP Wrappers) не могут преодолеть эту блокировку. Это означает, что если вашему приложению не разрешен доступ через брандмауэр, оно просто не сможет получать соединения, даже если оно явно разрешено в /etc/hosts.allow.
Заключение: какой механизм имеет приоритет?
Ответ на ваш вопрос заключается в следующем: firewall (firewalld) в большинстве случаев имеет высший приоритет над настройками TCP Wrappers (файлы /etc/hosts.allow и /etc/hosts.deny). Даже если IP-адрес, указанный в /etc/hosts.allow, пытается соединиться с неразрешенным портом или сервисом, связь не будет установлена, поскольку firewalld блокирует этот трафик.
Итак, в случае, если сервис имеет разрешения через TCP Wrappers, но его порт закрыт на брандмауэре, доступ будет запрещен. Это подчеркивает важность корректной настройки как TCP Wrappers, так и firewalld для обеспечения надежной безопасности системы. В современных IT-структурах часто предпочтительней полагаться исключительно на брандмауэр, поскольку он предоставляет гибкость и более мощные возможности управления.
Рекомендации по безопасности
- Регулярно проверяйте настройки firewalld — убедитесь, что нужные порты и сервисы открыты только для разрешенных IP-адресов.
- Избегайте избыточной настройки TCP Wrappers, если у вас есть хорошо сконфигурированный брандмауэр. Это сделает управление доступом более простым и эффективным.
- Документируйте все изменения — это поможет в будущем избежать ошибок и недоразумений, связанных с управлением доступом.
Следует всегда помнить, что надежная безопасность системы включает в себя как проверки на уровне приложений, так и на уровне сети, и их использование должно быть взаимодополняющим.