В ядре есть:
Код: Выделить всё
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_FORWARD
options IPDIVERT
options DUMMYNET
options IPFIREWALL_DEFAULT_TO_ACCEPT
Код: Выделить всё
#!/bin/sh
# при работе по SSH, чтобы перечитать конфиг набирать nohup sh /etc/rules
# Прежде, чем мы начнем, сбросим список
ipfw -q -f flush
# Установим префикс команды для набора правил
cmd="ipfw -q add"
skip="skipto 800"
wanip="xxx.xxx.xxx.xxx" # внешний IP
lannet="192.168.0.0/24" # внутренняя сеть
# Нет запретов внутри интерфейса смотрящего в локальную сеть
$cmd 005 allow all from any to any via re0
# Нет ограничений на Loopback интерфейсе
$cmd 010 allow all from any to any via lo0
# Отправляем всех на прозрачный прокси
#$cmd 011 fwd 127.0.0.1,3129 tcp from $lannet to any 80
# проверяем если пакет входящий и транслирован ли он
$cmd 014 divert natd ip from any to any in via rl0
# Позволяем пакету проходить, если предыдущий был добавлен
#в "динамическую" таблицу правил с разрешением состояния keep-state.
$cmd 015 check-state
#################################################################
# Интерфейс смотрящий в интернет (Исходящая секция)
#################################################################
# Разрешаем исходящий доступ к DNS провайдера.
$cmd 020 $skip tcp from $lannet to any 53 out via rl0 setup keep-state
# Allow ICQ
$cmd 035 $skip tcp from $lannet to any 5190 out via rl0 setup keep-state
# Разрешаем http запросы в обход сквида
$cmd 040 $skip tcp from $lannet to any 80 out via rl0 setup keep-state
# Разрешаем https запросы в обход сквида
$cmd 050 $skip tcp from $lannet to any 443 out via rl0 setup keep-state
# Разрешаем исходящий RDP
$cmd 050 $skip tcp from $lannet to any 3389 out via rl0 setup keep-state
# Разрешаем функцию отправки и приема почты
$cmd 060 $skip tcp from $lannet to any 25 out via rl0 setup keep-state
$cmd 061 $skip tcp from $lannet to any 110 out via rl0 setup keep-state
# Разрешаем полный доступ с локалхоста под рутом
$cmd 070 $skip tcp from me to any out via rl0 setup keep-state uid root
# Пытаемся выпустить запросы от сквида
$cmd 071 $skip tcp from me to any 80 out via rl0
# Разрешаем исходящий пинг
$cmd 080 $skip icmp from any to any out via rl0 keep-state
# Эта функция используется SSH
$cmd 110 $skip tcp from any to any 22 out via rl0 setup keep-state
# Разрешаем прохождение пакетов до ntp time server
$cmd 130 $skip udp from $lannet to any 123 out via rl0 keep-state
#################################################################
# Интерфейс смотрящий в Internet (Входящая секция)
# Опрашиваем запросы начала сессии идущие из Интернета
# в локальную сеть или к гейту
#################################################################
# Запрещаем весь входящий траффик из зарезервированных адресных пространств
$cmd 300 deny all from 192.168.0.0/16 to any in via rl0 #RFC 1918 private IP
$cmd 301 deny all from 172.16.0.0/12 to any in via rl0 #RFC 1918 private IP
$cmd 302 deny all from 10.0.0.0/8 to any in via rl0 #RFC 1918 private IP
$cmd 303 deny all from 127.0.0.0/8 to any in via rl0 #loopback
$cmd 304 deny all from 0.0.0.0/8 to any in via rl0 #loopback
$cmd 305 deny all from 169.254.0.0/16 to any in via rl0 #DHCP auto-config
$cmd 306 deny all from 192.0.2.0/24 to any in via rl0 #reserved for docs
$cmd 307 deny all from 204.152.64.0/23 to any in via rl0 #Sun cluster
$cmd 308 deny all from 224.0.0.0/3 to any in via rl0 #Class D & E multicast
# Запрещаем ident
$cmd 315 deny tcp from any to any 113 in via rl0
# Запрещаем весь сервис Netbios. 137=имя, 138=дейтаграмма, 139=сессия
# Netbios это сервис общего доступа MS/Windows .
# Блокируем MS/Windows hosts2 name server requests 81
$cmd 320 deny tcp from any to any 137 in via rl0
$cmd 321 deny tcp from any to any 138 in via rl0
$cmd 322 deny tcp from any to any 139 in via rl0
$cmd 323 deny tcp from any to any 81 in via rl0
# Запрещаем пакеты прибывшие позже
$cmd 330 deny all from any to any frag in via rl0
# Запрещаем ACK пакеты которые не совпадают с динамической таблицей правил
$cmd 332 allow tcp from any to any established in via rl0
# разрешаем некоторые типы ICMP траффика - эхо-запрос,
# эхо-ответ и время жизни пакета истекло
$cmd 360 allow icmp from any to $wanip in via rl0 icmptypes 0,8,11
# Разрешаем входящую www функцию
$cmd 370 allow tcp from any to $wanip 80 in via rl0 setup limit src-addr 2
# Разрешаем входящие безопасные SSH
$cmd 380 allow tcp from any to $wanip 2211 in via rl0 setup limit src-addr 2
# Разрешаем входящую почту
$cmd 390 allow tcp from any to $wanip 25 in via rl0 setup limit src-addr 2
# Разрешаем входящую почту
$cmd 390 allow tcp from any to $wanip 110 in via rl0 setup limit src-addr 2
# Разрешаем RDP
#$cmd 395 allow tcp from any to $wanip 3389 in via rl0 setup limit src-addr 2
# Разрешаем RAdmin
$cmd 395 allow tcp from any to $wanip 50505 in via rl0 setup limit src-addr 2
# Отбрасываем и протоколируем все входящие пакеты из внешнего мира
#$cmd 400 deny log all from any to any in via rl0
# # Отбрасываем и протоколируем все исходящие пакеты во внешний мир
#$cmd 450 deny log all from any to any out via rl0
# Местоположение skipto для исходящих правил состояния
$cmd 800 divert natd ip from $lannet to any out via rl0
$cmd 801 allow ip from any to any
# Режем все лишнее нах!
$cmd 999 deny log all from any to any
Заранее благодарен за содействие!