Установка и настройка Shorewall

В качестве брандмауэра на ОС Linux заслуженной популярностью пользуется iptables. Однако работать с ним достаточно неудобно, поэтому были придуманы инструменты облегчающие эту задачу. Одним из таких средств является Shorewall.

В качестве примера установим Shorewall на Centos 7.3 и закроем все входящие соединения из сети интернет к серверу кроме порта 22 (SSH).

Установим shorewall используя yum или apt в зависимости от Вашей ОС.

Redhat/Centos

yum install shorewall

Debian/Ubuntu

apt-get install shorewall

Далее можно настраивать shorewall.

Все настройки shorewall находятся в папке /etc/shorewall.

В нашем случае нам необходимы следующие файлы

  • interfaces — сетевые интерфейсы;
  • zones — это выделенные области для управления - обычно одна зона - один интерфейс, но некоторые интерфейсы могут быть разбиты на зоны;
  • policy — политики по умолчанию для зоны;
  • rules — подробные описания правил.

Определим какие у нас в системе сетевые интерфейсы. Используем команду ip a показывающую сетевые интерфейсы системы и их статус. В данном случае мы видим, что интерфейс ethernet всего один (eth0).

 ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN qlen 1
	link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
	inet 127.0.0.1/8 scope host lo
   	valid_lft forever preferred_lft forever
	inet6 ::1/128 scope host
   	valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc mq state UP qlen 1000
	link/ether 00:50:56:01:1c:16 brd ff:ff:ff:ff:ff:ff
	inet 78.140.223.170/24 brd 78.140.223.255 scope global eth0
   	valid_lft forever preferred_lft forever
	inet6 fe80::250:56ff:fe01:1c16/64 scope link
   	valid_lft forever preferred_lft forever

Откроем файл /etc/shorewall/zones и внесем туда запись о нашей зоне в формате <имя зоны> <тип> где нужный нам тип ipv4 - сеть по протоколу ip версии 4, firewall - этот компьютер:

fw		firewall
inet        	ipv4

Теперь в файле /etc/shorewall/interfaces пропишем связь зоны с физическим интерфейсом в виде <имя зоны и zones> <имя физического интерфейса>.

inet        	eth0

Теперь настроим /etc/shorewall/policy - действия по умолчанию в формате <зона-источник> <зона-получатель> <действие> <уровень логирования>

inet fw DROP info
fw inet ACCEPT info
all all  	DROP

all означает все зоны.

Политики могут быть следующие:

  • ACCEPT — разрешить;
  • CONMARK — пометить пакет;
  • DNAT — преобразовать пакет для передачи на другой компьютер или порт;
  • DROP — игнорировать пакет;
  • LOG — логировать пакет;
  • REJECT — отбросить пакет и сообщить об этом отправителю.

Осталось настроить только сами правила /etc/shorewall/rules. Формат правил такой: <Действие><Зона-источник><зона-приемник><протокол><порт назначения><порт источника> То есть в нашем случае:

ACCEPT inet fw tcp 22
ACCEPT fw inet icmp

Предварительно проверяем файлы конфигурации командой shorewall check

shorewall check
Checking using Shorewall 5.1.10.2...
Processing /etc/shorewall/params ...
Processing /etc/shorewall/shorewall.conf...
Loading Modules...
Checking /etc/shorewall/zones...
Checking /etc/shorewall/interfaces...
Determining Hosts in Zones...
Locating Action Files...
Checking /etc/shorewall/policy...
Running /etc/shorewall/initdone...
Checking TCP Flags filtering...
Checking Kernel Route Filtering...
Checking Martian Logging...
Checking MAC Filtration -- Phase 1...
Checking /etc/shorewall/rules...
Checking /etc/shorewall/conntrack...
Checking MAC Filtration -- Phase 2...
Applying Policies...
Shorewall configuration verified

Если ошибок нет, то для включения автозапуска вносим в файл /etc/shorewall/shorewall.conf следующие строки:

STARTUP_ENABLED=Yes

После этого запускает его командой shorewall start.

Для проверки попробуем подключиться к этому компьютеру используя порт отличный от 22, например используя telnet (порт 23) и получим ошибку.

telnet 78.140.223.170
Подключение к 78.140.223.170...Не удалось открыть подключение к этому узлу, на порт 23: Сбой подключения

Средняя оценка: 5,0, всего оценок: 1
Последнее обновление: 25.09.2018 43