Код: Выделить всё
#################################################################
# Опции
#################################################################
# Интерфейсы
ext_if = "em1"
int_if = "em0"
# IP адреса
extnet = "95.161.XXX.XXX."
lannet = "192.168.0.0/23"
ext_ip = "95.161.XXX.XX1"
ext_ip_pbx = "95.161.XXX.XX2"
bsd = "192.168.0.1/32"
mail = "192.168.0.100/32"
pbx = "192.168.1.227/32"
terminal = "192.168.1.144/32"
root = "192.168.0.10/32"
gs = "192.168.0.96/32"
fserv = "192.168.0.3/32"
friends = "{ XXXXXXXXXXXXXXXX }"
private_nets= "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, 0.0.0.0/8, 240.0.0.0/4 }"
# Порты
client_ports = "{ 21, 123, 80, 443, 2443, 3128, 3129, 3389, 5190 }"
admin_ports = "{ 21, 25, 110, 123, 80, 443, 2443, 3128, 3129, 3389, 5190, 22, 3390 }"
pbx_udp = "{ 2727, 4520, 4569, 5036, 5060, 10000:20000 }"
pbx_tcp = "{ 5060 }"
#################################################################
# Нормализация
################################################################
# Определяем политику при блокировке пакетов
set block-policy drop
# Логируемый интерфейс
set loginterface $ext_if
# Максимальное количество записей в пуле отвечающем за нормализацию трафика (scrub)
# Максимальное количество вхождений в пул отвечающий за состояние таблицы состояний соединений (keep state)
set limit { frags 10000, states 10000 }
# Устанавливаем тип оптимизации
set optimization normal
# Игнорируем фильтрацию на кольцевом интерфейсе
set skip on lo0
# Нормализация всего входящего трафика на всех интерфейсах
scrub in all
#################################################################
# NAT & RDR
#################################################################
# NAT для Asterisk
nat on $ext_if from $pbx to any -> $ext_ip_pbx
# NAT для локалки
nat on $ext_if from $lannet to any -> $ext_ip
# Пробрасываем порты на Asterisk.
rdr on $ext_if from any to $ext_ip_pbx -> $pbx
# Пробрасываем порты на почтовый сервер - smtp для всех.
rdr on $ext_if proto tcp from any to $ext_ip port smtp -> $mail
# Пробрасываем порты на почтовый сервер - pop3 для филиалов.
rdr on $ext_if proto tcp from $friends to $ext_ip port pop3 -> $mail
# Пробрасываем порты на почтовый сервер - https для всех.
rdr on $ext_if proto tcp from any to $ext_ip port https -> $mail
# Пробрасываем порты на виндовый терминальный сервер.
rdr on $ext_if proto tcp from any to $ext_ip port rdp -> $terminal
# Пробрасываем порты на General-server.
rdr on $ext_if proto tcp from any to $ext_ip port 3390 -> $gs port 3389
# Пробрасываем порты на web сервер.
#rdr on $ext_if proto tcp from any to $ext_ip port www -> $www
# Отправляем локальных интернетчиков на squid.
rdr on $int_if proto tcp from $lannet to any port www -> 127.0.0.1 port 3129
#################################################################
# Правила фильтрации
#################################################################
# Защита от спуфинга
antispoof quick for { lo0, $int_if, $ext_if }
# Блокируем всё
block log all
# Блокируем тех, кто лезет на внешний интерфейс с частными адресами
block drop in quick on $ext_if from $private_nets to any
# Разрешаем icmp
pass inet proto icmp icmp-type echoreq
# Разрешаем DNS для локалки
pass in on $int_if proto udp from $lannet to $bsd port domain
# Тестовый полный выход
pass in log on $int_if from any to any
# Выпускаем Asterisk
#pass in on $int_if from $pbx to any
# Выпускаем почтовик
#pass in log on $int_if proto tcp from $mail to any port smtp keep state
# Выпускаем админские сервисы
#pass in on $int_if proto tcp from $root to any port $admin_ports
# Выпускаем клиентске сервисы
#pass in log on $int_if proto tcp from $lannet to any port $client_ports
# Разрешаем нашему шлюзу полный выход с обоих интерфейсов
pass out on $ext_if from any to any
pass out on $int_if from any to any
################ Icoming ##################
# Разрешаем входящий ssh
pass in log on $ext_if proto tcp from any to $ext_ip port 22
# Разрешаем входящий smtp для всех
pass in on $ext_if proto tcp from any to $mail port smtp flags S/SA synproxy state
# Разрешаем входящий pop3 для филиалов
pass in on $ext_if proto tcp from $friends to $mail port pop3 flags S/SA synproxy state
# Разрешаем входящий https
pass in log on $ext_if proto tcp from any to $mail port https
# Разрешаем входящий rdp
pass in log on $ext_if proto tcp from any to $terminal port rdp flags S/SA synproxy state
# Разрешаем входящий rdp2
pass in log on $ext_if proto tcp from any to $gs port rdp flags S/SA synproxy state
# Разрешаем входящий Asterisk
pass in on $ext_if proto tcp from any to $pbx port $pbx_tcp flags S/SA keep state
pass in on $ext_if proto udp from any to $pbx port $pbx_udp keep state
Сейчас такие проблемы:
- не работают исходящие smtp, rdp (причем на вход они работают)
- не работает входящий https
хотя по логом происходит pass и блокировок нет.
Код: Выделить всё
rule 23/0(match): pass in on em0: 192.168.0.10.4066 > 77.88.21.89.25: [|tcp]
В какую сторону копать следует?
Так понимаю что пакеты проходят, но соединения не устанавливаются...
FreeBSD 7.1 RELEASE