Connexion en SSO via LDAP Linux
Tip
Documentation Officielle et Références - SSSD (System Security Services Daemon) - Realmd - Join a domain - Intégration RHEL / AD (Red Hat)
Note
Dans ce cas on utilise realm pour joindre le domaine la commande realm list ne retourne que ce qu'elle a elle-même configuré.
Installation initial sur debian
Commande pour rejoindre un domaine :
Commande pour sortir du domaine :
Configuration avancé
Le plus simple est le playbook ansible :
Ce playbook ajoute le serveur dans le domaine domain.com il rajoute les utilisateurs du groupe sec-adm-system-n3 peuvent se connecter et sont dans le groupe sudoers et peuvent se connecter via la commande suivante :
ssh domain.com\user.nom@ipduserveur
- name: Service d'authentification de session unifié
hosts: debian11
become: true
ignore_unreachable: true
vars_files:
- secret_vars.yml
vars:
debian_11: "{{ ansible_facts['os_family'] == 'Debian' and ansible_facts['distribution'] == 'Debian' and ansible_facts['distribution_version'].startswith('11') }}"
tasks:
- name: Installer les dépendances nécessaires pour realm et sssd
ansible.builtin.package:
name:
- realmd
- sssd
- sssd-tools
- libnss-sss
- libpam-sss
- adcli
- samba-common-bin
- krb5-user
- packagekit-tools
- python3-apt
- python3-pexpect
state: present
- name: Vérifier si déjà joint au domaine domain.com
command: realm list
register: realm_list
changed_when: false
- name: Joindre au domaine domain.com
ansible.builtin.expect:
command: realm join domain.com -U "{{ domain_admin_user }}"
responses:
Password: "{{ domain_admin_password }}"
no_log: true
when: "'domain.com' not in realm_list.stdout"
register: realm_join
- name: Configurer /etc/sssd/sssd.conf
ansible.builtin.copy:
dest: /etc/sssd/sssd.conf
content: |
[sssd]
domains = domain.com
config_file_version = 2
[domain/domain.com]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = domain.com
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = domain.com
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = simple
simple_allow_groups = sec-adm-system-n3
register: sssd_conf_updated
# - name: Configurer /etc/krb5.conf
# ansible.builtin.copy:
# dest: /etc/krb5.conf
# content: |
# [libdefaults]
# default_realm = domain.com
# dns_lookup_realm = false
# dns_lookup_kdc = true
# ticket_lifetime = 24h
# renew_lifetime = 7d
# forwardable = true
# [realms]
# domain.com = {
# kdc = kdc.domain.com
# admin_server = kdc.domain.com
# }
# [domain_realm]
# .domain.com = domain.com
# domain.com = domain.com
# register: krb5_conf_updated
- name: Redémarrer le service sssd
ansible.builtin.service:
name: sssd
state: restarted
when: sssd_conf_updated.changed
- name: Configurer /etc/pam.d/common-session
ansible.builtin.copy:
dest: /etc/pam.d/common-session
content: |
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session required pam_unix.so
session optional pam_sss.so
session optional pam_systemd.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
- name: Configurer /etc/sudoers.d/domainadmin
ansible.builtin.blockinfile:
path: /etc/sudoers.d/domainadmin
block: |
%SEC-ADM-System-N3@domain.com ALL=(ALL:ALL) ALL
marker: "# {mark} ANSIBLE MANAGED BLOCK"
create: yes
- name: Créer le répertoire "Disable" Apparmor
file:
path: /etc/apparmor.d/disable/
state: directory
when: debian_11
- name: Désactive usr.sbin.sssd dans Apparmor pour éviter un surplus de journaux dans journald
command:
cmd: ln -sf /etc/apparmor.d/usr.sbin.sssd /etc/apparmor.d/disable/
creates: /etc/apparmor.d/disable/usr.sbin.sssd
register: symlink_result
when: debian_11
- name: Recharge la configuration Apparmor pour usr.sbin.sssd
command:
cmd: apparmor_parser -R /etc/apparmor.d/usr.sbin.sssd
register: result
changed_when: "'Profile unloaded' in result.stdout"
when:
- debian_11
- symlink_result.changed
notify:
- Print change
- name: Redémarre apparmor.service si nécessaire
systemd:
name: apparmor.service
state: restarted
when:
- debian_11
- symlink_result.changed
handlers:
- name: Print change
debug:
msg: "La configuration d'Apparmor pour usr.sbin.sssd a été rechargée"
Ajout d'utilisateur
ont peut rajouter les utilisateur dans ce fichier par exemple /etc/sssd/conf.d/sssd_custom.conf
Assurez-vous que les permissions sur le fichier sont correctes pour que uniquement root puisse le lire :
sudo chmod 600 /etc/sssd/conf.d/sssd_custom.conf
sudo chown root:root /etc/sssd/conf.d/sssd_custom.conf
Dans le groupe sudoer dans ce fichier par exemple /etc/sudoers.d/standartuser
Idem vérifier que les permissions sur le fichier sont correctes pour que uniquement root puisse le lire :
Note
Pour info le champs utilisé pour la connection est le SamAccountName
