Новости из Блогов Как фильтровать нежелательные сайты с помощью прокси-сервера Squid на Linux

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 17 Apr 2012.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,373
    Likes Received:
    6,619
    Reputations:
    693
    Как фильтровать нежелательные сайты с помощью прокси-сервера Squid на Linux



    В статье описано как защитить домашнюю или корпоративную сеть от нежелательного интернет контента. Наша цель заключается в установке и настройке прокси-сервера Squid на Linux и развертывания системы фильтрации.

    Пример сети

    [​IMG]


    Настройка Linux CentOS

    В статье используется дистрибутив CentOS, однако это же актуально для других, конечно с правками на них. Саму установку дистрибутива затрагивать не будем, тут должно быть все понятно. Только что установленный дистрибутив, скорее всего не будет подключен к сети, выполняем следующее — назначаем статический IP-адрес 192.168.1.2 с маской 255.255.255.0 изменив /etc/sysconfig/network-scripts/ifcfg-eth0:

    Code:
    BOOTPROTO=static
    NETMASK=255.255.255.0
    IPADDR=192.168.1.2
    ONBOOT=yes
    Настроим шлюз в /etc/sysconfig/network:
    Code:
    GATEWAY=192.168.1.1
    Настроим DNS в /etc/resolv.conf, добавив IP-адрес DNS сервера, который уже работает на маршрутизаторе (роутере):
    Code:
    nameserver 192.168.1.1
    Перезагрузим network:
    Code:
    /etc/init.d/network restart
    Проверяем сеть:
    Code:
    ping -c 3 192.168.1.1
    nslookup google.ru
    Прежде чем продолжить желательно обновить только что установленную систему:
    Code:
    yum update
    Установка прокси-сервера Squid
    Code:
    yum install squid
    Code:
    chkconfig squid on
    Перезагрузите или запустите сервер:
    Code:
    service squid start
    Code:
    service squid restart
    Разрешаем пользователям доступ к сети. Открываем /etc/squid/squid.conf и добавим:
    Code:
    visible_hostname proxy
    Также убедитесь что в конфиге есть http_access allow localnet и acl localnet src 192.168.0.0/16.

    Перезагружаем Squid:
    Code:
    service squid restart
    Проверим работу Squid набрав в браузере клиентов IP-адрес прокси-сервера (192.168.1.2).

    Примечание: может потребоваться настройка фаерволла, чтобы пользователи могли подключаются к 3128 порту. Для этого можно использовать команды system-config-firewall-tui или iptables. Также не помешает разрешать доступ к 80-ому порту, так как будем использовать его для управления через веб-интерфейс.


    Установка QuintoLabs Content Security

    Следующим шагом будем устанавливать QuintoLabs (далее qlproxy). Для тех, кто не знает что такое QuintoLabs Content Security — это демон ICAP/URL, который интегрируется в прокси-сервер Squid и предоставляет широкий набор функций для фильтрации контента с перебором веб-трафика. Может быть использован для блокировки потенциально опасных файлов, удалять рекламные объявления, запрещать доступ к различным сайтам и категориям сайтов.

    В статье будет устанавливать qlproxy 2.0, релиз которого состоялся ни так давно. По дефолту qlproxy включает в себя три политики фильтрации — жесткая (максимальный уровень фильтрации), средняя (блокирует только чрезмерную рекламу), легкая (подходит для нормального просмотра сайтов без «Порно»).

    Скачиваем:
    Code:
    curl http://quintolabs.com/qlproxy/binaries/2.0.0/qlproxy-2.0.0-bb01d.i386.rpm>qlproxy-2.0.0-bb01d.i386.rpm
    Устанавливаем:
    Code:
    yum localinstall qlproxy-2.0.0-bb01d.i386.rpm
    Установлено будет в /opt/quintolabs/qlproxy (бинарник), /var/opt/quintolabs/qlproxy (логи и базы) и /etc/opt/quintolabs/qlproxy (конфиги).

    ПРИМЕЧАНИЕ: не забываем про SELinux, или делаем правила, или отключаем его.


    Интеграция Squid и QuintoLabs Content Security

    QuintoLabs Content Security может быть интегрирован в Squid двумя различными способами — как ICAP сервер, и как URL rewriter. Рекомендуется использовать ICAP, поскольку это дает доступ ко всему HTTP трафику, который проходит через Squid.

    Файл README (/etc/opt/quintolabs/qlproxy) содержит подробные инструкции о том, как выполнить интеграцию на различных платформах (Debian, Ubuntu, RedHat и даже Windows). Для CentOS нужно добавить строки в /etc/squid/squid.conf:
    Code:
    icap_enable on
    icap_preview_enable on
    icap_preview_size 4096
    icap_persistent_connections on
    icap_send_client_ip on
    icap_send_client_username on
    icap_service qlproxy1 reqmod_precache bypass=0 icap://127.0.0.1:1344/reqmod
    icap_service qlproxy2 respmod_precache bypass=0 icap://127.0.0.1:1344/respmod
    adaptation_access qlproxy1 allow all
    adaptation_access qlproxy2 allow all
    Обязательно после изменений перезагрузить Squid:
    Code:
    service squid restart
    Теперь проверим работу зайдя на различные сайты. Реклама должна блокируются, а также полезно зайти на eicar.com попробовать скачать «вирус».

    По дефолту Content Security вполне пригоден для использования. Чтобы настроить «под себя» делаем некоторые изменения в конфигах /etc/opt/quintolabs/qlproxy/policies (пути относительные):

    — strict/members.conf: IP-адреса или логины пользователей для жесткой фильтрации.
    — relaxed/members.conf: IP-адреса или логины пользователей для средней фильтрации.
    — blocks_ads.conf: AdBlock для блокировки английских, немецких и русских баннеров.
    — block_adult_sites.conf: Блокировка «Взрослого контента». Может блокировать нормальные сайты, однако всегда есть возможность добавить нужный сайт в список исключений.
    — strict/block_sites_by_name.conf: Блокирует сайты по IP. Черви, трояны и другие вредоносные программы часто подключаются с IP-адресов, а не доменов, можно сделать регулярное выражение:
    Code:
    url = http://\d+\.\d+\.\d+\.\d+/.*
    После изменений перезагружаем qlproxy:
    Code:
    /etc/init.d/qlproxy restart
    Установка веб-интерфейса для Content Security на Apache

    У QuintoLabs Content Security есть небольшой веб-интерфейс, который позволяет смотреть текущую конфигурацию, просматривать отчеты и логи. Написан с использованием Django Python Framework. Для Apache нужен модуль mod_wsgi.

    Устанавливаем Apache:
    Code:
    yum install httpd
    Делаем автозапуск:
    Code:
    chkconfig httpd on
    Запускаем или перезагружаем Apache:
    Code:
    service httpd start
    Code:
    service httpd restart
    Затем установим нужные модули:
    Code:
    yum install mod_wsgi python-setuptools
    easy_install virtualenv
    cd /var/opt/quintolabs/qlproxy/www
    virtualenv --no-site-packages qlproxy_django
    ./qlproxy_django/bin/easy_install django==1.3.1
    В /etc/httpd/httpd.conf добавляем:
    Code:
    <VirtualHost *:80>
        ServerName proxy.lan
        ServerAdmin webmaster@proxy.lan
    
        LogLevel info
        ErrorLog /var/log/httpd/proxy.lan-error.log
        CustomLog /var/log/httpd/proxy.lan-access.log combined
    
        # aliases to static files (must come before the mod_wsgi settings)
        Alias /static/ /var/opt/quintolabs/qlproxy/www/qlproxy/static/
        Alias /redirect/ /var/opt/quintolabs/qlproxy/www/qlproxy/redirect/
    
        # mod_wsgi settings
        WSGIDaemonProcess proxy.lan display-name=%{GROUP}
        WSGIProcessGroup proxy.lan        
        WSGIScriptAlias / /var/opt/quintolabs/qlproxy/www/qlproxy/qlproxy.wsgi
        <Directory /var/opt/quintolabs/qlproxy/www/qlproxy>
            Order deny,allow
            Allow from all
        </Directory>
    </VirtualHost>
    Чтобы mod_wsgi работал в фоновом режиме, в /etc/httpd/conf.d/wsgi.conf добавляем:
    Code:
    WSGISocketPrefix /var/run/wsgi
    Примечание: если на http://localhost увидите ошибку «Доступ запрещен». Проверьте SELinux.

    После перезагрузки Apache. Доступ к нтерфейсу можно получить по адресу http://192.168.1.2/qlproxy.


    13 апреля 2012
    http://itbuben.org/blog/Unix-way/2555.html
    http://itbuben.org/
     
    #1 Suicide, 17 Apr 2012
    Last edited: 17 Apr 2012