Авторизация по 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
Ставим утилиту для синхронизации времени
Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров
Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.
[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 сервер
Что бы при подключении к серверу не надо было вводить польное имя домена (%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