CentOS: Squid закручиваем гайки

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

Мы уже настроили наш proxy-сервер, он работает, выпускает пользователей в интенет, но пока, они могут делать всё что захотят, что не есть хорошо. Соответственно сегодня мы закроем им доступ на «злокачественные» сайты, запретим скачивание файлов и порежем баннеры. Хочу отдельно упомянуть социальные сети. Лично у меня нет какого то предрассудка на тему того что они должны быть закрыты, так же как таких мыслей нет и у моего руководства (ну кроме ситуаций, когда пользователь злоупотребляет ими). Тем более что исследования говорят о том что человек работает на 10-15% лучше, если его не ограничивать в доступе к социальным сетям (к сожалению, не могу найти пруф линк :(). Соответственно схема работы с соц.сетями у меня такая: доступ к ним открыт во внерабочее время, т.е. с 19-00 до 10-00 и в обеденный перерыв с 13-00 до 14-00. Я считаю что этого вполне достаточно что бы все были счастливы.

И так, переходим к настройке. Править мы будем всё тот же конфигурационный файл squid`а

korp # nano /etc/squid/squid.conf

всё в той же секции # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS добавляем правила:

acl full-access src 10.211.55.10

acl work_time time 09:00-13:00 14:10-19:00

acl bad_url url_regex "/etc/squid/acl/bad_url"
acl social url_regex "/etc/squid/acl/social"
acl upload url_regex "/etc/squid/acl/upload"
acl filetypes urlpath_regex -i "/etc/squid/acl/filetypes"
acl baners urlpath_regex -i "/etc/squid/acl/baners"

думаю work_time уже не вызывает вопросов, а вот bad_url, social, upload, filetypes, banners это файлы, куда мы будем добавлять нежелательные сайты, расширения файлов и т.д. дабы это дело не копилось у нас в конфигурационном файле. full-access это компьютеры, которым разрешён полный доступ (если по простому — начальство, которому ничего не запрещено).

Создаём директорию, в которой данные файлы у нас будут храниться

korp # mkdir /etc/squid/acl

Содержимое файлов примерно такое:
/etc/squid/acl/bad_url

.prostitutki.ru

/etc/squid/acl/social

.vkontakte.ru
.odnoklassniki.ru
.odnoklasniki.ru

/etc/squid/acl/upload

.depositfiles.com
.mediafire.com

/etc/squid/acl/filetypes

\.(exe)$
\.(zip)$
\.(rar)$
\.(mp3)$
\.(avi)$
\.(wav)$
\.(mpg)$
\.(mpeg)$
\.(torrent)$

/etc/squid/acl/baners

88x31.*gif
100x80.*gif 
100x100.*gif
120x60.*gif
179x69.*gif
193x72.*gif
468x60.*gif

Возвращаемся к конфигу squid`а и добавляем

http_access deny bad_url !full-access
http_access deny social work_time !full-access
http_access deny upload !full-access
http_access deny filetypes !full-access
	
http_access allow our_networks
http_access allow full-access

Первые 4 правила запрещают доступ к нашим «неугодным» сайтам и файлам, для всех, кроме группы full-access, последние 2 правила разрешают доступ ко всему остальному, что не перечислено нами в качестве запрета.

Сохраняем, делаем

korp # service squid reload

и проверяем как всё работает — проблем возникнуть не должно. Это лишь достаточно обобщённый пример настройки. Вполне возможно что вам понадобиться более гибкая настройка правил, но я не могу учесть всех возможных вариантов и считаю что данный how-to + man помогут решить вашу задачу в полном объёме.

4 ответа к «CentOS: Squid закручиваем гайки»

  1. привет)
    у меня авторизация ntlm идет…
    Вот часть squid.conf

    acl squid_users_group external NT_global_group squid_proxy

    http_reply_access allow all

    acl work_time time 08:00-13:00 14:00-20:00

    acl bad_url url_regex «c:/squid/acl/bad_url.txt»
    acl social url_regex «c:/squid/acl/social.txt»
    acl upload url_regex «c:/squid/acl/upload.txt»
    acl filetypes urlpath_regex -i «c:/squid/acl/filetypes.txt»
    acl baners urlpath_regex -i «c:/squid/acl/baners.txt»

    http_access deny social work_time squid_users_group
    http_access deny bad_url squid_users_group
    http_access deny upload squid_users_group
    http_access deny filetypes squid_users_group

    http_access allow squid_users_group

    проблема в том,что ,если пользователь пытается зайти на сайт , находящийся в запрете (social), то выходит окно с просьбой авторизоавться…. как сделать,чтобы без этого окна, сразу окно — «доступ закрыт» выходило?

    спасибо

    1. Скорее всего не верно настроен ntlm. Возможно в windows есть свои заморочки — не знаю — не пробовал и не собираюсь 🙂 Смотрите что он пишет в лог, попробуйте отключить basic аутентификацию.

      1. нет) htlm норм работает)
        просто до этого без правил было… пускал всех на все сайты… авторизовывал автоматом, не запрашивая логин-пароль.
        сейчас так же только на те сайты, на которые разрешено ходить…
        а на запрещенные выдает окно с логин-паролем… (((

        1. Возможно дело в windows, как я уже сказал. С linux я таких проблем не встречал, если deny, значит deny.
          Но я бы всё-таки проверил Ntlm — html_auth —username=user, после ввода пароля смотреть что он скажет.

Добавить комментарий