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”

  1. Случайно не доводилось щупать squid верси 3.1?
    Мои попытки его скрестить с SAMS окончились безрезультатно.

  2. Alsigned пишет:

    @miha
    Привет.

    Я использую sams + squid-3.1 на CentOS 5.5, авторизация ntlm. Перейти с версии 2.6 пришлось только из-за того что 3.1 умеет делать delay_pools по группе из AD. Полтора года работает почти без проблем.

    На сколько помню, главная проблем в том что с squid-3.1 идет практически пустой конфиг, а SAMS дописывает свои операторы ориентируясь по тагам которых там нет:

    # TAG: acl
    # TAG: http_access

    Если что обращайся ;)

  3. Очень интересно.
    Я проковырялся пару дней назад полдня и толкового результата не получил.
    Можно как-нибудь увидеть пример конфига squid3 с правильными тегами для работы sams? И если есть еще какая-либо специфика в настройке конфига sams и его тоже.
    Кстати, sams 2 не щупал?
    И редирект через rejik тоже не ставил?

  4. Alsigned пишет:

    @miha
    SAMS 1.x очень капризный в плане правильного забивания параметров, и в CentOS/Fedora из коробки не работает, пока не пропишешь пути и пароли в /etc/sams.conf.

    SQUID_DB=squidlog
    SAMS_DB=squidctrl
    MYSQLHOSTNAME=localhost
    MYSQLUSER=sams
    MYSQLPASSWORD=password # Точно такой же как 
                           # в веб-админке при создании БД.
    MYSQLVERSION=5.1
    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

    Еще надо не забыть поставить галочку Insert SQUID logs in database, иначе трафик будет считаться только когда нажимаешь Upgrade SAMS Database.
    Дальше по ситуации ;)

    Rejik нужен для того что бы быстро обрабатывать acl-листы, и разгрузить при этом squid. Например если ты хочешь ввести бан-лист на 10000 позиций, в остальных случаях предостаточно встроенного acl. У меня бан-лист всего позиций на 100 и наверно поэтому rejik не прижился, как лишнее нагромождение.

    Ко всему этому помнится был еще прикручен HAVP, что бы фильтровать вирусы на интернет страницах – но опять же не прижилось.

    С SAMS 2 пока не разбирался, но как говорят он умеет работать с несколькими прокси из одной консоли, что радует.

  5. Alsigned пишет:

    Рабочая конфигурашка, все acl _sams_xxx и http_access allow _sams_xxx можно удалить – их генерит SAMS под конкретную конфигурацию:

    memory_pools off
    cache_mem 128 MB
     
    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
     
    # TAG: acl
    acl _sams_4c210003baee6 proxy_auth "/etc/squid/4c210003baee6.sams"
    acl _sams_4c210003baee6_time time MTWHFAS 00:00-23:59
    acl _sams_4c210100acd77 proxy_auth "/etc/squid/4c210100acd77.sams"
    acl _sams_4c210100acd77_time time MTWHFAS 00:00-23:59
    acl _sams_4c21be2d7a4fa url_regex "/etc/squid/4c21be2d7a4fa.sams"
    acl _sams_4c6c161aba44d url_regex "/etc/squid/4c6c161aba44d.sams"
     
    acl manager proto cache_object
    acl localhost src 127.0.0.1/32
    acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
     
    acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
     
    acl Port_NoNTLM myportname 3127
    http_access allow Port_NoNTLM
     
    # TAG: http_access
    http_access allow _sams_4c210003baee6  !_sams_4c21be2d7a4fa !_sams_4c6c161aba44d _sams_4c210003baee6_time
    http_access allow _sams_4c210100acd77  _sams_4c210100acd77_time
     
    http_access deny all
    http_port 3128
    http_port 3127
    hierarchy_stoplist cgi-bin ?
    cache_dir ufs /var/spool/squid 512 16 256
    coredump_dir /var/spool/squid
  6. Спасибо помогло (с)
    :)
    Возникли глюки при работе с вебинтерфейсом, не работают некоторые пункты меню, по логам ругается как раз на закомментированную функцию 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 полный бубльгум.

  7. Н-да.
    Похоже это из-за PHP 5.3 который приполз сам по умолчанию через yum.

  8. Ура!
    Оказывается у тебя в описание есть маленькая недоработка эту функцию GetHostName()надо закомментировать не только в ../sams/src/configtray.php но и в ..sams/src/webconfigtray.php
    Пока вроде работает.

  9. Или даже еще лучше: в файлах:
    /usr/share/sams/src/configtray.php
    /usr/share/sams/src/webconfigtray.php
    заменить GetHostName на GetHostNameSams.

  10. Alsigned пишет:

    @miha
    Надо будет поправить, да и вообще довести статью до победного конца ;)

  11. Еще нашел интересные грабли, которые пока не соображу как порешать. У меня используется прозрачный прокси, все запросы на 80 порт iptables заворачивает на squid порт 3128, когда пользователя отключает SAMS от интернета, то у него в том числе нет доступа до локального сервера, где собственно лежит сам sams.
    Надо будет завтра покумекать, как в iptables завтра дырку проковырять.
    .

  12. Alsigned пишет:

    @miha
    Самый простой вариант – перенести sams на другой порт, например на 81.

    Можно добавить в squid.conf перед «# TAG: http_access» рарешающий acl типа:

    acl Gate_Addr dst 192.168.1.1
    http_access allow Gate_Addr

    Третий варинант перенастроить iptables.
    Скорее всего сделано приближенно так:

    iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination Router_IP:3128

    Исключаем адрес роутера:

    iptables -t nat -A OUTPUT -p tcp -d! Router_IP --dport 80 -j DNAT --to-destination Router_IP:3128
  13. Дружище опечатки исправь в мануале!

  14. Alsigned пишет:

    Привет, Alex.

    О каких ошибках идет речь?

  15. А вы не пробовали kerberos авторизацию?

Трекбеки/Пинги

  1. Блог «Админа-Маньяка» » Настройка squid и sams на Fedora 12 « Записки Миханика. - [...] Блог «Админа-Маньяка» » Настройка squid и sams на Fedora 12. Рубрика: C других сайтов, Linux, Новости ...

Оставить комментарий