Тематические термины: SquidGuard , Squid , CentOS
В двух словах, SquidGuard позволяет блокировать нежелательные сайты с помощью списков доменов и URL-адресов. Данные списки можно вести самостоятельно или скачать готовые базы. Программное обеспечение работает как дополнение к Squid, соответственно, перед его настройкой необходимо настроить и сам Squid . Блокировака работает как для http, так и https .
Установка SquidGuard
Настройка компонентов
SquidGuard
Squid
Проверка
Используем базы (blacklists)
Авторизация через Active Directory
Сборка BerkeleyDB
Сборка SquidGuard
Настройка сервера
Настройка блокировки
Возможные проблемы
Ошибка сегментирования
Syntax error in configfile squidGuard.conf line x
Сначала необходимо установить epel-репозиторий:
yum install epel-release
Устанавливаем squidGuard:
yum install squidGuard
Открываем конфигурационный файл squidGuard:
vi /etc/squid/squidGuard.conf
Удаляем все его содержимое и вписываем:
dbhome /var/squidGuard/blacklists
logdir /var/log/squidGuard
dest deny {
domainlist manual/domains
urllist manual/urls
}
acl {
default {
pass !deny all
redirect http://www.remontka.com
}
}
* dest описывает путь к базам с перечисленными доменами и адресами, к которым необходимо блокировать доступ; acl — правила, по которым squidGuard обрабатывает запросы.
Создаем каталог для хранения базы для блокировки нежелательных сайтов:
mkdir -p /var/squidGuard/blacklists/manual
Создаем базу доменов:
vi /var/squidGuard/blacklists/manual/domains
porno.com
Создаем базу URL:
vi /var/squidGuard/blacklists/manual/urls
porno.com/test
Создаем базу заблокированных ресурсов:
squidGuard -C all
Открываем конфигурационный файл squid:
vi /etc/squid/squid.conf
Добавляем:
url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
* url_rewrite_program — тег, указывающий на внешнюю программу для осуществления перенаправлений.
Задаем права для squid на доступ к файлам squidGuard:
chown -R squid:squid /var/squidGuard
chown root:squid /etc/squid/squidGuard.conf
chmod 0640 /etc/squid/squidGuard.conf
chown -R squid:squid /var/log/squidGuard
Перезапускаем squid:
systemctl restart squid
Открываем браузер, настроенный на работу через прокси-сервер и пытаемся зайти на запрещенный сайт. Мы должны увидеть заглушку (веб-страницу, которую указали в redirect).
Для squidGuard уже имеется база доменов и адресов, разделенных по категориям. Их можно применять, чтобы не заводить свою базу вручную.
Переходим в рабочий каталог squidGuard:
cd /var/squidGuard
Удаляем базу, которая шла в комплекте:
rm blacklists.tar.gz
Скачиваем свежую базу с официального сайта:
wget http://squidguard.mesd.k12.or.us/blacklists.tgz
Распаковываем базу:
tar -xvf blacklists.tgz
Применяем ее:
squidGuard -C all
Задаем права для squid:
chown -R squid:squid /var/squidGuard
Настраиваем конфигурационный файл squidGuard:
vi /etc/squid/squidGuard.conf
Добавляем destination:
…
dest porn {
domainlist porn/domains
urllist porn/urls
log porn
}
…
* мы добавили базу porn , домены которой перечислены в файле /var/squidGuard/blacklists/porn/domains и пути в файле /var/squidGuard/blacklists/porn/urls .
Редактируем acl:
…
default {
pass !porn !deny all
…
* правило по умолчанию — пропускать все, кроме destination porn и deny .
Перезапускаем squid:
systemctl restart squid
* прежде, чем продолжить, настраиваем squid для аутентификации пользователей через AD DS .
Данное ПО позволяет разграничить доступ к сайтам, исходя из членства в группах AD. Однако, для CentOS 7 на момент написания данной инструкции был нюанс — версия из репозитория не выполняла поиск групп в AD, а в логе /var/log/messages мы видели ошибку, на подобие:
kernel: squidGuard[5377]: segfault at ffffffffffffffff ip 00007f0c89ea0722 sp 00007f4a27d64da8 error 5 in libc-2.16.so[7f4a2eb38000+1b6000]
Поэтому необходимо пересобрать squidGuard из исходников.
Первым делом, устанавливаем пакеты, необходимые для сборки исходников:
yum install gcc flex bison openldap-devel
wget http://download.oracle.com/berkeley-db/db-4.6.21.NC.zip
unzip db-*
* если получим ошибку, устанавливаем пакет unzip .
cd db-4.6.21.NC/build_unix/
* где 4.6.21 — версия скачанного исходника berkeley db.
Конфигурируем исходник:
../dist/configure —enable-compat185
Собираем его и устанавливаем:
make
make install
Копируем библиотеки из BerkeleyDB в системные каталоги:
cp /usr/local/BerkeleyDB.4.6/lib/* /usr/lib/
cp /usr/local/BerkeleyDB.4.6/lib/* /usr/lib64/
cp /usr/local/BerkeleyDB.4.6/include/* /usr/include/
Скачиваем исходник, распаковываем его и переходи в каталог:
wget http://www.squidguard.org/Downloads/squidGuard-1.4.tar.gz
tar -xvf squidGuard-1.4.tar.gz
cd squidGuard-*
Конфигурируем, собираем и устанавливаем:
./configure —with-ldap=yes
make
make install
Так как при установке из исходников, пути до некоторых файлов меняются, создаем несколько симлинков.
Создаем симлинк на наш конфигурационный файл для squidGuard из новой рабочей директории:
rm -f /usr/local/squidGuard/squidGuard.conf
ln -s /etc/squid/squidGuard.conf /usr/local/squidGuard/squidGuard.conf
Аналогично для файла логов:
rm -f /usr/local/squidGuard/log/squidGuard.log
ln -s /var/log/squidGuard/squidGuard.log /usr/local/squidGuard/log/squidGuard.log
Редактируем конфигурационный файл squid:
vi /etc/squid/squid.conf
#url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
url_rewrite_program /usr/local/bin/squidGuard -c /usr/local/squidGuard/squidGuard.conf
* мы поменяли путь до бинарника squidGuard и конфигурационного файла.
Перезапускаем squid:
systemctl restart squid
Можно проверить, что squidGuard по прежнему блокирует сайты.
Открываем конфигурационный файл squidGuard:
vi /usr/local/squidGuard/squidGuard.conf
Добавляем настройку для привязки с AD:
ldapbinddn cn=squidguard,cn=users,dc=domain,dc=local
ldapbindpass password
ldapcachetime 300
* ldapbinddn — учетная запись в AD, от которой squidGuard будет подключаться к каталогу; ldapbindpass — пароль для учетной записи squidguard; ldapcachetime — время в минутах, в течение которого сервер будет кэшировать результаты обращения к AD.
Добавляем группу пользователей:
src adusers {
ldapusersearch ldap://domain.local:3268/DC=domain,DC=local?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=squidGroup,CN=Users,DC=domain,DC=local))
}
* adusers — произвольное имя группе пользователей, которое мы будем использовать для ограничения доступа; domain.local:3268 — группа контроллеров домена для домена domain.local (подключение выполняется к глобальному каталогу по порту 3268).
Настраиваем ограничения для созданной группы:
acl {
adusers {
pass !deny !porn all
redirect http://www.remontka.com
}
…
* в данном примере мы запрещаем доступ к сайтам категорий porn и deny для пользователей группы adusers .
Перезапускаем squid:
systemctl restart squid
Появляется при вводе команды squidGuard -C all.
Причина: неправильный конфигурационный файл. По умолчанию, в комплекте идет файл, не пригодный для использования.
Решение: удалить конфигурационный файл и создать новый.
Система выдает ошибку, ссылаясь на строку применения ldapsearch.
Причина: squidGuard собран без поддержки ldap (—with-ldap=yes).
Решение: пересобраться программное обеспечение из исходника. Если при конфигурировании, система выдает ошибку конфигурирования lpad, необходимо убедиться, что установлен пакет openldap-devel.
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…