Пользователь
0,0
рейтинг
25 августа 2012 в 21:55

Администрирование → Прозрачное проксирование или как подружить Cisco и Squid из песочницы

По роду своей деятельности, достаточно часто приходилось слышать от счастливых обладателей Cisco ASA в базовом комплекте поставки (без дополнительных дорогостоящих модулей типа CSC-SSM), в принципе как и других SOHO\SMB маршрутизаторов данного производителя, нарекания на достаточно слабые возможности фильтрации URL, проксирования и других вкусностей, которые умеет делать даже самый простенький проски-сервер.

Однако из этого положения есть выход и достаточно простой. В этой статье я вам покажу пример работы связки Cisco ASA5510 + Squid, которая отлично справляется с поставленными задачами.

Будем считать что у нас есть полностью отконфигурированная ASA, являющаяся маршрутизатором в мир и простенький сервер на Linux (в моемй случае CentOS 5.6) со свежеустановленным Squid. Squid обязательно должен работать в режиме невидимого проксирования.

Связывается все это хозяйство по средствам протокола WCCP. Сильно не углубляясь, скажу в двух словах, что это протокол перенаправления контента и вэб-кеширования, разработанный компанией Cisco. WCCP работает на прошивках IOS версии 12.1 и выше и имеет две версии данного простокола: WCCPv1 и WCCPv2. Мы будем перенаправлять весь траффик, направленный в мир, на 80-й порт, используя при этом как раз вторую версию протокола, как более расширенную.

Итак, начнем.
ASA будет иметь адрес 192.168.1.254, Linux – 192.168.1.253.
Сначала создадим обьекты, на которые будут впоследствии распространятся наши ACL списки.
У нас их будет 2.
Вы спросите почему 2?
Отвечу – мы же не хотим, чтобы админский комп ходил через прокси ).

object network admin_pc host 192.168.1.10

object network local_net subnet 192.168.1.0 255.255.255.0


Соответствующие ACL:

access-list redirect_to_squid extended deny tcp object admin_pc any eq www 

access-list redirect_to_squid extended permit tcp object local_net any eq www 


И активируем сам WCCP:

wccp web-cache redirect-list redirect_to_squid password cisco

wccp interface inside web-cache redirect in


Пояснения:
1. Пароль мы указываем для того, чтобы использовать MD5 аутентификацию между циской и сквидом
2. Обязательно указываем интерфейс (inside) который будет слушать WCCP.

На этом настройка ASA закончена.
Переходим к Squid. Тут не намного сложнее.
Изменяем режим работы сквида на transparent:

http_port 3128 transparent


Далее указываем адрес нашей ASA:

wccp2_router 192.168.1.254


И необходимые настройки связки:

wccp2_forwarding_method 1

wccp2_return_method 1

wccp2_service standard 0 password=cisco


Пояснения:
1. wccp2_forwarding_method 1 означает использование GRE туннеля для форвардинга пакетов между роутером и сквидом. Маршрутизаторы Cisco используют именно этот метод, в то время как L2 свитчи используют wccp2_forwarding_method 2 – L2 Redirect.
2. wccp2_return_method 1 – практически то же самое, только это метод возвращения пакетов на роутер, если сквид вдруг решит их не обрабатывать.
3. Используем не динамический вэб-кэш (standard 0) с ранее указанным паролем на ASA

Все, на этом настройка Squid окончена. Приступаем ко второму этапу – доработка напильником.

Как упоминалось раньше, нужно поднять GRE туннель между нашими звеньями, по которому как раз и будет бегать web-cache траффик:

modprobe ip_gre

iptunnel add wccp0 mode gre remote 192.168.1.254 local 192.168.1.253 dev eth0

ifconfig wccp0 192.168.1.253 netmask 255.255.255.255 up


И обязательно заворачиваем весь траффик, приходящий по GRE туннелю на порт сквида при помощи Iptables:

-A PREROUTING -p tcp -m tcp -i wccp0 -j REDIRECT --to-ports 3128


Вот в принципе и все. Осталось тольео сохранить конфиги, создать if-up и if-down скрипты для нашего интерфейса wccp0 и перезапустить Squid.
Проверяем работу:

asa#sh ip wccp
Global WCCP information:
Router information:
Router Identifier: 192.168.1.254
Protocol Version: 2.0

Service Identifier: web-cache
Number of Service Group Clients: 1
Number of Service Group Routers: 1
Total Packets s/w Redirected: 464271
Service mode: Open
Service access-list: -none-
Total Packets Dropped Closed: 0
Redirect access-list: redirect_to_squid
Total Packets Denied Redirect: 15217
Total Packets Unassigned: 1006
Group access-list: -none-
Total Messages Denied to Group: 0
Total Authentication failures: 0
Total Bypassed Packets Received: 0

asa#sh ip wccp web-cache detail
WCCP Client information:
WCCP Client ID: 192.168.1.253
Protocol Version: 2.0
State: Usable
Initial Hash Info: 00000000000000000000000000000000
00000000000000000000000000000000
Assigned Hash Info: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Hash Allotment: 256 (100.00%)
Packets s/w Redirected: 44549
Connect Time: 1h07m
Bypassed Packets
Process: 0
Fast: 0
CEF: 0
Errors: 0


Все в порядке, все работает.
А теперь уже можно и марафет навести: прикрутить SquidGuard для более тонкой фильтрации, SARG для вывода красивой статистики начальству и т.д. кому что нравится. Но это уже другая история, если будет проявлен интерес, могу и эти процессы описать.

Спасибо за внимание, постараюсь ответить на все вопросы.
Alexey @alpolle
карма
5,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (14)

  • +2
    Еще одна статья «Как настроить WCCP» =)
    • 0
      Кстати небольшой нюанс, для случая с ASA сервер прокси должен находится обязательно в том-же VLAN, что и пользователи.
      • 0
        Когда делаешь все сам, «нюансов» хватит. ) Например, в этом мануале я не увидел ни слова про Router ID и как он выбирается асой…
  • 0
    А какой смысл ВЕСЬ трафик заворачивать на сквид? Ведь некоторые протоколы не смогут нормально работать со сквидом в transparent режиме (SSL, например).
    Есть более интересные решения.
    • 0
      Видимо имелся в виду весь трафик, приходящий по GRE. А если глянуть акл асы, то можно увидеть, что заворачивается в туннель только www.
  • 0
    Ну да, не заметил any eq www
  • 0
    В дополнение, альтернативные решения:

    При не больших объемах (как пользователей, так и правил фильтрации), можно просто использовать url filtering на asa.
    ссылка

    Ну а если у вас много пользователей, и много правил, то более популярная связка ASA & Websense
    youtube url.

    p.s. Вы в энтерпрайз внедрили связку? Было бы хорошо в будущем, отписаться о впечатлениях.
    Спасибо.
    • 0
      Энтерпрайз = продакшн? Если да, то могу поделиться своими личными впечатлениями… В двух местах настроил такую связку — никаких проблем (8 мес и 4 мес). В одном asa 5510 (человек 60), в другом asa 5505 (около 40). По основному месту работы крутится стандартная «непрозрачная» схема, ибо нужна ntlm-авторизация. А в прозрачном режиме только по IP…
      • 0
        т.е. после настройки, стабильная работа и только?
        Насколько требовательны условия, к построению правил фильтрации?
        • 0
          Не понял вопроса. Да, всё стабильно работает. Проблем нет. Фильтрация по открытым спискам «плохих» сайтов + белые списки + шейпер + редиректы… Все плюшки сквида в действии.
      • 0
        ибо нужна ntlm-авторизация

        на ASA?
        Если да, то можете подробней рассказать или тнуть в мануал по настройке?
        • 0
          Под «стандартной схемой» имел в виду «прокси отдельно, фаер отдельно» :) Но дла асы, кстати, есть приблуда какая-то, насколько помню — типа AD Agent. Ставится на контроллер домена и передает на асу кто на какой комп вошел. Аса сопоставляет юзера и IP-адрес по этим данным. И «как бы» доменная авторизация выходит. Но, конечно, костыль какой-то.
  • 0
    Может кто еще не в курсе:
    До недавнего времени приходилось использовать связку сквид+аса для аутентификации и авторизации пользователей, с выходом же версии софта 8.4 появился новый и очень долгожданный функционал: Identity Firewall (подробнее можно познакомиться тут www.anticisco.ru/blogs/?p=1667).
    Говоря простым языком, теперь можно забыть про сквид, который используется для аутентификации пользователей из АД и разграничения доступа к сайтам на основе групп АД. Все это теперь умеет Cisco ASA и можно спокойно вздохнуть, забыв о «ручной» настройке параметров прокси в разнообразном софте.
    Хотя остается смысл прикрутить прозрачный сквид через WCCP для фильтрации нежелательного контента (реклама, порно и т.д.) и статистики посещения веб-страниц (если у кого-то руководство страдает паранойей).
  • 0
    Добрый день.
    Прошу помощи.
    У меня не отрабатывает правило:
    -A PREROUTING -p tcp -m tcp -i wccp0 -j REDIRECT --to-ports 3128.
    Счетчики увеличиваются, но пакеты просто маршрутизируются
    Точно такое же правило для локального интерфейса заворачивает пакеты на сквид. В случае с интерфейсом gre пакет просто маршрутизируется.
    Пробовал делать на FreeBSD. PF и IPFW работают точно также.
    Подскажите что копать…

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.