The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
PF rdr правило и bridge c AV, !*! LHN, 09-Фев-12, 16:49  [смотреть все]
  • PF rdr правило и bridge c AV, !*! nix, 20:09 , 09-Фев-12 (1)
    >[оверквотинг удален]
    > Исходные данные:
    > Inet -> 95.173.x.x GW(Nat) 10.1.1.1-> $Ext_if (bridge with pf) $int_if ->10.1.1.2 client
    > На клиенте прописан default gateway 10.1.1.1
    > Собственно само соединение через мост работает нормально, pf фильтрует трафик, все Ок.
    > Для организации антивирусной проверки на bridge пытаюсь прикрутить Squid+AV (DrWeb)+rdr
    > правила вида
    > rdr on $int_if inet proto tcp from any to any port 80
    > -> 127.0.0.1 port 3128
    > pass in quick on $int_if route-to lo0 inet proto tcp from any
    > to 127.0.0.1 port 3128 keep state

       А зачем последнее правило? В прозрачном перенаправлении трафика на сквид хватает первого.
    rdr pass on $int_if inet proto tcp from any to any port 80
    -> 127.0.0.1 port 3128


    > Squid соответственно слушает 127.0.0.1:3128 intercept.
    > (К слову если сделать на бридже адрес и явно прописать его на
    > клиенте все опять же работает, AV фильтрует)
    > Правило даже вроде как работает, т.к. pfctl -ss дает кучу записей типа
    > all tcp 127.0.0.1:3128 <- 82.204.218.126:80 <- 10.1.1.2:35550      
    >  CLOSED:SYN_SENT
    > Не пойму в чем проблема. Читал, что где то еще нат нужен,
    > но в данной конфигурации непонятно где. К тому же tcpdump на
    > lo0 вообще пустой. По статусу соединения проблема где-то в роутинге, но
    > вот где?

    А tcpdump что говорит на интерфейсах
      tcpdump -nqtttti _IF_NAME_

    • PF rdr правило и bridge c AV, !*! LHN, 20:51 , 09-Фев-12 (2)
      • PF rdr правило и bridge c AV, !*! nix, 01:00 , 10-Фев-12 (3)
        >>    А зачем последнее правило? В прозрачном перенаправлении трафика на
        >> сквид хватает первого.
        >> rdr pass on $int_if inet proto tcp from any to any port
        >> 80
        >> -> 127.0.0.1 port 3128
        > Т.к. в Pf при rdr трафик проходит через фильтры, поэтому если его
        > явно не разрешить то он будет дропнут на последнем правиле deny.

        Так вы посмотрите внимательнее. Там опция pass зачем по-вашему?

        >[оверквотинг удален]
        >>   tcpdump -nqtttti _IF_NAME_
        > А он весь http трафик прекрасно видит, и на int_if и на
        > bridge0. Более того в логах pf отрабатывает именно второе правило pass
        > in log quick...
        > Вот только на lo0 ничего нет, вообще...
        > Кстати тоже странность вроде бы, одинаковые пакеты и на int_if и bridge_if.
        > Т.е. по логике уходя с клиента они попадают на int_if, но
        > потом должно сработать правило редиректа, и оно как бы даже срабатывает,
        > но этот же пакет появляется и логируется на bridge0 по второму
        > разу.

      • PF rdr правило и bridge c AV, !*! nix, 01:06 , 10-Фев-12 (4)
        >[оверквотинг удален]
        >>   tcpdump -nqtttti _IF_NAME_
        > А он весь http трафик прекрасно видит, и на int_if и на
        > bridge0. Более того в логах pf отрабатывает именно второе правило pass
        > in log quick...
        > Вот только на lo0 ничего нет, вообще...
        > Кстати тоже странность вроде бы, одинаковые пакеты и на int_if и bridge_if.
        > Т.е. по логике уходя с клиента они попадают на int_if, но
        > потом должно сработать правило редиректа, и оно как бы даже срабатывает,
        > но этот же пакет появляется и логируется на bridge0 по второму
        > разу.

        В догонку. Сразу забыл дописать. Если у вас мост, то нет необходимости фильтровать на всех интерфейсах. Во фре можно фильтровать на самом бридже (в опенке по-моему на бридже фильтровать нельзя). Регулируется такое поведение с помощью sysctl

        Вот с одного сервака. Там в мост объединены несколько внутр. сетевых интерфейса.
        net.link.bridge.log_stp: 0
        net.link.bridge.pfil_local_phys: 0
        net.link.bridge.pfil_member: 0
        net.link.bridge.pfil_bridge: 1
        net.link.bridge.pfil_onlyip: 1

        Посмотрите, может поможет.

        • PF rdr правило и bridge c AV, !*! LHN, 06:29 , 10-Фев-12 (5)
          • PF rdr правило и bridge c AV, !*! nix, 10:43 , 10-Фев-12 (6)
            >[оверквотинг удален]
            >> Вот с одного сервака. Там в мост объединены несколько внутр. сетевых интерфейса.
            >> net.link.bridge.log_stp: 0
            >> net.link.bridge.pfil_local_phys: 0
            >> net.link.bridge.pfil_member: 0
            >> net.link.bridge.pfil_bridge: 1
            >> net.link.bridge.pfil_onlyip: 1
            >> Посмотрите, может поможет.
            > Спасибо, такие параметры есть, фильтрую и на бридже и на интерфейсах, в
            > принципе пробовал и чисто на бридж правило редиректа повесить, точно так
            > же эффекта нет.

            Значит, что-то не так делаете.
            Попробуйте что-то вроде этого:

            Включите фильтрацию только на бридже. Squid "слушает" на интерфейсе моста.

            set skip on {lo $int_if $ext_if}
            set state-policy if-bound

            rdr on bridge0 inet proto tcp from $client to !(self) port {80 443} -> 127.0.0.1 port 3128

            block in all
            block out all

            pass in quick on bridge0 inet proto tcp from $client to bridge0
            pass out quick on bridge0 from bridge0 to any

            Форвардинг включать не надо.





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

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