20060727

L-SSSR-MAPL-W

Linux, Sams, Samba, Squid, Rejik, MySql, Apache, PHP, LDAP, Win2K

(Версия 0.7)

Автор: HITMAN

Цель: Необходимо сделать учет трафика и лимиты пользователей прокси сервера Squid, доступ пользователей определять согласно группы на Win2K AD.

Системы: Slackware-Current-20060726, Windows 2003 Server,

Компоненты: sams-20060417, apache_1.3.36, krb5-1.5, heimdal-0.7.2, mysql-5.0.22, openldap-2.3.24, php-5.1.4, rejik-3.2.1, samba-3.0.23a, squid-2.6.STABLE1.

УСТАНОВКА

В принципе подойдет любой более менее нормальный Linux дистрибутив, обязательно наличие компилятора gcc желательно версии 3.4.6 Ставим linux, удаляем стандартные компоненты приведенные выше если таковые имеются, чтобы не возникло конфликта.
Скачиваем компоненты по ссылкам выше. Все скачанные компоненты ложим в /usr/src

Ставим krb5-1.5:

cd /usr/src
tar xvf krb5-1.5-signed.tar
tar xvzf krb5-1.5.tar.gz
cd krb5-1.5/src
./configure --enable-shared
make
make install

Ставим heimdal-0.7.2:

cd /usr/src
tar xvzf heimdal-0.7.2.tar.gz
cd heimdal-0.7.2
./configure
make
make install

Прописываем путь к библиотекам Heimdal в файле /etc/ld.so.conf добавляем строчку:

/usr/heimdal/lib

Набираем комманду ldconfig

Ставим openldap-2.3.24:

cd /usr/src
tar xvzf openldap-2.3.24.tgz
cd openldap-2.3.24
./configure --prefix=/usr \
--enable-cache
make
make install  

Ставим mysql-5.0.22:

Заводим в системе пользователя mysql и группу mysql.
cd /usr/src
tar xvzf mysql-5.0.22.tar.gz
cd mysql-5.0.22
./configure --prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
--with-mysqld-user=mysql \
--without-debug \
--with-charset=utf8 \
--with-extra-charsets=all \
--enable-assembler \
--with-big-tables \
--enable-thread-safe-client \
--with-openssl
make
make install  

Прописываем путь к библиотекам MySql в файле /etc/ld.so.conf добавляем строчку:

/usr/local/mysql/lib/mysql

Набираем комманду ldconfig

Ставим samba-3.0.23a:

cd /usr/src
tar xvzf samba-3.0.23a.tar.gz
cd samba-3.0.23a/source
./configure --enable-static=no \
--enable-shared=yes \
--with-fhs \
--with-acl-support=yes \
--with-automount \
--prefix=/usr \
--localstatedir=/var \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--with-lockdir=/var/cache/samba \
--sysconfdir=/etc \
--with-configdir=/etc/samba \
--with-privatedir=/etc/samba/private \
--with-swatdir=/usr/share/swat \
--with-mysql-prefix=/var/local/mysql \
--with-ldap \
--with-ads \
--with-smbmount \
--with-quotas \
--with-syslog \
--with-utmp \
--with-libsmbclient \
--with-winbind \
--with-winbind-auth-challenge
make
make install

Ставим apache_1.3.36:

cd /usr/src
tar xvzf apache_1.3.36.tar.gz
cd apache_1.3.36
./configure --prefix=/usr/local/apache \
--enable-module=all \
--enable-module=ssl \
--enable-module=so \
--disable-module=auth_dbm \
--with-perl=/usr/bin/perl

make
make install

Ставим php-5.1.4:

cd /usr/src
tar xvjf php-5.1.4.tar.bz2
cd php-5.1.4
./configure --with-mysql=/usr/local/mysql \
--with-mod_charset \
--with-openssl \
--enable-ftp \
--enable-inline-optimization \
--enable-magic-quotes \
--enable-mbstring \
--enable-mm=shared \
--enable-safe-mode \
--enable-track-vars \
--enable-trans-sid \
--enable-wddx=shared \
--enable-xml \
--with-dom \
--with-gd \
--with-apxs=/usr/local/apache/bin/apxs \
--with-snmp \
--with-ldap \
--with-gettext \
--with-ttf=yes \
--with-zlib \
--with-xml \
--enable-force-cgi-redirect \
--with-kerberos \
--enable-discard-path \
--enable-fastcgi --with-xmlrpc
make
make install

Ставим squid-2.6.STABLE1:

Заводим в системе пользователя squid и группу squid.

cd /usr/src
tar xvjf squid-2.6.STABLE1.tar.bz2
cd squid-2.6.STABLE1
./configure --prefix=/usr/local/squid \
--enable-carp \
--enable-icmp \
--enable-delay-pools \
--enable-snmp \
--enable-arp-acl \
--enable-htcp \
--enable-forw-via-db \
--enable-cache-digests \
--enable-linux-netfilter \
--with-large-files \
--enable-default-err-language=Russian-1251 \
--with-samba-sources=/usr/src/samba-3.0.23a \
--enable-auth=ntlm,basic \
--enable-external-acl-helper=ldap_group \
--enable-basic-auth-helpers=LDAP
make
make install

Ставим rejik-3.2.1:

cd /usr/src
tar xvzf redirector-3.2.1.tgz
cd redirector-3.2.1
Правим Makefile с помощю чего угодно vi, vim, joe.
Должно получится так
INSTALL_PATH=/usr/local/rejik3
SQUID_USER=squid
SQUID_GROUP=squid

make
make install

Ставим sams-20060417:

cd /usr/src
tar xvzf sams-20060417.tar.gz
cd sams
./configure --prefix=/usr/local/sams \
--with-httpd-locations=/var/local/apache/htdocs \
--with-mysql-includes=/var/local/mysql/include/mysql \
--with-mysql-libpath=/var/local/mysql/lib/mysql
make
make install

На этом подготовка системы закончена, далее переходим к конфигурации системы.

 

КОНФИГУРАЦИЯ

KRB5:

cd /etc
touch krb5.conf

Правим krb5.conf чтобы получилось так:

[libdefaults]
default_realm =
YOUR.DOMAIN
clockskew = 300
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}

[realms]
YOUR.DOMAIN = {
kdc =
ip.of.domain.controller:88
admin_server =
ip.of.domain.controller:749
}

[domain_realm]
.your.domain =
YOUR.DOMAIN
your.domain = YOUR.DOMAIN

MySQL:

Устанавливаем базы MySQL коммандой:

/usr/local/mysql/bin/mysql_install_db

Устанавливаем права на папку баз данных

chown -R mysql:mysql /usr/local/mysql/data

Запускаем MySQL

/usr/local/mysql/share/mysql/mysql.server start

Поставте новый пароль на пользователя root в MySQL коммандой:

/usr/local/mysql/bin/mysqladmin -u root password 'new-password'

Samba:

cd /etc/samba

touch smb.conf

Правим smb.conf чтобы получилось так:

workgroup = your
realm =
your.domain
netbios name = proxy
server string =
winbind separator = +
winbind use default domain = yes
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
max log size = 50
security = domain
password server =
nameofyourpdc
encrypt passwords = yes
dos charset = CP866
unix charset = KOI8-R
nt acl support = yes
nt status support = yes
local master = no
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

Выставляем права для NTLM коммандой:

chown -R root:squid /var/cache/samba/winbindd_privileged
 

Важно не забудьте добавить на linux запись в файл hosts

linux:

/etc/hosts добавить строчки:

ip.address.of.proxy proxy.your.domain proxy

ip.address.of.pdc nameofpdc.yourdomain nameofpdc

windows:

Заводим пользователя в Active Directory, пользователь должен иметь администраторские права (adminuser).

Добавляем машину в домен командами:

kinit -p "adminuser"

net join

Запускаем samba следующими командами:

smbd
nmbd
winbindd

Проверяем работоспособность командами:


wbinfo -t (Должно выдать checking the trust secret via RPC calls succeeded)
wbinfo -p (Должно выдать Ping to winbindd succeeded on fd 4)
wbinfo -u (Должна вывести список пользоватей)
wbinfo -g (Должна вывести список групп)

Squid:

Заходим в /usr/local/squid/etc и правим файл squid.conf

Добавляем строки:

cache_dir ufs /var/spool/squid 3000 16 256

cache_access_log /var/log/squid/access.log

cache_log /var/log/squid/cache.log

cache_store_log /var/log/squid/store.log

pid_filename /var/run/squid/squid.pid

hosts_file /etc/hosts

redirect_program /usr/local/rejik3/redirector /usr/local/rejik3/redirector.conf

redirect_children 30

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of="your+Internet"
auth_param ntlm children 15
auth_param ntlm max_challenge_reuses 0
auth_param ntlm max_challenge_lifetime 2 minutes
auth_param ntlm use_ntlm_negotiate off

acl proxyusers proxy_auth REQUIRED
http_access allow proxyusers

В параметрах авторизации your и Internet обозначают первая часть названия вашего домена AD your.domain, а Internet обозначает группу пользователей в AD имеющих доступ к интернету. Т.е. вы явно не хотите чтобы все пользователи в AD имели доступ к Интернету, по этому кого надо добавляете в группу Internet и только они смогут им пользоваться.

Создаем папки и выставляем права:

mkdir /var/spool/squid
chown -R squid:squid /var/spool/squid
mkdir /var/log/squid
chown -R squid:squid /var/log/squid
mkdir /var/run/squid
chown -R squid:squid /var/run/squid
chown -R squid:squid /usr/local/rejik3

Создаем кэш Squid:

/usr/local/squid/sbin/squid -z

Запускаем Squid:

/usr/local/squid/sbin/squid

SAMS:

Запускаем скрипт создания mysql пользователя для SAMS

/usr/src/sams/mysql/create_sams_user

Правим /etc/sams.conf должно получится примерно так:

[client]
SQUID_DB=squidlog
SAMS_DB=squidctrl
MYSQLHOSTNAME=localhost
MYSQLUSER=
sams
MYSQLPASSWORD=
qwerty
SQUIDCACHEFILE=access.log
SQUIDROOTDIR=/usr/local/squid/etc
SQUIDLOGDIR=/var/log/squid
SAMSPATH=/usr/local/sams
SQUIDPATH=/usr/local/squid/sbin
RECODECOMMAND=/usr/bin/iconv -f KOI8-R -t 866 %finp > %fout
LDAPSERVER=
ip.of.your.pdc
LDAPBASEDN=
YOUR.DOMAIN
LDAPUSER=
adminuser
LDAPUSERPASSWD=
adminuserpassword
LDAPUSERSGROUP=
Internet
REJIKPATH=/usr/local/rejik3

Инсталлируем базы SAMS:

/usr/src/sams/mysql/create_sams_db

/usr/src/sams/mysql/create_squid_db

Apache&PHP:

Правим файл /usr/local/apache/conf/httpd.conf

Добавляем строки:

LoadModule php5_module libexec/libphp5.so

В диркетиве <IfModule mod_dir.c> добавляем index.php

В директиве <IfModule mod_mime.c> добавляем

AddType application/x-httpd-php .php .php3 .p .phtml

Копируем файл настроек php

cp /usr/src/php-5.1.4/php.ini-dist /usr/local/lib/php.ini

Редактируем /usr/local/lib/php.ini

Включаем

register_globals = On

Запускаем apache командой

/usr/local/apache/bin/apachectl start

rc.local:

Делаем автозапуск для всего что мы настроили :-)

Правим файл /etc/rc.d/rc.local

Добавляем строчки:

/usr/local/mysql/share/mysql/mysql.server start
/usr/sbin/smbd
/usr/sbin/nmbd
/usr/sbin/winbindd
/usr/local/apache/bin/apachectl start
/usr/local/sams/bin/samsdaemon
/usr/local/squid/sbin/squid

Создаем symlinks на необходимые программы

ln -s /usr/local/squid/sbin/squid /usr/sbin/squid
ln -s /usr/local/sams/bin/samsdaemon /usr/bin/samsdaemon
ln -s /usr/local/sams/bin/sams /usr/bin/sams
ln -s /usr/local/sams/bin/samsf /usr/bin/samsf
ln -s /usr/local/sams/bin/samsredir /usr/bin/samsredir

Crontab:

crontab -e

Добавляем строки:

#SAMS
*/1 * * * * /var/local/sams/bin/sams >/dev/null 2>&1
0 0 1 * * /var/local/sams/bin/sams -c >/dev/null 2>&1

На этом конфигурация системы закончена.

Настройка SAMS

cd /usr/local/sams/share/sams/src

В файле usersbuttom_1_domain.php в 2 местах и в файле usersbuttom_1_useradd.php надо заменить строку

$userlist=`$WBINFOPATH/wbinfo -u > data/userlist`;

на

$userlist=`/path_to/ldapsearch -x -h ldap.server.ip -p 389 -D user@your.domain -w Password -b "dc=your,dc=domain" -LLL "(memberOf= CN=GroupName,CN=Users,DC=your,DC=domain)" sAMAccountName |grep sAMAccountName|cut -d " " -f 2 > data/userlist`;

Фильтр "(memberOf= CN=GroupName,CN=Users,DC=your,DC=domain)", а именно параметр CN надо подгонят в соответствии с вашим AD для этого рекомендую для начала проанализировать свой AD с помощью какого нибдуь LDAP браузера.

Открываем браузер

вводим адрес http://ip.of.your.proxy/sams/

попадаем в веб интерфейс настроек SAMS.

Авторизуемся, заходим в SAMS, Администрирование SAMS, нажимаем Настройка SAMS.

Считать трафик: Полный

Преобразовывать DNS имена: поставить галочку

Уровень детализации записей в журнале: 9

Домен по умолчанию: your

Способ аутентификации пользователя: NTLM ( User )

Включить использование домена пользователя: убрать галочку

Домен пользователя в access.log записывть: Без изменения

Имя пользователя в access.log записывать: Без изменения

Используемый сепаратор: снять все галочки

Перекодировать имена пользователей домена: Убрать галочку

Настройка samsdaemon

Проверять наличие команды на реконфигурирование squid каждые: 1

Обрабатывать логи SQUID: Убрать галочку

Редиректор: Rejik

Нажать сохранить изменения

Далее выбираем слева Пользователи

Нажимаем Загрузить всех пользователей домена

Выбираем всех и нажимаем добавить.

Все готово!

Все пожелания, возражения, несогласия, и т.д. просьба посылать на HITMAN

Статья будет периодически обновляться и исправляться

2006 HITMAN
 

counter