(fwd) Re: Вопрос чайника по firewall

Andrey Gerzhov (kittle@freeland.kiev.ua)
Wed, 6 Oct 1999 10:28:54 +0300 (EEST)

-- forwarded message --
Path: freeland.kiev.ua!routki.ki.yurteh.net!carrier.kiev.ua!srcc!news1.gamma.ru!newsfeed.gamma.ru!Gamma.RU!ddt.demos.su!f400.n5020!f238.n5020!f115.n5030!f266.n5030!sensi.pu.ru!hq.pu.ru!igor
Newsgroups: fido7.ru.unix.bsd
Distribution: fido7
X-Comment-To: "Prokhorov M.B."
Approved: gateway@fido7.ru
From: Igor Nikolaev <Igor.Nikolaev@f266.n5030.z2.fidonet.org>
Date: Tue, 05 Oct 99 01:39:17 +0400
Subject: Re: Вопрос чайника по firewall
Message-ID: <7tbaal$ftq$1@sensi.pu.ru>
References: <7t1rmj$2nua$1@sviaz.mtts-tambov.ru>
Organization: нэ прыгодылась
X-FTN-AREA: RU.UNIX.BSD
X-FTN-MSGID: 2:5030/266@fidonet 9d328850
X-FTN-REPLY: sviaz.mtts-tambov.ru 8771aa9d
NNTP-Posting-Host: hq.pu.ru
User-Agent: tin/pre-1.4-980818 ("Laura") (UNIX) (FreeBSD/2.2.8-19990120-SNAP (i386))
X-FTN-Tearline: ifmail v.2.12.os.sensi
X-FTN-Origin: нэ прыгодылась (2:5030/266@fidonet)
X-FTN-SEEN-BY: 50/993 461/94 463/68 159 464/34 469/38 478/25 2446/301 4614/1
X-FTN-SEEN-BY: 4615/21 4635/4 5001/15 17 5002/16 5002 5003/15 5010/146 5011/13
X-FTN-SEEN-BY: 5013/8 5020/69 115 204 238 400 758 1301 1351 1381 1555 1851 5022/5
X-FTN-SEEN-BY: 5023/1 11 5028/51 5029/34 5030/23 37 55 61 72 115 215 251 266 335
X-FTN-SEEN-BY: 5030/397 452 580 730 818 1115 5032/6 5035/10 5038/9 5049/256
X-FTN-SEEN-BY: 5055/86 5058/1 3 106 5061/15 5075/10 5077/3 28 5080/80 5083/21
X-FTN-SEEN-BY: 5084/10 5094/5094
X-FTN-PATH: 5030/266 115 5020/238
X-FTN-PATH: 5020/400
Lines: 120
Xref: freeland.kiev.ua fido7.ru.unix.bsd:13808

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иколаев
-- end of forwarded message --

-- 
С тем, что не помешает никогда,
                                               Kittle