Когда у меня появилась необходимость настроить полноценный прокси сервер на базе CentOS 7, оказалось, что в интернете почти нет актуальной информации на эту тему. Статьи в целом есть, но большинство из них про 6-ю версию, плюс нету полноценной связки с active directory. В своей статье я восполню тематический пробел.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Содержание:
Введение
Существует проверенная временем связка для прокси сервера - 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
Первым делом вручную синхронизируем часы компьютера с контроллером домена:
# ntpdate winsrv.xs.local
Добавляем наш контроллер в список серверов для обновления в файле /etc/ntp.conf, запускаем ntp и добавляем в автозагрузку:
# systemctl enable ntpd # systemctl start ntpd
Выполняем команду для передачи настроек керберосу:
# 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. Пробуйте выйти в интернет.
Как понять, что все работает правильно:
- Пользователя должно пустить в интернет.
- В лог файле сквида должна быть информация об имени пользователя, который получает доступ. У меня это выглядит примерно вот так при открытии страницы яндекса:
# 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
Он должен отработать без ошибок и в конце вывести полезную информацию:
Сохраните пути, они позже пригодятся во время настройки. Обратите внимание на подчеркнутые строки. Без первой строки не будет поддержки mysql, без второй не заработают списки запрета доступа. Убедитесь, что все в порядке с ними.
Выполняем установку sams2:
# make install
У меня она почему-то проходит с ошибкой:
Суть ошибки в этой строке:
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 указываем пока рута. Сохраняем файл и идем снова в веб-интерфейс, обновляем страничку. У вас должна загрузиться следующая информация:
Нажимаем Run setup program >> . И получаем сообщение об ошибке:
При этом в логе 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
Делаем так:
Сохраняем файл, идем в веб интерфейс и перезагружаем страничку. Должны увидеть форму выбора языка. Выбираем русский:
Проходит проверка требований. У меня такие результаты:
Создаем базу данных. Убедитесь, что пользователя и базы данных для самс, которые вы будете указывать, у вас еще нет в mysql, иначе получите ошибку. Заполняете данные для root и для нового пользователя:
Установка прошла успешно:
Теперь нужно снова отредактировать файл sams2.conf и заменить пользователя mysql на только что созданного:
# mcedit /usr/local/etc/sams2.conf
Проверим работу веб интерфейса. Переходим снова по адресу http://ip-сервера/sams2. Мы должны увидеть окно авторизации. Нажимаем снизу на Авторизация администратора SAMS и вводим пользователя admin, пароль - qwerty. Открывается главное окно системы:
Теперь нам нужно запустить демон 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-подключение вы увидите список пользователей и групп домена.
Чтобы добавить пользователей домена в качестве пользователей самс, необходимо в разделе NTLM снизу нажать на кнопку с домиком и подписью Регистрация новых пользователей, входящих в домен Windows. Выбрать через контрол всех пользователей, которых хотите добавить и нажать Добавить.
Они появятся в списке пользователей:
Чтобы не было ограничения по трафику (вряд ли оно кому-то нужно в наше время), необходимо отредактировать соответствующий параметр в шаблоне Default.
Теперь нужно применить сделанные настройки. Для этого идем в раздел SQUID -> Proxy server и жмем снизу на вторую кнопку слева со стрелочками. Нажимаем на Реконфигурировать. В случае успеха увидите надпись:
На всякий случай можно проверить конфиг 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 и 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 адрес:
Попутно на всякий случай проверьте остальные настройки. Я кое-что подредактировал под свои нужды. Сохраняете настройки и снова перезапускаете сквид через самс. Проверяем файл конфигурации squid.conf:
# cat squid.conf | grep Sams2Proxy acl Sams2Proxy dst 10.1.4.14
В строке появился реальный адрес и сквид больше не ругается на ошибку конфигурации.
Сейчас можно проверять работу. Заходим добавленными пользователями на компьютеры домена, указываем настроенный прокси сервер и серфим. Через некоторое время проверяем статистику в sams. Должны побежать килобайты:
Теперь добавим ограничение для доступа к некоторым сайтам. Для этого идем в раздел Запрет доступа по URL и создаем новый список. Я создал список social и добавил в него адрес социальных сетей для теста: vk.com и ok.ru:
Теперь нужно подключить этот список шаблону по-умолчанию. Идем в шаблон Default, заходим в редактирование и ставим галочку напротив списка social:
Сохраняем изменения шаблона и перезапускаем конфигурацию сквида. Идем к пользователям и проверяем запрет:
При попытке открыть запрещенный сайт, пользователь получит сообщение о запрете. Реализован этот функционал с помощью встроенного в самс редиректора. Никакие другие редиректоры в sams2 не работают. Но как по мне, так и этого достаточно. Что делать если у вас по какой-то причине не работает запрет доступа, как это было у меня?
В первую очередь надо проверить настройки прокси сервера в самс, там где мы указывали ip адрес сервера. Должен быть выбран редиректор встроенный в SAMS. Путь к каталогу, где лежат файлы запрета запроса у меня указан http://10.1.4.14/sams2:
Я не знаю, почему именно такой путь должен быть, я указал наугад, так как по-умолчанию там стоял вообще не существующий адрес. И у меня заработало. Некоторое время я проковырялся с этим параметром, потому что в настройках 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. Были выполнены следующие шаги:
- Сервер был введен в домен Windows для настройки авторизации доменных пользователей на прокси сервере.
- Настроен прокси сервер squid для работы с доменными учетными записями.
- Собран из исходников многофункциональный web интерфейс для управления squid - sams2 самой последней на текущий момент версии.
Первые два этапа сами по себе позволяют полноценно пользоваться прокси сервером, но не дают удобства и гибкости настройки. Иногда это и не нужно и можно не заморачиваться с установкой и настройкой sams. Как ни крути, но установка достаточно хлопотная и нет гарантии, что через некоторое время после смены версий каких-нибудь пакетов или исходников, не появятся новые нюансы, которые не будут отражены в этой статье. С ними придется разбираться заново.
Уровень данной статьи получился чуть выше, чем может рассчитывать новичок в линуксе, но тем не менее я постарался расписать все максимально подробно. Все этапы проверены на чистой системе, чтобы убедиться в достоверности данных и отсутствии ошибок. То есть сначала была исследована тема, настроена конфигурация на тестовой машине. После того, как я убедился, что все работает так, как мне нужно, я на чистой системе еще раз с нуля провел всю конфигурацию по своей шпаргалке и зафиксировал эту чистую настройку в статье.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Здравствуйте Zerox, как можно исправить эту ошибку?
samsdaemon[2194]: ***ERROR: squidlogline.cpp:232 Input string has more then 10 fields (41)
Приветствую !
настраиваю подобный сервер, столкнулся с проблемой: sams2 не считает трафик. все счетчики по нулям.
пробовал разные виды авторизации, ncsa, ntlm. На squid авторизация проходит, логи пишутся.
centos7+squid3.5+sams2
пробовал sams2 от "lex270", не помогло
может кто сталкивался с такой проблемой ? несовместимость squid35 и sams2 ?
В команде "# ntpdate winsrv.xs.local" слово "local" остается? Вместо него не нужно подставлять какое-либо название или адрес? Выводится ошибка "Error resolving DOMEN.YN11.local: Name or service not known (-2)"
А после команды:
"authconfig – enablekrb5 – krb5kdc=authconfig – enablekrb5 – krb5kdc=DOMEN.YN11.local – krb5adminserver=DOMEN.YN11.local – krb5realm=DOMEN.YN11.local – enablewinbind – enablewinbindauth – smbsecurity=ads – smbrealm=YN11.local – smbservers=DOMEN.YN11.local – smbworkgroup=XS – winbindtemplatehomedir=/home/%U – winbindtemplateshell=/bin/bash – enablemkhomedir – enablewinbindusedefaultdomain – update – krb5adminserver=DOMEN.YN11.local – krb5realm=DOMEN.YN11.local – enablewinbind – enablewinbindauth – smbsecurity=ads – smbrealm=YN11.LOCAL – smbservers=DOMEN.YN11.local – smbworkgroup=YN11 – winbindtemplatehomedir=/home/%U – winbindtemplateshell=/bin/bash – enablemkhomedir – enablewinbindusedefaultdomain – update"
вывелась ошибка "authconfig: unexpected argument"
ПОМОГИТЕ плиз
[root@rrocket ~]# systemctl status winbind
● winbind.service - Samba Winbind Daemon
Loaded: loaded (/usr/lib/systemd/system/winbind.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2019-11-19 16:32:24 MSK; 59s ago
Docs: man:winbindd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 1018 (winbindd)
Status: "winbindd: ready to serve connections..."
CGroup: /system.slice/winbind.service
├─1018 /usr/sbin/winbindd --foreground --no-process-group
└─1262 /usr/sbin/winbindd --foreground --no-process-group
Nov 19 16:32:21 rrocket systemd[1]: Starting Samba Winbind Daemon...
Nov 19 16:32:24 rrocket winbindd[1018]: [2019/11/19 16:32:24.005133, 0] ../source3/winbindd/winbindd_cache.c:3160(initialize_winbindd_cache)
Nov 19 16:32:24 rrocket winbindd[1018]: initialize_winbindd_cache: clearing cache and re-creating with version number 2
Nov 19 16:32:24 rrocket systemd[1]: Started Samba Winbind Daemon.
Nov 19 16:32:24 rrocket winbindd[1018]: [2019/11/19 16:32:24.068637, 0] ../lib/util/become_daemon.c:138(daemon_ready)
Nov 19 16:32:24 rrocket winbindd[1018]: daemon_ready: STATUS=daemon 'winbindd' finished starting up and ready to serve connections
Автор большая просьба обновить эту статью под CentOS 8
Т.к. pam_krb5, ntp, ntpdate как минимум в репозитории 8-ки нет
Там много чего нет. Изменения приличные. Я не вижу большого смысла сейчас обновлять на Centos 8. На 7-й работает хорошо, поддержка еще будет долго. Можно пользоваться.
Да, но вот только на 7-ке версия сквида 3.5 как была так и останется, а в 8-ке уже 4.4 плюс вроде там допилили transparent proxy
Получилось сделать прокси с ntlm-аутентификацией на centos8
https://www.golinuxcloud.com/join-centos-rhel-8-windows-domain-ad-winbind/
только не пишите в конфиге самбы эту строку, а то хелпер сквида не поймет к какой группе пользователь относится
'winbind separator = +' might cause problems with group membership.
После установки sams2 (еще до сетапа на этапе вебинтерфейса) выдает:
Forbidden
You don't have permission to access /sams2/index.php on this server.
Помогите, что не так сделал?
А возможно ли интегрировать Squid в ad через sssd, и какие хелперы при этом задействовать?
День добрый. Появилась проблема, не могу решить 2 день.
Необходимо пользователю запретить весь интернет, кроме одного определённого сайта и что то не выходит.
Добавил необходимый сайт в белый список. Пробовал в настройках шаблона выставить галочку "Доступ запрещен ко всем URL" и поставить галочку в необходимый белый список - не пускает. Если запрет не ставить - пускает везде.
Если подскажите как реализовать хотелку - буду крайне признателен
Забыл сказать, что необходимый сайт находится в домене .рф - названиесайта.рф. С сайтами на латинице - всё прекрасно работает.
Спасибо вам огромное за ваши статьи. Я начинаю осваивать linux самостоятельно, и ваши детальные описание помогают реализовывать задумки, и через это мотивируют развиваться и изучать дальше. Удачи вам во всех ваших начинаниях.
Автор, респект за статью!
Не получается настроить редирект. Делаю все по инструкции, но когда перехожу на запрещенный URL, в окне браузера отображается пустая страница с сообщением "Попытка соединения не удалась".
Не могу разобраться... :(
Еще раз пробежался по всем настройкам, проверил работу программы редиректа. Демон редиректа работает, в консоли запросы сайтов отрабатывает корректно, запрещенные сайты блокирует.
Заново запустил браузер Mozilla Firefox.
Попробовал в браузере открыть страницу с информацией о блокировке:
http://192.168.0.4/sams2/blocked.php?action=urldenied
Страница открывается, показывает картинку и текст блокировки. Вроде все ОК.
Захожу браузером на запрещенный сайт, в моем случае vk.com, вижу пустую страницу с сообщением "Попытка соединения не удалась".
Запускаю в браузере приватное окно, перехожу на сайт vk.com и чудо, вижу информацию о блокировке сайта.
Запускаю окно в браузере в обычном режиме, чищу куки браузера, захожу на vk.com и чудо, вижу информацию о блокировке сайта.
Проблема решена.
Автору еще раз спасибо за грамотную статью!!!
Это мой второй комментарий к этой статье. Прокси успешно работает с сентября 2018 года, есть одно неудобство.
В веб-интерфейсе в настройках я включил опцию "Автоматически создавать новых пользователей", и когда новый пользователь домена обращается к прокси - он создаётся, в веб-интерфейсе самса появляется, активен. Но пускать в интернет этого пользователя начинает только после того, как я вручную нажму "реконфигурировать squid". Приходится каждый раз после добавления нового пользователя лезть в веб-интерфейс самс и вручную "включать ему интернет". Хочется исключить этот момент из рабочей рутины.
Это баг или фича или я был где-то невнимателен?
Приходит в голову решение просто поставить в крон команду squid -k reconfigure на каждые 5 минут, но некоторая костыльность смущает
Это не баг и не фича, как я понимаю, а просто реализовано как есть. Sams сам не перечитывает конфиг squid, а это требуется для принятия изменений. squid -k reconfigure на каждые 5 минут, это, конечно, костыль, но если не приводит к каким-то проблемам, то можно и оставить.
Другое простое решение мне в голову не приходит. Можно, конечно, написать скрипт, который будет лазить в базу sams, смотреть там наличие нового пользователя и реконфигурировать squid только при появлении пользователей. Но тут уже надо будет потрудиться, чтобы написать и отладить, хотя ничего особо сложного и нет.
Этот костыль, кстати, не работает )
Я сначала написал комментарий, а потом пошёл пробовать.
Всё логично - для того, чтобы команда squid -k reconfigure применяла изменения - они сначала должны быть внесены в конфиг сквида, а они вносятся только по нажатию кнопки "реконфигурировать" в веб-интерфейсе.
Спасибо за ответ!
Самое простое, чтоб автоматически реконфигурировать SQUID, это засунуть в CRON такой скрипт
---------------
#!/bin/bash
/usr/bin/mysql -usams2user -pXXX sams2db -e "INSERT INTO reconfig (s_proxy_id, s_service, s_action) VALUES('1', 'squid', 'reconfig');"
Это мой второй комментарий к этой статье. Прокси успешно работает с сентября 2018 года, есть одно неудобство.
В веб-интерфейсе в настройках я включил опцию "Автоматически создавать новых пользователей", и когда новый пользователь домена обращается к прокси - он создаётся, в веб-интерфейсе самса появляется, активен. Но пускать в интернет этого пользователя начинает только после того, как я вручную нажму "реконфигурировать squid". Приходится каждый раз после добавления нового пользователя лезть в веб-интерфейс самс и вручную "включать ему интернет". Хочется исключить этот момент из рабочей рутины.
Это баг или фича или я был где-то невнимателен?
Добрый день! При вводе в домен в конце выходит ошибка. Как исправить ее?
# net ads join -U 777
Enter 777's password:
Using short domain name -- LOCAL
Joined 'DAZ' to dns domain 'local.net'
No DNS domain configured for daz. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER
если актуально еще, то надо просто в etc/hosts прописать 127.0.0.1 daz.local.net daz
Привет! Вопрос про встроенный в SAMS2 редиректор. При его использовании есть проблемы с некоторыми узлами, которые используют у себя перенаправления. Браузер или ругается на множественные перенаправления или некорректно отображает страницу. Со страниц https не редиректит. Это только у меня так? Debian8 в LXC, Squid 3.4.8-6, SAMS2-2.0.2.
Собралось и установилось все без проблем.
Доброго дня! Спасибо за статью автору.Все работает отлично, но есть такая проблема, когда я включаю функцию "net.ipv4.ip_forward = 1", и ставлю в браузере пользователя настройки прокси сервера на автоматический режим, открывается все сайты в том числе и запрещенные, и даже пользователь которого нет в sams может заходить в интернет, можете подсказать в чем проблема?
Так это не проблема. Вы включаете роутинг на сервере, плюс у вас наверняка настроен там же NAT. В итоге пользователи даже без настроек прокси, могут выходить через этот сервер в интернет. Автонастройка прокси у вас скорее вcего не работает, поэтому пользователи и получают прямой выход в интернет через сервер без ограничений.
Чтобы так не было, настройте ограничение на прямой выход в интернет на firewall.
Спасибо большое! Все заработало!
Добрый день. Спасибо за статью все работает за исключением отображения трафика у пользователя. squid все считает но в sams не отображает трафик. в настройках sams видит лог файл и видит его размер. Подскажите куда копать
Встроенный редирект не работает!?
http://192.168.1.2/sams2/blocked.php?action=timedenied&id=192.168.1.3 192.168.1.3 control -
sams2redir надо патчить и пересобирать... diff есть тут https://pastebin.com/5EJDSP6D
Очень благодарен за статью, я уж и не надеялся запустить самс на свежих линуксах. Сам бы не справился.
Заметил глюк/баг самса - статистику по трафику считает более-менее правдоподобно, в списке пользователей весело набегают мегабайты, но если открыть статистику по конкретному пользователю - в неё попадают только http запросы, и трафик совсем скромный, сайтов без SSL уже совсем мало осталось. Отчёты по посещениям сайтов по времени - показывают всё нормально, отчёт с графиком потребления трафика - нормально, а вот последняя кнопка отчёта, где листик с синим шаром - игнорирует https.
Не сказать, что для меня это критично, добавил еще SARG и смотрю правильные отчёты там. Но внутренний перфекционист сильно страдает )
мне кажется в строке
mcedit /etc/httpd/conf.d/sams2.conf должно быть mcedit /etc/httpd/conf.d/squid.conf ?
Доброго дня! Столкнулся с одной проблемой, sams не пересчитает "Период ограничения трафика" на день. Например ставлю для каждого пользователя по 500МБ в день после превышения трафика отключается тут всё работает. А вот на завтрашний день всё ещё отключен у пользователя всё ещё нет доступ в интернет. По идеи на завтрашний день должен же работать потому что я вставляю период только на день.
Аналогичная ошибка, как и у пользователя выше
Эта на том шаге где написано Удаляем те конфиги, которые самс сгенерировал автоматически, а потjм перезапускаем httpd, дальше заходим на сайт где у вас ошибка типа - Invalid query: Access denied for user 'apache'@'localhost' (using password: NO), а уменя ошибка, которая Я указывал на вверху
nano /etc/httpd/conf.d/sams2.conf
в конфиге укажите IP вашего ПК
Эта на том шаге где написано Удаляем те конфиги, которые самс сгенерировал автоматически, а потjм перезапускаем httpd, дальше заходим на сайт где у вас ошибка типа - Invalid query: Access denied for user 'apache'@'localhost' (using password: NO), а уменя ошибка, которая Я указывал на вверху
Привет у меня проблема. пытаюсь зайти на браузер http://proxy.office.local/sams2 - пишет you don't have permission to access /sams2/ on this server
Братан проблема решилась путём изменение squid 3.5 на 2.5
Здравствуйте! У меня хотя клиентская машина уже добавлена в Домене, всё равно после настройки прокси при подключение к интернету вылезает окно авторизация, вожу данные от пользователя, который создал в домене - любого вожу авторизация не проходить. Не знаю почему помогите пожалуйста. :)
День добрый, возник трабл, может есть какие мысли?
May 28 12:37:48 lgw-01 systemd: Starting SYSV: Startup/shutdown script for the SQUID Access Management System (SAMS)....
May 28 12:37:48 lgw-01 sams2: Starting sams2: samsdaemon[32302]: ***ERROR: samsconfig.cpp:186 No proxyid defined. Check CACHENUM in config file.
May 28 12:37:48 lgw-01 samsdaemon[32302]: ***ERROR: samsconfig.cpp:186 No proxyid defined. Check CACHENUM in config file.
May 28 12:37:48 lgw-01 sams2: samsdaemon[32302]: ***ERROR: samsconfig.cpp:186 No proxyid defined. Check CACHENUM in config file.
May 28 12:37:48 lgw-01 samsdaemon[32302]: ***ERROR: samsdaemon.cpp:302 No proxyid defined. Check CACHENUM in config file.
May 28 12:37:48 lgw-01 sams2: [FAILED]
May 28 12:37:48 lgw-01 systemd: sams2.service: control process exited, code=exited status=1
May 28 12:37:48 lgw-01 systemd: Failed to start SYSV: Startup/shutdown script for the SQUID Access Management System (SAMS)..
May 28 12:37:48 lgw-01 systemd: Unit sams2.service entered failed state.
May 28 12:37:48 lgw-01 systemd: sams2.service failed.
free-sa анализатор логов squida... если есть опыт то можно и что нибудь подобное... Sarg, lightsquid и пр.
Мне больше всего lightsquid нравится из анализаторов логов squid.
и есть мануал как его посадить на центос7???
Нет. Там ничего сложного, в гугле все есть.
Есть у кого squid.conf рабочий, покажите пожалуйста.
Добрый день. Я устанавливал фри-са на центос 6, а на 7 никак не могу найти информации. Нет ли у вас каких нибудь мыслей на этот счёт? Заранее спасибо.
Что такое фри-са, я не понял.
Добрый день. А есть ли мысли по поводу установки фри-са на центос7? На центос6 я установить смог, но на 7 никак не могу найти ничего. Может кто что знает?
Добрый день.
Спасибо за статью. Установка прошла успешно. Всё запустилось.
Пока что столкнулся с проблемой просмотра статистики самими пользователями.
Когда псотрудник переходит по ссылке http://192.168.1.ххх/sams2/ то слева есть меню "Users"
Так вот меню разворачивается не полностью и в нём никого нельзя выбрать.
Как можно это исправить или подскажите, как можно иначе сотрудникам смотреть свой трафик?
Здравствуйте! Отличная инструкция. Но у меня немного другая задача. Настроил прозрачный прокси squid. На СентОС7. Проблема с Https, в експлорере работает а в других браузерах, мозила, хром. никак. "Ошибка при установке защищенного соединения" или "таймаут". Ну ни как не могу победить.
вот что в конфиге
http_port 10.1.1.9:3130 intercept
https_port 10.1.1.9:3131 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidCA.pem
always_direct allow all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
ssl_bump peek all
ssl_bump bump all
Сертификат создавал так: openssl req -new -newkey rsa:1024 -sha256 -days 265 -nodes -x509 -keyout squidCA.pem -out squidCA.pem
Думаю что беда в сертификатах, так как IE работает со своими центрами сертификации.
Использую вот такой iptables:
*nat
:PREROUTING ACCEPT [14100:2070250]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [233:14793]
:POSTROUTING ACCEPT [233:14793]
-A PREROUTING -s 10.1.0.0/20 -p tcp -m multiport --dports 80,8080 -j REDIRECT --to-ports 3130
-A PREROUTING -s 10.1.0.0/20 -p tcp -m multiport --dports 443 -j REDIRECT --to-ports 3131
-A POSTROUTING -s 10.1.0.0/20 -j MASQUERADE
COMMIT
*filter
:INPUT DROP [6508:614096]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [11167:1907947]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 10.1.0.0/20 -p tcp -m multiport --ports 3130 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 10.1.0.0/20 -p tcp -m multiport --ports 3131 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -s 10.1.0.0/20 -p tcp -m multiport --ports 53,110,25,21 -j ACCEPT
COMMIT
Хелп ми плиз, уже лоб разбил об не пробиваемую стену.
https://energobudmgmt-my.sharepoint.com/:i:/g/personal/arykun_tmm-pbs_com/EZyVrlgMkeFHhp5aSIcJ40cBCcv2sOpbPVXA25D0ZKHLbA?e=fQ10ei
Эт картинка для понимания, что показывает браузер.
Так сама прокси вообще работает в этих браузерах? Может в них просто авторизация пользователя не работает, поэтому и не пускает.
Да, не прозрачный прокси работает без проблем. Авторизация пользователей не настроена, впускает всех.
Здоров! Постараюсь кратко. ОС CentOS7, решил настроить SQUID по упомянутой выше ссылкой на blog.it-kb.ru. Там Ubuntu, но не велика разница. Практически все этапы конфига под CentOS адаптированы, кроме одного. Так вот когда 'squid -v', нет модуля 'wrapper', по пути /usr/lib/ папки squid нет совсем, а по /usr/lib64/squid/ модуль negotiate_wrapper_auth отсутствует, а всё остальное для аутентификации присутствует. В squid.conf не могу завести первый этап аутентификации 'NTLM и Kerberos', второй этап 'только NTLM' работает. Сам kinit отрабатывает удачно.
В общем не могу на CentOS7 понять какая альтернатива в squid.conf в строке аутентификации для первого этапа 'auth_param negotiate program /usr/lib64/squid/negotiate_wrapper_auth(он отсутствует) --ntlm /usr/bin/ntlm_auth(это есть) --diagnostics --helper-protocol=squid-2.5-ntlmssp --kerberos /usr/lib64/squid/negotiate_kerberos_auth(это есть) -r -s HTTP/kva-ad01-squid.gav.com@GAV.COM'. В логе пишет "(squid-1): authenticateNegotiateHandleReply: *** Unsupported helper response ***, ' ' " когда не закоментирован первый этап аутен-ции. Гуглил трабл по CentOS, везде указывается squid -v без wrapper. В чем подвох?
Спасибо за статью. Но может стоит немного изменить порядок. Поменять местами установку SQUID и подключение к домену. Поясню - я не слишком разбирающийся и делающий все по бумажке. Делал все как описано. Установка SQUID, запуск, проверка - все работает отлично. Перезагрузка - squid не стартует. Проверка статуса - пишет, что служба не запущена - "getpwnam failed to find userid for effective user 'squid'". Смотрю в пользователях - действительно нет. Пытаюсь добавить - пишет - уже есть такой пользователь. Пытаюсь удалить - пишет нет такого пользователя.
Потом сообразил - (шутка от AD Win), что уже есть пара работающих squid-прокси под Free-BSD в других удаленных офисах компании, и соответственно (лень же путаться в именах, поэтому обозвали так-же) в AD Windows есть пользователь "sqiud", под которым проводиться проверка. Поэтому при установке SQUID система его просто не создавала - брала из AD.
В общем поступил так - вначале установил "голый" SQUID, затем "воткнул" машинку в домен и настроил squid по вашим рекомендациям.
нужна помощь. в глоб интеренет раздается с помощью iptables. встал вопрос что периодически необходимо по тому или иному сотруднику подавать статистику по активности в интернете. решил развернуть для этих целей squid, встал 3.5.20. для этого в iptables добавил правило:
$IPT -t nat -A PREROUTING -d $WAN -p udp -m udp --dport 80 -j DNAT --to-destination $LAN_IP:3128
в squid.conf внес правку:
http_port 3128
http_port LAN_IP:3128 intercept
в итоге в логе squid пишет что старт нормальный, но вот по трафику все по нулям. в журнале тоже.
В связи с чем вопрос какие правки нужно внести чтоб все работало как надо?
Добрый день. На предприятии поднял два сервера Server 2008 R2 (AD+DHCP+DNS) и на Centos 7 (Squid+SAMS2), все настроил, ввел пользователей работает идеально но заметил такую вещь, когда я пытаюсь с пользовательских компов пропинговать скажем yandex.ru или google.com то мне "При проверки связи не удалось обноружить узел yandex.ru. Проверте имя узла и повторите попытку.", а когдапингую c Centos7 пинги проходят. В чем может быть дело?
Это явно настройки firewall иди dns. Проверьте пинг не по имени сервера, а по ip напрямую, например 77.88.8.1 Так будет более понятно, в чем проблема.
по ip пинги проходят с легкостью с клиентских машинок (windows 10), вот уже третий день копаюсь))) есть еще одна машинка на ней pfsens и пинги проходят идеально а вот на centos не хочет.
Если по ip пингует, а по имени нет, то 100% проблема с днс, к гадалке не ходи.
Добрый вечер. Нужен помощь. Squid поднял в Hyper-V где AD Windows 2008R2(AD+DNS). Получается у меня один интерфейс. Есть Cisco ASA он и шлюз. Когда в ASA прописываю правило чтобы все пакеты проходили через Squid, клиентам пропадает интернет. Всем клиентам прописывал настройки прокси(192.168.10.56:3128).
Windows 200R2 IP 192.168.10.55
Squid IP 192.168.10.56
Cisco ASA 192.168.10.249 + Public IP Address
Связка squid+kerberos у меня работает с пк в домене .Т.е те кто не используют kerberos ,без проблем работают при вводе домена/логин и пароль .И вам не пришлось ставить winbind ?Мне важно,чтоб я мог так же ограничивать пользователй ,которые вне домена ,доступ к социалкам + статистика +логин и пароль брался из AD.
Нужна авторизация через учетки AD (для ПК ,программ) вне домена . Бывает ,что некоторые программы не отрабатывают через kerberos и приходилось переводить на proxy + sams .
По вашему опыту связка squid+AD+winbind+Sarg стабильная ?или стоит помучить sams для CentOS
Я последний раз использовал связку такую: squid+kerberos для прозрачной авторизации в AD. Те, кто не умею kerberos, используют ntlm. Управляется доступ с помощью групп в AD, статистика через lightsquid (мне просто эти отчеты больше нравятся). За основу брал вот эту статью - https://blog.it-kb.ru/2014/06/16/forward-proxy-squid-3-3-on-ubuntu-server-14-04-lts-part-1-install-os-on-hyper-v-generation-2-vm/
Настраивается не очень просто, много нюансов, но удобство и стабильность работы меня устроили. Уж точно надежнее, чем с sams.
если я правильно понял ,при использовании NTLM для авторизация в squid ,придется ставить winbind ?
В общем случае winbind нужен для работы с AD. Если будет авторизация в AD, то winbind нужен. Если без AD, то можно обойтись авторизацией basic от squid. Тогда ничего дополнительного не надо. Все учетки будут храниться в базе squid.
от Squid не собираюсь отказываться,возник вопрос ..как сделать ,чтоб те пользователи которые не в домене ,просто вводили в браузере домен/пользователь и пароль . Такое возможно ,если да то каким образом ?
NTLM авторизация в squid, если не ошибаюсь, так и работает. Если компьютер не в домене, то пользователю в браузере будет предложено ввести доменную учетную запись. Если она у него есть, то он будет авторизован с ее помощью.
Доброе время суток. Возник вопрос ,какое решение можно поднять для ПК которые не в домене (с ОС типа домашней или программ где нужно заполнять логин ,пароль)?
В данный момент использую Sams + Squid+Sarg но т.к Sams уже оч давно не поддерживается и сам прокси на Ubuntu 10.04 .
Ничего лучше из бесплатного и не придумали. Альтернатив squid нет. И лучше sams я не видел админки для него.
и еще
[root@PROXYSRV old]# cat log.wb-CASE-20180108
[2018/01/02 08:56:49.540015, 0] ../source3/winbindd/winbindd.c:280(winbindd_sig_term_handler)
Got sig[15] terminate (is_parent=0)
[2018/01/06 12:22:41.161764, 0] ../source3/libsmb/trusts_util.c:272(trust_pw_change)
2018/01/06 12:22:41 : trust_pw_change(CASE): Verified old password remotely using netlogon_creds_cli:CLI[PROXYSRV/PROXYSRV$]/SRV[CONTROLLER/CASE]
[2018/01/06 12:22:41.572878, 0] ../source3/libsmb/trusts_util.c:314(trust_pw_change)
2018/01/06 12:22:41 : trust_pw_change(CASE): Changed password locally
[2018/01/06 12:22:42.003820, 0] ../source3/libsmb/trusts_util.c:330(trust_pw_change)
2018/01/06 12:22:42 : trust_pw_change(CASE): Changed password remotely using netlogon_creds_cli:CLI[PROXYSRV/PROXYSRV$]/SRV[CONTROLLER/CASE]
[2018/01/06 12:22:42.007570, 0] ../source3/libsmb/trusts_util.c:363(trust_pw_change)
2018/01/06 12:22:42 : trust_pw_change(CASE): Verified new password remotely using netlogon_creds_cli:CLI[PROXYSRV/PROXYSRV$]/SRV[CONTROLLER/CASE]
Привет. Стакнулся с проблемой:
1) [root@PROXYSRV squid]# less cache.log | grep WARNING
2018/01/08 10:27:34 kid1| WARNING: All 5/5 redirector processes are busy.
2018/01/08 10:27:34 kid1| WARNING: 5 pending requests queued
2018/01/08 10:27:34 kid1| WARNING: Consider increasing the number of redirector processes in your config file.
2018/01/08 11:05:58 kid1| WARNING: All 10/10 ntlmauthenticator processes are busy.
2018/01/08 11:05:58 kid1| WARNING: 10 pending requests queued
2018/01/08 11:05:58 kid1| WARNING: Consider increasing the number of ntlmauthenticator processes in your config file.
2018/01/08 15:54:48 kid1| WARNING: All 5/5 redirector processes are busy.
2018/01/08 15:54:48 kid1| WARNING: 5 pending requests queued
2018/01/08 15:54:48 kid1| WARNING: Consider increasing the number of redirector processes in your config file.
2018/01/09 09:23:45 kid1| WARNING: All 10/10 ntlmauthenticator processes are busy.
2018/01/09 09:23:45 kid1| WARNING: 10 pending requests queued
2018/01/09 09:23:45 kid1| WARNING: Consider increasing the number of ntlmauthenticator processes in your config file.
2) [root@PROXYSRV squid]# less cache.log | grep ERROR
2018/01/08 03:42:48 kid1| ERROR: NTLM Authentication validating user. Result: {result=BH, notes={message: NT_STATUS_UNSUCCESSFUL NT_STATUS_UNSUCCESSFUL; }}
2018/01/08 09:02:07 kid1| ERROR: NTLM Authentication validating user. Result: {result=BH, notes={message: NT_STATUS_UNSUCCESSFUL NT_STATUS_UNSUCCESSFUL; }}
2018/01/08 15:01:58 kid1| ERROR: NTLM Authentication validating user. Result: {result=BH, notes={message: NT_STATUS_UNSUCCESSFUL NT_STATUS_UNSUCCESSFUL; }}
1) vim /etc/squid/squid.conf
auth_param ntlm children 10 - это означает сколько юзеров?
В логе видно, что не хватает процессов, которые осуществляют авторизацию. Я уже немного подзабыл, что за параметр за это отвечает, давно не использую squid. Судя по ошибке, надо увеличить кол-во процессов для ntlm авторизации. Сейчас их 10 и их не хватает, образуется очередь.
Увеличил до 50.
/etc/squid/squid.conf
auth_param ntlm children 50
Добрый вечер. Proxy идёт вместе с шлюзом или как отдельный подсеть?
Не понял вопроса.
У кого-нибудь получилось собрать sams2 на centos 8? Если не ставить пакет mariadb-devel, то sams2 собирается.
Доброго дня! Спасибо за статью автору. Вопрос, кто нибудь столковался с непонятными ошибками но при этом всё работает.
Dec 27 16:45:13 PROXYSRV DB_PASSW0[1296]: +++WARNING: Unknown cache result TCP_INM_HIT
Dec 27 16:45:13 PROXYSRV DB_PASSW0[1296]: ***ERROR: squidlogparser.cpp:445 Unknown cache result
И ещё это уже понятная ошибка :)
Dec 27 08:57:23 [localhost] sams2: samsdaemon[1098]: ***ERROR: mysqlconn.cpp:57 mysql_real_connect: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
При этом #after=network.target не помогло.
Непонятные ошибки у меня были и при этом все работало.
А вторая ошибка явно говорит о том, что не может подключиться к сокету mysql. Либо прав не хватает, либо mysql не запущена.
Добрый день!
Все вроде бы ничего, но очень тормозит и интернет и http локальные ресурсы в сети при работе через прокси. Обычную интернет страницу открывает очень долго, как и внутренние ресурсы. В логах все чисто. В чем может быть дело?
Привет. Такое чаще всего возникает из-за проблем с dns.
Огромное спасибо за Ваши статьи!
После установки прокси, в системе появляются открытые порты ipv6:
tcp6 0 0 :::3128 :::* LISTEN 1167/(squid-1)
udp6 0 0 :::35816 :::* 1167/(squid-1)
Подскажите, пожалуйста, можно ли как-то отключить использование ipv6 протокола в squid?
Думаю, достаточно будет в системе отключить ipv6, и сквид перестанет на нем работать:
https://serveradmin.ru/nastroyka-seti-v-centos/#_ipv6_CentOS_7
И снова, Спасибо!
В данной системе ipv6 был тоже отключён, при первоначальной настройке сервера, по Вашей статье :)
А открытые порты появились уже потом, после установки squid.
насколько я понимаю, всё это вокруг архива с SAMS 2.0.0-b1 (Beta 1) (2010-02-26) взятого с githab?
Тем кто сейчас до этого дочитает, предлагаю использовать последние имеющиеся оригинальные сборки (07.2016)
sams2-2.0.2 debian x86_64
sams2-2.0.2 rhel7 x86_64
можно нагуглить.
Добрый день, а подскажите необходимо на проксе сервере включать опцию ядра "net.ipv4.ip_forward = 1" или проксирование будет работать и без этой опции?
и насколько я понимаю для работы сквида если заним ниже в локалке есть файрвол то на файрволле необходимо открыть 1328 порт только со стороны пользовательской сети? или необходимы и обратные полиси с прокси в пользовательскую сеть?
Добрый день, все сделал по вашей статье и все работает, кроме статистики по пользователям по посещаемым ресурсам. Статистика молчит почему то.
Добрый день.
Все содержание acl располагается в squid.conf, например:
acl Sams2Template6 proxy_auth user1
acl Sams2Template6 proxy_auth user2
acl Sams2Template7 proxy_auth user3
acl Sams2Template7 proxy_auth user4
Как сделать, чтобы acl хранился в отдельном файле?
Просто взять и прописать acl Sams2Template7 proxy_auth /etc/squid/TEST.sams не помогает.
Спасибо.
net ads join -U admin1 Enter admin1's password:
Using short domain name -- SRS
Joined 'SQUID' to dns domain 'srs.lan'
No DNS domain configured for squid. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER
Это не проблема. Просто вручную создайте на днс сервере "А" запись с именем сервера, который ввели в домен.
Здравствуйте
Не знаю может нужно путь прописать к прокси-серверу, но вот знать бы где))
в Веб морду попал же?
Да, все запустилось, но после запуска sams2 вот такое вылазит:
Job for sams2.service failed because the control process exited with error code. See "systemctl status sams2.service" and "journalctl -xe" for details.
sams2.service - SYSV: Startup/shutdown script for the SQUID Access Management System (SAMS).
Loaded: loaded (/etc/rc.d/init.d/sams2; bad; vendor preset: disabled)
Active: failed (Result: exit-code) since Ср 2017-09-27 13:18:18 MSK; 1min 37s ago
Docs: man:systemd-sysv-generator(8)
Process: 2339 ExecStart=/etc/rc.d/init.d/sams2 start (code=exited, status=1/FAILURE)
сен 27 13:18:18 localhost.localdomain systemd[1]: Starting SYSV: Startup/shutdown script for th.....
сен 27 13:18:18 localhost.localdomain systemd[1]: sams2.service: control process exited, code=e...=1
сен 27 13:18:18 localhost.localdomain sams2[2339]: Starting sams2: [СБОЙ ]
сен 27 13:18:18 localhost.localdomain systemd[1]: Failed to start SYSV: Startup/shutdown script.....
сен 27 13:18:18 localhost.localdomain systemd[1]: Unit sams2.service entered failed state.
сен 27 13:18:18 localhost.localdomain systemd[1]: sams2.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
как решил проблему?
Здравствуйте, такой вопрос:можно ли все это организовать, если веб-сервер и прокси-сервер находятся на разных машинах?
по идее можно, попробуй. Отпиши как получилось
Так я и пробовал, но застопорился на запуске демона
Ура) пошло) когда по ссылке вашей ставил https://github.com/lex270/sams2/archive/master.zip) спасибо за помощь)
Пожалуйста. Рад, что помогло )))
Доброго времени суток!) Поставил по Вашему мануала, всё отлично встало) Только один вопрос, включён встроенный редиктор SAMS и когда открываешь обычные страницы, то есть http:// вот такая вот ошибка (этот сайт не в черном списке)
The requested URL /192.168.1.27/192.168.1.271701GETmyip=192.168.1.31myport=3128 was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
когда открываешь сайты https:// все в порядке.
Подскажите куда копать? в чем может быть проблема
to Александр
Проблема с редериктом. Либо откатывайте squid до версии 3.2 или 3.3 (точнее не помню) либо исправляйте исходники. Еще может быть проблема с временным интервалами sams2 не дает удалить из шаблонов все временные интервалы, поэтому используйте 01.00-23.59 (в конфиг пропишется 00.00-23.59).
Я форкнул проект SAMS2 на GIT и подправил нужные файлы https://github.com/lex270/sams2
Исправление работы SAMS2 c прокси-сервером SQUID 3.5:
1. Исправление samsredir.cpp - решает проблему нерабочего встроенного редиректора.
Из-за проблемы редиректор не работал либо запрос выдвал ошибку 404 иногда с подстановкой
в адресную строку записи вида myip=192.168.0.1 myport=3128
2. Исправление файлов squidlogline.h, squidlogline.cpp и squidlogparser.cpp - добавление
возможности обработавать ..._ABORTED,TAG_NONE, TCP_TUNNEL (на работу не влияет,
но засоряется /var/log/messages)
3. Исправление файла proxy.h
Остальное без изменений
Все остальное делайте по это статье.
Автору статьи ОГРОМНОЕ спасибо!!!
Отлично, спасибо за исправления. Видно, самс2 все еще актуален. Надо будет обновить статью. Хотя сам я им больше не пользуюсь.
Мне он тоже особо не нужен. С SAMS проще управлять пользователям без знания linux пока я в отпуске или в командировке, а аналогов не нашел.
Я настраиваю сейчас с авторизацией через AD и группы доступа в этой же AD. А статистику генерю с помощью lightsquid. Получается почти так же удобно, и надежно. Жаль, не хватает времени написать статью. Один минус только - списки ограничений в текстовых файлах на сервере по ssh. Простого решения не придумал, как с ними работать людям без доступа к ssh. Если только через webmin, но тоже не очень решение.
Спасибо, что откликнулись) у меня версия squid 3.5.20, я пробежался по исправлениям и у меня все поправлено уже было с вашими коментами) видимо исправили уже исходники. но не работает. попробую поставить squid 3.2 .
Или какие предложения есть?
Ради эксперимента поднял centos с 0. squid 3.5.20. Установил все по этой статье (кроме дистра sams2-взял ссылку со своего форка https://github.com/lex270/sams2/archive/master.zip). Все норм. При установке с оригинального sams2 появляются ошибки подобные вашей. Но только при включенном редиректоре.
Попробуйте отключить редиректор проблема пропадает (после отключения проверте конфиг squid на отсутствие sams2redir)?
Хорошо, так и сделаю) сейчас накачу
пашла радимая))))
systemctl status sams2.service -l
● sams2.service - SYSV: Startup/shutdown script for the SQUID Access Management System (SAMS).
Loaded: loaded (/etc/rc.d/init.d/sams2; bad; vendor preset: disabled)
Drop-In: /etc/systemd/system/sams2.service.d
└─override.conf
Active: failed (Result: exit-code) since Пн 2017-09-04 14:34:37 +05; 22s ago
Docs: man:systemd-sysv-generator(8)
Process: 2776 ExecStart=/etc/rc.d/init.d/sams2 start (code=exited, status=1/FAILURE)
Starting SYSV: Startup/shutdown script for the SQUID Access Manageme nt System (SAMS)....
Starting sams2: .....[СБОЙ ]
sams2.service: control process exited, code=exited status=1
Startup/shutdown script for the SQUID Access M anagement System (SAMS)..
Unit sams2.service entered failed state.
sams2.service failed.
При добавлении сервер в домен net ads join -U administrator возникает ошибка: Failed to join domain: failed to lookup DC info for domain 'xxx.local' over rpc: Logon failure. Хотя сам контроллер домена пингуется с данного сервера и по коротокому и по длинному имени.
Добрый день!! После всех проделанной работы. выходит ошибка Invalid query: Access denied for user 'root'@'localhost' (using password: YES). прописывал логин и пароль в файле mcedit /usr/local/etc/sams2.conf. нет результатов. Помогите плиз
Добрый день.
Во время проверки SAMS2 выдал ошибку:
Web-интерфейс SAMS требует права на запись в каталог ./data
недоступен для записи
Каталог ./data закрыт для записи. Чтобы продолжить установку, настройте разрешения вручную.
Как я понимаю это папка по адресу: /usr/local/share/sams2/data
Побывал давать права доступа apache и выставлял chmod -R 777, но безрезультатно.
Подскажите, пожалуйста, какие права нужно установить
добавить строку в /etc/php.ini
safe_mode_exec_dir = "usr/local/share/sams2/bin"
попробуй
setenforce 0
Добрый день.
Подскажите Вы Magick40 21.04.2017 at 10:48 решили свою проблему
Добрый день, люди добрые.
По статье все супер - настроил, все красиво, АВТОРУ РЕСПЕКТ. !!! НО !!!.....есть проблема , которая выше уже упоминалась автором "Али" про блокировку 80 порта..... перекопав просторы интернета, так и не нашел верного решения данной проблемы (Перенаправление портов, подмена rejik...все безуспешно).
Есть у кого-нить какие наработки по данной проблеме с sams2 ?
Ребят помогите.... Поставил все как в описании данной статье.
Все работает супер. Но есть одна серьездная проблема ищу решение уже почти неделю....
Проблема с 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.)
Что это может быть подскажите. И как это можно решить (((((((((
Добрый день.
Подскажите Вы Magick40 решили свою проблему?
Точно такая же проблема.
ребят помогите Ставлю на 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 не чего нет)
Ставил ClearOS - http нормально работает через весь зоопарк техники и шлюзы. Про Cisco вопрос отпадает.HTTP сразу появляется при выставлении в настройках Proxy server Редиректор - не использовать редиректор. При использовании встроенной Sams - сразу пропадает HTTP. Дело похоже в Sams2.
Да, в данный момент сеть работает через шлюз Kerio на WinServ2012, HTTP нормально работает. Отключать надолго интернет и экспериментировать возможности нет, по вечерам разве что. Почитал другие твои статьи - шлюз,ClearOS - круто. Подкоплю теории ещё, сварганю полностью отдельную сетку для экспериментов, пообщаюсь с Linuxоводами с Ростелекома - и думаю всё-таки одолею:)
Вчера ставил ClearOS - что-то зависла при обновлении на этапе установки, снова попробую. Если с ClearOS всё будет норм - отпадут многие вопросы и можно в нём посмотреть конфиги.
Респект за труд!!! С 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
Спасибо за статью! Работает.
Вопрос: как заставить самс стартовать после mysql?
Обращаю внимание - если у кого вылезет ошибка при получении тикета Kerberos
kinit: KDC reply did not match expectations while getting initial credentials
То при запросе тикета домен писать большими буквами!
kinit username@DOMAIN.COM
Спасибо тебе добрый человек, три часа потратил чтобы найти этот затык, пока комментарий не прочитал.
В просторах ИНЕТА пишут что "Добавляем пользователя proxy в группу winbindd_priv для того чтобы у него был доступ в /run/samba/winbindd_privileged, иначе NTLM работать не будет" в статье такого нету, может дело в этом что у меня прокси не работает?
Добрый день.
Надеюсь на помощь, дошел до добавления в автозагрузку 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 нет универсальных рекомендаций. Я иногда часами ковыряюсь, когда очередной сервер пытаюсь заставить нормально работать с доменными учетками.
На команде
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.
Подскажите пожалуйста как лечить. Заранее благодарен
В smb.conf поменять security = ads на security = ADS
[root@squid ~]# /usr/bin/ntlm_auth --username=admin
Password:
NT_STATUS_OK: Success (0x0)
добрый день! Все делал по Вашей статье. Сервер успешно завел в домен. 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
тоже самое было, помогло отключение ipv6
дописать в /etc/sysctl.conf:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
sysctl -p
systemctl restart network
Спасибо большое за статью, очень помогла. Возникли некоторые комментарии:
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 удалить все временные интервалы - в нет не пускает.
чувак ты крут
Потратил день на различные тесты, в общем ограничение скорости работает, но в конфиге не отображается, с чем это связано, как работает весьма не понятно, в остальном все просто замечательно. Единственное - вопрос: Я так понимаю, это настройка прозрачного прокси? И еще, было бы не плохо если в статью добавили как все же фильтровать и запрещать запросы по HTTPS (потому что многие соц. сети перешли на https в том числе и vk.com), вроде как ее смогли реализовать на прозрачном прокси, но толковой информации я так и не нашел, спасибо.
Нет, это не прозрачный прокси. Я через групповые политики указывал всем пользователям адрес прокси. Соответственно, https он тоже блокирует, можно закрывать социальные сети и т.д. В прозрачном режиме по-умолчанию squid не фильтрует https вообще никак. Для того, чтобы это работало, нужно патчить сквид. Я видел подобные примеры, у людей получалось, но задача эта не самая простая, но при большом желании можно сделать. Мне любопытно попробовать этот способ, но руки не доходят пока.
Статья отличная, очень все доходчиво и просто!! Есть вопрос, ограничение скорости через SAMS как выглядит? я создал пул ограничение скорости, но ничего не поменялось, скорость осталась прежней, и squid.conf в delay_pools,class и т.д. ничего не появляется! Как работает пул ограничения и как его настроить правильно?
Кто-то уже жаловался на то, что ограничение скорости не работает. То ли в этой теме, то ли в теме про freebsd. Я этот функционал не проверял, поэтому ничего сказать не могу.
Попробовал в общем прописать users, ситуация никак не изменилась, группы экспортируются пустые, после долгих мучений с SAMS и отсутствия какой-либо поддержки SAMS я снёс, настроил squid на авторизацию ntlm по доменной группе, и больше туда лазить нет никакого смысла, пользователей добавляю в группу в AD, статистику смотрю через lightsquid, в принципе большего мне не надо.
Зы: автор видимо тоже забил на эту ветку...
Я сделал то же самое, только чуть посложнее и с авторизацией по kerberos, но ntlm тоже настроил. Групп сделал несколько с разными доступами и списками. Самс у меня продолжает работать там, где я его настроил. Но больше я его не хочу использовать. Слишком глючно и ненадежно.
Владимер, будет ли опубликована статья с авторизацией по kerberos и добавлением групп из AD?
У меня синхронизация с AD при авторизации ntlm не работает, при импорте создаются пустые группы. А при запуске из командной строки команды на синхронизацию валится куча ошибок, видимо надо править скрипт syncfromntlm. При методе авторизации adld SAMS не видит группы созданные в домене на win2008r2, зато мигрированные из, или созданные в более старых доменах группы видит. Пришлось обмануть SAMS создав группу руками с таким же именем как в AD, и после включения синхронизации этой группы с AD все пользователи подтянулись в SAMS и даже добавились ACL в конфиг сквида, однако радость была недолгой. Все дело в том что подгрузившиеся пользователи из AD были в формате IvanovII, а сквид пользователей с символами в имени в верхнем регистре пускать в интернет отказался, не помог и параметр casensetive off. Я так понимаю он только для аутентификации "basic"? А вот если добавлять пользователей не из групп а по одному или же группой но созданной в более старых доменах чем win2008r2, опять же только при методе авторизации ntlm (как в статье), то все работает замечательно, но для меня такой вариант не подходит, это надо каждого пользователя заводить через веб интерфейс SAMS вручную. Попробую поставить в настройках ntlm группу users как автор указал в комментах, у меня там вообще прописана группа из AD с админскими правами, про gr_sams я наверное упустил?
Добавлю полезный комментарий на статью в почте. Может кому-то пригодится:
"Хотел добавить:
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, иначе при импорте групп пользователи не добавятся."
Здравствуйте! Можете рассказать по подробнее про after=network.target где его нужно убрать? Я не нашел скрипт mariadb.service, где оно находится? Спасибо большое за статью!!!
Здравствуйте ну подскажите где именно добавить сроку after=network.target как попасть в скрипт mariadb.service
Всем добра!
Спасибо за статью. Интересная и полезная.
Интереснее было бы почитать если в качастве AD выступала Samba c базой LDAP и авторизацией kerberos для домена и прокси.
Мне бы тоже было интересно :)) Я настраивал связку squid + авторизация kerberos из Win AD и доступ пользователей на основе групп AD. Наработки есть, схема рабочая, но нет времени оформить в нормальную статью.
Разобрался. Может кому пригодится.
Привязка к группам:
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
Спасибо, полезная информация.
Подскажите, пожалуйста, как без использования sams2 разрешить доступ в интернет только пользователям входящим в определенную группу AD?
Тут нет проблем. В интернете есть статьи по настройке squid с интеграцией в AD. Там все даже проще будет в настройке, чем с самсом. Нужно будет добавить сервер в домен, настроить сквид и в конфиге указать группу из домена, которой разрешен выход в интернет.
Инструкцию по заведению сервера в домен можно использовать эту. Вам нужно только поискать про интеграцию сквида с AD. Там пара строчек в конфиге.
Сервер я успешно завел в домен. ntlm авторизацию настроил. Все делал по Вашей статье. Большое Вам за нее спасибо.
Статей про интеграцию сквида с AD очень много, но большинство из них старые (2003, 2005 год) зачастую в них описывается настройка для Debian или Ubuntu. Попробовал сделать привязку к группе по нескольким статьям - не заработало.
Если настройка интеграции с AD это всего пару строчек в конфиге, пожалуйста, подскажите мне их либо направьте на хорошую статью.
У меня нет под рукой готового рецепта. Можно установить самс, сделать все настройки, убедиться, что работает и подсмотреть, что он пишет в конфиг. Потом по аналогии то же самое сделать но уже без него.
Доброго времени суток !
Дорогой автор, имеется 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/
В общем, авторизация пользователей ntlm с логином из кириллицы не проходит (не пускает в нэт), через adld все нормально.
vladimir а не подскажите как ADLD правильно настроить, что то дойти не получается в доках по самсу пусто.
Здравствуйте! Большое спасибо за инструкцию! Очень информативная. Пару месяцев назад пытался реализовать всё это дело но так и не получилось работающий SAMS на CentOS 7. Благо вы подоспели) За что вам большая благодарность.
У меня вопрос: можно ли как-нибудь сделать авторизацию через AD для пользователей с учётными записями на кирилице?
На латинице всё работает корректно. С русскими логинами к сожалению нет.
Думаю, что без правки исходников нет. Там есть еще по авторизациям некоторые проблемы. Например, если пароль длиннее 8-ми символов, то при авторизации пользователя для проверки своей статистики будут учитываться только первые 8 символов, а не весь пароль, если он длиннее. В общем, у самса много проблем и они больше не решаются.