|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Vadim Guchenko 2:5020/400 06 Dec 2004 11:45:35 To : All Subject : Правильная настройка ipfw --------------------------------------------------------------------------------
Hello, All!
Hе сочтите опять за провокацию, но у меня складывается впечатление, что
пример настройки файрвола в /etc/rc.firewall, который некоторые скорее всего
используют в качестве эталона для создания собственных правил файрвола,
написан по принципу "лишь бы сложнее было в нем разобраться". А для этого
достаточно всего лишь не делить правила на входящие и исходящие. В итоге в
эху периодически постят сообщения, в которых приводятся жалобы на
неработоспособность NAT или непрохождение трафика через нужный интерфейс, и
приводят конфигурацию файрвола, в которую вообще трудно вникнуть с ходу,
потому что всегда приходится держать в голове, что через одни и те же
правила будет проходить и входящий трафик, и исходящий. И чем больше правил,
тем труднее контролировать какое правило сработает только на входящий
трафик, какое только на исходящий, а какое на оба.
Hа мой взгляд правильным подходом с точки зрения наглядности чтения и
скорости обработки является отделение правил для входящего и исходящего
трафика. Пример:
#########################################################################
## Разделение трафика в зависимости от направления (нумерация с 100)
#########################################################################
# Трафик через интерфейс lo0
$fwcmd add 100 allow ip from any to any via lo0
# Исходящий трафик
$fwcmd add 200 skipto 30000 ip from any to any out
#########################################################################
## Входящий трафик (нумерация с 500)
#########################################################################
# Съем трафика для статистики
$fwcmd add 500 divert 18000 ip from any to any recv $iface_inet
# NAT-трансляция входящих пакетов
$fwcmd add 600 divert 8668 ip from any to %ip.nat recv $iface_inet
##-----------------------------------------------------------------------
## Антиспуфинг (нумерация с 1000)
##-----------------------------------------------------------------------
# Интерфейс Интернета
$fwcmd add 1000 deny log ip from %group.internal to any recv $iface_inet
##-----------------------------------------------------------------------
## Разделение трафика в зависимости от получателя пакета (нумерация с 5000)
##-----------------------------------------------------------------------
# Трафик, адресованный серверу
$fwcmd add 5000 skipto 10000 ip from any to me
# Броадкасты
$fwcmd add 5100 skipto 20000 ip from any to 255.255.255.255
# Мультикасты
$fwcmd add 5200 skipto 25000 ip from any to 224.0.0.0/4
##-----------------------------------------------------------------------
## Трафик, идущий транзитом (нумерация с 6000)
##-----------------------------------------------------------------------
# Запрещаем трафик на закрытые адреса магистрали
$fwcmd add 6000 deny log ip from any to %group.backbone_private
# Шейпинг трафика
$fwcmd add 6100 pipe 1 ip from any to %group.shaping recv $iface_gvard
$fwcmd add 6200 pipe 2 ip from any to %group.shaping recv $iface_schorsa
# Разрешаем остальной трафик
$fwcmd add 6300 allow ip from any to any
##-----------------------------------------------------------------------
## Трафик, адресованный серверу (нумерация с 10000)
##-----------------------------------------------------------------------
# Разрешаем установленные TCP-соединения
$fwcmd add 10000 allow tcp from any to any established
# Разрешаем фрагменты IP-пакетов
$fwcmd add 10100 allow ip from any to any frag
# Разрешаем пакеты, удовлетворяющие динамическим правилам
$fwcmd add 10200 check-state
# Разрешаем OSPF-пакеты
$fwcmd add 10300 allow ospf from %group.backbone to any
# Разрешаем GRE-пакеты
$fwcmd add 10400 allow gre from any to any
##-----------------------------------------------------------------------
## Службы сервера (нумерация с 12000)
##-----------------------------------------------------------------------
# SSH
$fwcmd add 12000 deny tcp from %deny.ssh to %ip.ssh 22
$fwcmd add 12100 allow tcp from %allow.ssh to %ip.ssh 22
##-----------------------------------------------------------------------
## Завершающие правила для трафика, адресованного серверу (нумерация с
18000)
##-----------------------------------------------------------------------
# Разрешаем ICMP-пакеты
$fwcmd add 18000 allow icmp from any to any
# Разрешаем работу traceroute
$fwcmd add 18100 unreach port udp from any to any 33434-33584
# Запрещаем соединения на 113 порт (ident)
$fwcmd add 18200 reset tcp from any to any 113
# Запрещаем соединения на 1080 порт (socks check)
$fwcmd add 18300 reset tcp from any to any 1080
# Запрещаем остальной трафик
$fwcmd add 18400 deny log ip from any to any
##-----------------------------------------------------------------------
## Броадкасты (нумерация с 20000)
##-----------------------------------------------------------------------
# Разрешаем SNMP trap'ы от ИБП
$fwcmd add 20000 allow udp from %group.backbone to any 162
# Запрещаем остальной трафик
$fwcmd add 20100 deny log ip from any to any
##-----------------------------------------------------------------------
## Мультикасты (нумерация с 25000)
##-----------------------------------------------------------------------
# Разрешаем OSPF-пакеты
$fwcmd add 25000 allow ospf from %group.backbone to { 224.0.0.5 or
224.0.0.6 }
# Запрещаем остальной трафик
$fwcmd add 25100 deny log ip from any to any
#########################################################################
## Исходящий трафик (нумерация с 30000)
#########################################################################
# Запрещаем отправку пакетов, предназначенных для внутрисетевых адресов,
# на шлюз по умолчанию
$fwcmd add 30000 deny ip from any to %group.internal xmit $iface_inet
# Запрещаем отправку в Интернет пакетов Netbios
$fwcmd add 30100 deny tcp from any to any 135,139,445 xmit $iface_inet
# Запрещаем отправку пакетов в Интернет для клиентов, которые отключены
# от Интернета
$fwcmd add 30200 skipto 30400 ip from %allow.internet to any xmit
$iface_inet
$fwcmd add 30300 deny ip from any to any xmit $iface_inet
# Съем трафика для статистики
$fwcmd add 30400 divert 18001 ip from any to any xmit $iface_inet
# NAT-трансляция исходящих пакетов
$fwcmd add 30500 divert 8668 ip from 192.168.0.0/16 to any xmit $iface_inet
$fwcmd add 30600 allow ip from %ip.nat to any xmit $iface_inet
# Динамическое правило для доступа с данного сервера к внешним службам по
UDP
$fwcmd add 30700 allow udp from me to any keep-state
# Шейпинг трафика
$fwcmd add 30800 pipe 1 ip from %group.shaping to any xmit $iface_gvard
$fwcmd add 30900 pipe 2 ip from %group.shaping to any xmit $iface_schorsa
##-----------------------------------------------------------------------
## Аккаунтинг трафика (нумерация с 40000)
##-----------------------------------------------------------------------
# Трафик Интернета
$fwcmd add 40000 skipto 40200 ip from %group.internal to %group.accounting
$fwcmd add 40100 divert 17000 ip from any to %group.accounting
Правило по умолчанию: allow ip from any to any.
Т.е. принцип такой: весь трафик делим на входящий и исходящий (и отдельно
через lo0). Входящий трафик делим на транзитный, адресованный серверу,
броадкасты и мультикасты. И обрабатываем каждый блок отдельно.
With best regards, Vadim Guchenko. E-mail: s0lver@kraslan.ru
--- ifmail v.2.15dev5.3
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/917916ef483e.html, оценка из 5, голосов 10
|