The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Странное поведение ipfw"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Странное поведение ipfw"
Сообщение от NetKnight emailИскать по авторуВ закладки on 05-Сен-03, 17:08  (MSK)
Вот моя конфигурация:

#!/bin/sh
# Firewall rules

# Set variables
fwcmd="/sbin/ipfw"
net="XXX.XXX.XXX.0"  # Внутрянняя сеть
onet="YYY.YYY.YYY.0" # Внешняя сеть
mask="ZZZ.ZZZ.ZZZ.0" # Маска сети, одинаковая во внешней и внутренней.
ip="XXX.XXX.XXX.1"    # Внутренний айпи сервера.
oip="YYY.YYY.YYY.YYY" # Внешний айпи сервера.
oif="rl0"            # Внешний интерфейс сервера.
iif="rl1"            # Внутренний интерфейс сервера.
user1ip="XXX.XXX.XXX.UUU" # Адрес юзера1

# Flush out the list before we begin.
${fwcmd} -f flush

${fwcmp} add check-state

# Divert all packets through the tunnel interface.
${fwcmd} add 100 divert natd all from any to any via ${oif}
${fwcmd} add 200 divert natd all from any to any via ${iif}

# Setup loopback
${fwcmd} add 300 pass all from any to any via lo0
${fwcmd} add 400 deny all from any to 127.0.0.0/8
${fwcmd} add 500 deny ip from 127.0.0.0/8 to any

# Stop spoofing
${fwcmd} add 600 deny log all from ${net}:${mask} to any in via ${oif}
${fwcmd} add 700 deny log all from ${onet}:${mask} to any in via ${iif}

# Stop RFC1918 nets on the outside interface
#${fwcmd} add deny log all from any to 10.0.0.0/8 via ${oif}
#${fwcmd} add deny log all from any to 172.16.0.0/12 via ${oif}
#${fwcmd} add deny log all from any to 192.168.0.0/16 via ${oif}

# Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
# DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
# on the outside interface
#${fwcmd} add deny log all from any to 0.0.0.0/8 via ${oif}
#${fwcmd} add deny log all from any to 169.254.0.0/16 via ${oif}
#${fwcmd} add deny log all from any to 192.0.2.0/24 via ${oif}
#${fwcmd} add deny log all from any to 224.0.0.0/4 via ${oif}
#${fwcmd} add deny log all from any to 240.0.0.0/4 via ${oif}

# Stop RFC1918 nets on the outside interface
#${fwcmd} add deny log all from 10.0.0.0/8 to any via ${oif}
#${fwcmd} add deny log all from 172.16.0.0/12 to any via ${oif}
#${fwcmd} add deny log all from 192.168.0.0/16 to any via ${oif}

# Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
# DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
# on the outside interface
#${fwcmd} add deny log all from 0.0.0.0/8 to any via ${oif}
#${fwcmd} add deny log all from 169.254.0.0/16 to any via ${oif}
#${fwcmd} add deny log all from 192.0.2.0/24 to any via ${oif}
#${fwcmd} add deny log all from 224.0.0.0/4 to any via ${oif}
#${fwcmd} add deny log all from 240.0.0.0/4 to any via ${oif}

# Users1 config
${fwcmd} add 3000 pipe 1 ip from any to $user1ip out
${fwcmd} add 3001 pipe 2 ip from $user1ip to any in
${fwcmd} pipe 1 config bw 512Kbits/s
${fwcmd} pipe 2 config bw 512Kbits/s

# Forward to proxy from 80 port
${fwcmd} add 3700 fwd 127.0.0.1,3128 tcp from any to any http via rl1

# Allow ICMP.
${fwcmd} add 4000 pass icmp from any to any

# Allow TCP through if setup succeeded
${fwcmd} add 4100 pass tcp from any to any established

# Allow IP fragments to pass through
${fwcmd} add 4200 pass all from any to any frag

# Allow DNS queries out in the world
${fwcmd} add 4300 pass udp from ${oip} to any 53 keep-state

# Allow NTP queries out in the world
${fwcmd} add 4400 pass udp from ${oip} to any 123 keep-state

# Allow quarantine range
${fwcmd} add 4500 pass tcp from any to any 49152-65535
${fwcmd} add 4600 pass udp from any to any 49152-65535

# Allow setup of incoming WWW
${fwcmd} add 4700 pass tcp from any to ${ip} 80 setup
${fwcmd} add 4750 pass tcp from any to ${oip} 80 setup

# Allow setup of incoming FTP
${fwcmd} add 4800 pass tcp from any to ${ip} 21 setup

# Allow setup of incoming DNS
${fwcmd} add 4900 pass tcp from any to ${ip} 53 setup
${fwcmd} add 5000 pass udp from any to ${ip} 53

# Allow setup of incoming SSH
${fwcmd} add 5100 pass tcp from any to ${ip} 22 setup
${fwcmd} add 5200 pass tcp from any to ${oip} 22 setup

# Allow setup of incoming PROXY
${fwcmd} add 5300 pass tcp from any to ${ip} 3128 setup

# This sends RESET to all ident packets.
${fwcmd} add 5400 reset log tcp from any to any 113 in recv ${oif}

# Allow bridge machine to say anythig it wants.
${fwcmd} add 5500 pass all from ${ip} to any out
${fwcmd} add 5600 pass all from ${oip} to any out

# Allow all connections to user1
${fwcmd} add 5800 pass all from $user1ip to any
${fwcmd} add 5900 pass all from any to $user1ip

# Disallow setup of all other connections
${fwcmd} add 10000 deny log ip from any to any

Часть правил пока закоментированы т.к. пока их использовать нельзя ввиду мерого маскарадинга на время тестирования.

Проблема в том, что правило 3700 перенаправляет все запросы на прксю с 80 порта. В таком виде всё работает, НО! Стоит только переместить правило с 3700 на 5700 оно перестаёт работать.. :( Тоесть один пакет проходит, а потом всё.. В фильтре тоже нигде не застревает, т.к. все отбросы протоколлируются.. В чём дело тут?

ЗЫ: Было бы ещё хорошо узнать, как эти правила оптимизировать/поправить/сделать более граматно, т.к. юзеры по подобию юзера1 будут добавляться/удаляться/меняться, причём скриптом (а это по 4 правила на каждого)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Странное поведение ipfw"
Сообщение от Eugene emailИскать по авторуВ закладки on 05-Сен-03, 17:34  (MSK)
Да уж
Наворотил прилично

Посмотри после установки соединения все динамические правила и увидишь
где собака порылась

а вообще не советую пользоваться динамическими правилами
когда пользователей станет десятка полтора то список правил будет очень и очень немаленький, что не есть хорошо

кроме того прикрути ipfw2 и не будет проблем с добавлением новых пользователей, можно будет дописывать адреса в существующие правила

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Странное поведение ipfw"
Сообщение от NetKnight emailИскать по авторуВ закладки on 05-Сен-03, 17:39  (MSK)
>Да уж
>Наворотил прилично
>
>Посмотри после установки соединения все динамические правила и увидишь
>где собака порылась
Гляну.
>а вообще не советую пользоваться динамическими правилами
>когда пользователей станет десятка полтора то список правил будет очень и очень
>немаленький, что не есть хорошо
Хм... Думаешь лучше для каждого сервиса сазу прописать обратное правило?
>кроме того прикрути ipfw2 и не будет проблем с добавлением новых пользователей,
>можно будет дописывать адреса в существующие правила
А это что за чуда и где почитать пр неё можно?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Странное поведение ipfw"
Сообщение от Eugene emailИскать по авторуВ закладки on 05-Сен-03, 17:51  (MSK)
почитать можно man ipfw
там именно про неё и написано, но по умолчанию не работает
надо пересобирать ядро сам ipfw и libalias

а что правил будет море не думаю а знаю
сам так первый раз понаписывал
в общем то из-за них и проблема возникает
динамические правила проверяются до всех остальных и легко птерять логику работы всей этой конструкции

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Странное поведение ipfw"
Сообщение от NetKnight emailИскать по авторуВ закладки on 05-Сен-03, 17:53  (MSK)
>почитать можно man ipfw
>там именно про неё и написано, но по умолчанию не работает
>надо пересобирать ядро сам ipfw и libalias
Попробую разобраться, а кроме мана нет документации? Там очень коротко обычно пишут.

>а что правил будет море не думаю а знаю
>сам так первый раз понаписывал
>в общем то из-за них и проблема возникает
>динамические правила проверяются до всех остальных и легко птерять логику работы всей
>этой конструкции
Кстати ни одного динамического правила нет.. хотя пока только одна машина подключена.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Странное поведение ipfw"
Сообщение от Eugene emailИскать по авторуВ закладки on 05-Сен-03, 18:04  (MSK)
Странно что ни одного правила нет
должны быть в любом случае
Работает же ДНС и т.д. и т.п.

А в мане всё просто написано, он мало чем отличается от стандартного
просто можно обьединять правила в группы и прописывать сразу группы портов и адресов

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Странное поведение ipfw"
Сообщение от Eugene emailИскать по авторуВ закладки on 05-Сен-03, 18:17  (MSK)
Я кажется запутался в твоей конфигурации, но есть ещё один важный момент
ipfw1 не продолжает сессию соединения
т.е. правило с setup у тебя срабатывает, но соединение отвалится после истечения времени его жизни.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Странное поведение ipfw"
Сообщение от NetKnight emailИскать по авторуВ закладки on 05-Сен-03, 18:18  (MSK)
>Странно что ни одного правила нет
>должны быть в любом случае
>Работает же ДНС и т.д. и т.п.
>
>А в мане всё просто написано, он мало чем отличается от стандартного
>
>просто можно обьединять правила в группы и прописывать сразу группы портов и
>адресов

Тьфу ты всё впорядке! :)
У меня же keep-state стоит только на правиле, где моя машина в нет за ДНС лезет. А клиенты от меня ДНС берут. Так что, имхо, тут проблем не должно возникнуть.. По этому и в динамических правилах ничего нет, т.к. оно только одно возможно..

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Странное поведение ipfw"
Сообщение от СергейКа Искать по авторуВ закладки on 05-Сен-03, 17:35  (MSK)
Похоже срабатывает связка
# Allow TCP through if setup succeeded
${fwcmd} add 4100 pass tcp from any to any established

# Allow setup of incoming WWW
${fwcmd} add 4700 pass tcp from any to ${ip} 80 setup
${fwcmd} add 4750 pass tcp from any to ${oip} 80 setup

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Странное поведение ipfw"
Сообщение от NetKnight emailИскать по авторуВ закладки on 05-Сен-03, 17:40  (MSK)
>Похоже срабатывает связка
># Allow TCP through if setup succeeded
>${fwcmd} add 4100 pass tcp from any to any established
Вот про это я тоже думал... Но переместить его никак...

># Allow setup of incoming WWW
>${fwcmd} add 4700 pass tcp from any to ${ip} 80 setup
>${fwcmd} add 4750 pass tcp from any to ${oip} 80 setup
Это не может быть, т.к. они перехватывают только то, что идёт на сервер, а не через него. Счётчики во всяком случае не менялись во время проверки..

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Странное поведение ipfw"
Сообщение от СергейКа Искать по авторуВ закладки on 05-Сен-03, 18:32  (MSK)
># Allow setup of incoming WWW
>${fwcmd} add 4700 pass tcp from any to ${ip} 80 setup
>${fwcmd} add 4750 pass tcp from any to ${oip} 80 setup
>Это не может быть, т.к. они перехватывают только то, что идёт на сервер, >а не через него. Счётчики во всяком случае не менялись во время >проверки..
Согласен - быстро читал. Однако правила не маленькие )))

Только если верить утверждению, что один пакет всетаки проходит, то вполне вераятно что у него флаг у него выставлен SYN... а значить established не катит
>Похоже срабатывает связка
># Allow TCP through if setup succeeded
>${fwcmd} add 4100 pass tcp from any to any established
Вот про это я тоже думал... Но переместить его никак...

Попробуй опустить так же и ..
# Allow ICMP.
${fwcmd} add 4000 pass icmp from any to any

  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Странное поведение ipfw"
Сообщение от СергейКа emailИскать по авторуВ закладки on 05-Сен-03, 18:47  (MSK)
>Попробуй опустить так же и ..
># Allow ICMP.
>${fwcmd} add 4000 pass icmp from any to any

Вообще если доверится логике, то между первоначальным положением правила и его смещением никаких запрещающих правил нет - значит что то разрешается из того, что пока разрешать нельза )))

  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "Странное поведение ipfw"
Сообщение от NetKnight emailИскать по авторуВ закладки on 07-Сен-03, 00:21  (MSK)
>>Попробуй опустить так же и ..
>># Allow ICMP.
>>${fwcmd} add 4000 pass icmp from any to any
>
>Вообще если доверится логике, то между первоначальным положением правила и его смещением
>никаких запрещающих правил нет - значит что то разрешается из того,
>что пока разрешать нельза )))


Эт я и так понял :)
Буду копать..

  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Странное поведение ipfw"
Сообщение от NetKnight emailИскать по авторуВ закладки on 08-Сен-03, 04:32  (MSK)
Решил проблему добавлением 2 строчек в правила:
${fwcmd} add 3600 skipto 4000 all from any to ${ip}
${fwcmd} add 5450 deny log ip from any to ${ip}

Первое правило перепрыгивает правило, которое перенаправляет запрос на сквид, если запрос идёт на сервак.
Второе правило зарубает все пакеты, которые идут на сервак, после того, как они прошли правила с разрешёнными портами, но не дошли до правила, где им разрешается всё.

Насколько это грамотно интересно :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру