pfSense [wiki] - это многофункциональный дистрибутив-роутер основанный на FreeBSD. Перечислять его возможности нет смысла, их очень много. Предназначен для установки на персональный компьютер, известен своей надежностью и предлагает функции, которые часто можно найти только в дорогих коммерческих межсетевых экранах.
Подготовка:
Алгоритм действий будет следующим. Сперва подготовим виртуальную машину для работы с pfSense, далее скачаем дистрибутив и приступим к установке. После чего, займемся настройкой pfSense, поднимем интернет через PPPoE, настроим локальную сеть, правила фаервола для сетевых интерфесов. Ознакомимся с системой обнаружения и предотвращения вторжений Snort. Ну и в конце, подключим Wi-Fi адаптер для организации точки доступа.
Полезный материал:
- Оффициальный форум. [eng|rus]
- Полное руководство по pfSense версии 2.0. [link]
Сети:
- Частные диапазоны IP-адресов. [wiki]
- CIDR (Classless Inter-Domain Routing) + VLSM (Variable Length Subnet Mask), бесклассовая адресация. [wiki]
On-Line калькуляторы:
- IP Subnet Calculator. [link]
- VLSM калькулятор подсетей. [link]
- VLSM Calculator - калькулятор подсетей с маской переменной длины. [link]
Debian:
Oracle VM VirtualBox: [link]
Добавление виртуальных интерфейсов:
В моем случае будет 2, 1-ый для "LAN" - локальная сеть, 2-ой для "VBOX" - локальная сеть для виртуальных машин.Открываем VirtualBox и переходим в "Файл"->"Настройки"->"Сеть"->"Виртуальные сети хоста" нажимаем на значек с изображением "+". Если нажать на значек с изображением "отвертка", то можно задать параметры получения статического IP и включить DHCP сервер. В нашем случае, оставим все как есть, т.к. IP адрес мы будем получать от DHCP сервера pfSense.
Показать изображение:
Создание виртуальной машины:
Нажимаем на кнопку "создать" и переходим в "экспертный режим". Указываем имя и тип ОС, объем памяти, жесткий диск - нажимаем "создать" В окне "Создать виртуальный жесткий диск" настраиваем расположение, размер и тип.
Показать изображение:
Настройка:
Пройдемся по основным пунктам.
- [1] "Система"->"Материнская плата"->"Порядок загрузки": Оставляем только "Оптический диск" и "Жесткий диск". Стрелочками "вверх-вниз" можно изменить порядок загрузки.
- [2] Во вкладке "Процессор": задаем кол-во используемых ядер.
- [3] Носители информации. Добавляем контроллер "Sata" и подключаем к нему образ жесткого диска ".vdi и привод оптических дисков ".iso". Контроллер "IDE" нам не нужен.
Показать изображение:
- [4] Убираем галочку с "Включить аудио".
- [5] Настраиваем сеть. Но перед этим, ознакомимся с существующими определениями настроек. "[1] | [2]".
Показать изображение:
[Адаптер 1] - К этому адаптеру подключен патч-корд от провайдера.
В типе подключения - задаем "Сетевой мост" и выбираем наш физический адаптер.
[Адаптер 2] - От этого адаптера наша физическая машина будет получать интернет.
В типе подключения - задаем "Виртуальный адаптер хоста" и выбираем "VirualBox Host-Only Ethernet Adapter"
[P.S.] - Написать еще про NAT.
[6] USB. Подключаем Wi-Fi адаптер. Жмем на значек с изображением "+" и в выпадающем списке выбираем беспроводной адаптер.
Показать изображение:
pfSense: [link]
Установка:
Нам понадобиться установочный образ pfSense - "CD Image (ISO) Installer" На 3-ем шаге настройки VB подключаемм скачанный образ. Жмем запустить виртуальную машину.
Дожидаемся, пока закончится таймер.
Показать изображение:
Жмем "I" - pres I to launch the installer.
Показать изображение:
Конфигурация консоли - стандартных настроек достаточно для продолжения, поэтому - "Accept these Settings".
Показать изображение:
Выбираем тип установки - "Quick/Easy Install"->"OK".
Показать изображение:
Надстройки Kernel - "Standart Kernel".
Показать изображение:
Reboot.
Показать изображение:
[P.S.] В самом конце, пока pfSense перезагружается, не забываем изьять диск из привода. После чего, дожидаемся пока не появится окно приветствия - "Welcome to pfSense".
Настройка через веб-конфигуратор:
После того, как pfSense запустится, он нам выведет на экран название, используемый протокол и адрес LAN интерфейса.
LAN (lan) -> em1 -> v4: 192.168.1.1/24
Если перейти в браузере по этому адресу, то ничего не произойдет. Необходимо, чтобы наш виртуальный сетевой адаптер "VirtualBox Host-Only Ethernet Adapter" получил настройки сети от "DHCP-сервера" pfSense. Для этого в свойствах адаптера зададим адрес DNS-сервера.
192.168.1.1
После того, как виртуальный сетевой адаптер получил настройки, перейдем к веб-конфигуратору и займемся настройкой роутера pfSense.
WizardpfSense -> SetupConfigure -> WAN Interface
# - [Configure WAN Interface]
- Выбираем, как мы хотим получать интернет.
SelectedType - PPPoE
# - [PPPoE configuration]
- Задаем имя, пароль и название подключения.
PPPoE Username - User
PPPoE Password - Pass
PPPoE Service name - FTTx
- Блокируем зарезервированные диапазоны IP адресов.
# - [RFC1918 Networks]
Проверяем галочку - Block private networks from entering via WAN.
# - [Block bogon networks]
Проверяем галочку - Block non-Internet routed networks from entering via WAN.
WizardpfSense -> SetupConfigure -> LAN Interface
# - [Configure LAN Interface]
LAN IP Address - 192.168.1.1
Subnet Mask - 24
WizardpfSense SetupSet -> Admin -> WebGUI Password
# - [Set Admin WebGUI Password]
Admin Password -
Admin Password AGAIN -
Reload->pfSense webConfigurator
Теперь интернет у нас поднят.
Настройка DHCP-сервера:
Разобьем нашу сеть "192.168.1.1/24" на подсети | LAN | WLAN | VBOX | с помощью "VLSM каклькулятора".
Показать изображение:
Interfaces -> LAN
# - [Static IPv4 Configuration]
IPv4 Address - 192.168.1.1/27
- После этого шага, доступ к веб-интерфейсу пропадет. В св-ах адаптера временно пропишем статический адрес - 192.168.1.2/255.255.255.224 и шлюз 192.168.1.1
Services -> DHCP Server
# - [General Options]
Range 192.168.1.1 - 192.168.1.30
- После чего, в св-ах адаптера оставляем только адрес DNS-сервера.
Настройка DNS-сервера:
Параметров по умолчанию достаточно. Включим лишь резолвинг для имен "hostname" хостов.
Services -> DNS Resolver -> General Settings
# General DNS Resolver Options
Enable - *
DHCP Registration - *
Static DHCP - *
Snort: [wiki]
Snort - это система обнаружения и предотвращения вторжений IDS/IPS, которая анализирует трафик и, на основании правил, сигнализирует о нарушениях.
Установка:
В доступных пакетах эта программа есть. Устанавливается она достаточно просто.
System -> Package Manager -> Available Packages
- Ищем пакет под названием Snort и нажимаем Install.
Настройка:
Определяем глобальные настройки. Но сперва необходимо получить "Oinkcode". Для этого необходима регестрация на оф. сайте Snort.
Services -> Snort -> Global Settings
# - [Snort Subscriber Rules]
- Тут настраивается платная/бесплатная подписка для скачивания правил.
Enable Snort VRT - Галочка
Snort Oinkmaster Code - Полученный код
# - [Snort GPLv2 Community Rules]
- Набор правил Snort Community
Enable Snort GPLv2 - Галочка
# - [Emerging Threats (ET) Rules]
- ETPro для Snort предлагает ежедневные обновления угроз вредоносного ПО.
Enable ET Open - Галочка
# - [Sourcefire OpenAppID Detectors]
- Сигнатуры приложений
Enable OpenAppID - *
Enable RULES OpenAppID - *
# - [Rules Update Settings]
- Настройки обновлений.
Update Interval - 7 DAYS
Update Start Time - 21:00
Hide Deprecated Rules Categories - *
# - [General Settings]
- Настройка блокировки.
Remove Blocked Hosts Interval - 1 HOUR
Remove Blocked Hosts After Deinstall - *
Keep Snort Settings After Deinstall - -
- Жмякаем Save.
Скачиваем/Обновляем рулзы:
После устнановки получаем свежий набор правил.
Services -> Snort -> Update Rules
# - [Update Your Rule Set]
Update Rules - Ок
Интерфейс:
Добавляем интерфейс который необходимо анализировать Snort.
Services -> Snort -> Edit Interface -> WAN
-> [WAN Settings]
# - [General Settings]
Enable - *
Interface - WAN
Description - WAN
# - [Alert Settings]
- Включаем авто-блокировку
Block Offenders - *
Kill States - *
Which IP to Block - BOTH
# - [Detection Performance Settings]
Search Method - AC-BNFA
Search Optimize - *
- Жмякаем на Save.
-> WAN-Categories:
В этой настройке определяется набор работающих правил. Мы не пойдем методом выбора необходимого, а зададим политику безопастности.
# - [Automatic Flowbit Resolution]
Resolve Flowbits - *
# - [Snort Subscriber IPS Policy Selection]
Use IPS Policy - *
IPS Policy Selection - Balanced
Жмяк - Save.
-> WAN Preprocs:
Настройка препроцессора. Тут меня заинтересовала секция "Portscan Detection".
- При необходимости включаем ее и задаем порог чувствительности.
Enable - *
Sensitivity - high
Жмяк саве.
[P.S.] - Все необходимые для работы Snort настройки сделаны. Запускаем.
Services -> Snort -> Interfaces
# - [Interface Settings Overview]
Snort Status - Нажимаем на значек с изображением Start.
Wi-Fi:
Мой Wi-Fi адаптер это TP-LINK TL-WN7200ND с чипом RT2870 который поддерживается pfSense.
Interfaces:
Добавим интерфейс Wi-Fi адаптера в pfSense.
Interfaces -> (assign) -> Wireless -> Add
# - [Wireless Interface Configuration]
Parent Interface - run0
Mode - Access Point
Description - WLAN
- Переходим в Interface Assignments и в Available network ports: добавляем н.т.д. WLAN.
Переходим к настройке WLAN-интерфейса с названием OPT1.
Interfaces -> OPT1
# - [General Configuration]
Enable - ставим галочку для включения.
Description - WLAN
IPv4 Configuration Type - Static IPv4
# - [Static IPv4 Configuration]
IPv4 Address - 192.168.1.33/27
# - [Common Wireless Configuration]
Standard - 802.11g
Channel - 6
# - [Regulatory Settings]
Country - Russia
# - Network-Specific Wireless Configuration
SSID - Wi-Fi_pfSense
# - [WPA]
Enable - Галочка
WPA Pre-Shared Key - pass
DHCP:
После этого наша точка доступа будет видна в поиске. Но это еще не все! Необходимо включить "DHCP-сервер" для интерфейса "WLAN" и задать ранжирование IP-адресов. Иначе подключающимся клиентам не будут автоматически назначаться IP-адреса.
Services -> DHCP Server -> WLAN
# - [General Options]
Enable - Галочка
Range - 192.168.1.33 - 192.168.1.62
- Сохраняем настройки.
Теперь мы можем подключиться к точке доступа и проверить полученный IP-адрес.
Status -> DHCP Leases
Firewall:
Доступа к интернету у подключенных клиентов не будет. Чтобы это исправить, создадим правило в фаерволе, разрешающее ходить трафику из WLAN в сеть провайдера.
[P.S.] Важно отметить, что в фаерволе цепочка правил выполняется сверху вниз. Т.е. верхнее правило всегда имеет приоритет над нижнем.
Firewall -> Rules -> WLAN
# - [Edit Firewall Rule]
Action - Pass
Interface - WLAN
Protocol - Any
# - Source (Адрес источника)
Source - WLAN net
# - Destination (Адрес назначения)
Destination - any
Доступ к интернету есть.
Теперь можно позаботиться о безопасности. Нам необходимо, чтобы подключенные клиенты не имели доступа к ресурсам, находящимся в локальной сети. Это может понадобиться, когда точка доступа является общедоступной, или же по какой-то причине необходимо закрыть доступ в LAN-сеть.
Firewall -> Rules -> WLAN
# - [Edit Firewall Rule]
Action - Block
Interface - WLAN
Protocol - any
# - [Source]
Source - WLAN net
# - [Destination]
Destination - LAN net
Дистрибутивов-роутеров на самом деле много. Вот основной список понравившихся мне.
| OPNsense | NG Firewall | ClearOS |