id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
399	неверное конфигурирвоание squid.conf при использовании rejik	dmitry a. frolov <f0s@…>	PavelVinogradov	"Самс не верно добавляет в конфиг сквида 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@email.com''

Настройка авторизации пользователя: ''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'', на остальные выдается самсовское сообщение с перечеркнутым приведением о том, что доступ запрещен.


Но каждый раз при изменение чего либа в самсе (после запуска оттуда рекофигруирования сквида), он возвращает все в зад неправильно.. как-то можно это вылечить?


"	defect	new	critical	sams-1.x.deprecated	demons	1.0.4			
