Мы рекомендуем Сочи Адлер путевки в пансионат Фрегат, узнайте подробности.

Proxy-сервер SQUID web-интерфейс для администрирования SAMS SAMS+REJIK с аунтентификацией по NTLM

Настраиваем связку SQUID SAMS+REJIK с аунтентификацией по NTLM.
Так как есть ДОМЕН под управление Win 2003 Server, и нужна авторизация пользователя под своей учетной записью и так же вести логи и предоставлять информацию начальству в случаи надобности.
Авторизация пользователей будет по NTLM.
Для всего нам понадобится apache, php, mysql, сам squid, sams, samba. Все это нам предстоит установить, или обновить.

Для начало ставим скопом apache, php, mysql:
$ aptitude install apache2 apache2-doc apache2-utils ssl-cert mysql-server libmysqlclient15-dev libapache2-mod-php5 php5 php5-common php5-dev php5-mcrypt php5-imagick php5-mysql

Для того, чтобы пользователи могли проходить NTLM аутентификацию, необходимо настроить авторизация через Active Directory, и здесь вы будем использовать samba, kerberos, winbind, pam. Настраиваем и введем наш сервер в домен:
1. Устанавливаем и настраиваем Kerberos:

$ aptitude install aptitude install krb5-doc krb5-user krb5-config


в конце процесса установки, установщик спросит у наc два параметра:

What are the Kerberos servers for your realm?
имя Kerberos cервера для realm NS.DOMAIN (имя realm определено автоматичеcки)
[ master.ns.domain ]
What is the administrative server for your Kerberos realm?
имя cервера паролей для NS.DOMAIN Kerberos realm
[ master.ns.domain ]

на оба запроса вводим наш адрес домен-контроллера(DC)
Далее правим /etc/krb5.conf и приводим его к такому виду (EXAMPLE.COM – наш master.ns.domain ):
$ nano /etc/krb5.conf


[libdefaults]
default_realm = EXAMPLE.COM

# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
…. ………… ………
[realms]
EXAMPLE.COM = {
kdc = EXAMPLE.COM
admin_server = EXAMPLE.COM
}

[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
[login]
krb4_convert = true
krb4_get_tickets = false

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5dc.log
admin_server = FILE:/var/log/ksadmind.log

Так же можно добавить несколько записий kdc, если это необходимо, так вторым kdc вполне может быть вторичный контроллер домена Active Directory например kdc = ad1.example.com и тд.
Проверяем, берем пользывателя из AD:
$ kinit admin@EXAMPLE.COM
Password for admin@EXAMPLE.COM: *****


$ klist

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin@EXAMPLE.COM
Valid starting Expires Service principal
08/24/10 07:51:34 08/24/10 14:31:34 krbtgt/EXAMPLE.COM@EXAMPLE.COM
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached

2. Устанавливаем и настраиваем SAMBA:
$ aptitude install winbind samba


Теперь настраиваем winbind, для этого правим файл /etc/samba/smb.conf.
$ nano /etc/samba/smb.conf


[global]
dos charset = cp866
unix charset = KOI8-R
workgroup = EXAMPLE (прописными)
realm = EXAMPLE.COM (прописными)
server string = SQUID-PROXY
security = ADS
auth methods = winbind
allow trusted domains = No
password server = *
log level = 1
log file = /var/log/samba/samba.%m
max log size = 50
time server = Yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
os level = 0
preferred master = No
local master = No
domain master = No
dns proxy = No
ldap ssl = no
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind use default domain = Yes
strict locking = No
client NTLMv2 auth = Yes
client lanman auth = No
client plaintext auth = No
#winbind separator = +
winbind enum users = Yes
winbind enum groups = Yes
winbind refresh tickets = Yes
encrypt passwords = yes

Проверяем конфигурацию SAMBA:
$ testparm


testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

Далее правим файл nsswitch.conf
$ nano /etc/nsswitch.conf


…… ……
passwd: compat winbind
group: compat winbind
shadow: compat winbind

hosts: files dns
networks: files

protocols: db files
services: db files
ethers: db files
rpc: db files

netgroup: nis

Поcле редактирования /etc/samba/smb.conf, не забываем реcтарт samba+winbind
$ /etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start


Stopping the Winbind daemon: winbind.
Stopping Samba daemons: nmbd smbd.
Starting Samba daemons: nmbd smbd.
Starting the Winbind daemon: winbind.

Теперь заведем наш сервер в домен:
$ net ads join -U administrator

Enter administrator’s password:
Using short domain name — EXAMPLE
Joined ‘COMP’ to realm ‘example.com’

Проверить, видит ли Samba группы, пользователей домена можно так:
$ wbinfo -u


В ответ выдаст список пользователей в домене.
группы:
$ wbinfo -g


3. Ставим, настроиваем сам squid:
$ aptitude install squid


Так как сам конфиг squid’а заслуживает описания отдельной статьи, а может и не одной, поэтому выложу свой кофиг, правда напильником он не обработан, но нам все завелось, все заремленное удалил:

………… ……
auth_param ntlm program /usr/bin/ntlm_auth –helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm keep_alive on
auth_param basic program /usr/bin/ntlm_auth –helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid Proxy-Server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
………. …
acl _sams_default proxy_auth “/etc/squid/default.sams”
… …
acl Localnet src 192.168.100.0/24
acl ALL src 0.0.0.0/0.0.0.0
#acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
…….
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
….
http_access allow _sams_default
http_access allow Localnet

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
…....
http_access allow localhost
…… …
http_access deny ALL
…… …
icp_access allow localnet
icp_access deny all
…… …….
http_port 3128
…..…
hierarchy_stoplist cgi-bin?
………… ……
access_log /var/log/squid/access.log squid
……… …………
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Package(.gz)*)$ 0 20% 2880
refresh_pattern. 0 20% 4320
…………. ………
acl shoutcast rep_header X-HTTP09-First-Line ^ICY\s[0-9]
upgrade_http0.9 deny shoutcast
……..….
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
…… ……
delay_pools 1
delay_class 1 2
delay_access 1 allow _sams_default
delay_access 1 deny all
delay_parameters 1 64000/64000 64000/64000
……… …….
hosts_file /etc/hosts
.. …….
coredump_dir /var/spool/squid

Создаем кэш:
$ squid -z
2010/09/07 11:28:55| Creating Swap Directories


Если squid не cможет запуститься по каким либо причинам, он выводит сообщения об ошибках прямо на консоль.Детальный лог будет лежать в /var/log/squid/cache.log.

4. Установливаем SAMS, берем последнюю версию SAMS собранную в пакеты для Debian (etch/lenny) и Ubuntu (hardy/jaunty) вы можете по адресам:
nixdev.net/release/sams/ubuntu/

nixdev.net/release/sams/debian/lenny/

Выбираем свою архитектуру процессора (32х или 64х битная), и устанавливаем 3 пакета:
sams – конфигурационный файл и все исполняемые файлы демонов
sams-web – web-интерфейс для управления работой sams и squid
sams-doc – документация к sams
Рекомендуется устанавливать все 3 пакета выбранной версии: Для 32х битных систем:
$ wget -c "http://nixdev.net/release/sams/debian/lenny/sams_1.0.5_i386.deb"
$ dpkg -i sams_1.0.5_i386.deb
$ wget -c "http://nixdev.net/release/sams/debian/lenny/sams-web_1.0.3-2_all.deb"
$ wget -c "http://nixdev.net/release/sams/debian/lenny/sams-doc_1.0.3-2_all.deb"
$ dpkg -i sams-web_1.0.3-2_all.deb sams-doc_1.0.3-2_all.deb


Заходим и читаем, там все просто расписанно по шагам
$ nano /usr/share/doc/sams/README.Debian


Для работы SAMS необходимо создать пользователя sams в БД MySQL (Create SAMS user in database):
$ mysql -u root -p
mysql> GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY "yourpassword";
mysql> GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY "yourpassword";


Создаем таблицы SAMS (tables in database):

$ mysql -u root -p < /usr/share/sams/mysql/sams_db.sql
$ mysql -u root -p < /usr/share/sams/mysql/squid_db.sql


После этого правим конфиг SAMS /etc/sams.conf, все параметры я расписал:
$ nano /etc/sams.conf


# имя базы данных SAMS
SQUID_DB=squidlog
# имя базы данных, где SAMS хранит информацию, полученную из логов SQUID
SAMS_DB=squidctrl
# адрес хоста, где стоит MySQL
MYSQLHOSTNAME=localhost
# имя пользователя MySQL, от которого будет работать SAMS
MYSQLUSER=sams
# пароль этого же пользователя в MySQL
MYSQLPASSWORD= Ваш_пароль_пользователя_sams
# наша установленная версия MySQL
MYSQLVERSION=5.0
# имя файла логов SQUID
SQUIDCACHEFILE=access.log
# директория, где лежит конфиг SQUID
SQUIDROOTDIR=/etc/squid
# директория, где лежит файл логов SQUID
SQUIDLOGDIR=/var/log/squid
# путь к кэшу SQUID
SQUIDCACHEDIR=/var/spool/squid
# путь, где лежит SAMS
SAMSPATH=/usr
# путь, где лежит SQUID
SQUIDPATH=/usr/sbin
SQUIDGUARDLOGPATH=/var/log
SQUIDGUARDDBPATH=/etc/squid
# Если вы хотите использовать NTLM или AD авторизацию и у вас есть имена пользователей на руссокм языке, то перекодирования имен пользователей из используемой кодировки в dos-866
RECODECOMMAND=iconv -f KOI8-R -t 866 %finp > %fout
# используем авторизацию в Active Directory, редактируем эти пункты
LDAPSERVER=ip адрес или имя сервера Active Directory
# ваш домен
LDAPBASEDN=EXAMPLE.COM
# имя пользователя, входщего в группу администраторы домена
LDAPUSER=usernameadmin
# пароль
LDAPUSERPASSWD=passward
# группа, в которую входят пользователи доменаю Для AD это обычно Users
LDAPUSERSGROUP=Users
# использовать редиректор REJIK
REJIKPATH=/usr/local/rejik
# Команда, выполняемая при нажатии на кнопку (SAMS->«Shutdown proxy server»).
# Данная команда добавлена для удобства удаленного выключения прокси сервера.
SHUTDOWNCOMMAND=shutdown -h now
# Номер прокси-сервера SQUID, зарегистрированного в SAMS.
# SAMS поддерживает возможность управлениями несколькими прокси серверами SQUID.
CACHENUM=0

Редактируем /etc/init.d/sams и изменяем SAMS_ENABLE=«false» на «true».
$ nano /etc/init.d/sams
SAMS_ENABLE=true


Настройка Apache и PHP:
Пакет sams-web уже содержит конфигурационный файл для web-сервера apache для работы SAMS по адресу http://<адрес сервера>/sams/.
Редактируем конфиг PHP /etc/php5/apache2/php.ini:
$ nano /etc/php5/apache2/php.ini:


C версии 1.0 SAMS работает в safe_mode php
Настриваем php для работы в режиме safe mode, для этого выставляем параметр safe_mode:
safe_mode = On

так же SAMS для некоторых функций WEB интерфейса использует системные команды, например wbinfo.В режиме safe_mode php блокирует доступ к системным командам.Php позволяет выполнять системные команды, расположенные в каталоге, заданном параметром safe_mode_exec_dir.Изменяем этот параметр:
safe_mode_exec_dir = "/usr/share/sams/bin"


Далее разрешаем исполнение системных скриптов из кода php.Ищем в файле конфигурации параметр и убираем из него запрет вызова функций phpinfo system shell_exec exec:
disable_functions = "chdir,dl,ini_get_all,popen,proc_open,passthru,pcntl_exec"


Перезапускаем службы:
$ /etc/init.d/apache2 restart
$ /etc/init.d/sams start


Ставим Режик

Для начало ставим библиотеку pcre, в дистрибутивах Debian и Ubuntu библиотека разбита на две части: libpcre3 libpcre3-dev, нужны обе.
$ aptitude install libpcre3 libpcre3-dev


Берем с офсайта www.rejik.ru/index_ru_11_1.html последнию версию на момент написания это redirector-3.2.8
$ wget http://www.rejik.ru/download/redirector-3.2.8.tgz
$ tar -xzf redirector-3.2.8.tgz
$ cd redirector-3.2.8


Скачиваем банлисты:
$ wget http://www.rejik.ru/download/banlists-2.x.x.tgz
$ $ tar -xzf banlists-2.x.x.tgz


Смотрим под каким пользователем работает squid, и что за группа (для Debian и Ubuntu это proxy:proxy)
$ nano /etc/squid/squid.conf
cache_effective_user proxy
cache_effective_group proxy


или
$ ps aux | grep squid


Открываем для редактирования Makefile и правим значения SQUID_USER и SQUID_GROUP на нашего пользователя и группу (proxy:proxy).
Собираем и устанавливаем
$ make
$ make install


Перемещаем туда наши бан листы:
$ mv banlists /usr/local/rejik3/


Переходим в каталог куда он установился
$ cd /usr/local/rejik3/


Редактируем конфиг:
$ cp /usr/local/rejik3/redirector.conf.dist /usr/local/rejik3/redirector.conf


в конфиге путь к логам указан в ту же папку куда установлен и сам rejik (/usr/local/rejik3/),
для удобства переношу логи в папку (/var/log/squid) и создаю там лог-файлы которые прописанны в конфиге:
$ cd /var/log/squid
$ touch redirector.log redirector.err


Ставим права:
$ chown proxy:proxy redirector.log (redirector.err)


Меняем наши пути:
$ nano /usr/local/rejik3/redirector.conf

error_log /var/log/squid/redirector.err
change_log /var/log/squid/redirector.log


Так же выставляем на папку banlists права (proxy:proxy):
$ chown -R proxy:proxy banlists/*


Из папки /usr/local/rejik3/tools запускаем:
$ ./check-redirector


127.0.0.1/ban/porno.html 127.0.0.1/- — GET

Идем в наши логи и смотрим — для нас важна в redirector.log строчка:

2010-09-20 16:19:09 [26671] Redirector start and working (3.2.8)

если что смотрим что он хочет и исправляем.

Продолжения следует…

источник
  • +1
  • 09 октября 2010, 19:05
  • Diesel

Комментарии (0)

RSS свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.