# Практическая работа №1. Межсетевые экраны iptables и pfSense. ###### tags: `2 сем` --- ![](https://i.imgur.com/KkPWtPD.png) --- ## Задание к практической работе: - [ ] Импортировать шаблон практической работы в систему EVE-NG и настроить оборудование в соответсвии со схемой сети [2_sem_topol.zip](https://disk.yandex.ru/d/YagkVH5NOzgjSw) - [ ] Настроить NAT на M-R-1 - [ ] Настроить динамическую маршрутизацию между роутерами для прохождения трафика, а также выхода в интернет каждого межсетевого устройства в сети - [ ] Настроить межсетевые экраны Linux FW (используя iptables) - [ ] Настроить межсетевые экраны pfSense FW (используя Web интерфейс pfSense Firewall) --- При описании примеров настроек используются комментарии "//". Данную часть НЕ НУЖНО переписывать/копировать при настройке обственных практик. В комментариях либо кратко описывается смысл/принцип данной строчки конфига, либо поясняется, на каких именно устройствах нужно применять данный конфиг. Пример: ``` [admin@M-R-1] > ip dhcp-client rem 0 // для устройств C-R-3, C-R-4 ``` > З.ы: если комментария нет, то "это база" > --- ## WAN - M-Router - C-Router Данный раздел представляет описание настройки "промежуточной" сети, имитирующей глобальный интернет. В настройку WAN входит базовая настройка Cisco/Mikrotik-роутеров: динамическая маршрутизация по протоколу OSPF и PNAT для выхода в интернет. ### Настройка mirkotik-роутеров на примере M-R-1 1) Меняем название устройства ``` [admin@MikroTik] > sys id set name=M-R-1 ``` 2) Настраиваем ip-адреса на всех интерфейсах ``` [admin@M-R-1] > ip add add add=10.0.10.2/24 interface=ether3 [admin@M-R-1] > ip add add add=10.0.20.2/24 interface=ether2 [admin@M-R-1] > ip dhcp-client rem 0 // для M-R-3, M-R-4 ``` 3) На данном роутере ether1 получает ip-add по dhcp, поэтому желательно проверить, тот ли интерфейс является dhcp-client ``` [admin@M-R-1] > ip dhcp-client exp // для M-R-1 /ip dhcp-client add disabled=no interface=ether1 ``` 4) Настраиваем OSPF ``` [admin@M-R-1] > interface bridge add name=loopback [admin@M-R-1] > ip add add add=3.255.255.3/32 interface=loopback [admin@M-R-1] > routing ospf instance set 0 router-id=3.255.255.3 [admin@M-R-1] > routing ospf network add network=10.0.10.0/30 area=backbone [admin@M-R-1] > routing ospf network add network=10.0.20.0/30 area=backbone ``` 5) На данном роутере будет прямой выход в интернет, следовательно нужно раздать путь до него всей сети роутеров (адрес gateway можно узнать либо прописав `/tool traceroute 8.8.8.8`) ``` [admin@M-R-1] > ip route add dst-address=0.0.0.0/0 gateway=192.168.65.2 // для M-R-1 [admin@M-R-1] > routing ospf instance set 0 distribute-default=always-as-type-1 // для M-R-1 ``` 6) Настройка NAT для выхода в интернет других устройств ``` [admin@M-R-1] /ip firewall nat> add chain=srcnat out-interface=ether1 action=masquerade // для M-R-1 ``` --- ### Настройка Cisco-роутеров на примере C-R-3: 1) Меняем название устройства ``` Router(config)#hostname C-R-3 ``` 2) Настраиваем ip-адреса на всех интерфейсах ``` C-R-3(config)#int e0/0 C-R-3(config-if)#no sh C-R-3(config-if)#ip add 10.0.10.1 255.255.255.252 C-R-3(config)#int e0/1 C-R-3(config-if)#no sh C-R-3(config-if)#ip add 10.10.30.2 255.255.255.252 C-R-3(config)#int e0/2 C-R-3(config-if)#no sh C-R-3(config-if)#ip add 10.10.10.2 255.255.255.252 ``` 3) Настраиваем OSPF ``` C-R-3(config)#router ospf 1 C-R-3(config-router)#network 10.0.10.0 0.0.0.3 area 0 C-R-3(config-router)#network 10.10.10.0 0.0.0.3 area 0 C-R-3(config-router)#network 10.10.30.0 0.0.0.3 area 0 C-R-3(config-router)#do wr ``` --- ## LANv1 Данный раздел описывает первый вариант настройки локальной сети LANv1, который подходит для сетей 172.16.2.0/24 и 172.16.4.0/24. Здесь будет представлена более простая конфигурация локальной сети (по сравнению с LANv2), которая будет состоять из следующих подразделов - Switch (без использования vlan) - Kali-pc (статическая адресация) - Debian-pc (статическая адресация) ### Настройка Switch на примере SW-2 1) Меняем название устройства ``` Switch(config)# hostname SW-2 SW-2(config)# do wr ``` > Для работы локальной сети без использования vlan данной настройки достаточно --- ### Настройка Kali-pc на примере Kali-2 > (user/eve@123) 1. Изменяем файл сетевых настроек командой `nano /etc/network/interfaces`, дописывая ip-адрес, маску и дефолтный шлюз ``` source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 172.16.2.10 netmask 255.255.255.0 gateway 172.16.2.254 ``` 2. Указываем адрес DNS-сервера командой `nano /etc/resolv.conf` путем записи в конце файла еще одного сервера ``` nameserver 8.8.8.8 ``` 3. Перезагружаем машинку, чтобы все изменения в сетевых настройках начали работать: в терминале вводим команду `reboot` --- ### Настройка Debian-pc на примере Debian-20 > (root/eve@123) 1. Изменяем файл сетевых настроек командой `nano /etc/network/interfaces`, дописывая ip-адрес, маску и дефолтный шлюз ``` source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto ens3 allow-hotplug ens3 iface ens3 inet static address 172.16.2.20 netmask 255.255.255.0 gateway 172.16.2.254 ``` 2. Указываем адрес DNS-сервера командой `nano /etc/resolv.conf` путем записи в конце файла еще одного сервера ``` nameserver 8.8.8.8 ``` 3. Перезагружаем машинку, чтобы все изменения в сетевых настройках начали работать: в терминале вводим команду `reboot` --- ## FWv1 Данный раздел описывает первый вариант настройки FW, которая будет состоять из следующих разделов - базовая настройка - обновление системы - iptables ### Настройка FW-linux-2 > (root / eve@123) 1. Изменяем файл сетевых настроек командой `nano /etc/network/interfaces`, дописывая статические адреса, маски и дефолтный шлюз. ``` source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto ens3 allow-hotplug ens3 iface ens3 inet static address 192.168.2.1 netmask 255.255.255.0 gateway 192.168.2.2 auto ens4 allow-hotplug ens4 iface ens4 inet static address 172.16.2.254 netmask 255.255.255.0 ``` 2. Указываем адрес DNS-сервера командой `nano /etc/resolv.conf` путем записи в конце файла еще одного сервера ``` nameserver 8.8.8.8 ``` 3. Перезагружаем машинку, чтобы все изменения в сетевых настройках начали работать: в терминале вводим команду `reboot` > На данном этапе у машинки есть все необходимые настройки для выхода в интернет и обновления системы. Это нужно для корректной работы вспомогательных утилит 4. Обновляем машинку следующими командами ``` root@Debian-10:~$ apt update ... root@Debian-10:~$ apt upgrade ... ``` 5. Переводим систему в режим фильтрации пакетов путем ввода команды `nano /etc/sysctl.conf` и раскомментированием строки `net.ipv4.ip_forward=1` в данном файле. Затем в терминале вводим следующую команду ``` root@Debian-10:~ sysctl -p ``` 6. Подготавливаем дополнительные ip-адреса на внешнем интерфейсе FW, на которые будут заменяться локальные адреса. Для этого изменяем файл сетевых настроек командой `nano /etc/network/interfaces`, дописывая три вспомогательных ip-адреса ``` source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto ens3 allow-hotplug ens3 iface ens3 inet static address 192.168.2.1 netmask 255.255.255.0 gateway 192.168.2.2 auto ens3:1 iface ens3:1 inet static address 192.168.2.10 netmask 255.255.255.0 auto ens3:2 iface ens3:2 inet static address 192.168.2.20 netmask 255.255.255.0 auto ens3:3 iface ens3:3 inet static address 192.168.2.30 netmask 255.255.255.0 auto ens4 allow-hotplug ens4 iface ens4 inet static address 172.16.2.254 netmask 255.255.255.0 ``` 7. Настраиваем SNAT через iptables. Для этого задаем три правила ``` iptables -t nat -A POSTROUTING -o ens3 -s 172.16.2.10 -j SNAT --to-source 192.168.2.10 iptables -t nat -A POSTROUTING -o ens3 -s 172.16.2.20 -j SNAT --to-source 192.168.2.20 iptables -t nat -A POSTROUTING -o ens3 -s 172.16.2.30 -j SNAT --to-source 192.168.2.30 ``` 8. Сохраняем данный конфиг при помощи утилиты iptables-persistent. Для этого устанавливаем ее командой `apt install iptables-persistent`. Затем записываем существующий конфиг правил iptables в специальный файл командой `iptables-save > /etc/iptables/rules.v4`. После этого запускаем сервис командой `systemctl enable netfilter-persistent.service` для автоматического считывания правил и их применения в iptables. Таким образом, при перезагрузке FW правила, которые были записаны в архиве `/etc/iptables/rules.v4` --- ## LANv2 Данный раздел описывает второй вариант настройки локальной сети LANv2, который подходит для сетей 172.16.1.0/24 и 172.16.3.0/24. Здесь будет представлена более сложная конфигурация локальной сети (по сравнению с LANv1), которая будет состоять из следующих подразделов - Switch - Kali-pc - Debian-pc ### Настройка свитчей на примере SW-1 1) Производим базовую настройку SW-1 ``` Switch(config)# hostname SW-1 SW-1(config)# int e0/0 SW-1(config-if)# switchport trunk encapsulation dot1q SW-1(config-if)# switchport mode trunk SW-1(config)# int e0/2 SW-1(config-if)# switchport mode access SW-1(config-if)# switchport access vlan 10 SW-1(config)# int e0/3 SW-1(config-if)# switchport mode access SW-1(config-if)# switchport access vlan 11 SW-1(config-if)# do wr ``` --- ### Настройка Kali-pc на примере kali-1 > (user/eve@123) 1. Получение машинкой сетевых настроек будет проходить по DHCP, для этого заходим в файл командой `nano /etc/network/interfaces` и редактируем его ``` source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp ``` 2. Перезагружаем машинку, чтобы все изменения в сетевых настройках начали работать: в терминале вводим команду `reboot` --- ### Настройка Debian-pc на примере Debian-10 > (root/eve@123) 1. Получение машинкой сетевых настроек будет проходить по DHCP, для этого заходим в файл командой `nano /etc/network/interfaces` и редактируем его ``` source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto ens3 allow-hotplug ens3 iface ens3 inet dhcp ``` 2. Перезагружаем машинку, чтобы все изменения в сетевых настройках начали работать: в терминале вводим команду `reboot` --- ## FWv2 - настройка - обновление системы - iptables ### Настройка iptables на Debian на примере FW-linux-1 > (root / eve@123) 1. Изначально проводим конфигурацию файла сетевых настроек командой `nano /etc/network/interfaces`. В данной файле изменяем конфиги существующих интерфейсов: ens3 - WAN-inteface, ens4 - LAN-interface. ``` source /etc/network/interfaces.d/* auto lo iface lo inet loopback auto ens3 allow-hotplug ens3 iface ens3 inet static address 192.168.1.1 netmask 255.255.255.0 gateway 192.168.1.2 auto ens4 allow-hotplug ens4 iface ens4 inet static address 172.16.1.254 netmask 255.255.255.0 ``` 2. Следующая конфигурация файла сетевых настроек нужна для того, чтобы у данного FW был доступ до DNS-сервера, поэтому добавляем его командой `nano /etc/resolv.conf` в конец файла ``` nameserver 8.8.8.8 ``` 3. Переводим систему в режим фильтрации пакетов путем ввода команды `nano /etc/sysctl.conf` и раскомментированием строки `net.ipv4.ip_forward=1` в данном файле. Затем в терминале вводим следующую команду `sysctl -p` и перезагружаем машинку, чтобы все изменения в сетевых настройках начали работать: в терминале вводим команду `reboot` 4. На данном этапе FW нужно обновить для корректной работы утилит, нужных для настройки VLAN, DHCP-srv и iptables, поэтому обновляем систему с помощью следующих команд ``` root@Debian-10:~$ apt update ... root@Debian-10:~$ apt upgrade ... ``` 5. Настраиваем vlan на FW, для этого скачиваем пакет настроек командой `apt install vlan`. Затем создаем два sub-интерфейса (ens4.10 для vlan 10 и ens4.11 для vlan 11) для работы с тегированным трафиком, записывая командой `nano /etc/network/interfaces` в конец файла следующие настройки ``` auto ens4.10 iface ens4.10 inet static address 172.16.10.254 netmask 255.255.255.0 vlan_raw_device ens4 auto ens4.11 iface ens4.11 inet static address 172.16.11.254 netmask 255.255.255.0 vlan_raw_device ens4 ``` 6. После создания вспомогательных интерфейсов нужно настроить DHCP-сервер, чтобы по этим интерфейсам FW раздавал ip и другие сетевые настройки устройствам в локальной сети. Для этого устанавливаем утилиту по настройке DHCP-сервера ``` apt install isc-dhcp-server ``` После этого в файле `nano /etc/default/isc-dhcp-server` изменяем конфиги: ``` DHCPDv4_CONF=/etc/dhcp/dhcpd.conf - раскомментить DHCPDv4_PID=/var/run/dhcpd.pid - раскомментить INTERFACESv4="ens ens4.10@ens4 ens4.11@ens4" - внутрь ковычек интерфейс для раздачи инфы по dhcp ``` Оставшаяся настройка будет проходить в файле `nano /etc/dhcp/dhcpd.conf`. ``` subnet 172.16.1.0 netmask 255.255.255.0 { range 172.16.1.10 172.16.1.20; option domain-name-servers 8.8.8.8; option domain-name "local1"; option routers 172.16.1.254; option broadcast-address 172.16.1.255; default-lease-time 600; max-lease-time 7200; } subnet 172.16.10.0 netmask 255.255.255.0 { range 172.16.10.10 172.16.10.20; option domain-name-servers 8.8.8.8; option domain-name "local10"; option routers 172.16.10.254; option broadcast-address 172.16.10.255; default-lease-time 600; max-lease-time 7200; } subnet 172.16.11.0 netmask 255.255.255.0 { range 172.16.11.10 172.16.11.20; option domain-name-servers 8.8.8.8; option domain-name "local11"; option routers 172.16.11.254; default-lease-time 600; max-lease-time 7200; } ``` Далее создаем файл для хранения базы dhcp `touch /var/db/dhcp.leases`, последним действием будет запуск демона командой `/usr/local/sbin/dhcpd -q -lf /var/db/dhcp.leases -cf /etc/dhcpd.conf`. Для автозапуска данного сервиса (чтобы он начинал работать при включении машинки) нужно прописать `systemctl enable isc-dhcp-server`. > И не забудьте изменить файл `nano /etc/init.d/isc-dhcp-server`: Было `start-stop-daemon --start --pidfile $PIDFILE --exec /usr/sbin/dhcpd -- $VERSION -cf $CONF $INTERFACES` Стало `start-stop-daemon --start --quiet --pidfile $PIDFILE --exec /bin/bash -- -c "/usr/sbin/dhcpd -lf /var/lib/dhcp/$NAME.leases -cf $CONF > /tmp/dhcp.log 2>&1"` 6. Настраиваем PNAT через iptables. Для этого задаем правило ``` iptables -t nat -A POSTROUTING -j MASQUERADE ``` 7. Сохраняем данный конфиг при помощи утилиты iptables-persistent. Для этого устанавливаем ее командой `apt install iptables-persistent`. Затем записываем существующий конфиг правил iptables в специальный файл командой `iptables-save > /etc/iptables/rules.v4`. После этого запускаем сервис командой `systemctl enable netfilter-persistent.service` для автоматического считывания правил и их применения в iptables. Таким образом, при перезагрузке FW правила, которые были записаны в архиве `/etc/iptables/rules.v4` --- ### Настройка pfSense-FW-4 1) Назначение интерфейсов - Assign Interfaces Assign Interfaces -> VLANs set up (no) -> WAN interface (em0) -> LAN interface (em1) -> vse norm (yes) 2) Назначение ip-адресов - Set Int IP address Set interface(s) IP address -> number of the Int (1) -> DHCP? (no) -> enter new ip add (192.168.4.1) -> subnet/mask (24) -> gateway? (192.168.4.2) -> IPv6 DHCP? (no/no) -> http? (no, https) Set interface(s) IP address -> number of the Int (2) -> enter the new ip address (172.16.4.254) -> subnet (24) -> gateway (no) -> IPv6? (no) -> DHCP? (no) -> http (no, https) 3) Web-настройка - https://172.16.4.254 (admin/pfsense) Добавить ip через Firewall -> Virtual IPs -> add: type - Proxy ARP, int - WAN, add type - single add, address - 192.168.4.10/32 Добавить ip через Firewall -> Virtual IPs -> add: type - Proxy ARP, int - WAN, add type - single add, address - 192.168.4.20/32 Добавить ip через Firewall -> Virtual IPs -> add: type - Proxy ARP, int - WAN, add type - single add, address - 192.168.4.30/32 Выключаем действующий NAT через Firewall -> NAT -> Outbound -> Mode - Disable Outbound NAT Создаем правила для NAT 1:1 NAT 1:1 -> add: int - WAN, external ip - 192.168.4.10, internal ip - 172.16.4.10 -> save NAT 1:1 -> add: int - WAN, external ip - 192.168.4.20, internal ip - 172.16.4.20 -> save NAT 1:1 -> add: int - WAN, external ip - 192.168.4.30, internal ip - 172.16.4.30 -> save Добавить DNS-server через System general -> add DNS-srv 8.8.8.8 --- ### Настройка pfSense-FW-3 1) Назначение интерфейсов - Assign Interfaces Assign Interfaces -> VLANs set up (yes) -> parent interface for new VLAN (em1) -> VLAN tag (30) -> parent interface for new VLAN (em1) -> VLAN tag (31) -> finished -> WAN interface (em0) -> LAN interface (em1) -> Opt1 (em1.30) -> Opt2 (em1.31) -> vse norm (yes) 2) Назначение ip-адресов - Set Int IP address Set interface(s) IP address -> number of the Int (1) -> DHCP? (no) -> enter new ip add (192.168.3.1) -> subnet/mask (24) -> gateway? (192.168.3.2) -> IPv6 DHCP? (no/no) -> http? (no, https) Set interface(s) IP address -> number of the Int (2) -> enter the new ip address (172.16.3.254) -> subnet (24) -> gateway (no) -> IPv6? (no) -> DHCP? (yes) -> 172.16.3.10 - 172.16.3.20 -> http (no, https) Set interface(s) IP address -> number of the Int (3) -> enter the new ip address (172.16.30.254) -> subnet (24) -> gateway (no) -> IPv6? (no) -> DHCP? (yes) -> 172.16.30.10 - 172.16.30.20 -> http (no, https) Set interface(s) IP address -> number of the Int (4) -> enter the new ip address (172.16.31.254) -> subnet (24) -> gateway (no) -> IPv6? (no) -> DHCP? (yes) -> 172.16.31.10 - 172.16.31.20 -> http (no, https) 3) Web-настройка - https://172.16.3.254 (admin/pfsense) Переименовать Opt1, Opt2, добавить им такое же правило на разрешение трафика из vlan_30 и vlan_31 куда угодно. Добавить DNS-server через System -> General Setup - add DNS-srv 8.8.8.8 --- ## Дополнительные материалы Мини-курс по iptables ([1](https://interface31.ru/tech_it/2020/02/osnovy-iptables-dlya-nachinayushhih-chast-1.html),[2](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiw_p3Qlcj3AhWVSvEDHeT8A_AQFnoECBIQAQ&url=https%3A%2F%2Finterface31.ru%2Ftech_it%2F2020%2F09%2Fosnovy-iptables-dlya-nachinayushhih-chast-2-tablica-filter.html&usg=AOvVaw3vdFH1VNWAZmfZGZgt_t7d),[3](https://interface31.ru/tech_it/2021/07/osnovy-iptables-dlya-nachinayushhih-chast-3-tablica-nat.html) и [4](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiiib__mcj3AhUstYsKHUXdC4oQFnoECA4QAQ&url=https%3A%2F%2Finterface31.ru%2Ftech_it%2F2021%2F08%2Fosnovy-iptables-dlya-nachinayushhih-chast-4-tablica-nat-tipovye-scenarii-ispolzovaniya.html&usg=AOvVaw3AtvK2ymdoovXp09gdO5Jk) части) [Сохранение конфигов](https://www.cyberciti.biz/faq/how-to-save-iptables-firewall-rules-permanently-on-linux/) в iptables Мануал iptables на русском Установка [dhcp-сервера](https://aeb-blog.ru/debian/ustanovka-dhcp-servera-v-debian-10/) на Debian [Примеры настройки](https://wiki.debian.org/ru/NetworkConfiguration) сетевых сервисов на Debian