Документация по ОС FreeBSD Суббота, 20.04.2024, 01:34
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
IPFW [58]

Главная » Статьи » FireWall » IPFW

IPFW + ipnat

Один из сложных моментов настройки - создание правил файрвола. Рекомендую изучить статью Кузмича только не надо копировать правила которые написаны для примера. Эта статья хороша своими обьяснениями работы ключей и пр.
Писать постоянные правила файрвол нужно только при полном понимании работы ipfw в противном случае или что то не будет работать (чаще всего) или хакеры через день сломают вашу машину.

Итак рабочие файлы файрвола и нат (подставлялись на место рабочих в момент написания. Учтите, что работа natd отличается от работы ipnat. :))

rc.conf

defaultrouter="195.195.95.100"
gateway_enable="YES"
hostname="bsd.myd.ru"
ifconfig_rl0="inet 195.195.95.5 netmask 255.255.255.0"
ifconfig_rl1="inet 192.168.10.1 netmask 255.255.255.0"
inetd_enable="YES"
kern_securelevel_enable="NO"
lpd_enable="YES"
nfs_reserved_port_only="YES"
sendmail_enable="YES"
sshd_enable="YES"
# Секцию ниже нужно убрать если DNS для зоны не настроен
named_enable="YES" 
named_program="named" 
named_flags="-u bind -g bind"
#
ipnat_enable="YES"
ipnat_program="/sbin/ipnat -CF -f"
ipnat_rules="/etc/ipnat.rules" 
ipnat_flags="" 
firewall_enable="YES" 
firewall_script="/etc/rc.firewall" 

rc.firewall

#
# IPFW RULES
# /etc/ipfw.rules
#

fwcmd="/sbin/ipfw"

LanOut="rl0"
IPOut="195.195.95.5"
NetOut="24"
MaskOut="255.255.255.0"

LanIn="rl1"
IPIn="192.168.10.1"
NetInIP="192.168.10.0"
NetInMask="24"
MaskIn="255.255.255.0"

MyIP1="192.168.10.97"
MyIP2="192.168.10.98"
MyIP3="192.168.10.99"

dns1="192.168.10.1"
dns2="195.195.95.50"
dns3="195.190.90.9"

${fwcmd} -q -f flush

# 
${fwcmd} -q add pass all from any to any via lo0
${fwcmd} -q add pass all from any to any via ppp0

# Пропускаем все соединения с установленным битом RST или ACK
${fwcmd} -q add pass tcp from any to any established
# Разрешаем все пакеты выходящие из внешнего интерфейса с внешнего IP
${fwcmd} -q add pass ip from ${IPOut} to any out xmit ${LanOut}

# Stop private networks (RFC1918) from entering the outside interface.
${fwcmd} -q add deny ip from 192.168.0.0/16 to any in via ${LanOut}
${fwcmd} -q add deny ip from 172.16.0.0/12 to any in via ${LanOut}
${fwcmd} -q add deny ip from 10.0.0.0/8 to any in via ${LanOut}

# NAT
#${fwcmd} -q add divert natd ip from any to any via ${LanOut}

# www, ftp... только по заданным интерфейсам - остальные через squid
${fwcmd} -q add pass tcp from ${MyIP1} to any 20,21,22,23,80,443
${fwcmd} -q add pass tcp from any 20,21,22,23,80,443 to ${MyIP1}
${fwcmd} -q add pass tcp from ${MyIP2} to any 20,21,22,23,80,443
${fwcmd} -q add pass tcp from any 20,21,22,23,80,443 to ${MyIP2}
${fwcmd} -q add pass tcp from ${MyIP3} to any 20,21,22,23,80,443
${fwcmd} -q add pass tcp from any 20,21,22,23,80,443 to ${MyIP3}

# Запрещаем - FTP, терминал, Squid - снаружи
${fwcmd} -q add deny tcp from any to any 20,21,22,23,3128 in via ${LanOut}
# Запрещаем - www, FTP, терминал - изнутри
${fwcmd} -q add deny tcp from any to any 20,21,22,23,80,443 in via ${LanIn}
${fwcmd} -q add deny tcp from any to any 8000-8104 in via ${LanIn}

# Разрешаем почту, DNS
${fwcmd} -q add pass tcp from any to any 25,110 via ${LanOut}
${fwcmd} -q add pass tcp from any 25,110 to any via ${LanOut}
${fwcmd} -q add pass udp from any to any 53 via ${LanOut}
${fwcmd} -q add pass udp from any 53 to any via ${LanOut}

${fwcmd} -q add pass all from any to any via ${LanIn}

# Доступен сервер www из внешнего мира
${fwcmd} -q add pass tcp from ${IPOut} 80 to any via ${LanOut}
${fwcmd} -q add pass tcp from any to ${IPOut} 80 via ${LanOut}

#ICMP
${fwcmd} -q add allow icmp from any to ${IPOut} in via ${LanOut} icmptype 0,3,4,11,12
${fwcmd} -q add allow icmp from any to ${NetInIP}/${NetInMask} in via ${LanOut} icmptype 0,3,4,11,12
${fwcmd} -q add allow icmp from ${IPOut} to any out via ${LanOut} icmptype 3,8,12 
${fwcmd} -q add allow icmp from ${IPOut} to any out via ${LanOut} frag 
${fwcmd} -q add deny log icmp from any to any in via ${LanOut}
${fwcmd} -q add reject log icmp from any to any out via ${LanOut}

${fwcmd} -q add deny log all from any to any

ipnat.rules

map rl0 0/0 -> 0/32 proxy port ftp ftp/tcp
map rl0 192.168.10.0/24 -> 195.195.95.5/24 proxy port ftp ftp/tcp
map rl0 192.168.10.0/24 -> 195.195.95.5/24
Категория: IPFW | Добавил: oleg (23.10.2007)
Просмотров: 1945 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024