SAMS – очень неплохой веб-интерфейс к сквиду хранит логи в MySql, ограничивает пользователей, показывает статистику – одним словом все что нужно для спокойного администрирования.
1. Настраиваем аутентификацию в домене
Устанавливаем необходимые пакеты
[root@localhost]# yum install samba-winbind krb5-workstation
1.1 Настройка kerberos.
Открываем для правки файл /etc/krb5.conf
[libdefaults] default_realm = DOMAIN.LOCAL # Имя вашего домена [realms] DOMAIN.LOCAL = { # Имя вашего домена kdc = 192.168.0.254 # Адрес или DNS контроллера домена admin_server = 192.168.0.254 # Адрес или DNS контроллера домена } [domain_realm] .domain.local = DOMAIN.LOCAL domain.local = DOMAIN.LOCAL
Получаем тикет
[root@localhost ~]# kinit -p administrator Password for administrator@DOMAIN.LOCAL: # Вводим пароль администратора домена
Просматриваем полученный тикет:
[root@localhost ~]# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@DOMAIN.LOCAL Valid starting Expires Service principal 06/28/10 16:16:20 06/29/10 02:16:37 krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL renew until 06/29/10 16:16:20
1.2 Настройка winbind
Открываем для редактирования файл /etc/samba/smb.conf
[global] workgroup = DOMAIN # Имя рабочей группы server string = My Server # Название сервера security = ads password server = 192.168.0.254 # Адрес или DNS контроллера домена realm = DOMAIN.LOCAL # Имя домена dns proxy = no display charset = koi8-r unix charset = koi8-r dos charset = cp866 winbind separator = + winbind use default domain = yes winbind uid = 10000-15000 winbind gid = 10000-15000 winbind enum users = yes winbind enum groups = yes
Проверяем правильность конфига самбы
[root@squidsk ~]# testparm Load smb config files from /etc/samba/smb.conf Loaded services file OK. 'winbind separator = +' might cause problems with group membership. Server role: ROLE_DOMAIN_MEMBER Press enter to see a dump of your service definitions
Вводим машину в домен
[root@localhost samba]# net ads join -U administrator Enter lev's password: # Вводим пароль доменного администратора Using short domain name -- DOMAIN Joined 'SAMS' to realm 'domain.local'
Зпускаем winbind
[root@localhost samba]# chkconfig winbind on [root@localhost samba]# service winbind start Starting Winbind services: [ OK ]
Проверяем работоспособность:
[root@localhost samba]# wbinfo -p Ping to winbindd succeeded [root@localhost samba]# wbinfo -t checking the trust secret via RPC calls succeeded
2. Настройка MySQL
Устанавливаем и запускаем MySql
[root@localhost ~]# yum install mysql-server [root@localhost ~]# chkconfig mysqld on [root@localhost ~]# service mysqld start
Первоначальная настройка mysql
[root@localhost] mysql_secure_installation Enter current password for root (enter for none): # Нажимаем Enter Set root password? [Y/n] Y New password: # Вводим новый пароль Re-enter new password: # Повторяем ввод пароля Remove anonymous users? [Y/n] Y # Удаляем анонимных пользователей Disallow root login remotely? [Y/n] Y # Запрещаем удаленные подключения Remove test database and access to it? [Y/n] # Удаляем тестовую базу данных Reload privilege tables now? [Y/n] # Перезапускаем привилегии Mysql
3. Настройка Apache
yum install httpd php php-mysql gd php-gd
4. Настройка Squid
yum install squid
Начиная с 3.0 версии в fedora конфигурационный файл поставляемый вместе с установкой содержит минимум необходимый для работы, а что особенно важно не содержит тагов по которым ориентируется SAMS.
Открываем для редактирования файл /etc/squid/squid.conf
# Задаем имя которое будет отображаться в отчетах об ошибках # совершенно бесполезная вещь, но без нее squid не хочет запускаться visual_hostname = squid.domain.com # Параметры ntlm для аутентификации через браузер auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp auth_param ntlm children 50 auth_param ntlm keep_alive on # Параметры используемые для аутентификации программ не поддерживающих ntlm # например icq или mail-агент. Я предпочитаю не использовать basic, потому что # в большинстве организаций пароли пользователей меняются с периодичностью раз в # 2 недели, а каждый раз бегать и менять пароль в mail-агентах дело не из легких. # На мой взгляд лучше выделить например 3127 порт для свободного доступа. # # http_port 3127 # # acl Port_NoNTLM myportname 3127 # # http_access allow Port_NoNTLM # Главный минус такого подхода - SAMS не будет считать и разбивать по пользователям # трафик проходящий через порт 3127 auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic auth_param basic children 5 auth_param basic credentialsttl 2 hours auth_param basic casesensitive off . . . # Настраиваем директорию с кешем # По умолчанию она закоментирована и имеет следующие параметры # # cache_dir ufs /var/spoll/squid 100 16 256 # ufs - тип файловой системы оставляем без изменений # /var/spool/squid - директория кеша # 100 - размер кеша в мегабайтах, делать размер слишком большим не рекомендуется # тк это увеличит нагрузку при поиске по кешу. # 16 - Количество директорий 1-ого уровня # 256 - Количество директорий 2-ого уровня cache_dir ufs /var/spool/squid 2048 16 256 . . . # # ВАЖНО: Если сделать это неправильно, SAMS не сможет управлять сквидом # # В тексте конфига находим фразу "http_access deny all" и выше добавляем два тага # # полностью сохраняя написание и пробелы. # TAG: acl # TAG: http_access http_access deny all
Тестируем ntlm_auth:
[root@localhost bin]# ntlm_auth --helper-protocol=squid-2.5-basic user password OK domain+user password OK
Даем разрешение на чтение информации из пайпа winbind группе squid
[root@localhost] chown root:squid /var/lib/samba/winbindd_privileged
Создаем директории кеша
[root@sams1 squid]# squid -z 2010/06/29 16:59:03| Creating Swap Directories 2010/06/29 16:59:03| Making directories in /var/spool/squid/00 2010/06/29 16:59:03| Making directories in /var/spool/squid/01 . . . . . 2010/06/29 16:59:04| Making directories in /var/spool/squid/0E 2010/06/29 16:59:04| Making directories in /var/spool/squid/0F
Запускаем сервис:
[root@sams1 squid]# chkconfig squid on [root@sams1 squid]# service squid start Starting squid: [OK]
5. Настройка SAMS
Для Fedora есть конечно и готовые сборки sams, но я предпочитаю собирать его из исходников, благо собирается он достаточно просто. Загружаем Sams-1.0.5 с сайта http://sams.perm.ru, распаковываем и переходим в директорию с исходниками.
[root@localhost tmp]# wget http://sams.perm.ru/download/sams-1.0.5.tar.bz2 [root@localhost tmp]# tar -jxvf sams-1.0.5.tar.bz2 [root@localhost tmp]# cd sams-1.0.5
Устанавливаем необходимые для сборки пакеты
yum install gcc make mysql-devel pcre-devel
Конфигурируем дистрибутив, собираем и устанавливаем
[root@localhost sams-1.0.5]# ./configure [root@localhost sams-1.0.5]# make [root@localhost sams-1.0.5]# make install
Редактируем файл /etc/sams.conf
[client] SQUID_DB=squidlog # Имя базы логов SAMS_DB=squidctrl # Имя базы установок MYSQLHOSTNAME=localhost # Адрес нашего MySql MYSQLUSER=sams # Пользователь БД, по умолчанию sams MYSQLPASSWORD=password # Пароль пользователя БД MYSQLVERSION=5.1 # Версия Mysql-сервера SQUIDCACHEFILE=access.log SQUIDROOTDIR=/etc/squid # Директория с конфигами сквида SQUIDLOGDIR=/var/log/squid # Директория с логами сквида SQUIDCACHEDIR=/var/spool/squid SAMSPATH=/usr/local SQUIDPATH=/usr/sbin #SQUIDGUARDLOGPATH=/var/log #SQUIDGUARDDBPATH=/var/db/squidguard 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/rejik SHUTDOWNCOMMAND=shutdown -h now CACHENUM=0
Добавляем sams в автозагрузку, включаем и запускаем сервис:
[root@localhost]# chkconfig --add sams [root@localhost]# chkconfig sams on [root@localhost]# service sams start Starting samsd: [ OK ]
Перезапускаем apache, что бы подцепить директорию sams:
[root@sams1 squid]# apachectl restart
Переходим по адресу http://адÑеÑ.наÑего.ÑÑевеÑа/sams
Нажимаем на кнопку «Run SAMS database installation script
Вводим:
MySQL password – пароль пользователя root, который мы задавали при установке MysqlServer
SAMS MySQL user password – точно такой же как указан в файле /etc/sams.conf в строке MYSQLPASSWORD
Нажимаем Create Database, если все прошло нормально – увидим следующее окошко.
ВАЖНО: Прежде чем переходить Веб-админку Самса, нужно исправить ошибку с отсутствующим треем (общая ошибка для Fedora, Red Hat, CentOS), открываем файл /usr/local/share/sams/src/configtray.php, находим и комментируем следующую функцию:
#function GetHostName() #{ # if(!($value=getenv('SERVER_NAME'))) # { $value="N.A."; } # return($value); #}
Перезапускаем apache:
[root@sams1 squid]# apachectl restart
Все наш сервер готов к работе.
15 Коммент. : “Настройка squid и sams на Fedora 12”
Трекбеки/Пинги
- Блог «Админа-Маньяка» » Настройка squid и sams на Fedora 12 « Записки Миханика. - [...] Блог «Админа-Маньяка» » Настройка squid и sams на Fedora 12. Рубрика: C других сайтов, Linux, Новости ...
Случайно не доводилось щупать squid верси 3.1?
Мои попытки его скрестить с SAMS окончились безрезультатно.
@miha
Привет.
Я использую sams + squid-3.1 на CentOS 5.5, авторизация ntlm. Перейти с версии 2.6 пришлось только из-за того что 3.1 умеет делать delay_pools по группе из AD. Полтора года работает почти без проблем.
На сколько помню, главная проблем в том что с squid-3.1 идет практически пустой конфиг, а SAMS дописывает свои операторы ориентируясь по тагам которых там нет:
Если что обращайся
Очень интересно.
Я проковырялся пару дней назад полдня и толкового результата не получил.
Можно как-нибудь увидеть пример конфига squid3 с правильными тегами для работы sams? И если есть еще какая-либо специфика в настройке конфига sams и его тоже.
Кстати, sams 2 не щупал?
И редирект через rejik тоже не ставил?
@miha
SAMS 1.x очень капризный в плане правильного забивания параметров, и в CentOS/Fedora из коробки не работает, пока не пропишешь пути и пароли в /etc/sams.conf.
Еще надо не забыть поставить галочку Insert SQUID logs in database, иначе трафик будет считаться только когда нажимаешь Upgrade SAMS Database.
Дальше по ситуации
Rejik нужен для того что бы быстро обрабатывать acl-листы, и разгрузить при этом squid. Например если ты хочешь ввести бан-лист на 10000 позиций, в остальных случаях предостаточно встроенного acl. У меня бан-лист всего позиций на 100 и наверно поэтому rejik не прижился, как лишнее нагромождение.
Ко всему этому помнится был еще прикручен HAVP, что бы фильтровать вирусы на интернет страницах – но опять же не прижилось.
С SAMS 2 пока не разбирался, но как говорят он умеет работать с несколькими прокси из одной консоли, что радует.
Рабочая конфигурашка, все acl _sams_xxx и http_access allow _sams_xxx можно удалить – их генерит SAMS под конкретную конфигурацию:
Спасибо помогло (с)
Возникли глюки при работе с вебинтерфейсом, не работают некоторые пункты меню, по логам ругается как раз на закомментированную функцию GetHostName()
[Tue May 17 15:14:35 2011] [error] [client 192.168.1.5] PHP Fatal error: Cannot redeclare GetHostName() in /usr/share/sams/src/webconfigtray.php on line 25, referer: http://router/sams/lframe.php
Соответственно вопрос, как быть? Я в PHP полный бубльгум.
Н-да.
Похоже это из-за PHP 5.3 который приполз сам по умолчанию через yum.
Ура!
Оказывается у тебя в описание есть маленькая недоработка эту функцию GetHostName()надо закомментировать не только в ../sams/src/configtray.php но и в ..sams/src/webconfigtray.php
Пока вроде работает.
Или даже еще лучше: в файлах:
/usr/share/sams/src/configtray.php
/usr/share/sams/src/webconfigtray.php
заменить GetHostName на GetHostNameSams.
@miha
Надо будет поправить, да и вообще довести статью до победного конца
Еще нашел интересные грабли, которые пока не соображу как порешать. У меня используется прозрачный прокси, все запросы на 80 порт iptables заворачивает на squid порт 3128, когда пользователя отключает SAMS от интернета, то у него в том числе нет доступа до локального сервера, где собственно лежит сам sams.
Надо будет завтра покумекать, как в iptables завтра дырку проковырять.
.
@miha
Самый простой вариант – перенести sams на другой порт, например на 81.
Можно добавить в squid.conf перед «# TAG: http_access» рарешающий acl типа:
Третий варинант перенастроить iptables.
Скорее всего сделано приближенно так:
Исключаем адрес роутера:
Дружище опечатки исправь в мануале!
Привет, Alex.
О каких ошибках идет речь?
А вы не пробовали kerberos авторизацию?