(Версия 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
Проверяем работоспособность командами:
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"
acl proxyusers proxy_auth REQUIRED
В параметрах авторизации your и
Internet обозначают первая часть названия вашего домена
AD your.domain, а Internet обозначает
группу пользователей в AD имеющих доступ к интернету.
Т.е. вы явно не хотите чтобы все пользователи в AD имели
доступ к Интернету, по этому кого надо добавляете в группу Internet
и только они смогут им пользоваться.
Создаем папки и выставляем права:
mkdir /var/spool/squid
Создаем кэш 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] Инсталлируем базы
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
Создаем
symlinks на необходимые программы ln -s
/usr/local/squid/sbin/squid /usr/sbin/squid
Crontab: crontab -e Добавляем строки:
#SAMS
На этом конфигурация системы закончена.
Настройка SAMS
cd /usr/local/sams/share/sams/src В файле usersbuttom_1_domain.php в 2 местах
и в файле usersbuttom_1_useradd.php надо заменить строку на
Открываем браузер вводим адрес
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
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 (Должна вывести список групп)
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
http_access allow proxyusers
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_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
/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
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
*/1 * * * * /var/local/sams/bin/sams >/dev/null 2>&1
0 0 1 * * /var/local/sams/bin/sams -c >/dev/null 2>&1
$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 браузера.