Обзор CentOS 7. Часть 2: управление идентификацией / Хабр

Введение

Существует проверенная временем связка для прокси сервера – 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-адресом):

ssh [email protected]

Терминал вернет что-то вроде:

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 (дополнительно)

Теперь нужно обезопасить сервер. Этот дополнительный раздел расскажет, как защитить сервер путем усложнения процедуры авторизации.

Похожее:  Lampa-теперь и на андроид

Откройте конфигурационный файл:

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.

  1. 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 для выполнения аутентификации и проверки идентификационных данных.

Похожее:  Интеграция WordPress с социальными сетями |

Управление идентификацией в 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. Были выполнены следующие шаги:

  1. Сервер был введен в домен Windows для настройки авторизации доменных пользователей на прокси сервере.
  2. Настроен прокси сервер squid для работы с доменными учетными записями.
  3. Собран из исходников многофункциональный 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.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 4,00 из 5)
Загрузка...

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *