Введение
Существует проверенная временем связка для прокси сервера – squid sams. Я настраивал ее еще лет 8 назад на Freebsd. Недавно у меня появилась необходимость настроить что-то подобное на CentOS 7, и я с удивлением обнаружил, что ничего принципиально нового с тех пор не появилось. Никакой более удобной и информативной web панели к squid не придумали.
Так что будем настраивать проверенный временем набор программ. Ко всему прочему, удобнее его сразу интегрировать с виндовым доменом, для простой авторизации на прокси с помощью учетных записей домена. Так проще будет смотреть статистику и давать доступ.
Приступим к настройке. В своей работе я буду подразумевать, что вы установили и настроили centos по моим рекомендациям. Советую ознакомиться с материалом. Это позволит здесь не тратить время на второстепенные настройки, которые не имеют прямого отношения к теме статьи.
Introduction
Nginx is one of the leading web servers in active use. It and its commercial edition, Nginx Plus, are developed by Nginx, Inc.
1: войдите как root-пользователь
Получив свой IP-адрес и root-пароль, войдите на сервер как главный пользователь (root). Для этого используйте команду (замените выделенный IP своим IP-адресом):
Терминал вернет что-то вроде:
The authenticity of host ‘111.22.33.444 (111.22.33.444)’ can’t be established.ECDSA key fingerprint is 79:95:46:1a:ab:37:11:8e:86:54:36:38:bb:3c:fa:c0.Are you sure you want to continue connecting (yes/no)?
Выберите yes и введите свой root-пароль.
Примечание: использовать учетную запись root на регулярной основе не рекомендуется; данное руководство поможет создать другого пользователя для постоянной работы.
1: подготовка клиента ipa
Сначала нужно подготовить клиентскую машину к запуску FreeIPA: указать имя хоста сервера, обновить системные пакеты и проверить записи DNS.
Имя хоста клиента должно совпадать с FQDN клиента FreeIPA.
Invalid hostname ‘XXX’, must be fully-qualified
Появляется при запуске команды ipa-server-install.
Причина: имя нашего сервера не является FQDN (полным доменным).
Решение: задаем полное имя с доменом командой:
hostnamectl set-hostname ipa-server.test.local
* в данном примере у сервера будет имя ipa-server в домене test.local.
2: измените пароль
На данный момент используется root-пароль, установленный по умолчанию и полученный после регистрации сервера. Первое, что нужно сделать, – заменить его собственным паролем.
passwd
Что касается устанавливаемых паролей, система CentOS очень осторожна. Потому после ввода нового пароля может появиться извещение BAD PASSWORD. Можно либо установить более сложный пароль, либо же проигнорировать сообщение: на самом деле, CentOS примет даже слишком простой или короткий пароль, хотя и предложит использовать более сложную комбинацию.
2: установка клиента freeipa
Клиентский пакет FreeIPA можно найти в репозитории CentOS 7 по умолчанию:
yum install freeipa-client
Запустите команду установки FreeIPA. Она запустит сценарий, который поможет настроить FreeIPA и выполнить аутентификацию на сервере FreeIPA.
ipa-client-install –mkhomedir
Благодаря флагу –mkhomedir FreeIPA будет создавать домашние каталоги для пользователей IPA при первом входе. При желании этот флаг можно опустить.
Инсталлятор запросит домен IPA.
3: аутентификация
Откройте веб-интерфейс IPA:
3: создайте нового пользователя
Войдя на сервер и изменив root-пароль, нужно снова войти на VPS как root. Данный раздел продемонстрирует, как создать нового пользователя и установить пароль для него.
Итак, создайте нового пользователя; для этого используйте следующую команду (замените demo своим именем пользователя):
4: root-привилегии
На данный момент все права администратора принадлежат root-пользователю. Чтобы иметь возможность постоянно использовать новую учетную запись, нужно передать новому пользователю (demo) все root-привилегии.
Для выполнения задач с привилегиями root нужно начинать команду с sudo. Эта фраза полезна по двум причинам: 1) она защищает систему от разрушающих ошибок, допущенных пользователем; 2) она хранит все запущенные с sudo команды в файле /var/log/secure, который позже можно просмотреть.
Теперь нужно изменить настройки sudo; для этого используйте текстовый редактор CentOS по умолчанию, который называется vi:
visudo
4: доступ к sudo
Для получения доступа к sudo не обязательно изменять файлы конфигурации клиента. Настроить правила sudo можно в пользовательском интерфейсе IPA.
FreeIPA позволяет определять, какие пользователи и группы той или иной машины должны иметь доступ к sudo. Также можно ограничить доступ к командам.
5: настройте ssh (дополнительно)
Теперь нужно обезопасить сервер. Этот дополнительный раздел расскажет, как защитить сервер путем усложнения процедуры авторизации.
Откройте конфигурационный файл:
sudo vi /etc/ssh/sshd_config
Найдите следующие разделы и внесите в них соответствующие изменения:
Port 25000PermitRootLogin no
Port: хотя по умолчанию используется порт 22, его номер можно заменить любым другим в диапазоне от 1025 до 65536. В данном руководстве используется SSHD-порт 25000. Обратите внимание: новый номер порта нужно обязательно запомнить/записать, поскольку он понадобится для входа на сервер через SSH.
PermitRootLogin:измените значение yes на no, чтобы отключить вход в систему как root. Теперь войти на сервер можно только при помощи нового пользователя.
Чтобы SSH мог использовать только конкретный пользователь, добавьте эту строку в нижней части документа (замените demo своим именем пользователя):
Prerequisites
To complete this tutorial, you’ll need the following:
Selinux
Отключаем SELinux командами:
setenforce 0
sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config
Ssh аутентификация через freeipa
По умолчанию, клиент конфигурируется на возможность входа по SSH с использованием пользователей из FreeIPA. Внесем некоторые изменения для удобства.
Открываем конфигурационный файл для pam:
vi /etc/pam.d/common-session
Добавим в конец одну строку:
…session required pam_mkhomedir.so skel=/etc/skel umask=0022
* данная настройка укажет на необходимость автоматического создания домашней директории для пользователя.
Готово.
Step 4 — testing the setup
To apply the changes, first reload Nginx.
- sudo systemctl reload nginx
Брандмауэр
Необходимо открыть несколько портов, которые используются службами FreeIPA:
firewall-cmd –permanent –add-port=53/{tcp,udp} –add-port={80,443}/tcp –add-port={88,464}/{tcp,udp} –add-port=123/udp –add-port={389,636}/tcp
firewall-cmd –reload
Время
Для корректной работы и подключения необходимо проверить настройки времени.
В первую очередь, укажем часовой пояс:
timedatectl set-timezone Europe/Moscow
* командой timedatectl list-timezones можно посмотреть список всех часовых поясов.
Устанавливаем утилиту для синхронизации времени, разрешаем запуск демона и стартуем его.
а) если на системе Ubuntu / Debian:
apt-get install chrony
systemctl enable chrony
б) если на системе Rocky Linux / CentOS / Red Hat:
yum install chrony
systemctl enable chronyd –now
Добавление 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
Выполняем команду для передачи настроек керберосу:
Дополнительные настройки
Рассмотрим отдельно некоторые настройки и возможности работы с FreeIPA.
Имя сервера
Для корректной работы сервера, необходимо, задать ему полное доменное имя (FQDN). Выполняем команду:
hostnamectl set-hostname ipa-server.test.local
* где ipa-server.test.local — имя сервера, которое будет использоваться.
Интеграция idm и active directory в cent os 7
Для многих организаций, Active Directory (AD) – центр управления идентификационными данными пользователей внутри предприятия. Все системы, к которым могут получать доступ пользователи AD, должны уметь работать с AD для выполнения аутентификации и проверки идентификационных данных.
Управление идентификацией в CentOS 7 позволяет организовать два способа интеграции Linux систем в окружение Active Directory:
- Непрямая интеграция. Прямая интеграция ограничена использованием только аутентификации и идентификационных данных, относящихся к пользователям. Система не получает политики и данные, контролирующие доступ в корпоративных окружениях. Системы Linux могут получать политики (например на sudo), правила контроля доступа хоста, automount, netgroups, SELinux и другие возможности из центрального сервера идентификации. Сервер управления идентификацией обеспечивает централизованное управление системами Linux, давая им идентификаторы, права и предоставляя централизованно управляемые политики для Linux, перечисленные выше. В большинстве корпоративных окружений, пользователи Active Directory должны иметь доступ и к Linux ресурсам. Это может быть достигнуто с помощью установки доверенных отношений между серверами IdM и AD. Диаграмма ниже показывает как пользователи из леса Active Directory получают доступ к системам Linux, входя в домен IdM.
Управление идентификацией в CentOS 7 добавляет новые возможности в SSSD (клиент) и IdM сервер, которые делают управление идентификацией более простым и функциональным, включая поддержку доверия доменов, улучшения в пользовательском интерфейсе и прототип функции бекапа и восстановления.
Командная строка
Авторизуемся на FreeIPA:
Настройка 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 авторизация не хотела работать, я очень долго ее мучал.
Дальше находим в конфиге строку:
Перезапуск ssh
Чтобы активировать внесенные изменения, перезапустите сервис SSHD:
sudo systemctl reload sshd.service
Чтобы протестировать новые настройки (пока что не выходите из учетной записи root), откройте терминал и войдите на сервер как новый пользователь (не забудьте указать правильный IP-адрес и порт):
ssh -p 25000 [email protected]
Должно появиться извещение:
[demo@hostname ~]$
Подготовительный этап, синхронизация с ntp-сервером
Для синхронизации времени рекомендуется использовать NTPОстановим и выключим chrony, если он предустановлен
Подготовка сервера
Для подготовки сервера безопасности с доступом к данным по LDAP необходим сервер с правильно настроенным временем. Также необходимо правильно настроить межсетевой экран и систему безопасности SELinux.
Подключение к домену
Устанавливаем freeipa-client.
а) на компьютеры с Red Hat / CentOS:
yum install freeipa-client
б) на компьютеры с Debian / Ubuntu:
apt-get install freeipa-client
Подробная информация
Получить информацию мы можем о любой сущности в LDAP с помощью командной строки.
Для пользователей:
Помогла статья? подписывайся на telegram канал автора
Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.
Примеры команд
Рассмотрим отдельно примеры работы с FreeIPA посредством командной строки.
Проверка
Получаем билет kerberos
Работа с группами
Создание группы безопасности:
ipa group-add –desc=’Group for managers departmen’ managers
* создаем группу безопасности managers.
Добавить пользователя в группу:
Работа с учетными записями
Создадим пользователя. Для этого рассмотрим пример использования командной строки и веб-интерфейса.
Редактирование учетных записей
Редактирование выполняется командой:
Управление идентификацией idm
С момента выхода 6.4, CentOS включает в себя управлениe идентификацией (Identity Management, IdM) — набор функций, предоставляющих централизованный и простой способ управления идентификаторами пользователей, машин и сервисов в больших Linux/Unix корпоративных инсталляциях.
, объединяющего стандартные сетевые сервисы общего назначения в единую систему управления: PAM, LDAP, Kerberos, DNS, NTP и сервисами сертификации. Это позволяет системам на CentOS работать в качестве контроллеров доменов в среде Linux. Из-за того, что функция управления идентификацией встроена в CentOS – достаточно просто добавить управление политиками и идентификацией в ваш рабочий процесс.
Установка и запуск freeipa
Установка выполняется из репозитория. Команды немного отличаются в зависимости от версии CentOS.
а) для Rocky Linux / CentOS 8:
dnf install @idm:DL1
dnf install ipa-server
* первая команда установит модуль DL1 Stream-репозитория. Вторая — сам freeipa.
б) для CentOS 7:
yum install ipa-server
Если мы хотим использовать наш сервер еще и как DNS, то устанавливаем:
yum install ipa-server-dns
После выполняем конфигурирование сервиса:
ipa-server-install
* если система ругнется на IPv6, переходим к решению.
Отвечааем на первый вопрос, хотим ли мы использовать и сконфигурировать DNS-сервер BIND:
Do you want to configure integrated DNS (BIND)? [no]: yes
* в случае, если мы не хотим, чтобы сервер DNS был установлен вместе с сервером IPA, просто нажимаем Enter.
На остальные запросы можно ответить по умолчанию, нажав Enter и оставив подставленные значения. Если возникнут ошибки, решение посмотрите ниже в данной инструкции.
Когда система запросит пароль для Directory Manager, необходимо придумать и ввести его дважды:
Directory Manager password:Password (confirm):
… будет создана учетная запись для подключения к LDAP.
Установка и настройка sams2 в centos 7
И вот мы подошли самому главному и трудному. Когда я решил написать статью на эту тему, я подозревал, что установить sams2 в CentOS 7 будет тяжело, но не думал, что настолько. Пришлось разбить работу на два этапа. Первый этап мы уже прошли, а со вторым мне пришлось поковыряться не один день, пока все не получилось так, как хотелось.
Трудности тут с тем, что проект sams2 давно заброшен, под CentOS 7 он вообще не планировался, готового пакета нет. Есть только старые пакеты для 6-й версии и исходники. Я буду собирать sams2 из исходников и очень аккуратно опишу все этапы, по которым прошел.
Если все сделать по инструкции с сайта разработчика, то в CentOS 7 ничего не получится. Там как минимум есть 2 бага, которые не позволят собрать работающие программы и провести нормально установку.
В итоге у меня получилась конфигурация sams2, которая импортирует пользователей из AD, создает списки доступа к сайтам и позволяет отдельным пользователям блокировать различные сайты, плюс ведет статистику по пользователям в удобном виде.
Это тот функционал в sams2, который я настроил у себя и проверил. Возможно работает что-то еще, нужно проверять. Не все заявленные функции самс работают из коробки, их нужно с костылями настраивать и проверять. Я добился удовлетворяющего меня результата и остановился на этом.
Установка программного обеспечения
Устанавливаем необходимые пакеты
Заключение
Пришло время подвести итог того, что мы сделали. Проведена большая работа по настройке прокси сервера на базе CentOS 7. Были выполнены следующие шаги:
- Сервер был введен в домен Windows для настройки авторизации доменных пользователей на прокси сервере.
- Настроен прокси сервер squid для работы с доменными учетными записями.
- Собран из исходников многофункциональный web интерфейс для управления squid – sams2 самой последней на текущий момент версии.
Первые два этапа сами по себе позволяют полноценно пользоваться прокси сервером, но не дают удобства и гибкости настройки. Иногда это и не нужно и можно не заморачиваться с установкой и настройкой sams. Как ни крути, но установка достаточно хлопотная и нет гарантии, что через некоторое время после смены версий каких-нибудь пакетов или исходников, не появятся новые нюансы, которые не будут отражены в этой статье. С ними придется разбираться заново.
Уровень данной статьи получился чуть выше, чем может рассчитывать новичок в линуксе, но тем не менее я постарался расписать все максимально подробно. Все этапы проверены на чистой системе, чтобы убедиться в достоверности данных и отсутствии ошибок. То есть сначала была исследована тема, настроена конфигурация на тестовой машине.
Conclusion
You’ve just completed basic access restriction for an Nginx website. More information about this technique and other means of access restriction are available in Nginx’s documentation.
Вывод клиента из домена
Если необходимо вывести клиентский компьютер из домена, вводим команду:
ipa-client-install –uninstall
Система выполнит необходимые настройки самостоятельно:
И отправляем компьютер в перезагрузку:
Разберем некоторые ошибки, которые могут возникнут в процессе установки FreeIPA.