Ticket #399 (new defect)

Opened 3 months ago

Last modified 3 weeks ago

неверное конфигурирвоание squid.conf при использовании rejik

Reported by: dmitry a. frolov <f0s@…> Owned by: PavelVinogradov
Priority: critical Milestone: sams-1.1.0
Component: demons Version: 1.0.4
Keywords: Cc:

Description

Самс не верно добавляет в конфиг сквида acl-и при использовании связки squid + sams + rejik3 + авторизации по IP, в следствии чего пользователям одного из шаблона не выйти в интернет совсем (идет блокировка на уровне сквида)

Подробнее:

Дано.

Система:

f0s@ubuntu9:/etc/squid$ uname -a
Linux ubuntu9 2.6.28-16-server #55-Ubuntu SMP Tue Oct 20 20:37:10 UTC 2009 x86_64 GNU/Linux

Самс ставил отсюда: nixdev.net/release/sams/debian/lenny/sams_1.0.4-1_amd64.deb

f0s@ubuntu9:/etc/squid$ sams -V
Version SAMS-1.0.4

вот конфиг самса:

f0s@ubuntu9:/etc/squid$ cat /etc/sams.conf
[client]
SQUID_DB=squidlog
SAMS_DB=squidctrl
MYSQLHOSTNAME=localhost
MYSQLUSER=sams
MYSQLPASSWORD=passwd
MYSQLVERSION=5.1
SQUIDCACHEFILE=access.log
SQUIDROOTDIR=/etc/squid
SQUIDLOGDIR=/var/log/squid
SQUIDCACHEDIR=/var/spool/squid
SAMSPATH=/usr
SQUIDPATH=/usr/sbin
#SQUIDGUARDLOGPATH=/var/log
#SQUIDGUARDDBPATH=/etc/squid/squidGuard.conf
RECODECOMMAND=iconv -f KOI8-R -t 866 %finp > %fout
#LDAPSERVER=servername_or_ipadress
#LDAPBASEDN=your.domain
#LDAPUSER=DomainAdministrator
#LDAPUSERPASSWD=passwd
#LDAPUSERSGROUP=Users
REJIKPATH=/usr/local/rejik3
SHUTDOWNCOMMAND=shutdown -h now
CACHENUM=0

Сквид:

f0s@ubuntu9:/etc/squid$ dpkg-query -l | grep squid
ii  squid                                     2.7.STABLE3-4.1ubuntu1            Internet object cache (WWW proxy cache)
ii  squid-common                              2.7.STABLE3-4.1ubuntu1            Internet object cache (WWW proxy cache) - co
f0s@ubuntu9:/etc/squid$

стоит rejik3.

Что сделано в веб-интерфейсе самса:

Считать трафик: Полный Преобразовывать DNS имена: галка НЕ стоит Уровень детализации записей в журнале: 9 Домен по умолчанию: vici.msk.ru Выберите скрипт, используемый для отправки сообщения при отключении пользователей: NONE Введите адрес администратора, на который следует посылать сообщения my@…

Настройка авторизации пользователя: IP

Настройка samsdaemon Проверять наличие команды на реконфигурирование squid каждые 1 секунд Обрабатывать логи SQUID - отмечено галкой обрабатывать через 1 минут Автоматически очищать счетчики трафика пользователей - НЕ отмечено

Путь к wbinfo: /usr/bin файл перенаправления запроса  httр://192.168.51.254/sams/icon/classic/blank.gif Путь к каталогу, где лежат файлы запрета запроса  httр://192.168.51.254/sams/messages Редиректор Rejik Включить ограничение скорости доступа пользователей (delaypool) - Отмечено галкой Сохранять данные о трафике в базе за последние 1 месяцев. Данные сохраняются в файл и удаляются из базы.

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

в графе "запрет доступа" по url, подраздел chats прописано vkontakte.ru

В графе "доступ разрешен" создан список, который назван allowurl, в котором перечислены сайты к которым разрешен доступ

в меню шаблоны пользователей создано два шаблона: unlim, limited

для шаблона unlim указано: запрет доступа к chats больше галок не стоит

для шаблона limited указано: Доступ запрещен ко всем URL и поставлена галка ниже: Доступ к URL разрешен: к allowurl

заходим на вкладку squid жмем реконфигурировать.

самс конфигурирует, сквид, режик. получаем.

вот такие настройки добавляет в rejik:

f0s@ubuntu9:/usr/local/rejik3$ ls -l
total 456
-rw-r--r-- 1 root  root     406 2009-11-18 08:46 4831439d52dcd.sams
-rw-r--r-- 1 proxy proxy     29 2009-11-18 08:46 483162ae0e07b.sams
drwxr-xr-x 6 proxy proxy   4096 2003-07-25 09:02 banlists
-rwxr-xr-x 1 proxy proxy  48339 2009-11-16 15:44 make-cache
-rwxr-xr-x 1 proxy proxy  53484 2009-11-16 15:44 redirector
-rw-r--r-- 1 root  root    3202 2009-11-18 08:46 redirector.bak
-rw-rw-rw- 1 proxy proxy   3202 2009-11-18 08:46 redirector.conf
-rw-r--r-- 1 proxy proxy   3082 2009-11-16 15:44 redirector.conf.dist
-rw-r--r-- 1 proxy proxy  92432 2009-11-18 08:46 redirector.err
-rw-r----- 1 proxy proxy 220618 2009-11-18 08:06 redirector.log
drwxr-xr-x 5 proxy root    4096 2009-11-18 08:46 _sams_banlists
drwxr-xr-x 2 proxy proxy   4096 2009-11-16 15:42 tools

короткой строкой по содержимому файлов:

f0s@ubuntu9:/usr/local/rejik3$ cat 4831439d52dcd.sams
192.168.51.7
192.168.51.8
192.168.51.151
192.168.51.1

это список айпи шаблона unlim

f0s@ubuntu9:/usr/local/rejik3$ cat 483162ae0e07b.sams
192.168.51.51
192.168.51.111

ну а это список айпи с шаблона limited

итак, посмотрим как сконфигурировался режик:

f0s@ubuntu9:/usr/local/rejik3$ cat redirector.conf
error_log /usr/local/rejik3/redirector.err
change_log /usr/local/rejik3/redirector.log
make-cache /usr/local/rejik3/make-cache
#allow_urls /usr/local/rejik3/banlists/allow_urls

<_sams_4831439d52dcd_denied>
work_ip f:/usr/local/rejik3/4831439d52dcd.sams
ban_dir /usr/local/rejik3/_sams_banlists/4831439d52dcd_denied
url http://192.168.51.254/sams/messages/blocked.php?action=rejikdenied&url=#URL#  #_sams_
<_sams_483162ae0e07b_allow>
work_ip f:/usr/local/rejik3/483162ae0e07b.sams
ban_dir /usr/local/rejik3/_sams_banlists/483162ae0e07b_allow
url http://192.168.51.254/sams/messages/blocked.php?action=rejikdenied&url=#URL#  #_sams_
reverse  #_sams_

здесь все идеально. все добавлено правильно и грамотно.

далее смотрим настройки сквид:

f0s@ubuntu9:/etc/squid$ ls -l
total 944
-rw-r--r-- 1 root root    870 2009-11-18 08:46 4831439d52dcd.sams
-rw-r--r-- 1 root root     61 2009-11-18 08:46 483162ae0e07b.sams
-rw-r--r-- 1 root root 151723 2009-11-18 08:46 squid.conf
-rw-r--r-- 1 root root 151021 2009-11-18 08:46 squid.conf.bak

опять так, здесь мы видим, что: 4831439d52dcd.sams - это список айпи адресов шаблона unlim

483162ae0e07b.sams - это список айпи адресов шаблона limited

вот собственно что добавляет самс в сквид:

f0s@ubuntu9:/etc/squid$ diff squid.conf squid.conf.bak
1d0
< # created by SAMS _sams_ 2009-11-18 8:46:28
2334,2337d2332
< acl _sams_4831439d52dcd src "/etc/squid/4831439d52dcd.sams"
< acl _sams_4831439d52dcd_time time MTWHFAS 00:00-23:59
< acl _sams_483162ae0e07b src "/etc/squid/483162ae0e07b.sams"
< acl _sams_483162ae0e07b_time time MTWHFAS 00:00-23:00
2598,2599d2592
< http_access allow _sams_4831439d52dcd  _sams_4831439d52dcd_time
< http_access allow _sams_4831439d52dcd  _sams_4831439d52dcd_time  _sams_483162ae0e07b_time
3053,3061d3045
< delay_pools 2
< delay_class 1 2
< delay_class 2 2
< delay_access 1 allow _sams_4831439d52dcd
< delay_access 1 deny all
< delay_parameters 1 524288/524288 524288/524288
< delay_access 2 allow _sams_483162ae0e07b
< delay_access 2 deny all
< delay_parameters 2 524288/524288 524288/524288

пока опустим комментарии проверим. берем польщователя из группы unlim. идем на комп с айпи 192.168.51.7 и пробуем войти в интернет. заходим на google.ru. Класс. все работает. Заходим на vkontakte.ru - видим сообщение типа "доступ к vkontakte.ru запрещен" и картинка самса (приведение перечеркнутое). Как мы можем догадаться, это сработал запрет доступа к chats для группы unlim

вроде все работает. но тут рано радоваться. берем комп из группы limited. пусь это будет 192.168.51.111 пробуем войти в инет (по задумке нас должно пускать только на те сайты, которы перечислены в allowurls). Вводим сайт из списка allowurls. Это yandex.ru. Ага. Что мы видим на экране. Сквидовское сообщение:

ERROR
The requested URL could not be retrieved

While trying to retrieve the URL: httр://yandex.ru/

The following error was encountered:

    * Access Denied.

      Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect.

то есть это значит, что запрет произошел еще на стадии сквида (до редиректора с самсом еще дело не дошло).

Попробуем разобраться в чем же дело. идем обратно в сквид конфиг, который для нас смастерил самс. внимательно смотрим acl (я буду для наглядности комментировать здесь конфиг с помощью знака #). Итак:

acl _sams_4831439d52dcd src "/etc/squid/4831439d52dcd.sams"
acl _sams_4831439d52dcd_time time MTWHFAS 00:00-23:59
# это задается acl для шаблона unlim (соответсвенно в файле перечислены IP-адреса тех, кому можно в инет на все сайты, кроме сайтов из запрещенной группы chats)

acl _sams_483162ae0e07b src "/etc/squid/483162ae0e07b.sams"
acl _sams_483162ae0e07b_time time MTWHFAS 00:00-23:00
# это задается acl для шаблона limited (в файле перечислены IP-адреса тех, кому можно в инет только по заданным адресам)

[..skip..]

http_access allow _sams_4831439d52dcd  _sams_4831439d52dcd_time
# видим разрешение для выхода в инет шаблону unlim в заданное в самсе время

http_access allow _sams_4831439d52dcd  _sams_4831439d52dcd_time  _sams_483162ae0e07b_time
# видим опять-так разрешение для выхода в инет того же шаблона unlim в заданное время + указано время для шаблона limited! (и никакого упоминая о шаблоне limited!)

http_access deny all
# ну а это обычно дефолтовое правило сквида.

как мы видим, в сквид не добавляется http_access для шаблона Limited, поэтому польщзователи из этой группы сразу попадают на дефолтвое сквидовское http_access deny all, и поэтому они видят сквидовское сообщение о том, что доступ запрещен.

Давайте теперь зайдем на редактирование в конфиг сквида. и исправим acl с того что нам создал самс:

http_access allow _sams_4831439d52dcd  _sams_4831439d52dcd_time
http_access allow _sams_4831439d52dcd  _sams_4831439d52dcd_time  _sams_483162ae0e07b_time

на следующие:

http_access allow _sams_4831439d52dcd  _sams_4831439d52dcd_time
http_access allow _sams_483162ae0e07b  _sams_483162ae0e07b_time

сохраняемся, делаем squid -k reconfigure

Ура товарищи. теперь народ из шаблона limited ходит только по сайтам из allowurls, на остальные выдается самсовское сообщение с перечеркнутым приведением о том, что доступ запрещен.

Но каждый раз при изменение чего либа в самсе (после запуска оттуда рекофигруирования сквида), он возвращает все в зад неправильно.. как-то можно это вылечить?

Attachments

Change History

Changed 7 weeks ago by PavelVinogradov

Огромное спасибо за баг репорт. Очень подробное и качественное описание проблемы. Проблему воспроизвести удалось, очень надеюсь что сможем решить её до выпуска версии 1.0.5

Changed 6 weeks ago by PavelVinogradov

  • milestone changed from sams-1.0.5 to sams-1.1.0

Changed 3 weeks ago by neo-mail@…

Столкнулся с такой же проблемой. FreeBSD7.2+squid-2.7.6+rejik-3.2.1+sams-1.0.5. В ожидании sams-1.1.0 пришлось подставить костыль:

1. Создаем скриптик

#!/usr/local/bin/bash
CONF="/usr/local/etc/squid/squid.conf"
OUT="/tmp/squid.conf"

sed -n '1,/TAG: http_access/p' $CONF > $OUT
grep _sams_ $CONF | grep http_access | awk '{FS=" ";OFS="";split($NF,a,"_");print($1," ",$2," _",a[2],"_",a[3]," ",$NF)}' >> $OUT
sed -n '/##ENDOFTAG/,$p' $CONF >> $OUT
cp -p $OUT $CONF

2. Добавляем в squid.conf сроку "##ENDOFTAG" сразу после строк "http_access allow _sams_4831439d52dcd _sams_4831439d52dcd_time _sams_483162ae0e07b_time" и перед "Allowing or Denying access"

3. Добавляем запуск этого скрипта в демон самса. Для этого в исходнике samsdaemon.c правим строку 3003 (в моем случае скрипт лежит по адресу /usr/local/etc/squid/reconf.sh):

sprintf(&str[0],"/usr/local/etc/squid/reconf.sh && %s/squid -f %s/squid.conf -k reconfigure",conf.squidpath,conf.squidrootdir);

4. Собираем новый samsdaemon, кладем его вместо оригинального.

5. На всякий случай сохраняем последнюю редакцию squid.conf в безопасном месте и запускаем демон самса. Теперь пробуем сделать реконфигурацию через вэб-интерфейс и визуально проверяем правильность конфига.

Существуют более элегантные решения, но я ничего другого не придумал. Такие изменения помогают только в описанной выше ситуации.

Add/Change #399 (неверное конфигурирвоание squid.conf при использовании rejik)

Author


E-mail address and user name can be saved in the Preferences.


Action
as new
 
Note: See TracTickets for help on using tickets.