### очищаем перед загрузкой все правила
-q -f flush### устанавливаем net.inet.ip.fw.one_pass=1
enable one_pass
### а так в 0
#disable one_pass
### запрещаем сканирование nmap'ом на входящем интерфейсе
add 10 deny tcp from any to any tcpflags syn,fin,ack,psh,rst,urg in recv em0
add 11 deny tcp from any to any tcpflags !syn,!fin,!ack,!psh,!rst,!urg in recv em0
add 12 deny tcp from any to any not established tcpflags fin in recv em0
### антиспуфинг
add 20 deny all from any to any not verrevpath in
#add 21 deny all from any to any not antispoof in
### разрешаем всё на внутреннем интерфейсе
add 100 allow all from any to any via em1
### разрешаем всё на петлевом интерфейсе
add 200 allow all from any to any via lo0
### конфигурируем nat 1
nat 1 config if em0 same_ports unreg_only redirect_port tcp 192.168.1.100:3389 3389 redirect_port tcp 192.168.1.100:8080 8080
### трансляция входящих пакетов для IPv4, IPv6 не работает с NAT
add 300 nat 1 ip4 from any to any in recv em0
### проверяем состояние пакета
add 400 check-state
### ========================== ИСХОДЯЩИЙ ТРАФИК ========================== ###
### разрешаем исходящий трафик для DNS
add 500 skipto 800 tcp from any to any 53 out xmit em0 setup keep-state
add 501 skipto 800 udp from any to any 53 out xmit em0 keep-state
### разрешаем исходящий трафик
#add 510 skipto 800 tcp from any to any 22,80,443 out xmit em0 setup keep-state
### разрешаем исходящий трафик для HTTP
add 511 skipto 800 tcp from any to any 80 out xmit em0 setup keep-state
### разрешаем исходящий трафик для HTTPS
add 512 skipto 800 tcp from any to any 443 out xmit em0 setup keep-state
### разрешаем исходящий трафик для SSH
add 513 skipto 800 tcp from any to any 22 out xmit em0 setup keep-state
### разрешаем исходящий трафик для ICMP PING
add 514 skipto 800 icmp from any to any out xmit em0 keep-state
### разрешаем исходящий трафик для NTP
add 515 skipto 800 udp from any to any 123 out xmit em0 keep-state
### ========================== ВХОДЯЩИЙ ТРАФИК =========================== ###
### запрещаем весь входящий трафик с немаршрутизируемых и серых сетей
add 650 deny all from 192.168.0.0/16 to any in recv em0
add 651 deny all from 172.16.0.0/12 to any in recv em0
add 652 deny all from 10.0.0.0/8 to any in recv em0
add 653 deny all from 127.0.0.0/8 to any in recv em0
add 654 deny all from 0.0.0.0/8 to any in recv em0
add 655 deny all from 169.254.0.0/16 to any in recv em0
add 656 deny all from 192.0.2.0/24 to any in recv em0
add 657 deny all from 204.152.64.0/23 to any in recv em0
add 658 deny all from 224.0.0.0/3 to any in recv em0
### запрещаем MS/Windows сервисы и Netbios службы
### 81=hosts2, 113=ident, 137=name, 138=datagram, 139=session
add 660 deny tcp from any to any 81 in recv em0
add 661 deny tcp from any to any 113 in recv em0
add 662 deny tcp from any to any 137 in recv em0
add 663 deny tcp from any to any 138 in recv em0
add 664 deny tcp from any to any 139 in recv em0
### запрещаем любые фрагментированные пакеты
add 670 deny all from any to any frag in recv em0
### запрещаем не соответствующие динамической таблице правил ACK пакеты
add 680 deny tcp from any to any established in recv em0
### разрешаем входящий трафик
#add 700 allow tcp from any to me 22,80,443 in recv em0 setup limit src-addr 2
### разрешаем входящий трафик для SSH
add 701 allow tcp from any to me 22 in recv em0 setup limit src-addr 2
### разрешаем входящий трафик для HTTP
add 702 allow tcp from any to me 80 in recv em0 setup limit src-addr 3
### разрешаем входящий трафик для HTTPS
add 703 allow tcp from any to me 443 in recv em0 setup limit src-addr 5
### ========================== ПРОБРОС ТРАФИКА =========================== ###
### делаем проброс в LAN за NAT для входящего трафикка
#add 720 skipto 800 tcp from any to any 3389,8080 in recv em0 setup limit src-addr 2
### делаем проброс в LAN за NAT для входящего трафикка RDP
add 721 skipto 800 tcp from any to any 3389 in recv em0 setup limit src-addr 1
### делаем проброс в LAN за NAT для входящего трафикка HTTP:8080
add 722 skipto 800 tcp from any to any 8080 in recv em0 setup limit src-addr 3
### отбрасываем и заносим в журнал все неразрешенные входящие соединения из глобальной сети
add 750 deny log all from any to any in recv em0
### отбрасываем и заносим в журнал все неразрешенные исходящие соединения в глобальную сеть
add 751 deny log all from any to any out xmit em0
### трансляция исходящих пакетов
### место для skipto в правилах с сохранением состояния для соединений
add 800 nat 1 ip4 from any to any out xmit em0
add 801 allow all from any to any
### всё остальное запрещено по умолчанию
### запрещаем и заносим в журнал все пакеты для дальнейшего анализа
add 999 deny log all from any to any
### ============================ END OF FILE ============================= ###