Итак снова новая задача 😋
Потребовалось быстро развернуть прокси сервер с контролем доступа.
Первое что пришло мне в голову, когда то давно видел связку Linux и SAMS.
Но вот опыта развертывания никакого не было. 😇
Порывшись в интернете я пришел к неутешительному выводу. Проект SAMS больше не поддерживается к сожалению. 👿 Но запустить его все же возможно, правда с большими оговорками но работает. То что работает меня вполне устроило на первое время.
Итак поехали.
В интренете была найдена замечательная статья
https://serveradmin.ru/nastroyka-proksi-servera-na-centos-7-squid-ad-sams2/
В этой статье все описано достаточно по шагам и понятно. Но статью нужно читать очень внимательно и делать все то же очень внимательно. В процессе тестирования возникли некоторые глюки, исправления которых я буду писать сразу ниже.
По сути я перенесу сюда содержимое этой статьи со своими комментариями, поэтому все права принадлежат вышеуказанным авторам по ссылке.
Первым делом поднимаем сервер на CentOS7. Настраиваем ему статический адрес и устанавливаем имя, с которым будем вводить его в домен.
Хочу обратить внимание. Что на каждом этапе надо двигаться шаг за шагом и получать положительный результат. В случае возникновения ошибок устранять их нужно сразу на этом этапе.
В процессе настройки будет отключен SELINUX (Я не настолько гуру в Linux, поэтому проще было его выключить)
Первым делом обновляем и ставим необходимые утилиты
#yum update
Перезагружаем
#reboot
Устанавливаем сетевые утилиты и MC
#yum install net-tools
#yum install bind-utils
#yum install mc
Отключаем SELINUX
#mcedit /etc/sysconfig/selinux
меняем значение
SELINUX=disabled
Чтобы изменения вступили в силу, перезагружаемся:
#reboot
Настраиваем временные пояса
#timedatectl set-timezone Asia/Almaty
Остановим и отключим firewalld:
#systemctl stop firewalld && systemctl disable firewalld
По идее нужно еще установить и настроить iptables, но с этим я постараюсь разобраться и написать об этом чуть позже
Вводим сервер в домен
Далее установим софт для добавления сервера в домен windows:
#yum -y install samba-winbind samba-winbind-clients pam_krb5 krb5-workstation ntp ntpdate
Для продолжения настройки вам необходимо знать следующие вещи — FQDN имя контроллера домена, его ip адрес и учетную запись с правами на ввод компьютера в домен.
#ntpdate winsrv.xs.local
Где winsrv.xs.local полное имя контроллера домена
Добавляем наш контроллер в список серверов для обновления в файле /etc/ntp.conf, запускаем ntp и добавляем в автозагрузку:
#systemctl enable ntpd
#systemctl start ntpd
Настройка времени необязательна, но при рассинхронизации времени между прокси и контроллером домена более 5 минут могут возникнуть возникнуть глюки. Связаны они с логикой работы протокола Kerberos.
Выполняем команду для передачи настроек Kerberos:
#authconfig --enablekrb5 --krb5kdc=winsrv.xs.local --krb5adminserver=winsrv.xs.local --krb5realm=WINSRV.XS.LOCAL --enablewinbind --enablewinbindauth --smbsecurity=ads --smbrealm=XS.LOCAL --smbservers=winsrv.xs.local --smbworkgroup=XS --winbindtemplatehomedir=/home/%U --winbindtemplateshell=/bin/bash --enablemkhomedir --enablewinbindusedefaultdomain --update
Где:
xs — название домена
winsrv — имя контроллера домена
winsrv.xs.local — полное имя домена
Обращаю внимание, что это одна длинная строка.
Если все набрали верно то Вам все равно вернется ошибка. Все верно так как служба еще не запущена. О чем он вам с радостью и сообщит.
Job for winbind.service failed. See 'systemctl status winbind.service' and 'journalctl -xn' for details.
Вводим машину в домен
#net ads join -U administrator
Где administrator это учетная запись домена, которой делегированы права на введение в домен.
Вводим пароль и ждем. Если все нормально то сервер будет введен в домен.
Теперь нужно запустить и добавить в автозагрузку winbind:
#systemctl start winbind
#systemctl enable winbind
Проверяем, все ли у нас корректно работает. Для начала проверим наличие доверительной учетной записи сервера на КД:
#wbinfo -t
Должны получить ответ
checking the trust secret for domain XS via RPC calls succeeded
Теперь проверяем, может ли наш сервер получать списки пользователей и групп. Первая команда выводит список всех групп домена, вторая — всех пользователей:
#wbinfo -g
#wbinfo -u
В результате должны получить список групп и пользователей
Проверим авторизацию пользователя через winbind:
#wbinfo -a XS\\control%'pass'
В данном случае control — имя пользователя домена, pass — его пароль.
Получаем ответ
plaintext password authentication succeeded
challenge/response password authentication succeeded
Теперь запросим билетик Kerberos:
#kinit administrator@XS.LOCAL
Дальше вводите пароль. Если ошибки не выскочило, значит все в порядке. Проверим билет командой:
#klist
Результат
Ticket cache: KEYRING:persistent:0:0
Default principal: administrator@XS.LOCAL
Valid starting Expires Service principal
12/04/2015 23:19:33 12/05/2015 09:19:33 krbtgt/XS.LOCAL@XS.LOCAL
renew until 12/11/2015 23:19:29
Если получаем такой ответ, значит все отлично.
Этап введения в домен и авторизации окончен.
Установка и настройка SQUID
#yum -y install squid
Открываем файл конфигурации /etc/squid/squid.conf и добавляем в самое начала следующие параметры:
auth_param ntlm program /usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp --domain=XS
auth_param ntlm children 10
auth_param ntlm keep_alive off
acl auth proxy_auth REQUIRED
Не забудьте указать свой домен. XS
Дальше находим в конфиге строку:
http_access allow localnet
Комментируем ее, она позволяет получить доступ всем компьютерам из локальной сети. После этой строки добавляем новую:
http_access allow auth
Разрешаем доступ только тем, кто прошел авторизацию. Запускаем squid и добавляем в автозагрузку:
#systemctl start squid
#systemctl enable squid
Все, можно идти проверять. Открываем браузер у какого-нибудь компьютера и указываем в качестве прокси ip адрес сервера, порт 3128. Пробуйте выйти в интернет.
По факту
Пользователя должно пустить в интернет.
В лог файле сквида должна быть информация об имени пользователя, который получает доступ.
Проверить можно так
#cat /var/log/squid/access.log | grep control
В данном случае control — доменная учетная запись.
Результат работы команды ПРИМЕР
Установка и настройка sams2
Настраиваем web сервер
Устанавливаем httpd:
#yum install -y httpd
Добавляем в автозапуск и запускаем:
#systemctl enable httpd
#systemctl start httpd
Устанавливаем php и некоторые модули:
#yum install -y php
#yum install -y php-mysql php-mbstring php-mcrypt php-devel php-xml php-gd
Устанавливаем mariadb
#yum install -y mariadb mariadb-server mariadb-devel
Добавляем в автозапуск и запускаем:
#systemctl enable mariadb.service
#systemctl start mariadb
Задаем пароль рута:
#/usr/bin/mysql_secure_installation
Подключаем репозиторий epel и устанавливаем phpmyadmin. Это не обязательно.
#yum -y install epel-release
#yum -y install phpmyadmin
Теперь можно проверить работу веб сервера. Описывать не стану, потому как это сделать очень много написано. Для начала просто зайти в браузере по адресу сервера и можно увидеть страницу приветствия Apache
Скачиваем исходники sams2 в домашний каталог root. Все работы будут проделываться под этой учетной записью.
#yum -y install wget
#cd /root
И вот здесь отличие от оригинальной статьи. Дело в том, что если скачать исходники с гита оригинального проекта по адресу https://github.com/PavelVinogradov/sams2/archive/master.zip , встроенный редиректор будет работать криво. На некоторые сайты зайти будет невозможно. Они будут посылать Вас с ошибкой 404. А без этого редиректора сам SAMS не имеет смысла так как запрещать и перенаправлять он не сможет.
Спасибо человеку, который откликнулся в той же статье в комментариях и исправил ошибки. Поэтому я приведу команду на скачивание сразу форкнутой версии
Продолжаем
#wget https://github.com/lex270/sams2/archive/master.zip
Ставим unzip и распаковываем архив:
#yum -y install unzip
#unzip master.zip
Так как исходники уже исправлены на данном этапе ничего править не нужно.
Теперь установим необходимые для сборки пакеты:
#yum -y install autoconf automake libtool pcre-devel libstdc++-devel gcc-c++
Переходим в каталог с исходниками и начинаем компиляцию:
#cd /root/sams2-master
#make -f Makefile.cvs
Запускаем скрипт автоматической конфигурации:
#sh ./configure
Он должен отработать без ошибок и в конце вывести полезную информацию:
Сохраните пути, они позже пригодятся во время настройки. Обратите внимание на подчеркнутые строки. Без первой строки не будет поддержки mysql, без второй не заработают списки запрета доступа. Убедитесь, что все в порядке с ними.
Выполняем установку sams2:
#make install
Но команда будет выполнена с ошибкой. Это связанно с внутренней ошибкой инсталлятора
Ошибка заключается в том, что инсталлятор не может создать каталог.
Исправляем
#cd /usr/local/share/sams2/
#mkdir data
#cd /root/sams2-master
#make install
Установка прошла успешно. Добавляем директорию с web интерфейсом sams2 в httpd. Для этого идем в директорию с конфигурациями и рисуем следующий файл настроек для SAMS:
#mcedit /etc/httpd/conf.d/sams2.conf
И прописываем
Alias /sams2 /usr/local/share/sams2
<Directory /usr/local/share/sams2/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
<RequireAny>
Require ip 10.1.3.0/24 10.1.4.0/24
</RequireAny>
</IfModule>
</Directory>
Где 10.1.3.0/24 10.1.4.0/24 — подсети из которых будет доступ к web интерфейсу. Можете просто указать ip адрес администратора, если доступ будет нужен только с его компьютера, что собственно я и рекомендую сделать.
Удалим конфиги которые SAMS инсталлятор создал. Они не рабочие
#rm /etc/httpd/conf.modules.d/doc4sams2.conf
#rm /etc/httpd/conf.modules.d/sams2.conf
Перезапускаем httpd:
#systemctl restart httpd
Теперь если зайти по адресу htpp://ip-сервера/sams2 вы увидем сообщение:
Invalid query: Access denied for user 'apache'@'localhost' (using password: NO)
Это нормально. Пока так и должно быть.
Редактируем конфигурационный файл sams2.conf:
#mcedit /usr/local/etc/sams2.conf
Ищем следующие строки и подставляем свои данные
ODBCSOURCE=sams_mysql
DB_USER=root
DB_PASSWORD=rootpass
SQUIDCACHEFILE=access.log
В качестве пользователя mysql указываем пока рута. Сохраняем файл и идем снова в веб-интерфейс, обновляем страничку.
Нажимаем Run setup program >>
Проходит проверка требований.
Создаем базу данных. Убедитесь, что пользователя и базы данных для самс, которые вы будете указывать, у вас еще нет в mysql, иначе получите ошибку. Заполняете данные для root и для нового пользователя:
Установка прошла успешно:
Теперь нужно снова отредактировать файл sams2.conf и заменить пользователя mysql на только что созданного:
#mcedit /usr/local/etc/sams2.conf
Проверим работу веб интерфейса. Переходим снова по адресу http://ip-сервера/sams2. Мы должны увидеть окно авторизации. Нажимаем снизу на Авторизация администратора SAMS и вводим пользователя admin, пароль — qwerty.
Теперь немного отойдем от последовательности указанных в статье.
Выполним следующий шаг
Добавляем в /etc/squid/squid.conf вверх, после строк, которые мы добавляли при настройке squid следующие комментарии с метками (Прямо как написано # TAG ):
# TAG: acl
# TAG: url_rewrite_access
# TAG: url_rewrite_program
# TAG: url_rewrite_children
# TAG: delay_pools
# TAG: delay_class
# TAG: delay_access
# TAG: delay_parameters
# TAG: http_access
# TAG: http_access2
# TAG: icp_access
Теперь нам нужно запустить демон sams2daemon. Создадим скрипт запуска. Для этого идем в папку /root/sams2-master/redhat и редактируем файл init.d:
#mcedit /root/sams2-master/redhat/init.d
Находим там значение __CONFDIR и меняем его на /usr/local/etc/, значение __PREFIX меняем на /usr/local/bin/. У вас должны получиться 2 измененные строки следующего вида, остальные оставляем как есть:
[ -f /usr/local/etc/sams2.conf ] || exit 0
DAEMON=/usr/local/bin/sams2daemon
Копируем скрипт запуска в папку /etc/init.d:
#cp /root/sams2-master/redhat/init.d /etc/init.d/sams2
Запускаем демон:
#/etc/init.d/sams2 start
Демон запускается. Но тут хотелось бы отметить от себя. У меня демон не стартует при перезапуске системы. Почему я так и не разобрался и при перезапуске временно стартую его руками.
На этом установка sams2 закончена. Можно приступать к настройке. Здесь она может отличаться, в зависимости от того, что вы хотите получить. Добавим в sams пользователей из домена. Для этого заходим в веб интерфейс и идем в раздел Авторизация. Убираем все галочки, оставляем только NTLM и жмем Конфигурировать. Появляется новый подпункт NTLM.
В оригинале статьи в настройках NTLM нужно указать домен доменного Админа и прочее. У меня все работало без этих настроек. Не знаю почему. Еще выпал глюк. SAMS не добавляет пользователей из групп. То есть группу видит а добавлять всех, кто там есть не захотел. Почему я не разобрался.
При нажатии на кнопку Тестировать NTLM-подключение вы увидите список пользователей и групп домена. Во всяком случае так было у меня.
Чтобы добавить пользователей домена в качестве пользователей самс, необходимо в разделе NTLM снизу нажать на кнопку с домиком и подписью Регистрация новых пользователей, входящих в домен Windows. Выбрать через контрол всех пользователей, которых хотите добавить и нажать Добавить.
Они появятся в списке пользователей:
Чтобы не было ограничения по трафику (вряд ли оно кому-то нужно в наше время), необходимо отредактировать соответствующий параметр в шаблоне Default.
Теперь нужно применить сделанные настройки. Для этого идем в раздел SQUID -> Proxy server и жмем снизу на вторую кнопку слева со стрелочками. Нажимаем на Реконфигурировать. В случае успеха увидите надпись:
На всякий случай можно проверить конфиг squid. Там должны появиться только что созданные acl в тэгах которые мы прописали ранее.
Из-за значения your.ip.address в конфигурации сквид писал об ошибке конфигурации. Чтобы самс писал сюда нормальное значение в виде ip адреса сервера, необходимо изменить его настройки. Делается это в разделе SQUID -> Proxy server, снизу кнопочка с отверткой и ключом. Нажимаем на нее и изменяем снизу 2 настройки, указывая свой ip адрес:
Попутно на всякий случай проверьте остальные настройки. Я кое-что подредактировал под свои нужды. Сохраняете настройки и снова перезапускаете сквид через самс. Проверяем файл конфигурации squid.conf.
Дальнейшую настройку SAMS я описывать не буду остановлюсь лишь на некоторых моментах.
Если создаем список запретов и редиректов, то обработчиком должен стоять внутренний редиректор SAMS. Проверить его работу можно командой
#/usr/local/bin/sams2redir
После запуска у вас будет доступен терминал для ввода. Тут же можно проверить, как отрабатываются запреты. Вводите адрес сайта, пользователя, запрос GET и смотрите результат. Вот как выглядит реакция на нормальный сайт, доступ к которому разрешен:
http://ya.ru 10.1.4.189 control - GET
http://ya.ru 10.1.4.189 control - GET
То есть вы вводите первую строку и редиректор тут же выводит точно такую же сам. А вот какая реакция должна быть на сайт под запретом:
http://vk.com 10.1.4.189 control - GET
http://10.1.4.14/sams2/blocked.php?action=urldenied&id=control 10.1.4.189 control -
При попытке открыть запрещенный сайт, пользователь получит сообщение о запрете. Реализован этот функционал с помощью встроенного в самс редиректора. Никакие другие редиректоры в sams2 не работают. Если не работает то в первую очередь надо проверить настройки прокси сервера в самс, там где мы указывали ip адрес сервера. Должен быть выбран редиректор встроенный в SAMS. Путь к каталогу, где лежат файлы запрета запроса например http://10.1.4.14/sams2:
Вот в принципе и все.
Баги.
1. Не работает авторизация. Пускает любого пользователя без пароля в мордочку SAMS. Если у пользователя есть права смотреть статистику, то любой пользователь может зайти и посмотреть.
2. Когда обращаются к запрещенному адресу по https редиректор не выводит страничку блокировки а просто будет сообщено что соединение сброшено. Не страшно но все же возникает ощущение недопиленности.
3. В одном из отчетов не показывается адреса https, но траффик считается и в суммарном отчете он показывается.
На этом пока все.
Потребовалось быстро развернуть прокси сервер с контролем доступа.
Первое что пришло мне в голову, когда то давно видел связку Linux и SAMS.
Но вот опыта развертывания никакого не было. 😇
Порывшись в интернете я пришел к неутешительному выводу. Проект SAMS больше не поддерживается к сожалению. 👿 Но запустить его все же возможно, правда с большими оговорками но работает. То что работает меня вполне устроило на первое время.
Итак поехали.
В интренете была найдена замечательная статья
https://serveradmin.ru/nastroyka-proksi-servera-na-centos-7-squid-ad-sams2/
В этой статье все описано достаточно по шагам и понятно. Но статью нужно читать очень внимательно и делать все то же очень внимательно. В процессе тестирования возникли некоторые глюки, исправления которых я буду писать сразу ниже.
По сути я перенесу сюда содержимое этой статьи со своими комментариями, поэтому все права принадлежат вышеуказанным авторам по ссылке.
Первым делом поднимаем сервер на CentOS7. Настраиваем ему статический адрес и устанавливаем имя, с которым будем вводить его в домен.
Хочу обратить внимание. Что на каждом этапе надо двигаться шаг за шагом и получать положительный результат. В случае возникновения ошибок устранять их нужно сразу на этом этапе.
В процессе настройки будет отключен SELINUX (Я не настолько гуру в Linux, поэтому проще было его выключить)
Первым делом обновляем и ставим необходимые утилиты
#yum update
Перезагружаем
#reboot
Устанавливаем сетевые утилиты и MC
#yum install net-tools
#yum install bind-utils
#yum install mc
Отключаем SELINUX
#mcedit /etc/sysconfig/selinux
меняем значение
SELINUX=disabled
Чтобы изменения вступили в силу, перезагружаемся:
#reboot
Настраиваем временные пояса
#timedatectl set-timezone Asia/Almaty
Остановим и отключим firewalld:
#systemctl stop firewalld && systemctl disable firewalld
По идее нужно еще установить и настроить iptables, но с этим я постараюсь разобраться и написать об этом чуть позже
Вводим сервер в домен
Далее установим софт для добавления сервера в домен windows:
#yum -y install samba-winbind samba-winbind-clients pam_krb5 krb5-workstation ntp ntpdate
Для продолжения настройки вам необходимо знать следующие вещи — FQDN имя контроллера домена, его ip адрес и учетную запись с правами на ввод компьютера в домен.
#ntpdate winsrv.xs.local
Где winsrv.xs.local полное имя контроллера домена
Добавляем наш контроллер в список серверов для обновления в файле /etc/ntp.conf, запускаем ntp и добавляем в автозагрузку:
#systemctl enable ntpd
#systemctl start ntpd
Настройка времени необязательна, но при рассинхронизации времени между прокси и контроллером домена более 5 минут могут возникнуть возникнуть глюки. Связаны они с логикой работы протокола Kerberos.
Выполняем команду для передачи настроек Kerberos:
#authconfig --enablekrb5 --krb5kdc=winsrv.xs.local --krb5adminserver=winsrv.xs.local --krb5realm=WINSRV.XS.LOCAL --enablewinbind --enablewinbindauth --smbsecurity=ads --smbrealm=XS.LOCAL --smbservers=winsrv.xs.local --smbworkgroup=XS --winbindtemplatehomedir=/home/%U --winbindtemplateshell=/bin/bash --enablemkhomedir --enablewinbindusedefaultdomain --update
Где:
xs — название домена
winsrv — имя контроллера домена
winsrv.xs.local — полное имя домена
Обращаю внимание, что это одна длинная строка.
Если все набрали верно то Вам все равно вернется ошибка. Все верно так как служба еще не запущена. О чем он вам с радостью и сообщит.
Job for winbind.service failed. See 'systemctl status winbind.service' and 'journalctl -xn' for details.
Вводим машину в домен
#net ads join -U administrator
Где administrator это учетная запись домена, которой делегированы права на введение в домен.
Вводим пароль и ждем. Если все нормально то сервер будет введен в домен.
Теперь нужно запустить и добавить в автозагрузку winbind:
#systemctl start winbind
#systemctl enable winbind
Проверяем, все ли у нас корректно работает. Для начала проверим наличие доверительной учетной записи сервера на КД:
#wbinfo -t
Должны получить ответ
checking the trust secret for domain XS via RPC calls succeeded
Теперь проверяем, может ли наш сервер получать списки пользователей и групп. Первая команда выводит список всех групп домена, вторая — всех пользователей:
#wbinfo -g
#wbinfo -u
В результате должны получить список групп и пользователей
Проверим авторизацию пользователя через winbind:
#wbinfo -a XS\\control%'pass'
В данном случае control — имя пользователя домена, pass — его пароль.
Получаем ответ
plaintext password authentication succeeded
challenge/response password authentication succeeded
Теперь запросим билетик Kerberos:
#kinit administrator@XS.LOCAL
Дальше вводите пароль. Если ошибки не выскочило, значит все в порядке. Проверим билет командой:
#klist
Результат
Ticket cache: KEYRING:persistent:0:0
Default principal: administrator@XS.LOCAL
Valid starting Expires Service principal
12/04/2015 23:19:33 12/05/2015 09:19:33 krbtgt/XS.LOCAL@XS.LOCAL
renew until 12/11/2015 23:19:29
Если получаем такой ответ, значит все отлично.
Этап введения в домен и авторизации окончен.
Установка и настройка SQUID
#yum -y install squid
Открываем файл конфигурации /etc/squid/squid.conf и добавляем в самое начала следующие параметры:
auth_param ntlm program /usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp --domain=XS
auth_param ntlm children 10
auth_param ntlm keep_alive off
acl auth proxy_auth REQUIRED
Не забудьте указать свой домен. XS
Дальше находим в конфиге строку:
http_access allow localnet
Комментируем ее, она позволяет получить доступ всем компьютерам из локальной сети. После этой строки добавляем новую:
http_access allow auth
Разрешаем доступ только тем, кто прошел авторизацию. Запускаем squid и добавляем в автозагрузку:
#systemctl start squid
#systemctl enable squid
Все, можно идти проверять. Открываем браузер у какого-нибудь компьютера и указываем в качестве прокси ip адрес сервера, порт 3128. Пробуйте выйти в интернет.
По факту
Пользователя должно пустить в интернет.
В лог файле сквида должна быть информация об имени пользователя, который получает доступ.
Проверить можно так
#cat /var/log/squid/access.log | grep control
В данном случае control — доменная учетная запись.
Результат работы команды ПРИМЕР
1449261311.346 9 10.1.4.189 TCP_MISS/304 438 GET http://yastatic.net/islands/_/S1-qWWyv85yFAtoHVvuxJXpOKA4.svg control HIER_DIRECT/178.154.131.217 -В таком виде конфигурация сервера уже вполне рабочая, можно пользоваться, подключать пользователей. Но это неудобно. Нужно средство для удобного управления списками доступа и просмотра статистики пользователей.
1449261311.351 11 10.1.4.189 TCP_MISS/200 622 GET http://yastatic.net/www/_/_/y/ljN5poHcx67T3HSZuHbvf2NNk.png control HIER_DIRECT/178.154.131.217 image/png
1449261311.404 9 10.1.4.189 TCP_MISS/304 440 GET http://yastatic.net/morda-logo/i/disaster/metro11072015.png control HIER_DIRECT/178.154.131.217 -
1449261311.488 97 10.1.4.189 TCP_MISS/302 355 GET http://kiks.yandex.ru/fu control HIER_DIRECT/213.180.204.143 -
Установка и настройка sams2
Настраиваем web сервер
Устанавливаем httpd:
#yum install -y httpd
Добавляем в автозапуск и запускаем:
#systemctl enable httpd
#systemctl start httpd
Устанавливаем php и некоторые модули:
#yum install -y php
#yum install -y php-mysql php-mbstring php-mcrypt php-devel php-xml php-gd
Устанавливаем mariadb
#yum install -y mariadb mariadb-server mariadb-devel
Добавляем в автозапуск и запускаем:
#systemctl enable mariadb.service
#systemctl start mariadb
Задаем пароль рута:
#/usr/bin/mysql_secure_installation
Подключаем репозиторий epel и устанавливаем phpmyadmin. Это не обязательно.
#yum -y install epel-release
#yum -y install phpmyadmin
Теперь можно проверить работу веб сервера. Описывать не стану, потому как это сделать очень много написано. Для начала просто зайти в браузере по адресу сервера и можно увидеть страницу приветствия Apache
Скачиваем исходники sams2 в домашний каталог root. Все работы будут проделываться под этой учетной записью.
#yum -y install wget
#cd /root
И вот здесь отличие от оригинальной статьи. Дело в том, что если скачать исходники с гита оригинального проекта по адресу https://github.com/PavelVinogradov/sams2/archive/master.zip , встроенный редиректор будет работать криво. На некоторые сайты зайти будет невозможно. Они будут посылать Вас с ошибкой 404. А без этого редиректора сам SAMS не имеет смысла так как запрещать и перенаправлять он не сможет.
Спасибо человеку, который откликнулся в той же статье в комментариях и исправил ошибки. Поэтому я приведу команду на скачивание сразу форкнутой версии
Продолжаем
#wget https://github.com/lex270/sams2/archive/master.zip
Ставим unzip и распаковываем архив:
#yum -y install unzip
#unzip master.zip
Так как исходники уже исправлены на данном этапе ничего править не нужно.
Теперь установим необходимые для сборки пакеты:
#yum -y install autoconf automake libtool pcre-devel libstdc++-devel gcc-c++
Переходим в каталог с исходниками и начинаем компиляцию:
#cd /root/sams2-master
#make -f Makefile.cvs
Запускаем скрипт автоматической конфигурации:
#sh ./configure
Он должен отработать без ошибок и в конце вывести полезную информацию:
Сохраните пути, они позже пригодятся во время настройки. Обратите внимание на подчеркнутые строки. Без первой строки не будет поддержки mysql, без второй не заработают списки запрета доступа. Убедитесь, что все в порядке с ними.
Выполняем установку sams2:
#make install
Но команда будет выполнена с ошибкой. Это связанно с внутренней ошибкой инсталлятора
Ошибка заключается в том, что инсталлятор не может создать каталог.
Исправляем
#cd /usr/local/share/sams2/
#mkdir data
#cd /root/sams2-master
#make install
Установка прошла успешно. Добавляем директорию с web интерфейсом sams2 в httpd. Для этого идем в директорию с конфигурациями и рисуем следующий файл настроек для SAMS:
#mcedit /etc/httpd/conf.d/sams2.conf
И прописываем
Alias /sams2 /usr/local/share/sams2
<Directory /usr/local/share/sams2/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
<RequireAny>
Require ip 10.1.3.0/24 10.1.4.0/24
</RequireAny>
</IfModule>
</Directory>
Где 10.1.3.0/24 10.1.4.0/24 — подсети из которых будет доступ к web интерфейсу. Можете просто указать ip адрес администратора, если доступ будет нужен только с его компьютера, что собственно я и рекомендую сделать.
Удалим конфиги которые SAMS инсталлятор создал. Они не рабочие
#rm /etc/httpd/conf.modules.d/doc4sams2.conf
#rm /etc/httpd/conf.modules.d/sams2.conf
Перезапускаем httpd:
#systemctl restart httpd
Теперь если зайти по адресу htpp://ip-сервера/sams2 вы увидем сообщение:
Invalid query: Access denied for user 'apache'@'localhost' (using password: NO)
Это нормально. Пока так и должно быть.
Редактируем конфигурационный файл sams2.conf:
#mcedit /usr/local/etc/sams2.conf
Ищем следующие строки и подставляем свои данные
ODBCSOURCE=sams_mysql
DB_USER=root
DB_PASSWORD=rootpass
SQUIDCACHEFILE=access.log
В качестве пользователя mysql указываем пока рута. Сохраняем файл и идем снова в веб-интерфейс, обновляем страничку.
Нажимаем Run setup program >>
Проходит проверка требований.
Создаем базу данных. Убедитесь, что пользователя и базы данных для самс, которые вы будете указывать, у вас еще нет в mysql, иначе получите ошибку. Заполняете данные для root и для нового пользователя:
Установка прошла успешно:
Теперь нужно снова отредактировать файл sams2.conf и заменить пользователя mysql на только что созданного:
#mcedit /usr/local/etc/sams2.conf
Проверим работу веб интерфейса. Переходим снова по адресу http://ip-сервера/sams2. Мы должны увидеть окно авторизации. Нажимаем снизу на Авторизация администратора SAMS и вводим пользователя admin, пароль — qwerty.
Теперь немного отойдем от последовательности указанных в статье.
Выполним следующий шаг
Добавляем в /etc/squid/squid.conf вверх, после строк, которые мы добавляли при настройке squid следующие комментарии с метками (Прямо как написано # TAG ):
# TAG: acl
# TAG: url_rewrite_access
# TAG: url_rewrite_program
# TAG: url_rewrite_children
# TAG: delay_pools
# TAG: delay_class
# TAG: delay_access
# TAG: delay_parameters
# TAG: http_access
# TAG: http_access2
# TAG: icp_access
Теперь нам нужно запустить демон sams2daemon. Создадим скрипт запуска. Для этого идем в папку /root/sams2-master/redhat и редактируем файл init.d:
#mcedit /root/sams2-master/redhat/init.d
Находим там значение __CONFDIR и меняем его на /usr/local/etc/, значение __PREFIX меняем на /usr/local/bin/. У вас должны получиться 2 измененные строки следующего вида, остальные оставляем как есть:
[ -f /usr/local/etc/sams2.conf ] || exit 0
DAEMON=/usr/local/bin/sams2daemon
Копируем скрипт запуска в папку /etc/init.d:
#cp /root/sams2-master/redhat/init.d /etc/init.d/sams2
Запускаем демон:
#/etc/init.d/sams2 start
Демон запускается. Но тут хотелось бы отметить от себя. У меня демон не стартует при перезапуске системы. Почему я так и не разобрался и при перезапуске временно стартую его руками.
На этом установка sams2 закончена. Можно приступать к настройке. Здесь она может отличаться, в зависимости от того, что вы хотите получить. Добавим в sams пользователей из домена. Для этого заходим в веб интерфейс и идем в раздел Авторизация. Убираем все галочки, оставляем только NTLM и жмем Конфигурировать. Появляется новый подпункт NTLM.
В оригинале статьи в настройках NTLM нужно указать домен доменного Админа и прочее. У меня все работало без этих настроек. Не знаю почему. Еще выпал глюк. SAMS не добавляет пользователей из групп. То есть группу видит а добавлять всех, кто там есть не захотел. Почему я не разобрался.
При нажатии на кнопку Тестировать NTLM-подключение вы увидите список пользователей и групп домена. Во всяком случае так было у меня.
Чтобы добавить пользователей домена в качестве пользователей самс, необходимо в разделе NTLM снизу нажать на кнопку с домиком и подписью Регистрация новых пользователей, входящих в домен Windows. Выбрать через контрол всех пользователей, которых хотите добавить и нажать Добавить.
Они появятся в списке пользователей:
Чтобы не было ограничения по трафику (вряд ли оно кому-то нужно в наше время), необходимо отредактировать соответствующий параметр в шаблоне Default.
Теперь нужно применить сделанные настройки. Для этого идем в раздел SQUID -> Proxy server и жмем снизу на вторую кнопку слева со стрелочками. Нажимаем на Реконфигурировать. В случае успеха увидите надпись:
На всякий случай можно проверить конфиг squid. Там должны появиться только что созданные acl в тэгах которые мы прописали ранее.
Обращаю внимание на параметр на acl Sams2Time1. По-умолчанию там указан временной интервал с 23:00 до 23:59. В соответствии с этими настройками доступ в интернет будет предоставлен только в это время. Подозреваю, что это ошибка автора, но мне пришлось потратить некоторое время, чтобы понять, почему правильная на первый взгляд конфигурация не работает. Если вам не нужен этот параметр, то уберите вообще временной интервал, либо исправьте его на 00:00-23:59.
Из-за значения your.ip.address в конфигурации сквид писал об ошибке конфигурации. Чтобы самс писал сюда нормальное значение в виде ip адреса сервера, необходимо изменить его настройки. Делается это в разделе SQUID -> Proxy server, снизу кнопочка с отверткой и ключом. Нажимаем на нее и изменяем снизу 2 настройки, указывая свой ip адрес:
Попутно на всякий случай проверьте остальные настройки. Я кое-что подредактировал под свои нужды. Сохраняете настройки и снова перезапускаете сквид через самс. Проверяем файл конфигурации squid.conf.
Дальнейшую настройку SAMS я описывать не буду остановлюсь лишь на некоторых моментах.
Если создаем список запретов и редиректов, то обработчиком должен стоять внутренний редиректор SAMS. Проверить его работу можно командой
#/usr/local/bin/sams2redir
После запуска у вас будет доступен терминал для ввода. Тут же можно проверить, как отрабатываются запреты. Вводите адрес сайта, пользователя, запрос GET и смотрите результат. Вот как выглядит реакция на нормальный сайт, доступ к которому разрешен:
http://ya.ru 10.1.4.189 control - GET
http://ya.ru 10.1.4.189 control - GET
То есть вы вводите первую строку и редиректор тут же выводит точно такую же сам. А вот какая реакция должна быть на сайт под запретом:
http://vk.com 10.1.4.189 control - GET
http://10.1.4.14/sams2/blocked.php?action=urldenied&id=control 10.1.4.189 control -
При попытке открыть запрещенный сайт, пользователь получит сообщение о запрете. Реализован этот функционал с помощью встроенного в самс редиректора. Никакие другие редиректоры в sams2 не работают. Если не работает то в первую очередь надо проверить настройки прокси сервера в самс, там где мы указывали ip адрес сервера. Должен быть выбран редиректор встроенный в SAMS. Путь к каталогу, где лежат файлы запрета запроса например http://10.1.4.14/sams2:
Вот в принципе и все.
Баги.
1. Не работает авторизация. Пускает любого пользователя без пароля в мордочку SAMS. Если у пользователя есть права смотреть статистику, то любой пользователь может зайти и посмотреть.
2. Когда обращаются к запрещенному адресу по https редиректор не выводит страничку блокировки а просто будет сообщено что соединение сброшено. Не страшно но все же возникает ощущение недопиленности.
3. В одном из отчетов не показывается адреса https, но траффик считается и в суммарном отчете он показывается.
На этом пока все.












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