- PVSM.RU - https://www.pvsm.ru -
Добрый день господа, думаю, я не открою Америку рассказывая про проект SAMS (Squid Accaunt Management System), статьи о нем достаточно распространены, в том числе и на Хабрахабре. Однако хотя я не расскажу вам много нового, но надеюсь, расскажу немного полезного.
Первая причина написания статьи — помочь собратьям эникейщикам (админам небольших организаций) вроде меня, получить еще одно удобное, а самое главное бесплатное средство администрирования. Вторая причина в том, что попытавшись установить данное средство у себя, по различным HowTo я обнаружил, что они либо не полные, либо устарели и человеку знакомому с линуксом поверхностно (как я) получить что либо более менее работоспособное по ним невозможно, поэтому получив результат, решил поделиться с новичками.
Итак, данное пошаговое HowTo ставит свой целью привести вас к собственному прозрачному прокси-серверу на CentOS 6.4 i386 который позволяет аутентифицировать пользователей через Active Directory. При этом данный сервер будет иметь удобный веб-интерфейс, и самое главное, он бесплатен (кого я этим хочу удивить в топике никсов?).
Лучше всего, конечно же, прочитать официальный ресурс sams.perm.ru [1]. Для меня SAMS это удобная считалка трафика и лог серфинга пользователей с красивым веб-интерфейсом. Но все же о плюсах и минусах (а они, разумеется, есть) SAMS и стоит ли его использовать судить только вам.
Основная проблема в установке SAMS то, что стабильная первая версия (а в настоящий момент энтузиасты продолжают разработку SAMS2, надеюсь, у них все получится) давненько не обновлялась поэтому требует установки старых библиотек не из стандартных репозиториев. “Какая глупость!” — скажете вы и будете не совсем правы, ибо как я уже говорил статья, прежде всего, новичкам совсем не знакомым с линуксом. Так же одной из проблем стало то, что HowTo по установке на CentOS(выбор ОС не тема данной статьи, так сложилось) я не нашел.
Разумеется прежде всего необходимо скачать образ CentOS 6.4 (последний на данный момент) по ссылке isoredirect.centos.org/centos/6/isos/i386/ [2]. Далее все стандартно записываем диск и производим установку в минимальной конфигурации на наш будущий шлюз. В процессе установки необходимо сделать следующее:
После перезагрузки заходим в систему под суперпользователем. Дальнейшие действия я произвожу от его имени.
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Пример конфигурационного файла:
DEVICE=«eth0»
BOOTPROTO=none
NM_CONTROLLED=«yes»
ONBOOT=«yes»
TYPE=«Ethernet»
UUID=«57fb7ee8-e3da-4719-b5ec-d27e16fe0677»
HWADDR=6C:62:6D:B7:F0:A3
IPADDR=192.168.0.86
PREFIX=24
GATEWAY=192.168.0.3
DNS1=192.168.0.2
DNS2=192.168.0.3
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=«System eth0»
yum install mc nano wget ntp -y
ntpdate ntpserver
vi /etc/ntp.conf
Пример конфигурационного файла:
server 192.168.0.1
service iptables stop
chkconfig iptables off
yum makecache && yum -y update
vi /etc/sysconfig/selinux
SELINUX=disabled
shutdown -r now
export http_proxy=127.0.0.1:3128
rpm -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm
yum install libmysqlclient15 --enablerepo=webtatic
wget http://www.atomicorp.com/installers/atomic
sh atomic
vi /etc/yum.repos.d/CentOS-Base.repo
[base]
exclude=php*
[updates]
exclude=php*
yum remove php*
yum install php-5.2.17 php-mcrypt-5.2.17 php-gd-5.2.17 php-mbstring-5.2.17 php-pdo-5.2.17 php-mysql-5.2.17
php -m
yum install phpmyadmin
yum install squirrelmail
mv /etc/phpMyAdmin/config.inc.php.rpmsave /etc/phpMyAdmin/config.inc.php
mv /etc/squirrelmail/config.php.rpmsave /etc/squirrelmail/config.php
mv /etc/httpd/conf.d/squirrelmail.conf.rpmsave /etc/httpd/conf.d/squirrelmail.conf
vi /etc/yum.repos.d/atomic.repo
[atomic]
exclude=php*
/etc/init.d/httpd restart
Если потребуется установить какие-либо расширения PHP дополнительно наиболее простой способ ставить из через rpm скачав сhttp://www2.atomicorp.com/channels/atomic/centos/6/i386/RPMS/
yum install pcre-devel squid mysql-server mysql-devel gd-devel gcc make samba-server samba-client samba bind-utils –y
chkconfig mysqld on && chkconfig httpd on && chkconfig squid on
mkdir -p /usr/src/sams
cd /usr/src/sams
wget http://nixdev.net/release/sams/sams-1.0.5.tar.bz2
если не работает ссылка, то можно попробовать
wget http://sams.perm.ru/index.php?option=com_doqment&task=files.download&cid=12
Распаковываем архив и устанавливаем
tar xf sams-1.0.5.tar.bz2
cd sams-1.0.5
./configure && make && make install
chkconfig sams on
cd / && rm -fr /usr/src/sams
wget http://www.nixdev.net/release/sams/packages/CentOS_5/i386/sams-1.0.5-91.1.i386.rpm
yum localinstall –nogpgcheck sams-1.0.5-91.1.i386.rpm
chkconfig sams on
cd / && rm -fr /usr/src/sams
vi /etc/httpd/conf.d/sams.conf
Alias /sams /usr/local/share/sams
<Directory /usr/local/share/sams/>
Order Allow,Deny
Allow from all
Deny from none
vi /etc/httpd/conf/httpd.conf
раскомментируем и указываем для переменной ServerName указываем имя нашего шлюза
ServerName Proxy-????
(nano /etc/httpd/conf.d/sams.conf)
service httpd restart
vi /etc/sams.conf
MYSQLPASSWORD= «ПАРОЛЬ» #(Для пользователя SAMS)
MYSQLVERSION=5.0 #(Мы используем 5 версию MySQL сервера, при значении 4.0 возможны проблемы)
Так же закомментируйте все, что связано с squidguard, ldap и rejik (если не планируете использовать)
/usr/bin/mysql_secure_installation
service mysqld start
mysql -u root -p
Ввести «ПАРОЛЬ» для root в mysql
GRANT ALL ON squidctrl.* TO sams@localhost IDENTIFIED BY «ПАРОЛЬ» WITH GRANT OPTION;
GRANT ALL ON squidlog.* TO sams@localhost IDENTIFIED BY «ПАРОЛЬ» WITH GRANT OPTION;
flush privileges;
quit
#Заменяем везде TYPE=MyISAM на ENGINE=MyISAM
/usr/local/share/sams/data/sams_db.sql
/usr/local/share/sams/data/squid_db.sql
mysql -u root -p < /usr/local/share/sams/data/sams_db.sql
mysql -u root -p < /usr/local/share/sams/data/squid_db.sql
vi /etc/squid/squid.conf
найти и отредактировать следующие строки
visible_hostname Proxy-????
при отсутствии добавить строки
redirect_program /usr/local/bin/samsredir
redirect_children 5
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp #NTLM аутентификатор
auth_param ntlm children 150 #(Количество одновременно сидящих в инете пользователей!)
auth_param ntlm keep_alive on
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 20
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 8 hours
Перезапускаемся и стартуем squid
squid –z
reboot
service squid start
vi /etc/php.ini
содержание файла
safe_mode = On
safe_mode_exec_dir = "/usr/local/share/sams/bin"
disable_functions = # если он не пустой, убираем из него запрет вызова функций phpinfo system shell_exec exec
service sams start
vi /etc/samba/lmhosts
«IP_адрес_DC1» «Сетевое_имя_DC1» #(например: 192.168.100.8 serverDC01)
«IP_адрес_DC2» «Сетевое_имя_DC2»
vi /etc/samba/smb.conf
[global]
workgroup = «Имя_Домена» #(например: serverDC01)
realm = «FQDN_домена» #(например: serverDC01.firma.ru)
server string = Samba Server Version %vnetbios name = Proxy-???? #имя шлюза
interfaces = lo eth0 «IP_адрес_интерфейса + маска» #(например: 192.168.10.1/24)
hosts allow = 127. 192.168.winbind separator = \
winbind use default domain = yes
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/winnt/%D/%U
template shell = /bin/bash
max log size = 50
security = domain
password server = «IP_адрес_DC1» «IP_адрес_DC1» #(например:192.168.100.8 192.168.100.10 обязательно через пробел)
encrypt passwords = yes
service smb restart
net join –w «Имя_Домена» –S «Сетевое_имя_DC» –I «IP_адрес_DC» –U «Имя_пользователя_с_ правами_введения_в_домен»
service smb restart
wbinfo –t
wbinfo –p
wbinfo -u
Если все в порядке, добавляем в автозагрузку
chkconfig smb on && chkconfig winbind on
vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 3128 -j ACCEPT
Альтернатива:
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT #правило для 80 порта на http
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT #правило для 3128 порта прокси
service iptables restart
Если, по каким-то причинам, необходимо отключить firewall, то надо набрать:
chkconfig iptables off
chkconfig ip6tables off
Осознавая, что в тексте много букоф и что нельзя объять необъятное, заканчиваю данную статью. Надеюсь, что данное руководство будет вам полезным.
Автор: 4wert
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/squid/46805
Ссылки в тексте:
[1] sams.perm.ru: http://sams.perm.ru
[2] isoredirect.centos.org/centos/6/isos/i386/: http://isoredirect.centos.org/centos/6/isos/i386/
[3] Proxy-????/sams/: http://Proxy-????/sams/
[4] habrahabr.ru/post/130335/: http://habrahabr.ru/post/130335/
[5] Источник: http://habrahabr.ru/post/199302/
Нажмите здесь для печати.