Установка squid+sams+ntlm на centos 6.4 по шагам

от автора


Добрый день господа, думаю, я не открою Америку рассказывая про проект SAMS (Squid Accaunt Management System), статьи о нем достаточно распространены, в том числе и на Хабрахабре. Однако хотя я не расскажу вам много нового, но надеюсь, расскажу немного полезного.

Первая причина написания статьи — помочь собратьям эникейщикам (админам небольших организаций) вроде меня, получить еще одно удобное, а самое главное бесплатное средство администрирования. Вторая причина в том, что попытавшись установить данное средство у себя, по различным HowTo я обнаружил, что они либо не полные, либо устарели и человеку знакомому с линуксом поверхностно (как я) получить что либо более менее работоспособное по ним невозможно, поэтому получив результат, решил поделиться с новичками.

Задачи

Итак, данное пошаговое HowTo ставит свой целью привести вас к собственному прозрачному прокси-серверу на CentOS 6.4 i386 который позволяет аутентифицировать пользователей через Active Directory. При этом данный сервер будет иметь удобный веб-интерфейс, и самое главное, он бесплатен (кого я этим хочу удивить в топике никсов?).

Немного о SAMS

Лучше всего, конечно же, прочитать официальный ресурс sams.perm.ru. Для меня SAMS это удобная считалка трафика и лог серфинга пользователей с красивым веб-интерфейсом. Но все же о плюсах и минусах (а они, разумеется, есть) SAMS и стоит ли его использовать судить только вам.

Сложности при установке

Основная проблема в установке SAMS то, что стабильная первая версия (а в настоящий момент энтузиасты продолжают разработку SAMS2, надеюсь, у них все получится) давненько не обновлялась поэтому требует установки старых библиотек не из стандартных репозиториев. “Какая глупость!” — скажете вы и будете не совсем правы, ибо как я уже говорил статья, прежде всего, новичкам совсем не знакомым с линуксом. Так же одной из проблем стало то, что HowTo по установке на CentOS(выбор ОС не тема данной статьи, так сложилось) я не нашел.

Подготовка к установке

Разумеется прежде всего необходимо скачать образ CentOS 6.4 (последний на данный момент) по ссылке isoredirect.centos.org/centos/6/isos/i386/. Далее все стандартно записываем диск и производим установку в минимальной конфигурации на наш будущий шлюз. В процессе установки необходимо сделать следующее:

  1. Ввести имя нашего сервера.
  2. Настроить сеть (удобнее это сделать здесь в графическом интерфейсе, чем потом править файлы конфигурации, хотя это дело привычки).
  3. Установить параметры времени.
  4. Установить пароль суперпользователя root.

Настройка ОС

После перезагрузки заходим в систему под суперпользователем. Дальнейшие действия я произвожу от его имени.

  1. Если забыли или неправильно настроили сеть, то правим конфигурацию сетевых интерфейсов ifcfg-eth0, ifcfg-eth1 (у нас же шлюз так что интерфейсов, очевидно, не менее двух)
    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»

  2. Установка программ первой необходимости:
    yum install mc nano wget ntp -y 

  3. Настройка синхронизации времени. В качестве серверов времени указываем контроллеры домена:
    ntpdate ntpserver vi /etc/ntp.conf 

    Пример конфигурационного файла:

    server 192.168.0.1

  4. останавливаем iptables:
    service iptables stop chkconfig iptables off 

  5. Обновляем систему:
    yum makecache && yum -y update 

  6. Отключаем selinux. В файле /etc/sysconfig/selinux поставить
    vi /etc/sysconfig/selinux 

    SELINUX=disabled

  7. Перезагрузить сервер командой:
    shutdown -r now 

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

  1. Теперь добавим репозиторий CentOS 5:
    export http_proxy=127.0.0.1:3128 rpm -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm 

  2. И установим оттуда libmysqlclient15:
    yum install libmysqlclient15 --enablerepo=webtatic 

  3. В некоторых случаях требуется для каких-либо старых скриптов понижение версии PHP 5.3.3 до версии 5.2.17. Для проведения установки наиболее оптимально воспользоваться репозиторием Atomic. Установка производилась на свежепоставленный сервер, ниже приведен порядок действий.
  4. Подключите репозиторий Atomic
    wget http://www.atomicorp.com/installers/atomic sh atomic 

  5. И принять лицензию скрипта установки (нажать enter)
  6. Далее следует отключить в подключенных стандартных репозиториях системы возможность установки пакетов содержащих файлы PHP. Воспользуйтесь редактором и отредактируйте файл /etc/yum.repos.d/CentOS-Base.repo внеся изменения (добавив exclude=php*) в указанные секции
    vi /etc/yum.repos.d/CentOS-Base.repo 

    [base]
    exclude=php*
    [updates]
    exclude=php*

  7. После чего сохраните файл (:wq) и удалите пакеты установленного PHP 5.3.3 выполнив команду в shell
    yum remove php* 

  8. После того как будет удален PHP (также по зависимостям удалится phpmyadmin и squirrelmail) необходимо будет провести установку нужной версии и сопутствующих расширений командами
    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 

  9. Убедитесь, что все необходимые расширения установлены и нет ошибок
    php -m 

  10. Затем установите обратно PhpMyAdmin и squirrelmail
    yum install phpmyadmin yum install squirrelmail 

  11. Верните файлы конфигурации на место
    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 

  12. После чего следует отключить возможность автоматической установки расширений PHP из репозитория atomic для избежания незапланнированной смены версии PHP при установке какого-либо программного обеспечения — отредактируйте файл /etc/yum.repos.d/atomic.repo также как редактировали файлы других репозиториев
    vi /etc/yum.repos.d/atomic.repo 

    [atomic]
    exclude=php*

  13. И в завершение следует перезапустить веб-сервер Apache командой
    /etc/init.d/httpd restart 

    Если потребуется установить какие-либо расширения PHP дополнительно наиболее простой способ ставить из через rpm скачав сhttp://www2.atomicorp.com/channels/atomic/centos/6/i386/RPMS/

Установка и настройка SAMS

  1. Установка ПО:
    yum install pcre-devel squid mysql-server mysql-devel gd-devel gcc make samba-server samba-client samba bind-utils –y 

  2. Добавляем необходимое в автозагрузку:
    chkconfig mysqld on && chkconfig httpd on && chkconfig squid on 

  3. Cоздаем темповую директорию для сборки SAMS:
    mkdir -p /usr/src/sams cd /usr/src/sams 

  4. Качаем STABLE версию SAMS (Документация по 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 

    Альтернативный способ установки:

    Качаем STABLE версию SAMS (Документация по SAMS), собранный пакет для CentOS (сам добавляет веб-директорию для apache)

    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 

  5. Далее настраиваем Apache, добавляем в /etc/httpd/conf.d/sams.conf
    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-????

    Если неудобно использовать редактор vi,

    то можно воспользоваться редактором nano или воспользоваться фаловым менеджером Midnight Commander, команда mc (Редактирование файла F4). Чтобы выйти из программы vi набрать :w q или просто :x! Если надо выйти без сохранения, набрать :q!

    (nano /etc/httpd/conf.d/sams.conf)  

  6. После того, как был добавлен sams.conf необходимо перезапустить Apache:
    service httpd restart 

  7. Следом редактируем /etc/sams.conf, в котором меняем всего две записи:
    vi /etc/sams.conf 

    MYSQLPASSWORD= «ПАРОЛЬ» #(Для пользователя SAMS)
    MYSQLVERSION=5.0 #(Мы используем 5 версию MySQL сервера, при значении 4.0 возможны проблемы)

    Так же закомментируйте все, что связано с squidguard, ldap и rejik (если не планируете использовать)

  8. Далее на очереди MySQL, запускаем сервер и делаем все то, что предложит скрипт первого запуска, то есть задаем пароль root и после инсталляционную настройку сервера:
    /usr/bin/mysql_secure_installation service mysqld start 

  9. Создаем MySQL пользователя sams и даем ему права на необходимые таблицы:
    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 

  10. Чтобы скрипты создания баз выполнились на mysql 5 необходимо их отредактировать

    #Заменяем везде TYPE=MyISAM на ENGINE=MyISAM
    /usr/local/share/sams/data/sams_db.sql
    /usr/local/share/sams/data/squid_db.sql

  11. Вливаем дампы SAMS в базу:
    mysql -u root -p < /usr/local/share/sams/data/sams_db.sql mysql -u root -p < /usr/local/share/sams/data/squid_db.sql 

  12. Настала очередь Squid, собираем squid swap, и уже после запускаем прокси-сервер.
    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 

  13. C версии 1.0 SAMS работает в safe_mode php. Настриваем php для работы в режиме safe mode
    vi /etc/php.ini 

    содержание файла

    safe_mode = On
    safe_mode_exec_dir = "/usr/local/share/sams/bin"
    disable_functions = # если он не пустой, убираем из него запрет вызова функций phpinfo system shell_exec exec

  14. Ну и в самом конце запускаем SAMS:
    service sams start 

Ввод шлюза в домен

  1. Редактируем файл (добавляем список контроллеров своего домена)
    vi /etc/samba/lmhosts 

    «IP_адрес_DC1» «Сетевое_имя_DC1» #(например: 192.168.100.8 serverDC01)
    «IP_адрес_DC2» «Сетевое_имя_DC2»

  2. Редактируем файл конфигурации самба
    vi /etc/samba/smb.conf 

    [global]
    workgroup = «Имя_Домена» #(например: serverDC01)
    realm = «FQDN_домена» #(например: serverDC01.firma.ru)
    server string = Samba Server Version %v

    netbios 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

  3. Перестартовать сервис и ввести в домен
    service smb restart net join  –w  «Имя_Домена»  –S  «Сетевое_имя_DC»  –I  «IP_адрес_DC»  –U  «Имя_пользователя_с_ правами_введения_в_домен»  

  4. Перезапустить службы и проверить отклик от домена
    service smb restart 

  5. service winbind start
    wbinfo –t wbinfo –p wbinfo -u 

    Если все в порядке, добавляем в автозагрузку

    chkconfig smb on && chkconfig winbind on 

  6. Добавляем примерно в середине правил разрешающие правила для iptables firewall в /etc/sysconfig/iptables и перезапустить его:
    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 

Настройка SAMS

  1. В браузере зайти на страницу Proxy-????/sams/ (либо по ip-адресу)
  2. Логин: admin
    Пароль: qwerty
    Нужно изменить пароль.
  3. Далее я решил не утомлять уважаемых читателей многочисленными картинками и очевидными подробностями окончательной настройки через web-интерфейс, тем более что эту работу за меня уже сделали (в том числе тут habrahabr.ru/post/130335/).

Заключение

Осознавая, что в тексте много букоф и что нельзя объять необъятное, заканчиваю данную статью. Надеюсь, что данное руководство будет вам полезным.

Мои благодарности

Большое спасибо Лихоманову Антону, Корастылеву Александру и Клюшенкову Ивану чьими руководствами я пользовался.

ссылка на оригинал статьи http://habrahabr.ru/post/199302/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *