Pull to refresh

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

Reading time 8 min
Views 72K

Добрый день господа, думаю, я не открою Америку рассказывая про проект 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:
    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).

Заключение

Осознавая, что в тексте много букоф и что нельзя объять необъятное, заканчиваю данную статью. Надеюсь, что данное руководство будет вам полезным.
Мои благодарности
Большое спасибо Лихоманову Антону, Коростылеву Александру, Порошину Константину и Клюшенкову Ивану чьими руководствами я пользовался.
Tags:
Hubs:
+6
Comments 4
Comments Comments 4

Articles