Авторизация по 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