Как сказано в заголовке, у меня есть Linux-бокс. Насколько я могу судить, для защиты я могу использовать hosts.allow / hosts.deny или iptables. Какая разница? Есть ли другой механизм, который можно использовать?
IPTables работает на уровне ядра. В общем, это означает, что он ничего не знает о приложениях или процессах. Он может фильтровать только на основе того, что он получает из различных заголовков пакетов по большей части.
Однако host.allow / deny работает на уровне приложения / процесса. Вы можете создавать правила для различных процессов или демонов, работающих в системе.
Так, например, IPTables может фильтровать порт 22. SSH может быть настроен на использование этого порта, что обычно так и есть, но его также можно настроить на другой порт. IPTables не знает, на каком порте он находится, он знает только порт в заголовке TCP. Однако файлы hosts.allow можно настроить для определенных демонов, таких как демон openssh.
Если вам нужно выбрать, я бы предпочел как минимум IPTables. Я рассматриваю hosts.allow как приятный бонус. Даже если подумать, что уровни демона кажутся проще, IPTables заблокирует пакет еще до того, как он действительно зайдет очень далеко. С безопасностью, чем раньше вы сможете что-то заблокировать, тем лучше. Однако я уверен, что бывают ситуации, которые меняют этот выбор.
iptables блокирует доступ до того, как он достигнет приложения, тогда как hosts.allow / hosts.deny является частью PAM и требует, чтобы приложение реализовало проверку PAM и правильно обработало файл. Оба они полезны, и даже лучше, если они будут установлены.