Ключевые слова:freebsd, ipfw, rule, example, firewall, (найти похожие документы)
_ RU.UNIX.BSD (2:5077/15.22) _____________________________________ RU.UNIX.BSD _
From : Igor Nikolaev 2:5030/266 05 Oct 99 02:39:16
Subj : Пример использования ipfw на внутренних роутерах
________________________________________________________________________________
Prokhorov M.B. <misha@tamben.elektra.ru> wrote:
> Я собирался использовать ipfw,
Пример использования ipfw на внутренних роутерах
корпоративной сети. Может кому-нибудь пригодится,
критика и лечение паранойи с благодарностью
принимаются, реальные имена и адреса изменены ;-)
Эти роутеры без dummynet, немного откомментировано
по-русски для этого письма.
% cat /etc/rc.firewall
#!/bin/sh
#
# Firewall configuration
#
# тип 'echo' даёт печать правил без исполнения
if [ "${1}" = "echo" ]; then
ipfw="/bin/echo"
else
ipfw="/sbin/ipfw"
fi
# правила для роутера живут в /usr/local/etc/ipfw/router
# router name
rules=/usr/local/etc/ipfw/`/bin/hostname -s`
# start list number
rule_num=1000
# в этой сети живут все наши сервера, роутеры и проч
# управляющие машины. Доступ к ним урезан на них.
# control network
vtc="1.2.3.0/24"
# разрешает весь траффик через интерфейс на котором
# нет пользователей
# backbone segment
backbone () {
rule_num=$(($rule_num+10))
$ipfw add $rule_num pass all from any to any via $1
}
# описание клиентской машины, ip номер как параметр
# client workstation: only outgoing tcp
client () {
rule_num=$(($rule_num+10))
$ipfw add $rule_num pass tcp from $1 to any
rule_num=$(($rule_num+10))
$ipfw add $rule_num pass tcp from any to $1 established
}
# описание сервера ip номер плюс номера портов
# сервер у нас всегда имеет свой независимый ip номер
# server: only incoming tcp on port list
server () {
local ip port
ip=$1
shift
for port in $*
do
rule_num=$(($rule_num+10))
$ipfw add $rule_num pass tcp from any to $ip $port
done
}
$ipfw -f flush
# антиспуфинг роутера (на самом деле нафиг не нужен...)
$ipfw add 100 pass all from any to any via lo0
$ipfw add 200 deny all from any to 127.0.0.0/8
# её использует кабельная группа, разрешаем
# traceroute
$ipfw add 400 pass udp from any to any 33434-33523
# реально пользователь получает все сетевые сервисы здесь
# network services from/to control network
$ipfw add 510 allow all from $vtc to any
$ipfw add 520 allow all from any to $vtc
# нет нужды - пусть ходит к локальному dns
# $ipfw add 700 allow udp from any to any 53
# $ipfw add 700 allow udp from any 53 to any
# мочим фрагментированные icmp
$ipfw add 800 deny icmp from any to any frag
$ipfw add 810 allow icmp from any to any
# вызываем файл описания роутера
. $rules
# всё остальное низзя
$ipfw add 65000 deny all from any to any
[EOF]
% cat /usr/local/etc/router
#
# Файл описания роутера
#
# эти интерфейсы не имеют подключенных пользователей
backbone ed1
# список клиентов - на самом деле он очень длинный ;-)
client 2.3.4.1
client 2.3.4.2
client 2.3.4.3
# список серверов и номеров портов
server 3.4.5.1 70 200 204 195
server 3.4.5.2 80 21
[EOF}
Есть ещё некоторые мелочи (нефиг traceroute просто так
ходить :) и back holes (ну надо...) но их можно обсудить
отдельно.
Если есть какой-то интерес, то могу попричёсывать
текущую версию в портабельный вид...
--
Игорь Hиколаев
--- ifmail v.2.12.os.sensi * Origin: нэ прыгодылась (2:5030/266@fidonet)