# **Защита периметра с помощью межсетевого экрана** ###### tags: `Межсетевые экраны` ***В данной работе будет показано использования двух межсетевых экранов в рамках защиты периметра сети. Для выполнения данной работы необходимо подготовить следующий стенд (в данной инструкции использовался EVE-NG).*** * Межсетевой экран (готовое решение PfSense) * Межсетевой экран (создадим на базе Debian) * Свичи для имитации DMZ и LAN (cisco в примере) * Машина в DMZ (в примере kali для возможности конфигурировать PfSense) + имитация веб-сервера * Несколько рабочих машин в различных VLAN (для возможности настройки доступа через iptables) ****В результате у вас должен быть следующий стенд. ![](https://i.imgur.com/Abmk64z.png) *Итак, начнем!* 1. Для начала собираем данную инфраструктуру в единое целое (обязательно обращаем внимание на e0 и e1 интерфейсов, также, сеть можно указывать любую, у меня используется те, что на скриншоте). После того, как наша инфраструктура собрана заходим на pfsense для настройки интерфейса LAN зоны. Для этого выбираем следующие пункты: > Вначале выбираем **2** > Далее, снова **2** > На запрос сетевого адреса LAN, указываем адрес из выбранной вами сети, у меня это **192.168.20.254** (для удобства указываем последний адрес подсети) > Маску указываем **24** > На вопрос про gateway просто нажимаем **Enter** > DHCP - n > HTTP - n > На этом настройка завершена, наша будующая DMZ сеть настроена. > ![](https://i.imgur.com/onmpZQZ.png) 2. Далее, заходим на нашу машину Debian, которая будет являться нашим вторым межсетвым экраном, на ней нам также нужно настроить адресацию, а также превратить ее в DHCP сервер для машин расположенных в данной LAN зоне (будем использовать dnsmasq). Заходим на нее(для удобства определения по имени сразу рекомендую поправить файл hosts и hostname, затем перезагрузить) и настраиваем сеть, как мы уже это делали ранее через команду nano /etc/network/interfaces. Пример конечной настройки на скриншоте. ![](https://i.imgur.com/cDofUrg.png) Статический адрес можно выбрать любой. На скриншоте ens3 это интерфейс смотрящий в DMZ, а ens4 в LAN зону. Также, необходимо поправить файлик **/etc/resolve.conf** там необходимо ns на **8.8.8.8**. После этого сохраняем и выходим, затем перезагружаем машину. После этого, машина должна иметь доступ в интернет. Обновляем полностью данную машину командой - **apt update && apt upgrade** 3. Теперь, настроим машину kali linux внутри DMZ. Заходим на неё и аналогично как на машине Debian настраиваем сеть и dns. С помощью команды **nano /etc/network/interfaces** и указываем статический ip, можно указать любой из данной подсети. ![](https://i.imgur.com/7Eaw6nR.png) После, с помощью команды **nano /etc/resolv.conf** необходимо поправить ns на **8.8.8.8** Затем, перезагружаем машину. 4. Настройка dnsmasq Переходим к нашему фаерволлу Debian. В консоль вводим следующие команды для настройки dnsmasq: > **apt install dnsmasq** Устанавливаем утилиту dnsmasq **nano /etc/dnsmasq.conf** Переходим в конфигурационный файл. В конец файла вводим параметры для DHCP сервера: **interface=ens4 dhcp-range=192.168.50.20,192.168.50.100,24h dhpc-option=3,192.168.50.254 dhcp-option=6,8.8.8.8** ![](https://i.imgur.com/OYc9EEO.png) где, опции 3 - шлюз по-умолчанию, а 6 - DNS, которые будет раздавать сервер на машины, которые подключаються к интерфейсу ens4. После, сохраняем конфиг и выходим. Перезагружаем службу dnsmasq - **systemctl restart dnsmasq** Также, необходимо разрешить нашему Debian файерволлу роутить трафик. Для этого выполняем следующую команду - **nano /etc/sysctl.conf** и внутри исправляем раскомментируем строчку **net.ipv4.ip_forward=1**, а затем применяем настройки **sysctl -p** Для проверки зайдем на машину Windows 7, она должна получить настройки по DHCP. ![](https://i.imgur.com/L1z9VpG.png) 5. Настройка pfSense Для того, чтобы мы могли из LAN сети выходить в инет, нужно настроить pfsense. Запускаем kali в DMZ и заходим в консоль управления pfsense через браузер (у меня это 192.168.20.254). После входа на pfsense переходим во вкладку **System > Routing > Gateways** и там создаем новый Gateway кнопкой **Add**. В параметрах нового Gateway указываем имя (любое у меня LAN_GW), интерфейс(должен быть LAN), Gateway (ip адрес интерфейса Debian, смотрящий в сторону сети 192.168.20.0/24, у меня это **192.168.20.1**) ![](https://i.imgur.com/5xIbmmJ.png) После, нажимаем Save и применяем настройки. Теперь, нам необходимо прописать статический маршрут в нашу LAN сеть, для этого переходим по пути **System > Routing > Static Routes** и там также нажимаем **Add** для создания нового маршрута. Указываем только что созданный gateway и адрес сети LAN. ![](https://i.imgur.com/SJ1z65X.png) Также, выключаем последние две галочки по пути **Interfaces > WAN** ![](https://i.imgur.com/5OKQlko.png) Для того, чтобы LAN зона могла выходить в инет через pfsense, необходимо прописать разрешения нужной нам сети. Настроим данный момент. Заходим в **Interfaces > LAN** и переименовываем LAN в DMZ для удобства. Для разрешения нужной нам сети воспользуемся так называемыми алиасами, которые есть в pfsense, они позволяют создавать отдельные ns для определенного пула адресов и затем применять к ним определенные правила. Переходим по пути **Firewall > Aliases > IP** и добавляем сеть. Я добавляю нужную мне сеть (на скриншоте), вам необходимо добавить свою (также обратите внимания на все параметры, необходимо выставить как на скриншоте). ![](https://i.imgur.com/0ekkepS.png) Сохранияем и применяем настройки. Теперь нужно добавить разрешающее правило для обеспечения доступности LAN сети. Переходим **Firewall > Rules > DMZ** выбираем разрешающее правило DMZ net и копируем его. Выставляем параметры как на скриншоте (указываем наш созданный алиас в нужной графе). Сохраняем и применяем настройки. ![](https://i.imgur.com/IzGM1WQ.png) После этого, с Windows7 машины должен появиться доступ в интернет. 6. Добавление машин, распределение их по VLAN, настройка VLAN и настройка pfsense. Добавляем несколько машин Debian, они будут необходимы далее. Затем заходим на cisco и настраиваем VLAN (как настроено у меня можно посмотреть на скриншоте - дубликат первого скрина) ![](https://i.imgur.com/Abmk64z.png), настройку VLAN отдельно расписывать не буду, для настройки VLAN обратитесь ко 2 пункту инструкции по ссылке: https://hackmd.io/eMyez9UlSzm0JzhhyulHnA После того, как мы настроили VLAN, настроим наш файерволл(DHCP) для возможности работы с нашими VLAN. Выполняем следующие команды: > **nano /etc/network/interfaces** Добавляем в конфиг наши VLAN, конечный конфиг и адресация у меня выглядит вот так (можно использовать любую адресацию): ![](https://i.imgur.com/BkFi5u6.png) Выходим с сохранением. > **nano /etc/dnsmasq** Аналогично добавляем наши VLAN в конфиг dnsmasq. ![](https://i.imgur.com/Rddg5xN.png) И также, выходим с сохранением. Перезапускаем сетевую службу и службу dnsmasq: > **systemctl restart networking** > **systemctl restart dnsmasq** После всех настроек машины с VLAN должны получить адрес и другие соответствующие параметры. 7. Настройка определенных доступов через межсетевые экраны Определим конкретные правила доступа для некоторых машин в сети LAN и DMZ. На скриншоте представлены правила, которые должны быть обеспечены: ![](https://i.imgur.com/Hf4hLSZ.png) Итак, для обеспечения первого правила воспользуемся pfsense. Заходим на него через kali(DMZ), логин и пароль - admin:pfsense. Переходим по пути **Interfaces > NAT** попадаем во вкладку **PortForwarding**. Тут нам необходимо пробросить порт внутрь, выбираем соответствующую кнопку **Add**(та, что со стрелкой вниз, то есть внутрь). Параметры указываем как на скриншоте (адрес машины, ваша kali). ![](https://i.imgur.com/W9DzOoY.png) Сохраняем, применяем настройки. 80 порт проброшен. Все остальные правила, относяться к Debian файерволлу. Переходим к нему. Для всех правил будем использовать утилиту **iptables**. Ссылки для использования iptables: https://selectel.ru/blog/setup-iptables-linux/ https://losst.ru/nastrojka-iptables-dlya-chajnikov https://1cloud.ru/help/linux/nastrojka_linus-firewall_iptables Чтобы удобно было конфигурировать сервер, пропишем правила для возможности с kali подключиться к debian файерволлу. > **iptable -A INPUT --source 192.168.20.10 -p tcp --dport 22 -j ACCEPT** > **iptable -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT** > **iptables -A INPUT -i ens3 -j DROP** Первое правило позволяет непосредственно подключаться по 22 порту, второе позволяет удерживать соединение и обмениваться пакетами, третье блокировать все остальные попытки обратиться на данный интерфейс. **!!!ОБРАТИТЕ ВНИМАНИЕ, ЧТО ПРИОРИТЕТ ПО ЦЕПОЧКЕ ИДЕТ ОТ ПЕРВОГО ПРАВИЛА К ПОСЛЕДНЕМУ.** Для просмотра правил рекомендуеться использовать команду: **iptables --line-numbers -L -v -n** Далее, установим утилиту для сохранения правил: **apt install iptables-persistent** Для примера, добавим необходимые правила и сохраним их с помощью установленной утилиты: > **iptable -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT** > **iptables -A FORWARD -i ens3 -j DROP** И сохраняем командой: **service netfilter-persistent save** Теперь после перезагрузки или сбоя данные команды сохраняться. Теперь, непосредственно приступим к правилам со скриншота. Покажу сразу конечный результат, который получился у меня, а затем перечень команд, которые я использовал. Скриншот с правилами у меня: ![](https://i.imgur.com/mfbTgxY.png) Кроме того, для того, чтобы был доступ во WAN из VLAN, я прописал правило: **iptables -t nat -A POSTROUTING -o ens3 MASQUERADE** В остальных правилах, я использовал иногда вместо -A (добавить правило в конец) ключ -I (добавление в указанное место, указывать место цифрой). Итак, правила я использовал такие: **iptables -I FORWARD 1 - i ens3 --src 192.168.20.0.24 --dst 192.168.51.54 -p tcp --dport 22 -j ACCEPT** Для правила из DMZ к DEB1 по 22 порту. **iptables -I FORWARD 1 - i ens4 --dst 192.168.51.54 -p tcp --dport 22 -j ACCEPT** **iptables -I FORWARD 1 - i ens4.10 --dst 192.168.51.54 -p tcp --dport 22 -j ACCEPT** **iptables -I FORWARD 1 - i ens4.20 --dst 192.168.51.54 -p tcp --dport 22 -j ACCEPT** Для правила из VLAN к DEB1 по 22 порту. **iptables -A FORWARD -j DROP** Запрещаем любой доступ кроме разрешенного(добавляем в конец). **iptables -I FORWARD 1 -o ens3 -j ACCEPT** Разрешаем весь трафик выходящий из ens3, для доступа в DMZ и WAN. **iptables -I FORWARD 2 - i ens4 --dst 192.168.51.54 -p tcp --dport 80 -j ACCEPT** **iptables -I FORWARD 2 - i ens4.10 --dst 192.168.51.54 -p tcp --dport 80 -j ACCEPT** **iptables -I FORWARD 2 - i ens4.20 --dst 192.168.51.54 -p tcp --dport 80 -j ACCEPT** Разрешаем доступ по http из VLAN к DEB1. Более правил я не добавлял, функционал по таскам реализован. Не забываем сохранить - **service netfilter-persistent save**