Ключевые слова:freebsd, ipfw, firewall, script, (найти похожие документы)
_ RU.UNIX.BSD (2:5077/15.22) _____________________________________ RU.UNIX.BSD _
From : Igor Nikolaev 2:5030/266 Sat 12 Feb 28 17:50
Subj : ipfw config
________________________________________________________________________________
alexei <alexei@timer.mplik.ru> wrote:
> А может кто скажет где можно /РАБОЧИЕ/ конфиги файрвала(ipfw) глянуть?
В связи с тем, что мы начали строить конфиги perl'ом,
вот предыдущая версия /etc/rc.firewall устанавливаемого
на наших роутерах:
(и я немного из неё убрал на всякий случай,
security понимаешь ;)
#!/bin/sh
#
# United firewall configuration
#
# в переменной $CONF каталог, где содержаться конфиги
# в переменно $URL url из которого берутьяс настройки
# конкретного роутера
# VTC control network
vtc="ip управляющей сети"
mail_relay="ip почтового сервера"
mail_ports="23,25,110,540"
# debug mode
if [ "${1}" = "echo" ]; then
ipfw="/bin/echo"
else
ipfw="/sbin/ipfw"
fi
# router name
rules=${CONF}/`/bin/hostname -s`
# если конфиг тащиться по сети
( cd $CONF; /usr/bin/fetch ${URL}/`/bin/hostname -s` )
# interface ip number by name
ip () { ifconfig $1 | grep inet | awk '{ print $2; }'; }
# start list number
rule_num=1000
# pass and deny rules
pass () { rule_num=$(($rule_num+10)); $ipfw add $rule_num pass $*; }
deny () { rule_num=$(($rule_num+10)); $ipfw add $rule_num deny $*; }
# backbone segment
backbone () { pass all from any to any via $1; }
# any access
any () {
pass all from $1 to any
pass all from any to $1
}
# free acces from any interface from list to any
lan () {
local i j
for i in $*; do
for j in $*; do
if [ $i != $j ]; then
pass all from any to any out recv $i xmit $j
fi
done
done
}
# client workstation: only outgoing tcp
client () {
pass tcp from $1 to any
pass tcp from any to $1 established
}
# only mail workstation
mailws () {
pass tcp from $1 to $mail_relay $mail_ports
pass tcp from $mail_relay $mail_ports to $1
}
# server: only incoming tcp on port list
server () {
local ip port
ip=$1
shift
for port in $*
do
pass tcp from any to $ip $port
pass tcp from $ip $port to any established
done
}
$ipfw -f flush
# Main rules
pass all from any to any via lo0
deny all from any to 127.0.0.0/8
pass udp from any to any 33434-33523
#pass all from $vtc to any
#pass all from any to $vtc
#pass tcp from any to any established
# named
pass udp from any to $vtc 53
pass udp from $vtc 53 to any
pass udp from $vtc to any 53
pass udp from any 53 to $vtc
# snmp
pass udp from any 161 to $vtc
pass udp from $vtc to any 161
# icmp
deny icmp from any to any frag
pass icmp from any to any
# Router rules
. $rules
$ipfw add 65000 deny all from any to any
exit
К этому безобразию прикладывается config файл вида
client клиентская_машина
server сервер порты
mail_ws доставший_всех_урод
lan список_пирящихся_интерфейсов
и так далее...
> так для начала хотелось бы глянуть на "рыбу", шаблон то бишь, как оно живёт
> реально, может кто подскажет?
Сейчас мы уходим от этой системы, но результат
довольно сложен и мне лень писать документацию,
хотя рыба уже есть.
Hа самом деле всё становиться довольно сложно,
в связи с закладками на netgraph, но наверное
это далеко не всем нужно ;-)
P.S. Господа, посоветуйте, где идеологически
правильное место для хранения конфигов
(переменная ${CONF} ?
> С уважением, Алексей.
--
Игорь Hиколаев
--- ifmail v.2.12.os.sensi * Origin: http://hi.pu.ru/router.html (2:5030/266@fidonet)