Apocalypsis
![](http://forum.ru-board.com/board/avatars/sun.gif)
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Моя статья: Оригинал на http://sams.perm.ru/pages/catx.html 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 | Всего записей: 307 | Зарегистр. 28-08-2003 | Отправлено: 15:05 29-06-2006 | Исправлено: Apocalypsis, 12:13 28-07-2006 |
|