Поиск по сайту:

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-страницам для более глубокого понимания.