Документация по ОС FreeBSD Понедельник, 29.04.2024, 12:36
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Squid

Cisco ASA 55xx WCCP+ FreeBSD + Squid + SquidGuard + Lightsquid [2008]
Есть Cisco ASA, которая обеспечивает доступ в интернет предприятию. С версии 7.2 можно использовать WCCP.

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

Перенаправлять буду на squid, установленный на FreeBSD.

Сама настройка Cisco ASA 5520 сводится к минимум двум командам, это собственно активация wccp web-cache и привязыка интерфейса с которого будет перенаправляться трафик на внешний прокси сервер (в нашем случае Squid 2.6)

        ciscoasa(config)# wccp web-cache
        ciscoasa(config)# wccp interface inside web-cache redirect in

Если нам нужно явно указать кого нам форвардить на cache сервер, а кого нет, делается это с помощью redirect-list

Для начала создадим тот самый лист:
В режиме глобальной конфигурации:

        access-list WCCP deny ip host 10.0.0.10 any
        access-list WCCP extended permit ip 10.0.0.0 255.255.255.0 any

Затем этот лист применить для WCCP

        wccp web-cache redirect-list WCCP

Таким образом, мы создали редирект лист, в котором запрещаем перенаправлять на cache сервер пришедшее с хоста 10.0.0.10 (т.е. всё будет ходить напрямую), а всех остальных пожалуй будем пропускать через в нашем случае squid :)

http://cisco.com/en/US/docs/security/asa/asa72/configuration/guide/dhcp.html

Сама настройка сквида заключается в изменении нескольких директив

        http_port 127.0.0.1:3128 transparent

директива которая отвечает за установление прозрачного проксирования, благодаря ей мы можем заворачивать web-трафик, пришедший к нам на FreeBSD через ipfw fwd (об этом чуть ниже).

        wccp2_router 10.0.0.1

Указываем IP-адрес Inside нашей ASA.

        wccp2_forwarding_method 1
        wccp2_return_method 1
        wccp2_service standard 0

Директивы отвечающие за связь с wccp cisco ASA и за то, что будет применяться wccp версии 2.

Больше настройка squid'а ничем не отличается, от обычной его найтройки (т.е. без использования wccp).

Так же прописываются ACL для наших пользователе.

Для обеспечения работы ASA и FreeBSD + Squid необходимо создать gre интерфейс, по которому и будет работать наше перенаправление трафика.

        /sbin/ifconfig gre0 plumb
        /sbin/ifconfig gre0 link2
        /sbin/ifconfig gre0 tunnel 10.0.0.1 IP_OUTSIDE
        /sbin/ifconfig gre0 inet 1.1.1.1 1.1.1.2

это можно прописать в /etc/rc.conf или /etc/rc.local. rc.conf предпочтительнее.
проверяем:

        gre0: flags=f051<UP,POINTOPOINT,RUNNING,LINK0,LINK1,LINK2,MULTICAST> mtu 1476
            tunnel inet 10.0.0.6 --> IP_OUTSIDE
            inet 1.1.1.1 --> 1.1.1.2 netmask 0xff000000

Теперь нам нужно настроить форвард всего приходящего на сервер www трафика от wccp на squid, делается это с помощью ipfw

        ipfw add fwd 127.0.0.1,3128 tcp from any to any dst-port 80 recv gre0

Проверим всё ли нормально на Cisco ASA.

        ciscoasa# sh wccp  

        Global WCCP information:
            Router information:
                Router Identifier:                   IP_OUTSIDE
                Protocol Version:                    2.0
       
            Service Identifier: web-cache
                Number of Cache Engines:             1
                Number of routers:                   1
                Total Packets Redirected:            228325
                Redirect access-list:                -none-
                Total Connections Denied Redirect:   0
                Total Packets Unassigned:            165
                Group access-list:                   -none-
                Total Messages Denied to Group:      0
                Total Authentication failures:       0
                Total Bypassed Packets Received:     0
        ciscoasa#

        Total Packets Redirected:            228325 - значение растёт,значит кто-то уже идет по 80 порту нарушу, соответсвенно редиректится.

        ciscoasa# sh wccp web-cache detail

        WCCP Cache-Engine information:
                Web Cache ID:          10.0.0.6
                Protocol Version:      2.0
                State:                 Usable
                Initial Hash Info:     00000000000000000000000000000000
                                       00000000000000000000000000000000
                Assigned Hash Info:    FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                                       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                Hash Allotment:        256 (100.00%)
                Packets Redirected:    228784
                Connect Time:          03:29:53
        ciscoasa#


10.0.0.6 - это адрес нашего сервера, на котором установлен squid.

можно посмотреть debug, как общаются между собой Cisco ASA и Squid.

        ciscoasa# debug wccp packets

        WCCP-PKT:S00: Received valid Here_I_Am packet from 10.0.0.6 w/rcv_id 00001FB9
        WCCP-PKT:S00: Sending I_See_You packet to 10.0.0.6 w/ rcv_id 00001FBA
        WCCP-PKT:S00: Received valid Here_I_Am packet from 10.0.0.6 w/rcv_id 00001FBA
        WCCP-PKT:S00: Sending I_See_You packet to 10.0.0.6 w/ rcv_id 00001FBB

Всё хорошо, устройства друг друга видят. Т.е. по сути это обычные keepalive пакеты, т.е. проверка на живучесть друг друга.

Если Squid вдруг падает, то перенаправление на него производиться не будет, и пользователи продолжат работать.

Теперь посмотрим, доходят ли пакеты до нашего сервера, для этого посмотрим счётчик пакетов правила fwd

        bsd# ipfw show
        00101 225034  30895608 fwd 127.0.0.1,3128 tcp from any to any dst-port 80 recv gre0


Пакеты форварадятся, всё хорошо.

Для удобного просмотра статистики, кто куда ходит в рабочее время можно использовать множество утилит, например sarg,sams, lightsquid.

Все эти утилиты доступны из портов FreeBSD /usr/ports/www/
Я выбрал для себя lightsquid
Установка не отличается ничем от других приложений, в самом общем виде:

        cd /usr/ports/www/lightsquid ; make && make install clean

после установки в /usr/local/www/lightsquid появятся нужные нам скрипты.

Прописываем соответсвенно эту директорию в свой https.conf (в корень, или виртуальный хост, у кого как всё это организовывается). Настройка apache выходит за пределы этой статьи.

Необходимо лишь к apache привязать mod_perl и дать разрешение на запуск cgi скриптов, например таким образом

        <Directory "/usr/local/www/lightsquid">
           AddHandler cgi-script .cgi
           AllowOverride All
        </Directory>
       
Настройка самого lightsquid заключается в прописывании правильных путей где находится access.log нашего squid'а, который собственно и будем анализировать.

Файлы настроек лежат по умолчанию: /usr/local/etc/lightsquid/

Основой файл lightsquid.conf. В самом простом случае, требуется подкорректировать только его.

Для проверки, правильно ли настроили lightsquid запустим перл скрипт /usr/local/www/lightsquid/lightparser.pl

Если всё нормально, создастся report, которые будут видны через web.
При правильной настройке, при запуске lightparser.pl появиться в консоли ничего не должно.

Теперь сделаем, чтоб отчёт автоматически формировался, скажем какждые 30 минут. Для этого пропишем запуск скрипта в /etc/crontab следующим образом:

        */30 * * * *  root  /usr/local/www/lightsquid/lightparser.pl today

Наверняка захочется сделать ограничение на посещение различных сайтов клиентами, для этого можно использовать так же множество программ, самые известные это: squidGuard и rejik.

Я отдал предпочтение squidGuard, выбор зависит от религиозных убеждений.
squidGuard так же есть в портах: /usr/ports/www/squidguard/
Устанавливается по уже вышеописанным правилам.

После установки, все файлы конфигурации будут находиться в уже известном нам пути: /usr/local/etc/squid

Основной файл конфигурации squidGuard.conf.sample, который мы скопируем в squidGuard.conf, которым и будем пользоваться в дальнейшем.

В этом файле описываются группы пользователей, т.е. можно создать кучу групп, одной из которых запретить только порнографию, другое скачивание аудио и видео, а другой, скажем начальству разрешить всё. Подробно останавливаться на данной конфигурации не буду, всё доступно на официальном сайте: http://squidguard.com/

Теперь необходимо указать squid'у, что посещаемые сайты необходимо проверять squidguard'ом. В версии 2.6 в отличии от 2.5 это делается следующим образом:

        url_rewrite_program /usr/local/bin/squidGuard -c /usr/local/etc/squid/squidGuard.conf

указываем непосредсвенно как запускать программу редиректа и с каким конфигурационным файлом использовать

        url_rewrite_children 3

запускаем три процесса редиректа squidguard'а

собтсвенно сами так называемые blacklist'ы сайтов, которые мы будем запрещать можно скачать с того же squidguard.org.

В файле squidguard.conf укажем dbhome - путь к blacklis'у

Обновление blacklist можно автоматизировать простым скриптом, написанном на perl,shell который будет скачивать каждую неделю файл, распаковывать, перезаписывать и пересоздавать базы через squidGuard -C all, который будет выполняться через тот же crontab.

После запуска squid (не забываем первый запуск squid'а делать с -z для потроение всяких директорий для кеша). После запуска, смотрим что и как у нас запустилось:

        bsd# ps ax | grep squid
        39796  ??  Is     0:00.00 /usr/local/sbin/squid -D
        39798  ??  S      0:03.47 (squid) -D (squid)
        39799  ??  Ss     0:06.86 (squidGuard) -c /usr/local/etc/squid/squidGuard.conf (squidGuard)
        39800  ??  Ss     0:00.77 (squidGuard) -c /usr/local/etc/squid/squidGuard.conf (squidGuard)
        39801  ??  Is     0:00.21 (squidGuard) -c /usr/local/etc/squid/squidGuard.conf (squidGuard)
        41935  p0  R+     0:00.00 grep squid
        bsd#

Видим, что поднялся сам squid + 3 процесса squidguard (помним ту троечку url_rewrite_children?). Всё хорошо.

И наконец посмотрим что есть в log-файле самого squidguard'а

        bsd# tail /var/log/squidGuard.log
        2008-02-28 12:52:21 [39801] init urllist /usr/local/etc/squid/db//violence/urls
        2008-02-28 12:52:21 [39801] loading dbfile /usr/local/etc/squid/db//violence/urls.db
        2008-02-28 12:52:21 [39801] init expressionlist /usr/local/etc/squid/db//violence/expressions
        2008-02-28 12:52:21 [39801] init domainlist /usr/local/etc/squid/db//warez/domains
        2008-02-28 12:52:21 [39801] loading dbfile /usr/local/etc/squid/db//warez/domains.db
        2008-02-28 12:52:21 [39801] init urllist /usr/local/etc/squid/db//warez/urls
        2008-02-28 12:52:21 [39801] loading dbfile /usr/local/etc/squid/db//warez/urls.db
        2008-02-28 12:52:21 [39801] squidGuard 1.2.0 started (1204192341.404)
        2008-02-28 12:52:21 [39801] recalculating alarm in 13059 seconds
        2008-02-28 12:52:21 [39801] squidGuard ready for requests (1204192341.414)
        bsd#

Вот и всё, squidguard готов получать себе запросы, и фильтровать соответсвенно с настройками.

Ссылки по теме:

    - http://lightsquid.sourceforge.net/Installs.html
    - http://www.squid-cache.org/
    - http://apache.org/
    - http://www.opennet.ru/docs/RUS/squidguard/ - хорошее описание работы с SquidGuard'ом на русском
    - http://cisco.com/en/US/docs/security/asa/asa72/configuration/guide/dhcp.html - нас интересует настройка wccp
    - http://linux.yaroslavl.ru/docs/serv/squid/squidguard.html
    - http://root.armavir.ru


Источник: http://www.opennet.ru/base/cisco/cisco_asa_wccp_squid.txt.html
Категория: Squid | Добавил: oleg (07.03.2008) | Автор: AlexSatter
Просмотров: 3004 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024