Код: Выделить всё
#IPFW rules for server
#
#
# сбрасываем все правила
flush
# сбрасываем все pipe
pipe flush
#создаем нат
nat 1 config if sis0 same_ports log
#лимиты скорости
pipe 1 config bw 128k
pipe 2 config bw 128k
pipe 3 config bw 128k
pipe 4 config bw 128k
pipe 5 config bw 512k
pipe 6 config bw 512k
#разрешаем все от нас
add 1 allow all from 172.16.1.200 to any out
#разрешаем весь траффик по внутреннему интерфейсу
add 10 allow all from any to any via lo0
#рубим попытки lo0 куда-то лезть и откуда-то лезть на lo0
add 11 deny all from any to 127.0.0.0/8
add 12 deny all from 127.0.0.0/8 to any
# рубим пакеты `типа от внутренней сети, но на внешнем интерфейсе`
add 20 deny ip from 172.16.0.0/24 to any in via sis0
# рубим пакеты `типа от внешней сети, но на внутреннем интерфейсе`
add 21 deny ip from 172.16.1.0/24 to any in via vr0
# рубим автоконфигуреную частную сеть
add 30 deny ip from any to 169.254.0.0/16 in via sis0
# рубаем мультикастовые рассылки
add 40 deny ip from 224.0.0.0/4 to any out via sis0
add 41 deny ip from any to 240.0.0.0/4 in via sis0
# рубим фрагментированные icmp
add 50 deny icmp from any to any frag
# рубим широковещательные icmp на внешнем интерфейсе
add 51 deny log icmp from any to 255.255.255.255 in via sis0
add 52 deny log icmp from any to 255.255.255.255 out via sis0
# разрешаем траффик внутренней сети на внутреннем интерфейсе
add 60 allow all from 172.16.0.0/24 to 172.16.0.0/24 via vr0
add 61 allow all from not 172.16.0.0/24 to not 172.16.1.200 via sis0
#используем нат
add 70 nat 1 ip from 172.16.0.0/24 to any out
add 71 nat 1 ip from any to 172.16.1.200 in via sis0
# разрешаем tcp-пакеты по уже установленным соединениям
add 80 allow tcp from any to any established
# разрешаем некоторые типы ICMP траффика - эхо-запрос,
# эхо-ответ и время жизни пакета истекло
add 100 allow icmp from any to any icmptypes 0,8,11
#режем скорость
add 111 pipe 1 all from 172.16.0.11 to any
add 112 pipe 2 all from any to 172.16.0.11
add 113 pipe 3 all from 172.16.0.12 to any
add 114 pipe 4 all from any to 172.16.0.12
add 115 pipe 5 all from 172.16.0.10 to any
add 116 pipe 6 all from any to 172.16.0.10
# DNS
add 120 allow udp from any to 172.16.1.200 53 in via sis0
add 121 allow udp from 172.16.1.200 53 to any out via sis0
add 122 allow udp from any 53 to 172.16.1.200 in via sis0
add 123 allow udp from 172.16.1.200 to any 53 out via sis0
# разрешаем снаружи соединяться с 53 портом (TCP DNS)
add 131 allow tcp from any to 172.16.1.200 53 in via sis0 setup
# открываем снаружи 80 порт - если у нас есть WWW сервер
add 132 allow tcp from any to 172.16.1.200 80 in via sis0 setup
# открываем снаружи 20,21 порт - для активного FTP
add 133 allow tcp from any to 172.16.1.200 20,21 in via sis0 setup
# разрешаем входящую почту
add 134 allow tcp from any to 172.16.1.200 25 in via sis0 setup
# разрешаем SSH
add 135 allow tcp from any to 172.16.1.200 22 in via sis0 setup
# открываем снаружи 20,21 порт - для активного FTP
add 136 allow tcp from any to 172.16.1.200 20,21 in via sis0 setup
# разрешаем тимспик
add 137 allow all from any to 172.16.1.200 8767 in via sis0 setup
# webmin
add 138 allow all from any to 172.16.1.200 10000 in via sis0 setup
# пассивный FTP
add 139 allow tcp from any to 172.16.1.200 49152-65535 via sis0
# разрешаем UDP (для синхронизации времени - 123 порт)
add 140 allow udp from any to any 123 via sis0
# Блокируем все остальные попытки соединения с занесением в логи
add 150 deny log tcp from any to 172.16.1.200 in via sis0 setup