< meta name="referrer" content="origin">
Home » Linux » CentOS » Настройка прокси сервера на CentOS 7 (squid+AD+sams2)

Настройка прокси сервера на CentOS 7 (squid+AD+sams2)

Когда у меня появилась необходимость настроить полноценный прокси сервер на базе CentOS 7, оказалось, что в интернете почти нет актуальной информации на эту тему. Статьи в целом есть, но большинство из них про 6-ю версию, плюс нету полноценной связки с active directory. В своей статье я восполню тематический пробел.

Введение

Существует проверенная временем связка для прокси сервера — squid + sams. Я настраивал ее еще лет 8 назад на Freebsd. Недавно у меня появилась необходимость настроить что-то подобное на CentOS 7, и я с удивлением обнаружил, что ничего принципиально нового с тех пор не появилось. Никакой более удобной и информативной web панели к squid не придумали.

Так что будем настраивать проверенный временем набор программ. Ко всему прочему, удобнее его сразу интегрировать с виндовым доменом, для простой авторизации на прокси с помощью учетных записей домена. Так проще будет смотреть статистику и давать доступ. Особенно это актуально, если у вас есть терминальные пользователи, работающие с одного ip. Здесь у вас вообще нет других вариантов, если вам нужна статистика и ограничение доступа по пользователям.

Приступим к настройке. В своей работе я буду подразумевать, что вы установили и настроили centos по моим рекомендациям. Советую ознакомиться с материалом. Это позволит здесь не тратить время на второстепенные настройки, которые не имеют прямого отношения к теме статьи.

Добавление CentOS 7 в домен Windows

Здесь нужно быть очень внимательным. Это сложный и не любимый мной момент, так как все очень сильно привязано к версиям системы и софта. Порой какой-нибудь точки или регистра достаточно, чтобы ничего не работало. Так вышло и у меня, когда я готовил этот материал.

Я без проблем ввел компьютер в домен, прошел все проверки, но потом в squid напрочь отказывалась работать ntlm авторизация. Все на вид выглядело нормально, но не работало. Я несколько раз восстанавливал виртуалку и начинал все сначала, перечитав практически все, что смог найти по теме в рунете и буржунете. В какой-то момент все заработало. Я зафиксировал результат и несколько раз проверил последовательность действий и отточил ее до каждого шага. Проверил несколько раз на чистой системе. По крайней мере на момент написания статьи конфигурация на 100% рабочая, если аккуратно повторить все мои действия. Приступаем.

Сначала остановим и отключим firewalld:

# systemctl stop firewalld && systemctl disable firewalld

Это не значит, что его не надо настраивать. Сейчас другая тема статьи, для локализации проблем необходимо убрать все, что теоретически может мешать при неправильной настройке. Firewall нужно настраивать и у меня есть подробная инструкция по настройке iptables. Рекомендую с ней ознакомиться и аккуратно настроить iptables, когда все получится со squid.

Установим софт для добавления сервера в домен windows:

# yum -y install samba-winbind samba-winbind-clients pam_krb5 krb5-workstation ntp ntpdate
Для продолжения настройки вам необходимо знать следующие вещи — FQDN имя контроллера домена, его ip адрес и учетную запись с правами на ввод компьютера в домен.

Первым делом вручную синхронизируем часы компьютера с контроллером домена:

# ntpdate winsrv.xs.local

Добавляем наш контроллер в список серверов для обновления в файле /etc/ntp.conf, запускаем ntp и добавляем в автозагрузку:

# systemctl enable ntpd
# systemctl start ntpd
Синхронизация времени с контроллером домена не является обязательным действием. Но в случае расхождения времени более чем на 5 минут, будут возникать проблемы, которые на первый взгляд будут неочевидными и решать их трудно. Поэтому на всякий случай процедуру лучше провести. Очень подробно о настройке времени в CentOS 7 рассказано отдельно.

Выполняем команду для передачи настроек керберосу:

# 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.
getsebool: SELinux is disabled

Это нормально. Обращаю внимание, что SELinux у меня отключен.

Теперь заводим машину в домен:

# net ads join -U administrator
Enter administrators's password:
Using short domain name -- XS
Joined 'PROXY' to dns domain 'xs.local'

Вводим пароль, ждем некоторое время. Если ошибки не появилось, значит компьютер успешно включен в домен.

Теперь нужно запустить и добавить в автозагрузку 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'
plaintext password authentication succeeded
challenge/response password authentication succeeded

В данном случае control — имя пользователя домена, pass — его пароль. Успешная проверка выглядит так, как у меня.

Теперь запросим билетик кербероса:

# 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 с ntlm авторизацией через домен

Дальше будет попроще. Если на предыдущем этапе вы все сделали правильно, то 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

Не забудьте указать свой домен. Обращаю внимание на первую строку. В большинстве инструкций в интернете она выглядит немного не так, в ней нет дополнительных параметров. Без них у меня ntlm авторизация не хотела работать, я очень долго ее мучал.

Дальше находим в конфиге строку:

http_access allow localnet

Комментируем ее, она позволяет получить доступ всем компьютерам из локальной сети. После этой строки добавляем новую:

http_access allow auth

Разрешаем доступ только тем, кто прошел авторизацию. Запускаем squid и добавляем в автозагрузку:

# systemctl start squid
# systemctl enable squid

Все, можно идти проверять. Открываем браузер у какого-нибудь компьютера и указываем в качестве прокси ip адрес сервера, порт 3128. Пробуйте выйти в интернет.

Как понять, что все работает правильно:

  1. Пользователя должно пустить в интернет.
  2. В лог файле сквида должна быть информация об имени пользователя, который получает доступ. У меня это выглядит примерно вот так при открытии страницы яндекса:
# cat /var/log/squid/access.log | grep 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 -
 1449261311.507 9 10.1.4.189 TCP_MISS/304 341 GET http://kiks.yandex.ru/system/fc07.swf control HIER_DIRECT/213.180.204.143 -

В данном случае control — доменная учетная запись.

У нас получилась полностью дефолтная конфигурация, в которую мы просто добавили ntlm авторизацию и разрешили доступ в интернет только для тех, кто эту авторизацию прошел. Если компьютер находится не в домене, то при работе через прокси выскочит окно с авторизацией, в которую нужно будет ввести данные от учетной записи домена, чтобы получить доступ в интернет.

В таком виде конфигурация сервера уже вполне рабочая, можно пользоваться, подключать пользователей. Но это неудобно. Нужно средство для удобного управления списками доступа и просмотра статистики пользователей.

Установка и настройка sams2 в CentOS 7

И вот мы подошли  самому главному и трудному. Когда я решил написать статью на эту тему, я подозревал, что установить sams2 в CentOS 7 будет тяжело, но не думал, что настолько. Пришлось разбить работу на два этапа. Первый этап мы уже прошли, а со вторым мне пришлось поковыряться не один день, пока все не получилось так, как хотелось.

Трудности тут с тем, что проект sams2 давно заброшен, под CentOS 7 он вообще не планировался, готового пакета нет. Есть только старые пакеты для 6-й версии и исходники. Я буду собирать sams2 из исходников и очень аккуратно опишу все этапы, по которым прошел. Столкнулся с множеством ошибок, пришлось немного править исходники, чтобы собранные версии нормально работали. Потом с настройками много нюансов, которые нигде не описаны, пришлось ковыряться самому.

Если все сделать по инструкции с сайта разработчика, то в CentOS 7 ничего не получится. Там как минимум есть 2 бага, которые не позволят собрать работающие программы и провести нормально установку.

В итоге у меня получилась конфигурация sams2, которая импортирует пользователей из AD, создает списки доступа к сайтам и позволяет отдельным пользователям блокировать различные сайты, плюс ведет статистику по пользователям в удобном виде.

Это тот функционал в sams2, который я настроил у себя и проверил. Возможно работает что-то еще, нужно проверять. Не все заявленные функции самс работают из коробки, их нужно с костылями настраивать и проверять. Я добился удовлетворяющего меня результата и остановился на этом.

Приступаем к работе. Нам нужно настроить web сервер для работы интерфейса sams. Можно воспользоваться моей инструкцией, можно чем-то еще. Не обязательно ставить apache, можно настроить на nginx и php-fpm, либо на lighttpd. Я для простоты все сделаю на апаче. Останавливаться подробно не буду на каждом из этапов, все описание есть в первой ссылке абзаца. Привожу только команды.

Устанавливаем 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

Обращаю внимание на последний пакет. Без него установить sams2 не получится, хотя его наличие в списке необходимых пакетов не очевидно. Я сначала его не установил и при сборке самс не видел у меня установленного сервера mysql.

Добавляем в автозапуск и запускаем:

# systemctl enable mariadb.service
# systemctl start mariadb

Задаем пароль рута:

# /usr/bin/mysql_secure_installation

Подключаем репозиторий epel и устанавливаем phpmyadmin. Это не обязательно, но мне с ним удобнее:

# yum -y install epel-release
# yum -y install phpmyadmin

Все подготовительные работы сделаны. Убедитесь, что у вас нормально работает веб сервер и скрипты php. Я не буду на этом останавливаться. Так удобнее будет для вас. Если сейчас не проверить веб сервер, то потом, если у вас недостаточно опыта в работе, вы не поймете, что у вас не работает — сам самс или что-то другое. Лучше все подготовить и проверить по отдельности.

Скачиваем исходники sams2 в домашний каталог root. Все работы будут проделываться под этой учетной записью.

# yum -y install wget
# cd /root
# wget https://github.com/PavelVinogradov/sams2/archive/master.zip

Ставим unzip и распаковываем архив:

# yum -y install unzip
# unzip master.zip

Исходники программы лежат в папке /root/sams2-master. В ней ищем папку src и файл proxy.h. Его нужно будет отредактировать. Открываем редактором, ищем все строчки со значением enum и правим их:

# mcedit /root/sams2-master/src/proxy.h

Было так:

enum TrafficType

меняем на

enum TrafficType: long

И так все строчки с этим значением. Их должно быть 5 штук. Сохраняем файл и закрываем. Если не внести эти изменения и собрать исходники как есть, то sams2daemon будет падать с ошибкой:

kernel: sams2daemon[27541]: segfault at ffffffffffffffe8 ip 00007fc54880944b sp 00007ffc8da37d20 error 5 in libstdc++.so.6.0.19[7fc54874b000+e9000]

Это связано с тем, что CentOS 7 64-x битная система, а из этих исходников программа нормально собирается только на 32-х битных системах.

Теперь установим необходимые для сборки пакеты:

# yum -y install autoconf automake libtool pcre-devel libstdc++-devel gcc-c++

Переходим в каталог с исходниками и начинаем компиляцию:

# cd /root/sams2-master
# make -f Makefile.cvs

Запускаем скрипт автоматической конфигурации:

# sh ./configure

Он должен отработать без ошибок и в конце вывести полезную информацию:

компиляция sams2 из исходников

Сохраните пути, они позже пригодятся во время настройки. Обратите внимание на подчеркнутые строки. Без первой строки не будет поддержки mysql, без второй не заработают списки запрета доступа. Убедитесь, что все в порядке с ними.

Выполняем установку sams2:

# make install

У меня она почему-то проходит с ошибкой:

ошибка установки sams2

Суть ошибки в этой строке:

chmod: cannot access '//usr/local/share/sams2/data': No such file or directory

Я не знаю, почему инсталлятор не может создать эту папку сам. Хотя проблема возможно просто в ошибке в исходниках, в пути почему-то стоят два слеша в начале. Я просто руками создал эту директорию и заново запустил установку:

# cd /usr/local/share/sams2/
# mkdir data
# cd /root/sams2-master
# make install

Установка прошла успешно. Добавляем директорию с web интерфейсом sams2 в httpd. Для этого идем в директорию с конфигурациями и рисуем следующий файл настроек для самса:

# 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 адрес администратора, если доступ будет нужен только с его компьютера.

Удаляем те конфиги, которые самс сгенерировал автоматически, я с ними не мог зайти на сайт, не стал разбираться почему, просто сделал быстро сам настройки:

# 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
DB_ENGINE=MySQL
DB_SERVER=localhost
SAMS_DB=sams2db
ODBC=0
PDO=0
ODBCSOURCE=sams_mysql
DB_USER=root
DB_PASSWORD=rootpass
SQUIDCACHEFILE=access.log
SQUIDROOTDIR=/etc/squid
SQUIDLOGDIR=/var/log/squid
SQUIDCACHEDIR=/var/spool/squid
WBINFOPATH=/usr/local
SAMSPATH=/usr/local
SQUIDPATH=/usr/sbin
SQUIDGUARDLOGPATH=/var/log
SQUIDGUARDDBPATH=/var/db/squidguard
RECODECOMMAND=iconv -f KOI8-R -t 866 %finp > %fout
REJIKPATH=/usr/local/rejik
SHUTDOWNCOMMAND=shutdown -h now
CACHENUM=1

В качестве пользователя mysql указываем пока рута. Сохраняем файл и идем снова в веб-интерфейс, обновляем страничку. У вас должна загрузиться следующая информация:

install sams2 на CentOS 7

Нажимаем Run setup program >> . И получаем сообщение об ошибке:

sams2 ошибка

При этом в логе httpd следующая информация:

# cat /var/log/httpd/error_log

PHP Parse error: syntax error, unexpected '$configbuttom_7_log_2' (T_VARIABLE) in /usr/local/share/sams2/lang/lang.EN on line 1100, referer: http://10.1.4.14/sams2/index.php

Это очередной баг самс2. Чтобы его исправить, открываем на редактирование файл /usr/local/share/sams2/lang/lang.EN идем на строку 1100 и после нее убираем все пробелы перед последующими строками:

# mcedit /usr/local/share/sams2/lang/lang.EN

Делаем так:

баг в sams2

Сохраняем файл, идем в веб интерфейс и перезагружаем страничку. Должны увидеть форму выбора языка. Выбираем русский:

sams2 setup

Проходит проверка требований. У меня такие результаты:

проверка установки sams2

Создаем базу данных. Убедитесь, что пользователя и базы данных для самс, которые вы будете указывать, у вас еще нет в mysql, иначе получите ошибку. Заполняете данные для root и для нового пользователя:

создание базы данных для sams2

Установка прошла успешно:

успешная установка sams2

Теперь нужно снова отредактировать файл sams2.conf и заменить пользователя mysql на только что созданного:

# mcedit /usr/local/etc/sams2.conf

Проверим работу веб интерфейса. Переходим снова по адресу http://ip-сервера/sams2. Мы должны увидеть окно авторизации. Нажимаем снизу на Авторизация администратора SAMS и вводим пользователя admin, пароль — qwerty. Открывается главное окно системы:

главная страница sams

Теперь нам нужно запустить демон 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
Starting sams2 (via systemctl): [ OK ]

Если будут какие-то ошибки, то смотрите общий лог messages.

На этом установка sams2 закончена. Можно приступать к настройке. Здесь она может отличаться, в зависимости от того, что вы хотите получить. Добавим в sams пользователей из домена. Для этого заходим в веб интерфейс и идем в раздел Авторизация. Убираем все галочки, оставляем только NTLM и жмем Конфигурировать. Появляется новый подпункт NTLM. Заходим в него и нажимаем снизу на отвертку и ключ:

настройка ntlm авторизации в sams2

Заполняем настройки. В моем случае они выглядели вот так:

подключение к AD в sams2

Если все правильно ввели, то при нажатии на кнопку Тестировать NTLM-подключение вы увидите список пользователей и групп домена.

Чтобы добавить пользователей домена в качестве пользователей самс, необходимо в разделе NTLM снизу нажать на кнопку с домиком и подписью Регистрация новых пользователей, входящих в домен Windows. Выбрать через контрол всех пользователей, которых хотите добавить и нажать Добавить.

добавление пользователей в sams2

Они появятся в списке пользователей:

пользователи в sams2

Чтобы не было ограничения по трафику (вряд ли оно кому-то нужно в наше время), необходимо отредактировать соответствующий параметр в шаблоне Default.

Теперь нужно применить сделанные настройки. Для этого идем в раздел SQUID -> Proxy server и жмем снизу на вторую кнопку слева со стрелочками. Нажимаем на Реконфигурировать. В случае успеха увидите надпись:

перезапуск squid через web интерфейс sams

На всякий случай можно проверить конфиг squid. Там должны появиться только что созданные acl. В моем случае появились следующие строки в конфигурации. Пошел проверять конфиг и обнаружил, что там ничего не появилось. Это связано с тем, что sams редактирует конфиг сквида, ориентируясь на комментарии с метками TAG:. В CentOS 7 после установки конфиг сквида очень сокращен, в нем почти нет комментариев, представлена минимальная конфигурация. Указанных меток там тоже нет, нам их нужно добавить самим. Добавляем в /etc/squid/squid.conf следующие комментарии с метками:

# 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

Обязательно пустая строка после каждой метки. Теперь заново перезапускаем squid через веб интерфейс самса. Должны появиться изменения в конфиге. У меня добавились следующие строки:

# TAG: acl
acl Sams2Time1 time MTWHFAS 23:00-23:59
acl Sams2Template1 proxy_auth admin51
acl Sams2Template1 proxy_auth control

# TAG: http_access
# Setup Sams2 HTTP Access here
http_access allow Sams2Template1 Sams2Time1

Обращаю внимание на параметр на acl Sams2Time1. По-умолчанию там указан временной интервал с 23:00 до 23:59. В соответствии с этими настройками доступ в интернет будет предоставлен только в это время. Подозреваю, что это ошибка автора, но мне пришлось потратить некоторое время, чтобы понять, почему правильная на первый взгляд конфигурация не работает. Если вам не нужен этот параметр, то уберите вообще временной интервал, либо исправьте его на 00:00-23:59.

Для корректной работы конфигурации необходимо убрать все остальные acl и http_access от предыдущей конфигурации squid, когда самс еще не был установлен.

Еще у меня были добавлены следующие строки:

# TAG: url_rewrite_access
acl Sams2Proxy dst your.ip.address
url_rewrite_access deny Sams2Proxy

Из-за значения your.ip.address сквид писал об ошибке конфигурации. Чтобы самс писал сюда нормальное значение в виде ip адреса сервера, необходимо изменить его настройки. Делается это в разделе SQUID -> Proxy server, снизу кнопочка с отверткой и ключом. Нажимаем на нее и изменяем снизу 2 настройки, указывая свой ip адрес:

настройка sams2

Попутно на всякий случай проверьте остальные настройки. Я кое-что подредактировал под свои нужды. Сохраняете настройки и снова перезапускаете сквид через самс. Проверяем файл конфигурации squid.conf:

# cat squid.conf | grep Sams2Proxy
acl Sams2Proxy dst 10.1.4.14

В строке появился реальный адрес и сквид больше не ругается на ошибку конфигурации.

Сейчас можно проверять работу. Заходим добавленными пользователями на компьютеры домена, указываем настроенный прокси сервер и серфим. Через некоторое время проверяем статистику в sams. Должны побежать килобайты:

подсчет трафика пользователей

Теперь добавим ограничение для доступа к некоторым сайтам. Для этого идем в раздел Запрет доступа по URL и создаем новый список. Я создал список social и добавил в него адрес социальных сетей для теста: vk.com и ok.ru:

создание списка на запрет доступа к сайту в sams2

Теперь нужно подключить этот список шаблону по-умолчанию. Идем в шаблон Default, заходим в редактирование и ставим галочку напротив списка social:

подключение списка запретов в sams2

Сохраняем изменения шаблона и перезапускаем конфигурацию сквида. Идем к пользователям и проверяем запрет:

запрет доступа по URL

При попытке открыть запрещенный сайт, пользователь получит сообщение о запрете. Реализован этот функционал с помощью встроенного в самс редиректора. Никакие другие редиректоры в sams2 не работают. Но как по мне, так и этого достаточно. Что делать если у вас по какой-то причине не работает запрет доступа, как это было у меня?

В первую очередь надо проверить настройки прокси сервера в самс, там где мы указывали ip адрес сервера. Должен быть выбран редиректор встроенный в SAMS. Путь к каталогу, где лежат файлы запрета запроса у меня указан http://10.1.4.14/sams2:

настройка редиректора в sams

Я не знаю, почему именно такой путь должен быть, я указал наугад, так как по-умолчанию там стоял вообще не существующий адрес. И у меня заработало. Некоторое время я проковырялся с этим параметром, потому что в настройках httpd разрешил доступ к алиасу /sams2 только с машины администратора. А при запрете адреса пользователя редиректит на этот же алиас, и если он не имеет к нему доступа, то просто получает ошибку соединения в браузере и не понятно, то ли сработал запрет, то ли сайт недоступен, то ли с интернетом какие-то проблемы. В общем, было неудобно.

Дальше у меня были проблемы с тем, что сам редиректор не запускался. Я сначала скомпилировал исходники без редактирования под 64 бита, и демон не стартовал. Проверить, запущен ли он можно просто по списку процессов. Если все в порядке, то должен быть запущен  sams2daemon и несколько sams2redir. Проверить можно просто:

# ps ax | grep sams
22721 ? S 0:01 /usr/local/bin/sams2daemon -l syslog
28498 ? S 0:00 (sams2redir)
28667 ? S 0:00 (sams2redir)
28860 pts/1 R+ 0:00 grep --color=auto 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 -

Идет редирект на страничку blocked.php. Для разбора ситуации можно пойти в логи апача и посмотреть, что там есть на эту тему. Я так заметил, что у пользователей нет доступа к этому адресу, так как он был закрыт настройкой веб сервера. Отмечу еще для справки, что список заблокированных сайтов sams2 хранит в своей базе в таблице url. Возможно вам пригодится эта информация во время отладки.

Вот все, что касается настройки sams2 под CentOS 7. Надеюсь вам будет полезна эта информация. Бесплатных продуктов, аналогичных самсу я лично не знаю, поэтому ничего лучше не нашел, как использовать в очередной раз его, хоть и с такими большими трудностями пришлось столкнуться во время настройки. Но на выходе получился вполне рабочий вариант.

Заключение

Пришло время подвести итог того, что мы сделали. Проведена большая работа по настройке прокси сервера на базе CentOS 7. Были выполнены следующие шаги:

  1. Сервер был введен в домен Windows для настройки авторизации доменных пользователей на прокси сервере.
  2. Настроен прокси сервер squid для работы с доменными учетными записями.
  3. Собран из исходников многофункциональный web интерфейс для управления squid — sams2 самой последней на текущий момент версии.

Первые два этапа сами по себе позволяют полноценно пользоваться прокси сервером, но не дают удобства и гибкости настройки. Иногда это и не нужно и можно не заморачиваться с установкой и настройкой sams. Как ни крути, но установка достаточно хлопотная и нет гарантии, что через некоторое время после смены версий каких-нибудь пакетов или исходников, не появятся новые нюансы, которые не будут отражены в этой статье. С ними придется разбираться заново.

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


Помогла статья? Есть возможность отблагодарить автора

Дополнительные материалы по CentOS

Рекомендую полезные материалы по CentOS:
Настройки системы
  • Установка
  • Базовая настройка
  • Настройка времени
  • Настройка сети
  • Настройка репозиториев
  • Настройка iptables
Установка CentOS 7 в конфигурации minimal или netinstall с загрузочной флешки или по сети на диск или raid раздел.
Базовая настройка CentOS 7 для работы с любым функционалом. Приведены практические советы по улучшению безопасности и удобства администрирования.
Как установить точное время на сервере CentOS, настроить часовой пояс, синхронизировать время с помощью ntpdate и ntpd и другое.
Подробное описание настройки сети в CentOS 7 - задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др.
Установка репозиториев epel, rpmforge и др. Добавление, удаление, обновление rpm репозиториев в CentOS.
Рассмотрены основные моменты настройки iptables в Centos 7 - установка, добавление правил, проброс портов, nat, логирование и д.р.
Настройка программных комплексов
 
  • Прокси сервер
  • Шлюз
  • Asterisk
  • Asterisk+Freepbx
  • Сервер VPN
  • Web сервер Apache
  • Web сервер Nginx
  • Почтовый сервер
Подробное описание настройки прокси сервера на базе CentOS 7 со связкой squid+AD+sams2, реализован запрет доступа по url и группам пользователей.
Простая и быстрая настройка шлюза на базе CentOS 7 для организации доступа в интернет из локальной сети.
Описание установки и настройки asterisk - популярной современной sip атс. Описан расширенный функционал, покрывающий большинство потребностей стандартного офиса в современной телефонии.
Подробное описание установки voip сервера asterisk и панели управления freepbx на CentOS 7.
Установка и настройка OpenVPN сервера на CentOS для объединения офисов и подключения удаленных пользователей
Настройка web сервера CentOS 7 на базе связки http сервера apache, php и сервера db mysql, или коротко - установка lamp.
Установка и настройка высокопроизводительного web сервера на базе nginx и php fpm. В качестве кэша используется APC.

Описание установки и настройки почтового сервера iRedMail на основе готовой сборки на CentOS 7. Обзор основных возможностей и рекомендации по настройке.

Самостоятельная настройки почтового сервера postfix + dovecot а так же дополнительных полезных модулей для полноценной и удобной работы почты.

Размышления на тему выбора почтового сервера для малых и средних компаний.

Настройка отдельных программ
 
  • Zabbix
  • Phpmyadmin
  • Webmin
  • Ruby
  • Обновление php
  • Vsftpd
  • Bind
  • Unison
  • Observium
  • Syslog-NG
Видео и подробное описание установки и настройки Zabbix 3.2, а также установка агентов на linux и windows и подключение их к мониторингу.
Подробное описание установки и настройки панели управления phpmyadmin на веб сервер apache и nginx под управлением Centos 7.
Подробное описание установки и настройки Webmin на CentOS 7 для удаленного подключения и управления сервером.
Подробное описание установки языка Ruby последней версии на веб сервер под управлением CentOS 7.
Подробное описание установки или обновления php 7 на CentOS 7. Рассмотрен вариант отката обновления и возврата на php 5.6 или 5.4.
Подробное описание с видео установки и настройки ftp сервера vsftpd, примеры с локальными и виртуальные пользователями в mysql.
Настройка DNS сервера BIND (Named) в CentOS 7. Рассмотрены наиболее популярные конфигурации, в том числе подробное логирование.
Установка Unison в CentOS 7 для двухсторонней синхронизации файлов.
Инструкция по установке и настройке сервера мониторинга Observium на CentOS 7. В качестве примера в конце добавлено одно устройство для мониторинга.
Настройка сервера для централизованного сбора логов с удаленных устройств и серверов с помощью программы syslog-ng.
Разное
  • Настройка ssl в Apache
  • Бэкап с помощью rsync
Настройка работы веб сервера apache с виртуальными хостами по протоколу https с использованием бесплатного ssl сертификата.
Подробное описание настройки бэкапа с помощью rsync на примере скрипта инкрементного архива на системе Centos, Debian, Ubuntu, Windows.

45 комментариев

  1. Здравствуйте! Большое спасибо за инструкцию! Очень информативная. Пару месяцев назад пытался реализовать всё это дело но так и не получилось работающий SAMS на CentOS 7. Благо вы подоспели) За что вам большая благодарность.
    У меня вопрос: можно ли как-нибудь сделать авторизацию через AD для пользователей с учётными записями на кирилице?
    На латинице всё работает корректно. С русскими логинами к сожалению нет.

    • Думаю, что без правки исходников нет. Там есть еще по авторизациям некоторые проблемы. Например, если пароль длиннее 8-ми символов, то при авторизации пользователя для проверки своей статистики будут учитываться только первые 8 символов, а не весь пароль, если он длиннее. В общем, у самса много проблем и они больше не решаются.

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

  3. Доброго времени суток !

    Дорогой автор, имеется 3 (три) вопроса:

    1.
    У меня имеется Терминальный сервер, 54 тонких клиентов и около 18 обычных компов соответственно в AD все пользователи прописаны.
    Как ВЫ думаете будет ли возможно ограничить путем блокировки сайтов у отдельных пользователей ?
    допустим так:
    Пользователь Терм.сервера «А» — запретить сайт vk.com
    Пользователь Терм.сервера «В» — разрешить сайт vk.com
    Пользователь обыч.комп «С» — разрешить сайт vk.com

    2.
    Проброс портов как реализовать ?

    3.
    Отчетность ну там графики потребления инта и на каких ресурсах

    • 1. и 3. реализуются без проблем. Авторизация и учет пользователей ведется по их учетным записям в АД. Я сам много лет использовал самс с авторизацией в АД как раз для того, чтобы управлять терминальными пользователями.

      2. не понял, какое имеет отношение к прокси серверу. Пробросом портов занимается firewall или что-то другое, не squid. Конкретно в centos пробросить порты можно с помощью iptables. Примеры есть в моей статье на эту тему:

      //serveradmin.ru/nastroyka-iptables-v-centos-7/

  4. Подскажите, пожалуйста, как без использования sams2 разрешить доступ в интернет только пользователям входящим в определенную группу AD?

    • Тут нет проблем. В интернете есть статьи по настройке squid с интеграцией в AD. Там все даже проще будет в настройке, чем с самсом. Нужно будет добавить сервер в домен, настроить сквид и в конфиге указать группу из домена, которой разрешен выход в интернет.

      Инструкцию по заведению сервера в домен можно использовать эту. Вам нужно только поискать про интеграцию сквида с AD. Там пара строчек в конфиге.

      • Сервер я успешно завел в домен. ntlm авторизацию настроил. Все делал по Вашей статье. Большое Вам за нее спасибо.

        Статей про интеграцию сквида с AD очень много, но большинство из них старые (2003, 2005 год) зачастую в них описывается настройка для Debian или Ubuntu. Попробовал сделать привязку к группе по нескольким статьям — не заработало.
        Если настройка интеграции с AD это всего пару строчек в конфиге, пожалуйста, подскажите мне их либо направьте на хорошую статью.

        • У меня нет под рукой готового рецепта. Можно установить самс, сделать все настройки, убедиться, что работает и подсмотреть, что он пишет в конфиг. Потом по аналогии то же самое сделать но уже без него.

  5. Разобрался. Может кому пригодится.
    Привязка к группам:
    external_acl_type AD_Group ttl=1800 children-startup=10 children-max=60 ipv4 %LOGIN /usr/lib64/squid/ext_wbinfo_group_acl
    acl Internet external AD_Group Internet
    acl Internet_limit external AD_Group Internet_limit
    http_access allow Internet
    http_access allow Internet_limit

  6. Всем добра!
    Спасибо за статью. Интересная и полезная.
    Интереснее было бы почитать если в качастве AD выступала Samba c базой LDAP и авторизацией kerberos для домена и прокси.

    • Мне бы тоже было интересно :)) Я настраивал связку squid + авторизация kerberos из Win AD и доступ пользователей на основе групп AD. Наработки есть, схема рабочая, но нет времени оформить в нормальную статью.

  7. Добавлю полезный комментарий на статью в почте. Может кому-то пригодится:

    «Хотел добавить:
    1) самс после реконфига каждый раз ставит время 23:00-23:59. Так вот, если в самсе во «временных диапазонах» в шаблонах выставить время 01:00-23:59, то самс в конфиг будет добавлять уже 00:00-23:59. Что нам и нужно.

    2) при автозапуске демон самса не запускался — жаловался на то, что mysql еще не успел стартовать. Пришлось в скрипте mariadb.service убрать строку after=network.target, чтобы mysql стартовал сразу, а не ждал пока появится сеть.

    3) в настройках ntlm лучше ставить группу users вместо gr_sams, иначе при импорте групп пользователи не добавятся.»

  8. У меня синхронизация с AD при авторизации ntlm не работает, при импорте создаются пустые группы. А при запуске из командной строки команды на синхронизацию валится куча ошибок, видимо надо править скрипт syncfromntlm. При методе авторизации adld SAMS не видит группы созданные в домене на win2008r2, зато мигрированные из, или созданные в более старых доменах группы видит. Пришлось обмануть SAMS создав группу руками с таким же именем как в AD, и после включения синхронизации этой группы с AD все пользователи подтянулись в SAMS и даже добавились ACL в конфиг сквида, однако радость была недолгой. Все дело в том что подгрузившиеся пользователи из AD были в формате IvanovII, а сквид пользователей с символами в имени в верхнем регистре пускать в интернет отказался, не помог и параметр casensetive off. Я так понимаю он только для аутентификации «basic»? А вот если добавлять пользователей не из групп а по одному или же группой но созданной в более старых доменах чем win2008r2, опять же только при методе авторизации ntlm (как в статье), то все работает замечательно, но для меня такой вариант не подходит, это надо каждого пользователя заводить через веб интерфейс SAMS вручную. Попробую поставить в настройках ntlm группу users как автор указал в комментах, у меня там вообще прописана группа из AD с админскими правами, про gr_sams я наверное упустил?

  9. Попробовал в общем прописать users, ситуация никак не изменилась, группы экспортируются пустые, после долгих мучений с SAMS и отсутствия какой-либо поддержки SAMS я снёс, настроил squid на авторизацию ntlm по доменной группе, и больше туда лазить нет никакого смысла, пользователей добавляю в группу в AD, статистику смотрю через lightsquid, в принципе большего мне не надо.
    Зы: автор видимо тоже забил на эту ветку…

    • Я сделал то же самое, только чуть посложнее и с авторизацией по kerberos, но ntlm тоже настроил. Групп сделал несколько с разными доступами и списками. Самс у меня продолжает работать там, где я его настроил. Но больше я его не хочу использовать. Слишком глючно и ненадежно.

      • Владимер, будет ли опубликована статья с авторизацией по kerberos и добавлением групп из AD?

  10. Статья отличная, очень все доходчиво и просто!! Есть вопрос, ограничение скорости через SAMS как выглядит? я создал пул ограничение скорости, но ничего не поменялось, скорость осталась прежней, и squid.conf в delay_pools,class и т.д. ничего не появляется! Как работает пул ограничения и как его настроить правильно?

    • Кто-то уже жаловался на то, что ограничение скорости не работает. То ли в этой теме, то ли в теме про freebsd. Я этот функционал не проверял, поэтому ничего сказать не могу.

  11. Потратил день на различные тесты, в общем ограничение скорости работает, но в конфиге не отображается, с чем это связано, как работает весьма не понятно, в остальном все просто замечательно. Единственное — вопрос: Я так понимаю, это настройка прозрачного прокси? И еще, было бы не плохо если в статью добавили как все же фильтровать и запрещать запросы по HTTPS (потому что многие соц. сети перешли на https в том числе и vk.com), вроде как ее смогли реализовать на прозрачном прокси, но толковой информации я так и не нашел, спасибо.

    • Нет, это не прозрачный прокси. Я через групповые политики указывал всем пользователям адрес прокси. Соответственно, https он тоже блокирует, можно закрывать социальные сети и т.д. В прозрачном режиме по-умолчанию squid не фильтрует https вообще никак. Для того, чтобы это работало, нужно патчить сквид. Я видел подобные примеры, у людей получалось, но задача эта не самая простая, но при большом желании можно сделать. Мне любопытно попробовать этот способ, но руки не доходят пока.

  12. чувак ты крут

  13. Спасибо большое за статью, очень помогла. Возникли некоторые комментарии:

    1. Использовал для установки SAMS исходники с сайта SAMS (http://sams.perm.ru/) версии 2.0.2.
    По ходу в них исправлены три описанных в статье бага:

    «kernel: sams2daemon[27541]: segfault at ffffffffffffffe8 ip 00007fc54880944b sp 00007ffc8da37d20 error 5 in libstdc++.so.6.0.19[7fc54874b000+e9000]»

    «chmod: cannot access ‘//usr/local/share/sams2/data’: No such file or directory»

    «PHP Parse error: syntax error, unexpected ‘$configbuttom_7_log_2’ (T_VARIABLE) in /usr/local/share/sams2/lang/lang.EN on line 1100, referer: http://10.1.4.14/sams2/index.php»

    Используя эти исходники, описанных багов не возникло и действий по исправлению делать не пришлось.

    2. Не нашёл в статье, как добавить сервис SAMS в автозапуск(. После перезагрузки сервис автоматически не стартует.
    Сделал следующее:
    /sbin/chkconfig —add sams2
    /sbin/chkconfig sams2 on

    3. Сервис SAMS не стартует, если не ещё стартовал MYSQL. (В одном из комментариев уже указано)
    Для исправления сделал:
    systemctl edit sams2.service
    [Unit]
    After=mariadb.service
    ‘Esc’ -> ‘:wq’

    4. Если в SAMS удалить все временные интервалы — в нет не пускает.

  14. добрый день! Все делал по Вашей статье. Сервер успешно завел в домен. sams работает. Большое спасибо.

    ntlm авторизация не получается. просит логин и пароль куда копать?

    • В первую очередь логи сквида надо смотреть на тему авторизации. Она через его стандартный функционал реализуется.

      • cat /var/log/squid/access.log

        1482631591.647 200 192.168.114.14 TCP_DENIED/407 4295 CONNECT incoming.telemetry.mozilla.org:443 — HIER_NONE/- text/html
        1482633545.606 23 192.168.114.14 TCP_DENIED/407 4185 CONNECT services.addons.mozilla.org:443 — HIER_NONE/- text/html
        1482633545.889 274 192.168.114.14 TCP_DENIED/407 4283 CONNECT services.addons.mozilla.org:443 — HIER_NONE/- text/html
        1482633545.908 0 192.168.114.14 TCP_DENIED/407 4213 CONNECT versioncheck-bg.addons.mozilla.org:443 — HIER_NONE/- text/html

  15. [root@squid ~]# /usr/bin/ntlm_auth —username=admin
    Password:
    NT_STATUS_OK: Success (0x0)

  16. Владимир

    На команде

    authconfig —enablekrb5 —krb5kdc=server.lkivc.l —krb5adminserver=server.lkivc.l —krb5realm=SERVER.LKIVC.L —enablewinbind —enablewinbindauth —smbsecurity=ads —smbrealm=LKIVC.L —smbservers=SERVER.LKIVC.L —smbworkgroup=XS —winbindtemplatehomedir=/home/%U —winbindtemplateshell=/bin/bash —enablemkhomedir —enablewinbindusedefaultdomain —update

    выскочила ошибка предлагающая выполнить команду systemctl status winbind.service — вот результат. Система Centos7 свежеустановленная. Время перед этим нормально синхронизировалось с сервером server.lkivc.l (Win 2012r2)

    ● winbind.service — Samba Winbind Daemon
    Loaded: loaded (/usr/lib/systemd/system/winbind.service; enabled; vendor preset: disabled)
    Active: failed (Result: exit-code) since Чтв 2017-01-05 08:40:42 EET; 19min ago
    Process: 1401 ExecStart=/usr/sbin/winbindd $WINBINDOPTIONS (code=exited, status=1/FAILURE)
    Main PID: 1401 (code=exited, status=1/FAILURE)
    Status: «Starting process…»

    Янв 05 08:40:41 proxy.lkivc.l winbindd[1401]: [2017/01/05 08:40:41.965570, 0] ../source3/winbindd/winbindd_cache.c:3245(initialize_winbindd_cache)
    Янв 05 08:40:41 proxy.lkivc.l winbindd[1401]: initialize_winbindd_cache: clearing cache and re-creating with version number 2
    Янв 05 08:40:42 proxy.lkivc.l winbindd[1401]: [2017/01/05 08:40:42.036385, 0] ../source3/winbindd/winbindd_util.c:869(init_domain_list)
    Янв 05 08:40:42 proxy.lkivc.l winbindd[1401]: Could not fetch our SID — did we join?
    Янв 05 08:40:42 proxy.lkivc.l winbindd[1401]: [2017/01/05 08:40:42.036412, 0] ../source3/winbindd/winbindd.c:1408(winbindd_register_handlers)
    Янв 05 08:40:42 proxy.lkivc.l winbindd[1401]: unable to initialize domain list
    Янв 05 08:40:42 proxy.lkivc.l systemd[1]: winbind.service: main process exited, code=exited, status=1/FAILURE
    Янв 05 08:40:42 proxy.lkivc.l systemd[1]: Failed to start Samba Winbind Daemon.
    Янв 05 08:40:42 proxy.lkivc.l systemd[1]: Unit winbind.service entered failed state.
    Янв 05 08:40:42 proxy.lkivc.l systemd[1]: winbind.service failed.

    Подскажите пожалуйста как лечить. Заранее благодарен

  17. Евгений

    Добрый день.
    Надеюсь на помощь, дошел до добавления в автозагрузку winbind, сижу под доменным пользователем, результат ниже:
    [kolupaevea@squid ~]$ systemctl start winbind
    ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
    Authentication is required to manage system services or units.
    Authenticating as: root
    Password:
    ==== AUTHENTICATION COMPLETE ===
    [kolupaevea@squid ~]$ systemctl enable winbind
    ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-unit-files ===
    Authentication is required to manage system service or unit files.
    Authenticating as: root
    Password:
    ==== AUTHENTICATION COMPLETE ===
    ==== AUTHENTICATING FOR org.freedesktop.systemd1.reload-daemon ===
    Authentication is required to reload the systemd state.
    Authenticating as: root
    Password:
    ==== AUTHENTICATION COMPLETE ===
    [kolupaevea@squid ~]$ wbinfo -t
    checking the trust secret for domain SAMBA via RPC calls failed
    failed to call wbcCheckTrustCredentials: WBC_ERR_WINBIND_NOT_AVAILABLE
    Could not check secret

    Что может быть не так?

    • Евгений

      если делать это под рутом:
      [root@squid ~]# systemctl start winbind
      [root@squid ~]# systemctl enable winbind
      [root@squid ~]# systemctl status winbind
      ● winbind.service — Samba Winbind Daemon
      Loaded: loaded (/usr/lib/systemd/system/winbind.service; enabled; vendor preset: disabled)
      Active: active (running) since Fri 2017-02-03 11:48:57 +04; 2h 10min ago
      Main PID: 1024 (winbindd)
      Status: «winbindd: ready to serve connections…»
      CGroup: /system.slice/winbind.service
      ├─1024 /usr/sbin/winbindd
      └─1025 /usr/sbin/winbindd

      Feb 03 11:48:55 squid systemd[1]: Starting Samba Winbind Daemon…
      Feb 03 11:48:57 squid systemd[1]: winbind.service: Supervising process 1024 which is not our child. We’ll most likely not notice …t exits.
      Feb 03 11:48:57 squid winbindd[1024]: [2017/02/03 11:48:57.374672, 0] ../source3/winbindd/winbindd_cache.c:3245(initialize_winbindd_cache)
      Feb 03 11:48:57 squid winbindd[1024]: initialize_winbindd_cache: clearing cache and re-creating with version number 2
      Feb 03 11:48:57 squid systemd[1]: Started Samba Winbind Daemon.
      Feb 03 11:48:57 squid winbindd[1024]: [2017/02/03 11:48:57.415896, 0] ../lib/util/become_daemon.c:124(daemon_ready)
      Feb 03 11:48:57 squid winbindd[1024]: STATUS=daemon ‘winbindd’ finished starting up and ready to serve connections
      Hint: Some lines were ellipsized, use -l to show in full.
      [root@squid ~]# wbinfo -t
      checking the trust secret for domain SAMBA via RPC calls failed
      wbcCheckTrustCredentials(SAMBA): error code was NT_STATUS_NO_SUCH_DOMAIN (0xc00000df)
      failed to call wbcCheckTrustCredentials: WBC_ERR_AUTH_ERROR
      Could not check secret

      • Начать стоит с того, что проверить все конфиги. Потом еще раз завести компьютер в домен. Затем проверить доверие через:
        wbinfo -t
        Потом проверить билетик кербероса, потом авторизацию пользователей. Смотреть на ошибки, если будут и разбираться.

    • Да это все, что угодно может быть. Для решения проблем с winbind нет универсальных рекомендаций. Я иногда часами ковыряюсь, когда очередной сервер пытаюсь заставить нормально работать с доменными учетками.

  18. Аноним

    В просторах ИНЕТА пишут что «Добавляем пользователя proxy в группу winbindd_priv для того чтобы у него был доступ в /run/samba/winbindd_privileged, иначе NTLM работать не будет» в статье такого нету, может дело в этом что у меня прокси не работает?

  19. Александр

    Обращаю внимание — если у кого вылезет ошибка при получении тикета Kerberos
    kinit: KDC reply did not match expectations while getting initial credentials
    То при запросе тикета домен писать большими буквами!
    kinit username@DOMAIN.COM

  20. Сергей

    Спасибо за статью! Работает.
    Вопрос: как заставить самс стартовать после mysql?

  21. Респект за труд!!! С Linux до этого вообще не работал. Много где было затыков — но в основном из-за своей невнимательности и незнания основ Linux. В принципе, почти всё по статье получилось — iptables,Squid,учётки с домена,Sams2. Вроде-бы всё хорошо, но когда браузер настроен через прокси порт 3128, где-то режется HTTP-трафик, с HTTPS всё норм. Весь мозг изломал-встал в ступор. Понятно,что где-то есть маленькая заковыка — но где!? Iptables отключал, конфиги Squida сравнивал и пробовал разные, делал прозрачным… На основном шлюзе отключал Kerio,у Kaspersky отключен сетевой экран. У оператора оборудование Cisco и где-то вычитал про несоответствие размеров пакетов — ставил разные…Кто может чем помочь!?

    • У тебя там такой зоопарк техники :)) Тут только на месте можно разобраться. Но вообще я первый раз вижу, чтобы не работал http, но работал https. Последний технически более сложен. А вообще без прокси http нормально работает?

      • Доброе утро столкнулся с проблемой при обновлении squid до версии 3.5. Перестали открываться многие страницы которые работают по https, то есть если открыть https://yandex.ru то он открывается а если набрать http://yandex.ru то выходит ошибка 404 не происходит автоматическое перенаправление…если оставляю дефолтный конфиг squid то все работает, как только передаю управление под SAMS и отключаю все дефолтные тэги и access’ы то начинается вот эта проблема. Помогите пожалуйста работа встала…служба безопасности обязала обновиться до 3.5

  22. Да, в данный момент сеть работает через шлюз Kerio на WinServ2012, HTTP нормально работает. Отключать надолго интернет и экспериментировать возможности нет, по вечерам разве что. Почитал другие твои статьи — шлюз,ClearOS — круто. Подкоплю теории ещё, сварганю полностью отдельную сетку для экспериментов, пообщаюсь с Linuxоводами с Ростелекома — и думаю всё-таки одолею:)
    Вчера ставил ClearOS — что-то зависла при обновлении на этапе установки, снова попробую. Если с ClearOS всё будет норм — отпадут многие вопросы и можно в нём посмотреть конфиги.

  23. Ставил ClearOS — http нормально работает через весь зоопарк техники и шлюзы. Про Cisco вопрос отпадает.HTTP сразу появляется при выставлении в настройках Proxy server Редиректор — не использовать редиректор. При использовании встроенной Sams — сразу пропадает HTTP. Дело похоже в Sams2.

  24. ребят помогите Ставлю на Centos 7 данную сборку.. Проблема такая правил конфиг /root/sams2-master/src/proxy.h

    поставил в пяти местах значение TrafficType: long но когда компелирую засыпает ошибками когда не ставлю эти значение конфиг норм. Но когда запускаю демона он не стартует и ошибка (апр 10 14:15:43 proxy.domain.local kernel: sams2daemon[2577]: segfault at ffffffffffffffe8 ip 00007fc24888549b sp 00007ffeddb1def0 error 5 in libstdc++.so.6.0.19[7fc2487c7000+e9000]

    2 проблема установил squid настроил по мануалу забил в обозреватель сои прокси сервер порт (в инет заходит но в файле cat /var/log/squid/access.log | grep control не чего нет)

  25. Ребят помогите…. Поставил все как в описании данной статье.
    Все работает супер. Но есть одна серьездная проблема ищу решение уже почти неделю….

    Проблема с sams2 redirect
    В настройках самс выбираю встроенные самс после завожу пользователя в список пытаюсь под ним зайти на e1.ru вылазит такая ошибка (Запрошенная страница, http://www.e1.ru/192.168.0.114/dgp13-003.domain.localivereshchakGETmyip=192.168.0.5myport=3128 не найдена. Воспользуйтесь картой сайта. Если Вы нашли эту ссылку на страницах нашего сайта, пожалуйста, сообщите на какой странице стоит неправильная ссылка по адресу info@corp.e1.ru.)

    Что это может быть подскажите. И как это можно решить (((((((((

  26. Добрый день, люди добрые.
    По статье все супер — настроил, все красиво, АВТОРУ РЕСПЕКТ. !!! НО !!!…..есть проблема , которая выше уже упоминалась автором «Али» про блокировку 80 порта….. перекопав просторы интернета, так и не нашел верного решения данной проблемы (Перенаправление портов, подмена rejik…все безуспешно).
    Есть у кого-нить какие наработки по данной проблеме с sams2 ?

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

Ваш e-mail не будет опубликован.