Integrace s OS Linux
Úvodní informace
Integrace s operačním systémem Linux je možná pomocí 2Element agenta který obsahuje:
příkaz activate pro jednoduchou hromadnou registraci systému
příkaz authorized_keys pro integraci do serveru OpenSSH
modul pro PAM (Pluggable Authentication Modules)
modul pro NSS (Name Service Switch)
Instalace, konfigurace a jednotlivé komponenty jsou popsané níže.
Obsah
- 1 Úvodní informace
- 2 Obsah
- 3 Instalace agenta
- 3.1 RHEL 7
- 3.2 RHEL 8
- 3.3 RHEL 9
- 3.4 Debian 11 (“bullseye”)
- 4 Nastavení integrace
- 5 Funkce 2Element agenta
- 5.1 Příkaz activate
- 5.2 Příkaz authorized_keys
- 5.3 Modul pro PAM (Pluggable Authentication Modules)
- 5.3.1 Příklad nastavení pro OpenSSH
- 5.3.1.1 Nastavení nezávislé na distribuci
- 5.3.1.2 Nastavení pro RHEL 8
- 5.3.1.3 Nastavení pro Debian 11
- 5.3.1 Příklad nastavení pro OpenSSH
- 5.4 Modul pro NSS (Name Service Switch)
- 5.4.1 Aktivace v RHEL 7
- 5.4.2 Aktivace v RHEL 8
- 5.4.3 Test nastavení
- 5.4.4 Rozsah UID a GID
Instalace agenta
Pro integraci OS Linux s aplikací 2Element je potřeba na daný systém nainstalovat 2Element agenta. Pro vybrané distribuce je k dispozici připravený balíček který je možné nainstalovat takto:
RHEL 7
yum-config-manager --add-repo https://yum.sonpo.cz/element2/element2-agent-el-7.repo
yum install element2-agent
RHEL 8
yum-config-manager --add-repo https://yum.sonpo.cz/element2/element2-agent-el-8.repo
yum install element2-agent
RHEL 9
yum-config-manager --add-repo https://yum.sonpo.cz/element2/element2-agent-el-9.repo
yum install element2-agent
Debian 11 (“bullseye”)
curl -sS https://yum.sonpo.cz/element2/APT-GPG-KEY-ELEMENT2 -o /etc/apt/trusted.gpg.d/element2-agent.asc
echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/element2-agent.asc] https://yum.sonpo.cz/element2/element2-agent-master/debian11 stable main" > /etc/apt/sources.list.d/element2-agent.list
Instalací agenta nedojde ke změně nastavení systému.
Nastavení integrace
V aplikaci 2Element je potřeba systém zaregistrovat jako novou chráněnou aplikaci a to buď pomocí aktivačního klíče nebo ručně. Navázáním 2Element agenta na 2Element server nedojde samo o sobě ke změně konfigurace nebo chování operačního systému.
Přidání pomocí aktivačního klíče
Nastavení v aplikaci 2Element
Vytvoříme nový aplikační klíč (Aplikace a klíče - Aktivační klíče - Přidat) a jako typ chráněné aplikace vybereme Linux. Po přidání aktivačního klíče je zobrazen jeho detail.
Pomocí tlačítka Zobrazit vzorový CLI příkaz si necháme zobrazit příkaz pro spuštění na systému s OS Linux a zkopírujeme ho do schránky.
Pomocí jednoho aktivačního klíče je možné zaregistrovat libovolné množství systémů - např. automatizovaně pomocí nástroje na správu konfigurací (cfengine, puppet, ansible apod.).
Nastavení 2Element agenta
Jako uživatel root (nebo pomocí sudo) spustíme příkaz získaný v předchozím kroku, např.:
/opt/element2-agent/bin/activate --base-url "https://2element.io/" --key-id "e4cbc63c-3965-43c0-a953-7db52aaed0ab" --key-token "029796c646b14c6076fea4b5be54c623fab01d19"
Po spuštění dojde k vytvoření nové chráněné aplikace na straně 2Element serveru a na systému s OS Linux vznikne konfigurační soubor /opt/element2-agent/element2.conf. Parametr fail_mode je nastaven na safe a parametr log_level na info (viz. Úprava konfigurace).
Ruční přidání chráněné aplikace
Nastavení v aplikaci 2Element
Vytvoříme novou chráněnou aplikaci (Aplikace a klíče - Chráněné aplikace - Přidat) typu Linux. Po přidání aplikace je zobrazen její detail ve kterém jsou údaje potřebné pro nastavení agenta.
Nastavení 2Element agenta
Vytvoříme nový konfigurační soubor ze vzorového souboru:
cp /opt/element2-agent/element2.conf.example /opt/element2-agent/element2.conf
V souboru upravíme nastavení takto:
base_url - zapíšeme hodnotu Základní URL z aplikace 2Element
app_id - zapíšeme hodnotu ID aplikace z aplikace 2Element
app_secret - zapíšeme hodnotu Token z aplikace 2Element
Úprava konfigurace
Konfigurace agenta se načítá z konfiguračního souboru /opt/element2-agent/element2.conf. V souboru je možné nastavit tyto parametry:
base_url - hodnota odpovídající parametru Základní URL v detailu chráněné aplikace
app_id - hodnota odpovídající parametru ID aplikace v detailu chráněné aplikace
app_secret - hodnota odpovídající parametru Token v detailu chráněné aplikace
log_level - úroveň záznamů v logu, musí odpovídat jedné z hodnot: off, error, warn, info, debug, trace; záznamy se zapisují do syslog socketu /dev/log příp. /var/run/syslog s facility nastaveným na AUTHPRIV; nepovinný parametr, výchozí hodnota je “info”
fail_mode - chování v případě nedostupnosti 2Elementu serveru (platí pouze pro PAM modul), musí být jedna z hodnot (nepovinný parametr, výchozí hodnota je “secure”):
safe - akce je povolena
secure - akce je zakázána
Funkce 2Element agenta
2Element agent obsahuje následující funkce, které mohou fungovat samostatně nebo v libovolné kombinaci:
příkaz activate pro integraci agenta s 2Element serverem pomocí aktivačního klíče
příkaz authorized_keys určený pro konfigurační parametr AuthorizedKeysCommand serveru OpenSSH
modul pro PAM (Pluggable Authentication Modules) pro více-faktorové ověření uživatelů
modul pro NSS (Name Service Switch) pro použití vzdálených uživatelů z 2Element v místním systému
Příkaz activate
Příkaz activate slouží pro registraci systému v aplikaci 2Element pomocí aktivačního klíče, viz. sekce Přidání pomocí aktivačního klíče.
Příkaz authorized_keys
Příkaz authorized_keys slouží pro načítání uživatelských SSH klíčů z aplikace 2Element, kde jsou u uživatelů vedené jako autentizátory typu SSH klíč. Příkaz je určen pro konfigurační parametr AuthorizedKeysCommand serveru OpenSSH a slouží jako náhrada nebo doplněk k souborům ~/.ssh/authorized_keys.
Pro jeho použití je potřeba do konfiguračního souboru /etc/ssh/sshd_config přidat:
AuthorizedKeysCommand /opt/element2-agent/bin/authorized_keys --user %u --type %t --fingerprint %f
AuthorizedKeysCommandUser element2-agent
Po změně konfigurace je nutný reload konfigurace OpenSSH serveru:
systemctl reload sshd
Modul pro PAM (Pluggable Authentication Modules)
Modul podporuje více-faktorové ověření, a to jak místních, tak vzdálených, uživatelů. Z podstaty věci je jeho použití vhodné jen v případě, kdy je možná interakce s uživatelem - tj. např. pro OpenSSH, sudo nebo login a nikoliv např. pro IMAP nebo SMTP server.
Pro aktivaci modulu je nutné ho doplnit do PAM konfigurace požadované aplikace. Přesné nastavení je závislé na konkrétních podmínkách a požadavcích.
Příklad nastavení pro OpenSSH
Následující nastavení vynutí přihlášení SSH klíčem po kterém následuje ověření dalším faktorem z aplikace 2Element. Uživatelé ve skupině Admin můžou po úspěšném více-faktorovém ověření spustit libovolný příkaz pomocí sudo.
Nastavení nezávislé na distribuci
Konfigurační soubor /etc/ssh/sshd_config:
AuthorizedKeysCommand /opt/element2-agent/bin/authorized_keys --user %u --type %t --fingerprint %f
AuthorizedKeysCommandUser element2-agent
PasswordAuthentication no
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
Konfigurační soubor /etc/sudoers (výňatek):
%Admin ALL=(ALL) ALL
Nastavení pro RHEL 8
Konfigurační soubor /etc/pam.d/sshd:
#%PAM-1.0
### auth substack password-auth - zakomentovaný původní řádek
auth required pam_element2.so
auth include postlogin
account required pam_sepermit.so
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session optional pam_motd.so
session include password-auth
session include postlogin
Konfigurační soubor /etc/pam.d/sudo:
#%PAM-1.0
###auth include system-auth - zakomentovaný původní řádek
auth required pam_element2.so
account include system-auth
password include system-auth
session include system-auth
Nastavení pro Debian 11
Konfigurační soubor /etc/pam.d/sshd:
# PAM configuration for the Secure Shell service
# Standard Un*x authentication.
###@include common-auth - zakomentovaný původní řádek
auth required pam_element2.so
# Disallow non-root logins when /etc/nologin exists.
account required pam_nologin.so
# Uncomment and edit /etc/security/access.conf if you need to set complex
# access limits that are hard to express in sshd_config.
# account required pam_access.so
# Standard Un*x authorization.
@include common-account
# SELinux needs to be the first session rule. This ensures that any
# lingering context has been cleared. Without this it is possible that a
# module could execute code in the wrong domain.
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
# Set the loginuid process attribute.
session required pam_loginuid.so
# Create a new session keyring.
session optional pam_keyinit.so force revoke
# Standard Un*x session setup and teardown.
@include common-session
# Print the message of the day upon successful login.
# This includes a dynamically generated part from /run/motd.dynamic
# and a static (admin-editable) part from /etc/motd.
session optional pam_motd.so motd=/run/motd.dynamic
session optional pam_motd.so noupdate
# Print the status of the user's mailbox upon successful login.
session optional pam_mail.so standard noenv # [1]
# Set up user limits from /etc/security/limits.conf.
session required pam_limits.so
# Read environment variables from /etc/environment and
# /etc/security/pam_env.conf.
session required pam_env.so # [1]
# In Debian 4.0 (etch), locale-related environment variables were moved to
# /etc/default/locale, so read that as well.
session required pam_env.so user_readenv=1 envfile=/etc/default/locale
# SELinux needs to intervene at login time to ensure that the process starts
# in the proper default security context. Only sessions which are intended
# to run in the user's context should be run after this.
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
# Standard Un*x password updating.
@include common-password
Konfigurační soubor /etc/pam.d/sudo:
#%PAM-1.0
###@include common-auth - zakomentovaný původní řádek
auth required pam_element2.so
@include common-account
@include common-session-noninteractive
Modul pro NSS (Name Service Switch)
Modul podporuje NSS databáze passwd a group. Použití modulu je potřeba aktivovat v souboru /etc/nsswitch.conf, přesný způsob je závislý na verzi OS.
Aktivace v RHEL 7
V souboru /etc/nsswitch.conf upravíme konfiguraci databází passwd a group např. takto:
passwd: files sss element2
group: files sss element2
Aktivace v RHEL 8
V souboru /etc/authselect/user-nsswitch.conf upravíme konfiguraci databází passwd a group např. takto:
passwd: sss files systemd element2
group: sss files systemd element2
a spustíme:
authselect enable-feature with-custom-passwd
authselect enable-feature with-custom-group
authselect apply-changes
Test nastavení
Správnou funkčnost můžeme ověřit pomocí nástroje id se kterým se doptáme na existující uživatele v aplikaci 2Element, např.:
# id jan.vomacka@2element.io
uid=11000(jan.vomacka@2element.io) gid=11000(jan.vomacka@2element.io) groups=11000(jan.vomacka@2element.io),10005(Admin)
Rozsah UID a GID
Výchozí rozsah pro UID a GID je 10000 - 19999. Rozsah je sdílený pro UID a GID a každý uživatel je členem své vlastní stejnojmenné privátní skupiny. Rozsah zatím není možné měnit z administrační konzole, pouze úpravou sekvence v databázi.