...

понедельник, 28 октября 2013 г.

[Из песочницы] Установка 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/).




Заключение



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

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

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



This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends:



Комментариев нет:

Отправить комментарий