Port forwarding, NAT и установка файрвола pfSense

Для защиты сети используют два типа файрволов. Первый тип, это hardware т.е. готовое решение, например от Juniper SSG550. Однако существуют и программные решения, которые в свою очередь делятся на платные и бесплатные, к платным можно отнести например продукты компании Айдеко, к бесплатным же в свою очередь можно отнести такие решения как: pfSense, m0n0wall, sphirewall. Я лично использовал в работе решения pfSense и m0n0wall, и обоими крайне даволен. В этой статье мы рассмотрим как установить pfSense защитив тем самым внутреннюю сеть, используя файрвол как шлюз в сеть и выполним простой проброс портов на внутренний сервер.

Платформа

В качестве платформы, я использую ESXi хост, на котором установленны машинки CentOS, и сам файрвол. Принцип такой, сервера объеденены в одну внутреннюю сеть (LAN), и не как не пересекаются с внешней сетью (WAN), но именно там находится файрвол. Т.е. один его интерфейс подключен к внутренней сети (LAN), а второй к внешней сети (WAN). Получается что вся связь между серверами и внешним миром происходит через шлюз.

В ESXi вся схема выглядит так:
SchemaBlog

Установка pfSense

Я не буду подробно остонавливатся на установке, она длится не более двух минут. Установщик представлен в псевдо графическом интерфейсе, где от вас потребуется пару раз нажать кнопку далее или окей. Стоит отметить, что для успешной установки, pfSense требует минимум два интерфейса, об этом стоит помнить.

На внешнем интерфейсе я задал статический IP адрес, а на внутреннем включил DHCP (файрвол сам спрашивает об этом во время настройки внутреннего интерфейса) который раздает адреса во внутреннюю сеть.
DHCPD

Управление, мониторинг pfSense

Управляется pfSense через веб-интерфейс, попасть в него можно только из внутренней сети, из внешней сети он не доступен. Как видно на картинке выше, мой внутренней интерфейс имеет адрес 192.168.0.1, для управления файрволом, я установил в сети сервер CentOS с GUI. Логин по умолчанию: admin, пароль: pfsense
pfsense

Проброс портов 22, 80 на внутренний сервер сети

В сети есть веб сервер, который должен быть доступен из внешнего мира.
IP адрес сервера 192.168.0.104
Необходимо открыть порты:
22 – SSH
80 – HTTP

Т.е. я буду обращаться на внешний адрес файрвола 172.17.17.236 на порт 80 или порт 22, а файрвол будет выполнять трансляцию адресов (NAT) и форвардинг портов на определенную машину в сети, а именно 192.168.0.104 где бежит Apache.

Для этого перейдем в меню “Firewall” -> “NAT” где добавим необходимые правила.
rulles

Там все очень просто, к тому же каждый пункт подписан. Необходимо выбрать интерфейс на который будут обращаться, это конечно WAN, протокол это TCP, с любого направления, т.е. с любого адреса в мире, на порт 80, он указан как HTTP, на сервер в сети с адресом 192.168.0.104 и тоже на порт 80. В поле описание, можно написать зачем необходимо правило.
nat

Идем на внешний адрес 172.17.17.236:
pop

Как видим файрвол перепарвил нас на внутренний адрес 192.168.0.104 порт 80. То же самое будет с портом 22 для протокола SSH.