Дано.
Система:
Код: Выделить всё
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
Самс ставил отсюда:
http://nixdev.net/release/sams/debian/l ... _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
файл перенаправления запроса http://192.168.51.254/sams/icon/classic/blank.gif
Путь к каталогу, где лежат файлы запрета запроса http://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
итак, посомтрим как сконфигурировался режик:
f
Код: Выделить всё
0s@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. Класс. все работает. Заходим на vkontalte.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:
http://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, на остальные выдается самсовское сообщение с перечеркнутым приведением о том, что доступ запрещен.
Но каждый раз при изменение чего либа в самсе (после запуска оттуда рекофигруирования сквида), он возвращает все в зад неправильно.. как-то можно это вылечить?
PS. на 1.0.3 перейти не могу, там как там найден баг при работе с авторизацией по IP и rejik
named, named, what is my TTL value?..
[FidoNet 2:550/2 && 2:5030/4441]