Авторизация по SSH в Centos 7 для группы доменных пользователей

Авторизация по SSH в Centos 7

Необходимо настроить авторизацию по SSH в CentOS 7 определенной группы пользователей контроллера домена, а так же дать права sudo для этой группы пользователей

Исходные данные

domain.local - название контроллера домена
192.168.1.12 - его ip адрес
srv-dc-01.domain.local - название сервера контроллера домена
srv-routing-02 - название linux машины, которую вводим в домен
admin - администратор домена
linux_adm - группа пользователей домена, которым разрешено подключение по ssh

Подготовка linux сервера

Меняем hostname

[root@localhost ~]# hostnamectl set-hostname srv-routing-02

Ставим утилиту для синхронизации времени

[root@localhost ~]# yum install chrony

Настраиваем chrony. Оставляем только наш контроллер домена

[root@localhost ~]# nano /etc/chrony.conf
server srv-dc-01.domain.local iburst

Запускаем её и добавляем в автозагрузку

[root@localhost ~]# systemctl start chronyd 
[root@localhost ~]# systemctl enable chronyd

Проверяем

[root@localhost ~]# cat /var/log/messages | grep chronyd
Oct 15 16:47:06 [localhost] chronyd[29373]: chronyd exiting
Oct 15 16:48:01 [localhost] chronyd[774]: chronyd version 3.2 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SECHASH +SIGND +ASYNCDNS +IPV6 +DEBUG)
Oct 15 16:48:01 [localhost] chronyd[774]: Frequency 0.000 +/- 1000000.000 ppm read from /var/lib/chrony/drift
Oct 15 16:48:02 [localhost] chronyd[774]: Source 192.168.1.2 offline
Oct 15 16:48:02 [localhost] chronyd[774]: Source 192.168.1.2 online

Добавляем адреса основного и резервного контроллера домена в /etc/hosts

[root@localhost ~]# cat /etc/hosts
192.168.1.2  srv-dc-01.domain.local
192.168.1.3  srv-dc-02.domain.local

Правим файл resolv.conf, добавляем директиву search

[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search domain.local
nameserver 192.168.1.3
nameserver 192.168.1.2

Подключаем CentOS 7 к контроллеру домена

Устанавливаем необходимый софт и перезагружаемся

[root@localhost ~]# yum install realmd sssd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python
[root@localhost ~]# reboot

Водим сервер с CentOS 7 в домен

[root@localhost ~]# realm discover DOMAIN.LOCAL
domain.local
  type: kerberos
  realm-name: DOMAIN.LOCAL
  domain-name: domain.local
  configured: no
  server-software: active-directory
  client-software: sssd
  required-package: oddjob
  required-package: oddjob-mkhomedir
  required-package: sssd
  required-package: adcli
  required-package: samba-common-tools
[root@localhost ~]# realm join --user=admin domain.local
Password for admin:

Проверяем наш контроллер домена. В списке компьютеров должен появиться наш linux сервер

Авторизация по SSH в Centos 7 для группы доменных пользователей 1
список компьютеров

Что бы при подключении к серверу не надо было вводить польное имя домена (%username%@domain.local), а только %username%, меняем конфиг утилиты sssd.
Так же меняем название создаваемой директории пользователя

[root@localhost ~]# nano /etc/sssd/sssd.conf
...
use_fully_qualified_names = False
fallback_homedir = /home/%u
...

Разрешаем доменным пользователям создавать домашние директории

[root@localhost ~]# authconfig --enablemkhomedir --enablesssdauth --updateall

Добавляем утилиту sssd в автозагрузку и перезапускаем её

[root@localhost ~]# systemctl enable sssd.service
[root@localhost ~]# systemctl restart sssd

Чтобы проверить в каких группах пользователь

[root@localhost ~]# id %username%

Чтобы заново считать данные о пользователе с контроллера домена ( почистить весь кэш), например после добавления пользователя в др. группу. 

[root@localhost ~]# sss_cache -E

Или только для определенного пользователя

[root@localhost ~]# sss_cache -u user1

Разрешаем подключение только для группы linux_adm на контроллере домена (создали её заранее), и для пользователя user

[root@localhost ~]# nano /etc/sssd/sssd.conf
...
access_provider = simple
simple_allow_users = user@domain.local
simple_allow_groups = linux_adm@domain.local

Перезапускаем службу sssd

[root@localhost ~]# systemctl restart sssd

Для проверки ограничения доступа для пользователей контроллера домена мониторим лог-файл /var/log/secure

Доступ закрыт:

Oct 16 09:47:51 [localhost] sshd[6687]: pam_sss(sshd:auth): authentication success; logname= uid=0 euid=0 tty=ssh ruser= rhost=user.domain.local user=Test1
Oct 16 09:47:51 [localhost] sshd[6687]: pam_sss(sshd:account): Access denied for user Test1: 6 (Permission denied)
Oct 16 09:47:51 [localhost] sshd[6687]: Failed password for Test1 from 192.168.1.99 port 37140 ssh2
Oct 16 09:47:51 [localhost] sshd[6687]: fatal: Access denied for user Test1 by PAM account configuration [preauth]

Доступ разрешен:

Oct 16 09:48:17 [localhost] sshd[6690]: pam_sss(sshd:auth): authentication success; logname= uid=0 euid=0 tty=ssh ruser= rhost=user.domain.local user=Test2
Oct 16 09:48:17 [localhost] sshd[6690]: Accepted password for Test2 from 192.168.1.99 port 37158 ssh2
Oct 16 09:48:17 [localhost] sshd[6690]: pam_unix(sshd:session): session opened for user Test2 by (uid=0)

Ограничение доступа к sudo по доменным группам

Создаем файл (имя файла должно быть без точек)

[root@localhost ~]# nano /etc/sudoers.d/domain
%linux_adm@domain.local ALL=(ALL) ALL

где domain — название нашего домена, без «.local«

Выставляем права

[root@localhost ~]# chmod 0440 /etc/sudoers.d/domain

Максим Макаров
У блога появился хостинг, его любезно предоставила компания Облакотека.
Облакотека - облачные сервисы для создания и управления виртуальной ИТ-инфраструктурой.
Если вам понравился мой блог и вы хотели бы видеть на нем еще больше полезных статей, большая просьба поддержать этот ресурс. Для этого достаточно кликнуть на контекстную рекламу, расположенную на сайте.
Оцените автора
IT Draft
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.