|
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
|