Как я могу использовать встроенную утилиту межсетевого экрана Parallels Virtuozzo (называемую psa-firewall под капотом, по-видимому, фактически psa-firewall кажется отдельным интерфейсом Plesk - в любом случае, это в основном пользовательский интерфейс для ограниченного управления iptables) для настройки VPS простое правило, которое запрещает доступ к порту для всех подключений, кроме определенных указанных IP-адресов?


У меня была идея, что правила брандмауэра VZ - например, правила iptables, в которые (как я полагаю) они переведены - выполнялись по порядку сверху вниз, и что я мог заблокировать доступ ко всему порту, кроме указанных IP-адресов (в этом случае , SSH на порту 22), имея узкие правила «Разрешить» в списке, для IP-адреса xx.xx.xx.xx и порта 22, а затем правило «Отклонить» в конце для любого IP-адреса и порта 22.

Идея заключалась в том, что для запросов с именованных IP-адресов будет достигнуто правило Разрешить, поэтому правило Отклонить никогда не будет достигнуто. Во всем остальном правило Разрешить будет проигнорировано, а правило отклонения ниже его будет достигнуто.

Но это не сработало. Сначала это работало точно так, как и планировалось, но ~ 20 минут спустя я обнаружил, что не использую SSH, и единственный способ вернуться обратно - это удалить правило Reject и добавить (избыточное) правило Allow all to port 22 наверх списка.

При дальнейшем тестировании кажется, что порядок правил в пользовательском интерфейсе утилиты брандмауэра VZ не точно определяет порядок в результирующей конфигурации. Например, я обнаружил, что наличие правила «Разрешить все до 22» в верхней части списка и «Отклонить все до 22» в нижней части, кажется, блокирует все соединения, как и в случае с обратным порядком.

У меня была теория, что утилита добавляет в список вновь активированные правила, но кажется, что наличие правила «отвергнуть все» всегда побеждает любые правила accept-one независимо от положения или порядка в списке, в который они добавляются.

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


Причина, по которой я использую утилиту брандмауэра VZ, а не просто использую iptables напрямую, заключается в том, что я хочу, чтобы администраторы могли обновлять правила и добавлять IP-адреса из белого списка без какой-либо опасности их постоянной блокировки. Полезно иметь возможность администрировать доступ по SSH с помощью инструмента, который не зависит от самого себя и требует доступа по SSH.


п.с. Найти информацию о качестве с помощью утилиты брандмауэра VZ очень сложно. Куда бы я ни посмотрел, я всегда обращаюсь либо к ужасно неполным ресурсам в стиле «для чайников», либо к информации о прямой настройке iptables. Я не могу найти ничего о том, как настройки пользовательского интерфейса интерпретируются за кулисами или как они связаны с существующими настройками iptables. Также будут приветствоваться любые общие указания на подробную информацию о качестве того, что происходит за кулисами утилиты брандмауэра VZ.

1 ответ1

0

Это просто моя лучшая теория до сих пор от тестирования. Это похоже на:

  • При внесении изменений утилита брандмауэра VZ выполняет поиск существующего правила, удаляет его и добавляет новое правило, а не сбрасывает правила. Кажется, что это может быть не на 100% надежно, и что возможно редактировать правила и получить «призрачное правило», которое остается до сброса IPtables.
  • Похоже, что утилита периодически сбрасывает и перезапускает правила (плюс любые закодированные в /etc /firewall /include).
  • Похоже, что правила, настроенные с помощью пользовательского интерфейса утилиты, включены в порядок и ведут себя так, как я ожидал, - если только за кадром не существует одно из этих «правил-призраков».

Если это так, то если кто-то окажется в ситуации, в которой я находился, вы сможете использовать межсетевой экран VZ, чтобы снова вести себя рационально, используя VZ для перезапуска «службы» iptables в «Системных службах». Добавьте временное правило разрешения в начало цепочки, если оно утверждает, что не может перезапустить службу.

(Будьте осторожны с использованием iptables -F для сброса правил iptables, так как это, кажется, сбрасывает все, включая правила, которые предоставляют утилитам VZ соответствующий доступ. Средство перезапуска системы обновляет iptables со всем, включая внутреннюю конфигурацию VZ, конфигурацию вашего хоста, правила, настроенные в утилите, и пользовательские правила в /etc/firewall/include . iptables -F нет. Если он настроен на отклонение или удаление по умолчанию, вы можете полностью заблокировать себя)


Редактировать: Это явно не все, что нужно ... Внезапно утилита брандмауэра VZ начала вообще не влиять на базовые правила iptables, и с помощью iptables -n -L INPUT|grep dpt:22 вывести список всех правил iptables, которые указывают порт dport 22, я вижу множество старых правил нежелательной почты. с тех пор были удалены, которые не удаляются при перезапуске, даже после сброса iptables и перезапуска службы. Чтение http://www.webhostingtalk.com/showthread.php?t=1166215 предполагает, что брандмауэр VZ также имеет базу данных правил, которые могут быть не синхронизированы с кодом и пользовательским интерфейсом ... но не дает ни малейшего представления о том, как чтобы получить доступ к этой базе данных.

Редактировать 2: Кажется, что-то заставило iptables и брандмауэр Virtuozzo начать просто читать из файла /etc/sysconfig/iptables а не восстанавливать его должным образом. Неуклюжее исправление, которое я нашел для этого, было, по сути, переименовывать файлы /etc/sysconfig/iptables и /etc/sysconfig/iptables.save как резервные копии, затем использовать VZ Firewall Setup для полной перезагрузки брандмауэров, которые генерировали пустые файлы iptables , затем перезапустил службу iptables - после всего этого настройки в утилите брандмауэра VZ начали оказывать ожидаемый эффект.

Любопытно, что после выполнения вышеизложенного цепочки iptables имеют имена вроде VZ_INPUT вместо INPUT, поэтому для перечисления правил iptables для порта мне нужно использовать iptables -n -L|grep dpt:22 или iptables -n -L VZ_INPUT|grep dpt:22 вместо iptables -n -L INPUT|grep dpt:22 . Странный.


Будем надеяться, что если кто-то еще застрянет с ненадлежащим поведением службы брандмауэра Virtuozzo, кое-что здесь поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .