Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #51, ФЕВРАЛЬ 2005 г.

Граница на замке

Антон Карпов, toxa@cterra.ru

Спецвыпуск: Хакер, номер #051, стр. 051-030-7


set block-policy drop

set loginterface $ext_if

scrub on $ext_if all reassemble tcp

# 3. QOS RULES (queueing) ----------------------------------

# Допустим, наш канал имеет пропускную способность 1 мегабит. Определим две очереди, первой отдадим 40% канала, второй - 60%, причем первая - приоритетнее. Директива borrow определяет возможность "одалживать" канал у соседней очереди, если та свободна. В первую очередь засунем именно себя :), во вторую - оставшихся пользователей.

altq on $ext_if cbq bandwidth 1024Kb queue { toxa, users }

queue toxa bandwidth 40% priority 2 cbq(borrow)

queue users bandwidth 60% priority 1 { deflt_users, lan_users, im_users, http_users, mail_users }

# Очередь для пользователей делится на четыре канала, которые отличаются приоритетом и шириной оставшегося канала. Очевидно, что пакеты от icq- или jabber-мессенджеров желательно доставлять в первую очередь.

queue deflt_users bandwidth 30% priority 2 cbq(default borrow ecn)

queue im_users bandwidth 20% priority 4 cbq(borrow ecn)

queue http_users bandwidth 30% priority 3 cbq(borrow ecn)

queue mail_users bandwidth 20% priority 2 cbq(borrow ecn)

# Далее разделим пакеты по очередям с помощью правил фильтрации.

# 4. NAT/REDIRECTING RULES (translation) -------------------

# NAT'им пользователей

nat on $ext_if from $subnet to any -%26gt; $ext_if

# Перебрасываем все www- и ftp-соединения пользователей на squid и ftp-proxy

rdr pass on $int_if proto tcp from $subnet to ! $subnet port { 80,8080} -%26gt; 127.0.0.1 port 3128

rdr on $int_if proto tcp from $subnet to any port 21 -%26gt; 127.0.0.1 port 8021

# 5. PASS/BLOCK RULES (filtering) --------------------------

pass quick on $loop_if all

# Политика по умолчанию "все запрещено"

block quick log from any os NMAP

block all

# Прием против спуфинга

block in quick on $ext_if from %26lt;priv_nets%26gt; to any

block out quick on $ext_if from any to %26lt;priv_nets%26gt;

antispoof for $ext_if

pass in on $ext_if proto tcp from any to ($ext_if) port { 22,80 } modulate state

pass in on $ext_if proto tcp from any to ($ext_if) port %26gt; 49151 user proxy keep state

pass in on $ext_if proto icmp from any to ($ext_if) modulate state

pass out on $ext_if from ($ext_if) to any modulate state

pass in quick on $int_if proto tcp from $adminbox to $int_if flags S/SA modulate state

pass out quick on $int_if proto tcp from $adminbox to any flags S/SA modulate state queue toxa

pass out quick on $int_if proto { udp, icmp } from $adminbox to any modulate state queue toxa

# Разруливаем пакеты по очередям

block quick on $int_if proto tcp from $subnet to any port { 135, 139, 445 }

pass out on $int_if proto tcp from $subnet to any flags S/SA modulate state queue deflt_users

pass out on $int_if proto tcp from $subnet to any port $im_ports flags S/SA modulate state queue im_users

pass out on $int_if proto tcp from $subnet to any port 80 flags S/SA modulate state queue http_users

pass out on $int_if proto tcp from $subnet to any port { 25,110 } flags S/SA modulate state queue mail_users

pass out on $int_if proto { udp, icmp } from $subnet to any modulate state queue deflt_users

Назад на стр. 051-030-6  Содержание  Вперед на стр. 051-030-8