Авторизация по 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
Добавить комментарий

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