Shorewall — межсетевой экран высокого уровня для серверов Linux
Настройка брандмауэра в Linux может оказаться очень сложной задачей для новичка или человека, не очень хорошо знакомого с iptables. К счастью, в Shorewall есть очень простое в использовании решение.
В этом руководстве, состоящем из нескольких частей, я познакомлю вас с Shorewall и расскажу о некоторых более сложных темах, связанных с этой замечательной системой брандмауэра.
Что такое Шорволл?
Shorewall по сути является интерфейсом для iptables, но это интерфейс командной строки, который использует несколько текстовых файлов для своей конфигурации. Хотя Shorewall — это надежная система межсетевого экрана, которую можно масштабировать в очень больших сетях, обслуживающих множество компьютеров, мы собираемся начать с базовой конфигурации с двумя интерфейсами и закрепить основы.
Конфигурация с двумя интерфейсами состоит из машины с двумя портами Ethernet: одним входящим и одним выходным в локальную сеть.
Установите брандмауэр Shorewall в Linux
Shorewall можно установить с помощью инструментов менеджера пакетов apt и yum.
sudo apt install shorewall [On Debian-based Sysems]
sudo yum install shorewall [On RHEL-based Sysems]
После установки нам нужно скопировать пример конфигурации из каталога «/usr/share/doc/shorewall» в каталог Shorewall по умолчанию «/etc/shorewall».
sudo cp /usr/share/doc/shorewall/example/two-interfaces/* /etc/shorewall
cd /etc/shorewall
Если мы заглянем в этот каталог, то увидим кучу файлов и файл shorewall.conf.
Shorewall рассматривает сеть как группу различных зон, поэтому первый файл, который мы хотим рассмотреть, — это файл «/etc/shorewall/zones».
sudo nano /etc/shorewall/zones
Здесь мы видим, что по умолчанию определены три зоны: fw, net и loc. Важно отметить, что Shorewall рассматривает сам брандмауэр как свою собственную зону и сохраняет ее в переменной с именем $fw.
Файл «/etc/shorewall/zones» говорит сам за себя. У вас есть сетевая зона (интерфейс с выходом в Интернет), loc зона (интерфейс с выходом на локальную сеть) и fw . , и это все.
Эта установка дает следующее:
- Он разрешает все запросы на подключение из локальной зоны (LAN) в сетевую зону (Интернет).
- Отбрасывает все запросы на подключение (игнорирует) из сетевой зоны на брандмауэр и LAN.
- Отклоняет и регистрирует все остальные запросы.
Бит LOG LEVEL должен быть знаком каждому, кто занимался администрированием с помощью Apache, MySQL или любого другого количества других программ FOSS. В этом случае мы сообщаем Shorewall использовать информационный уровень для ведения журналов.
Теперь, когда наши зоны и политика настроены, нам нужно настроить наши интерфейсы. Это можно сделать, отредактировав файл «/etc/shorewall/interfaces».
sudo nano /etc/shorewall/interfaces
Здесь мы установили наш интерфейс с выходом в Интернет как eth0 в сетевую зону. На стороне локальной сети мы установили другой интерфейс, eth1, в локальную зону. Пожалуйста, настройте этот файл так, чтобы он соответствовал вашей конфигурации.
Различные параметры, которые вы можете разместить для любого из этих интерфейсов, обширны и лучше всего подробно объяснены на странице руководства.
man shorewall-interfaces
Краткое изложение некоторых из них выглядит следующим образом:
- nosmurfs – фильтровать пакеты с широковещательным адресом в качестве источника.
- logmartians – регистрировать пакеты с невозможным адресом источника.
- routefilter – фильтрация маршрутов ядра для защиты от спуфинга.
Конечно, теперь, когда наша система защищена брандмауэром, нам потребуется разрешить определенные соединения, чтобы выполнить то, что нам нужно. Вы определяете их в файле правил «/etc/shorewall/rules».
sudo nano /etc/shorewall/rules
На первый взгляд этот файл выглядит запутанным, главным образом потому, что столбцы перекрываются, но заголовки говорят сами за себя. Во-первых, у вас есть столбец ДЕЙСТВИЕ, в котором описано, что вы хотите выполнить.
Далее у вас есть заголовок SOURCE, в котором вы определяете зону, из которой исходит пакет. Затем у вас есть DEST или назначение, которое представляет собой зону или IP-адрес пункта назначения. Давайте воспользуемся примером.
Предположим, вы хотите запустить SSH-сервер за брандмауэром на компьютере с IP-адресом 192.168.1.25. Вам не только придется открыть порт в брандмауэре, но и сообщить брандмауэру, что любой трафик, поступающий на порт 22, должен перенаправляться на компьютер по адресу . >192.168.1.25.
Это называется Переадресация портов. Это общая функция большинства брандмауэров/маршрутизаторов. В «/etc/shorewall/rules» это можно сделать, добавив такую строку:
SSH(DNAT) net loc:192.168.1.25
Выше мы определили, что любые SSH-пакеты , поступающие из сетевой зоны на брандмауэр, должны быть маршрутизированы (DNAT) к порту 22 на машине с адресом 192.168.1.25.
Это называется Преобразование сетевых адресов или NAT. «D» просто сообщает Shorewall, что это NAT для адреса назначения.
Чтобы это работало, в вашем ядре должна быть включена поддержка NAT. Если вам нужен NAT, но у вас его нет, прочтите мое руководство по перекомпиляции ядра Debian.
В следующей статье мы рассмотрим различные конфигурации и параметры Shorewall. Однако здесь должно быть достаточно информации, которая поможет вам начать работу. Как всегда, пожалуйста, обратитесь к man-страницам для более глубокого понимания.