Пост

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

SSH (Secure Shell) - это протокол прикладного уровня для безопасного удаленного доступа к UNIX-системам, основанный на взаимодействии приватного и публичного ключей, защищающих трафик алгоритмом асимметричного шифрования.

Необходимо настроить авторизацию по 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

1
$ sudo hostnamectl set-hostname srv-routing-02

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

1
$ sudo yum install chrony

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

1
2
$ sudo nano /etc/chrony.conf
server srv-dc-01.domain.local iburst

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

1
2
$ sudo systemctl start chronyd 
$ sudo systemctl enable chronyd

Проверяем

1
2
3
4
5
6
$ 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

1
2
3
$ cat /etc/hosts
192.168.1.2  srv-dc-01.domain.local
192.168.1.3  srv-dc-02.domain.local

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

1
2
3
4
5
$ cat /etc/resolv.conf
# Generated by NetworkManager
search domain.local
nameserver 192.168.1.3
nameserver 192.168.1.2

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

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

1
2
$ sudo yum install realmd sssd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python
$ sudo reboot

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

1
2
3
4
5
6
7
8
9
10
11
12
13
$ sudo 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
1
2
$ sudo realm join --user=admin domain.local
Password for admin:

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

список компьютеров

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

1
2
3
4
5
$ sudo nano /etc/sssd/sssd.conf
...
use_fully_qualified_names = False
fallback_homedir = /home/%u
...

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

1
$ sudo authconfig --enablemkhomedir --enablesssdauth --updateall

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

1
2
$ sudo systemctl enable sssd.service
$ sudo systemctl restart sssd

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

1
$ sudo id %username%

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

1
$ sudo sss_cache -E

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

1
$ sudo sss_cache -u user1

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

1
2
3
4
5
$ sudo nano /etc/sssd/sssd.conf
...
access_provider = simple
simple_allow_users = [email protected]
simple_allow_groups = [email protected]

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

1
$ sudo systemctl restart sssd

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

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

1
2
3
4
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]

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

1
2
3
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 по доменным группам

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

1
2
$ sudo nano /etc/sudoers.d/domain
%[email protected] ALL=(ALL) ALL

где

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

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

1
$ sudo chmod 0440 /etc/sudoers.d/domain
Авторский пост защищен лицензией CC BY 4.0 .

© IT Draft. Некоторые права защищены.