Тематические термины: SquidGuard, Squid, CentOS
В двух словах, SquidGuard позволяет блокировать нежелательные сайты с помощью списков доменов и URL-адресов. Данные списки можно вести самостоятельно или скачать готовые базы. Программное обеспечение работает как дополнение к Squid, соответственно, перед его настройкой необходимо настроить и сам Squid. Блокировака работает как для http, так и https.
Сначала необходимо установить epel-репозиторий:
yum install epel-release
Устанавливаем squidGuard:
yum install squidGuard
Открываем конфигурационный файл squidGuard:
vi /etc/squid/squidGuard.conf
Удаляем все его содержимое и вписываем:
dbhome /var/squidGuard/blacklistslogdir /var/log/squidGuard
dest deny { domainlist manual/domains urllist manual/urls}
acl { default { pass !deny all redirect http://www.admins24.com }}
* dest описывает путь к базам с перечисленными доменами и адресами, к которым необходимо блокировать доступ; acl — правила, по которым squidGuard обрабатывает запросы.
Создаем каталог для хранения базы для блокировки нежелательных сайтов:
mkdir -p /var/squidGuard/blacklists/manual
Создаем базу доменов:
vi /var/squidGuard/blacklists/manual/domains
Создаем базу 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
Применяем ее:
Задаем права для squid:
Настраиваем конфигурационный файл squidGuard:
Добавляем 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 для аутентификации пользователей через 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 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
Так как при установке из исходников, пути до некоторых файлов меняются, создаем несколько симлинков.
Создаем симлинк на наш конфигурационный файл для 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:
#url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.confurl_rewrite_program /usr/local/bin/squidGuard -c /usr/local/squidGuard/squidGuard.conf
* мы поменяли путь до бинарника squidGuard и конфигурационного файла.
Можно проверить, что squidGuard по прежнему блокирует сайты.
vi /usr/local/squidGuard/squidGuard.conf
Добавляем настройку для привязки с AD:
ldapbinddn cn=squidguard,cn=users,dc=domain,dc=localldapbindpass passwordldapcachetime 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.admins24.com } …
* в данном примере мы запрещаем доступ к сайтам категорий porn и deny для пользователей группы adusers.
Появляется при вводе команды squidGuard -C all.
Причина: неправильный конфигурационный файл. По умолчанию, в комплекте идет файл, не пригодный для использования.
Решение: удалить конфигурационный файл и создать новый.
Система выдает ошибку, ссылаясь на строку применения ldapsearch.
Причина: squidGuard собран без поддержки ldap (—with-ldap=yes).
Решение: пересобраться программное обеспечение из исходника. Если при конфигурировании, система выдает ошибку конфигурирования lpad, необходимо убедиться, что установлен пакет openldap-devel.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies