Kapitel 4. Autentisering och åtkomstkontroll

# Kapitel 4. Autentisering och åtkomstkontroll

När en person (eller ett program) begär åtkomst till systemet bekräftas identiteten genom autentisering som en betrodd identitet.

| Varning
Konfigurationsfel i PAM kan leda till att du blir utestängd från ditt eget system. Du måste ha en räddnings-CD till hands eller konfigurera en alternativ startpartition. För att återhämta dig, starta systemet med dem och korrigera saker därifrån.

## 4.1. Normal Unix-autentisering

Normal Unix-autentisering tillhandahålls av modulen pam_unix(8) under PAM (Pluggable Authentication Modules). Dess 3 viktiga konfigurationsfiler, med "`:`"-separerade poster, är följande.

Tabell 4.1. 3 viktiga konfigurationsfiler för pam_unix(8)

fil | tillstånd | användare | grupp | beskrivning
--- | --- | --- | --- | ---
`/etc/passwd` | `-rw-r--r--` | `root` | `root` | (rensad) information om användarkonton
`/etc/shadow` | `-rw-r-----` | `root` | `shadow` | säkra information om användarkonton
`/etc/group` | `-rw-r--r--` | `root` | `root` | gruppinformation

"`/etc/passwd`" innehåller följande.

     ...
    user1:x:1000:1000:User1 Name,,,:/home/user1:/bin/bash
    user2:x:1001:1001:User2 Name,,,:/home/user2:/bin/bash
     ...

Som förklaras i passwd(5) betyder varje "`:`"-separerad post i den här filen följande.

- Inloggningsnamn

- Inmatning av lösenordsspecifikation

- Numeriskt användar-ID

- Numeriskt grupp-ID

- Användarnamn eller kommentarsfält

- Användarens hemkatalog

- Valfri tolk för användarkommandon

Den andra posten i "`/etc/passwd`" användes för den krypterade lösenordsposten. Efter införandet av "`/etc/shadow`" används den här posten för lösenordsspecifikationen.

Tabell 4.2. Den andra postens innehåll i "`/etc/passwd`"

innehåll | betydelse
--- | ---
(tomt) | lösenordslöst konto
bredd | det krypterade lösenordet finns i "`/etc/shadow`"

"`/etc/shadow`" innehåller följande.

     ...
    user1:$1$Xop0FYH9$IfxyQwBe9b8tiyIkt2P4F/:13262:0:99999:7:::
    user2:$1$vXGZLVbS$ElyErNf/agUDsm1DehJMS/:13261:0:99999:7:::
     ...

Som förklaras i shadow(5) betyder varje "`:`"-separerad post i denna fil följande.

- Inloggningsnamn

- Krypterat lösenord (Det inledande "`$1$`" anger att MD5-kryptering används. "*" indikerar ingen inloggning)

- Datum för senaste lösenordsbytet, uttryckt som antal dagar sedan 1 januari 1970

- Antal dagar som användaren måste vänta innan hon kan ändra sitt lösenord igen

- Antal dagar efter vilka användaren måste ändra sitt lösenord

- Antal dagar innan ett lösenord upphör att gälla under vilka användaren ska varnas

- Antal dagar efter att ett lösenord har löpt ut under vilka lösenordet fortfarande ska accepteras

- Datum då kontot upphör att gälla, uttryckt i antal dagar sedan den 1 januari 1970

- …

"`/etc/group`" innehåller följande.

    group1:x:20:user1,user2

Som förklaras i group(5) betyder varje "`:`"-separerad post i denna fil följande.

- Gruppnamn

- Krypterat lösenord (används egentligen inte)

- Numeriskt grupp-ID

- "," Separerad lista med användarnamn

| Notera
"`/etc/gshadow`" har samma funktion som "`/etc/shadow`" för "`/etc/group`", men används egentligen inte.

| Notera
Det faktiska gruppmedlemskapet för en användare kan läggas till dynamiskt om raden "`auth optional pam_group.so`" läggs till i "`/etc/pam.d/common-auth`" och anges i "`/etc/security/group.conf`". Se pam_group(8).

| Notera
Paketet `base-passwd` innehåller en auktoritativ lista över användare och grupper: "`/usr/share/doc/base-passwd/users-and-groups.html`".

## 4.2. Hantering av konto- och lösenordsinformation

Här är några viktiga kommandon för att hantera kontoinformation.

Tabell 4.3. Lista över kommandon för att hantera kontoinformation

kommando | funktion
--- | ---
`getent passwd user_name` | bläddra i kontoinformation för "`användarnamn`"
`getent shadow user_name` | bläddra i skuggad kontoinformation för "`användarens_namn`"
`getent group group_name` | bläddra i gruppinformation för "`grupp_namn`"
`passwd` | hantera lösenord för kontot
`passwd -e` | ange engångslösenord för aktivering av kontot
`chage` | hantera information om åldrande av lösenord

Du kan behöva ha root-behörighet för att vissa funktioner ska fungera. Se crypt(3) för kryptering av lösenord och data.

| Notera
På systemet som konfigurerats med PAM och NSS som Debians salsamaskin, kanske innehållet i de lokala "`/etc/passwd`", "`/etc/group`" och "`/etc/shadow`" inte används aktivt av systemet. Ovanstående kommandon är giltiga även i en sådan miljö.

## 4.3. Bra lösenord

När du skapar ett konto under systeminstallationen eller med kommandot passwd(1) bör du välja ett bra lösenord som består av minst 6 till 8 tecken, inklusive ett eller flera tecken från var och en av följande uppsättningar enligt passwd(1).

- Små bokstäver i alfabetet

- Siffror 0 till 9

- Skiljetecken

| Varning
Välj inte ord som går att gissa sig till som lösenord. Kontonamn, personnummer, telefonnummer, adress, födelsedag, namn på familjemedlemmar eller husdjur, ordboksord, enkla sekvenser av tecken som "12345" eller "qwerty", ... är alla dåliga val för lösenordet.

## 4.4. Skapa krypterat lösenord

Det finns oberoende verktyg för att generera krypterade lösenord med salt.

Tabell 4.4. Lista över verktyg för att generera lösenord

paket | popcon | storlek | kommando | funktion
--- | --- | --- | --- | ---
`whois` | V:23, I:210 | 384 | `mkpasswd` | överutrustad frontend till crypt(3)-biblioteket
`openssl` | V:855, I:997 | 2532 | `openssl passwd` | beräkna lösenordshashar (OpenSSL). `passwd`(1ssl)

## 4.5. PAM och NSS

Moderna Unix-liknande system som Debian-systemet tillhandahåller PAM (Pluggable Authentication Modules) och NSS (Name Service Switch) för att den lokala systemadministratören ska kunna konfigurera sitt system. Dessa mekanismers roll kan sammanfattas på följande sätt.

- PAM erbjuder en flexibel autentiseringsmekanism som används av applikationsprogramvaran, vilket innebär utbyte av lösenordsdata.

- NSS erbjuder en flexibel namntjänstmekanism som ofta används av standardbiblioteket C för att få fram användar- och gruppnamn för program som ls(1) och id(1).

Dessa PAM- och NSS-system måste konfigureras på ett konsekvent sätt.

De viktigaste paketen i PAM- och NSS-systemen är följande.

Tabell 4.5. Lista över anmärkningsvärda PAM- och NSS-system

paket | popcon | storlek | beskrivning
--- | --- | --- | ---
`libpam-modules` | V:941, I:1000 | 892 | Pluggbara autentiseringsmoduler (grundläggande tjänst)
`libpam-ldapd` | V:7, I:13 | 79 | Inkopplingsbar autentiseringsmodul som möjliggör LDAP-gränssnitt
`libpam-systemd` | V:747, I:967 | 785 | Inkopplingsbar autentiseringsmodul för registrering av användarsessioner för `logind`
`libpam-doc` | I:7.5 | 1492 | Pluggbara autentiseringsmoduler (dokumentation i html och text)
`libc6` | V:942, I:1000 | 5481 | GNU C-bibliotek: Delade bibliotek som också tillhandahåller tjänsten "Name Service Switch"
`glibc-doc` | I:5.4 | 3926 | GNU C-biblioteket: Handböcker
`glibc-doc-reference` | I:3.2 | 14764 | GNU C-biblioteket: Referensmanual i info-, pdf- och html-format (icke-fri)
`libnss-mdns` | V:282, I:502 | 142 | NSS-modul för Multicast DNS-namnlösning
`libnss-ldapd` | V:8, I:16 | 131 | NSS-modul för användning av LDAP som namngivningstjänst

- "The Linux-PAM System Administrators' Guide" i `libpam-doc` är nödvändig för att lära sig PAM-konfigurationen.

- avsnittet "System Databases and Name Service Switch" i `glibc-doc-reference` är viktigt för att lära sig NSS-konfigurationen.

| Notera
Du kan se en mer omfattande och aktuell lista med kommandot "`aptitude search 'libpam-|libnss-'`". Akronymen NSS kan också betyda "Network Security Service", vilket inte är samma sak som "Name Service Switch".

| Notera
PAM är det mest grundläggande sättet att initiera miljövariabler för varje program med det systemomfattande standardvärdet.

Under systemd installeras paketet `libpam-systemd` för att hantera användarinloggningar genom att registrera användarsessioner i `systemd-kontrollgruppshierarkin` för logind. Se systemd-logind(8), logind.conf(5) och pam_systemd(8).

### 4.5.1. Konfigurationsfiler som nås av PAM och NSS

Här är några viktiga konfigurationsfiler som PAM och NSS har åtkomst till.

Tabell 4.6. Lista över konfigurationsfiler som PAM och NSS har åtkomst till

konfigurationsfil | funktion
--- | ---
`/etc/pam.d/program_name` | ställa in PAM-konfiguration för "`program_namn`" -programmet; se pam(7) och pam.d(5)
`/etc/nsswitch.conf` | konfigurera NSS-konfigurationen med en post för varje tjänst. Se nsswitch.conf(5)
`/etc/nologin` | begränsa användarinloggningen med modulen pam_nologin(8)
`/etc/securetty` | begränsa tty för root-åtkomst med modulen pam_securetty(8)
`/etc/security/access.conf` | ange åtkomstbegränsning med modulen pam_access(8)
`/etc/security/group.conf` | ställa in gruppbaserad fasthållning genom modulen pam_group(8)
`/etc/security/pam_env.conf` | ställa in miljövariabler med modulen pam_env(8)
`/etc/environment` | ställa in ytterligare miljövariabler med modulen pam_env(8) med argumentet "`readenv=1`"
`/etc/default/locale` | ange locale med modulen pam_env(8) med argumentet "`readenv=1 envfile=/etc/default/locale`" (Debian)
`/etc/security/limits.conf` | ange resursbegränsning (ulimit, core, ...) med modulen pam_linits(8)
`/etc/security/time.conf` | ställa in tidsbegränsning med modulen pam_time(8)
`/etc/systemd/logind.conf` | ställa in konfigurationen för `systemd-inloggningshanteraren` (se logind.conf(5) och systemd-logind.service(8))

Begränsningen av lösenordsvalet implementeras av PAM-modulerna, pam_unix(8) och pam_cracklib(8). De kan konfigureras med hjälp av sina argument.

| Tips
PAM-moduler använder suffixet "`.so`" för sina filnamn.

### 4.5.2. Den moderna centraliserade systemhanteringen

Den moderna centraliserade systemhanteringen kan distribueras med hjälp av den centraliserade LDAP-servern (Lightweight Directory Access Protocol) för att administrera många Unix-liknande och icke-Unix-liknande system i nätverket. Open source-implementeringen av Lightweight Directory Access Protocol är OpenLDAP Software.

LDAP-servern tillhandahåller kontoinformationen genom användning av PAM och NSS med paketen `libpam-ldapd` och `libnss-ldapd` för Debian-systemet. Flera åtgärder krävs för att aktivera detta (jag har inte använt den här installationen och följande är enbart sekundär information. Vänligen läs detta i detta sammanhang).

- Du konfigurerar en centraliserad LDAP-server genom att köra ett program, t.ex. den fristående LDAP-daemon, slapd(8).

- Du ändrar PAM-konfigurationsfilerna i katalogen "`/etc/pam.d/`" så att de använder "`pam_ldap.so`" i stället för standardinställningen "`pam_unix.so`".

- Du ändrar NSS-konfigurationen i filen "`/etc/nsswitch.conf`" så att "`ldap`" används i stället för standard ("`compat`" eller "`file`").

- Du måste se till att `libpam-ldapd` använder SSL-anslutning (eller TLS) för att skydda lösenordet.

- Du kan få `libnss-ldapd` att använda SSL-anslutning (eller TLS) för att säkerställa dataintegritet på bekostnad av LDAP-nätverkets overhead.

- Du bör köra nscd(8) lokalt för att cachelagra alla LDAP-sökresultat för att minska LDAP-nätverkstrafiken.

Se dokumentationen i nsswitch.conf(5), pam.conf(5), ldap.conf(5) och ”`/usr/share/doc/libpam-doc/html/`” som tillhandahålls av paketet `libpam-doc` och ”`info libc ’Name Service Switch’`” som tillhandahålls av paketet `glibc-doc`.

På samma sätt kan du sätta upp alternativa centraliserade system med andra metoder.

- Integrering av användare och grupper med Windows-systemet.

  - Få tillgång till Windows domäntjänster med paketen `winbind` och `libpam_winbind`.

  - Se winbindd(8) och Integrering av MS Windows-nätverk med Samba.

- Integrering av användare och grupper med det äldre Unix-liknande systemet.

  - Få tillgång till NIS (ursprungligen kallat YP) eller NIS+ med hjälp av paketet `nis`.

  - Se Linux NIS(YP)/NYS/NIS+ HOWTO.

### 4.5.3. "Varför GNU su inte stöder hjulgruppen"

Detta är den berömda frasen längst ner på den gamla "`info su"`-sidan av Richard M. Stallman. Oroa dig inte: det nuvarande `su-kommandot` i Debian använder PAM, så att man kan begränsa möjligheten att använda `su` till `rotgruppen` genom att aktivera raden med "`pam_wheel.so`" i "`/etc/pam.d/su`".

### 4.5.4. Strängare regler för lösenord

Genom att installera `libpam-cracklib-paketet` kan du tvinga fram strängare lösenordsregler.

På ett typiskt GNOME-system som automatiskt installerar `libpam-gnome-keyring` ser "`/etc/pam.d/common-password`" ut så här:

    # here are the per-package modules (the "Primary" block)
    password	requisite			pam_cracklib.so retry=3 minlen=8 difok=3
    password	[success=1 default=ignore]	pam_unix.so obscure use_authtok try_first_pass yescrypt
    # here's the fallback if no module succeeds
    password	requisite			pam_deny.so
    # prime the stack with a positive return value if there isn't one already;
    # this avoids us returning an error just because nothing sets a success code
    # since the modules above will each just jump around
    password	required			pam_permit.so
    # and here are more per-package modules (the "Additional" block)
    password	optional	pam_gnome_keyring.so
    # end of pam-auth-update config

## 4.6. Säkerhet vid autentisering

| Notera
Informationen här kanske inte är tillräcklig för dina säkerhetsbehov, men den bör vara en bra början.

### 4.6.1. Säkert lösenord på Internet

Många populära transportlagertjänster kommunicerar meddelanden som innehåller lösenordsautentisering i klartext. Det är en mycket dålig idé att överföra lösenord i klartext över det vilda Internet där det kan fångas upp. Du kan köra dessa tjänster över"Transport Layer Security" (TLS) eller dess föregångare "Secure Sockets Layer" (SSL) för att säkra hela kommunikationen inklusive lösenordet genom kryptering.

Tabell 4.7. Lista över osäkra och säkra tjänster och portar

osäkert servicenamn | port | namn på säker tjänst | port
--- | --- | --- | ---
www (http) | 80 | https | 443
smtp (e-post) | 25 | ssmtp (smtps) | 465
ftp-data | 20 | ftps-data | 989
ftp | 21 | ftps | 990
telnet | 23 | telnät | 992
imap2 | 143 | imaps | 993
pop3 | 110 | pop3s | 995
ldap | 389 | ldaps | 636

Krypteringen kostar CPU-tid. Som ett CPU-vänligt alternativ kan du behålla kommunikationen i klartext och bara säkra lösenordet med ett säkert autentiseringsprotokoll, t.ex. "Authenticated Post Office Protocol" (APOP) för POP och "Challenge-Response Authentication Mechanism MD5" (CRAM-MD5) för SMTP och IMAP. (För att skicka e-postmeddelanden över Internet till din e-postserver från din e-postklient har det nyligen blivit populärt att använda den nya porten 587 för meddelandeinlämning i stället för den traditionella SMTP-porten 25 för att undvika att port 25 blockeras av nätverksleverantören samtidigt som du autentiserar dig med CRAM-MD5)

The traditional password-based authentication still suffers inherent security issues such as password reuse across multiple websites. See other authentication methods for the secure solution: Time-based one-time password (TOTP), Universal 2nd Factor (U2F), Web Authentication (WebAuthn, commonly referred as "passkey")

### 4.6.2. Secure Shell

Programmet Secure Shell (SSH) tillhandahåller säker krypterad kommunikation mellan två icke betrodda värdar över ett osäkert nätverk med säker autentisering. Det består av OpenSSH-klienten, ssh(1), och OpenSSH-daemon, sshd(8). Denna SSH kan användas för att tunnla en osäker protokollkommunikation som POP och X säkert över Internet med funktionen port forwarding.

Klienten försöker autentisera sig med hjälp av värdbaserad autentisering, autentisering med offentlig nyckel, autentisering med utmaningssvar eller lösenordsautentisering. Användningen av autentisering med publik nyckel möjliggör fjärrinloggning utan lösenord. Se Avsnitt 6.3, ”Server och verktyg för fjärråtkomst (SSH)”.

### 4.6.3. Extra säkerhetsåtgärder för Internet

Även om du kör säkra tjänster som Secure Shell (SSH) och PPTP-servrar (Point-to-Point Tunneling Protocol) finns det fortfarande risk för intrång via brute force-attacker med lösenordsgissning etc. från Internet. Användning av brandväggspolicyn (se Avsnitt 5.7, ”Netfilters infrastruktur”) tillsammans med följande säkerhetsverktyg kan förbättra säkerhetssituationen.

Tabell 4.8. Lista över verktyg för extra säkerhetsåtgärder

paket | popcon | storlek | beskrivning
--- | --- | --- | ---
`knockd` | V:0.7, I:1.7 | 110 | liten port-knock-daemon knockd(1) och klient knock(1)
`fail2ban` | V:102, I:113 | 2191 | förbjuda IP-adresser som orsakar flera autentiseringsfel
`libpam-shield` | V:0.05, I:0.05 | 115 | låsa ut fjärrangripare som försöker gissa lösenord

### 4.6.4. Säkra lösenordet för root

Om du vill förhindra att personer får åtkomst till din maskin med root-behörighet måste du vidta följande åtgärder.

- Prevent physical access to the system storage device (HDD / SSD / ...)

- Lås UEFI/BIOS och förhindra uppstart från flyttbara media

- Ange lösenord för GRUB:s interaktiva session

- Lås GRUB-menyn från redigering

With physical access to the system storage device, resetting the password is relatively easy with following steps.

1. Move the system storage device to a PC with USB bootable UEFI/BIOS.

2. Boot system with a rescue media (see Avsnitt 3.2.2, ”Linux live rescue system on USB”).

3. Montera rotpartitionen med läs- och skrivåtkomst.

4. Redigera "`/etc/passwd`" i rotpartitionen och gör den andra posten för `rotkontot` tom.

Om du har redigeringsåtkomst till GRUB-menyalternativet (se Avsnitt 3.1.2, ”Steg 2: startladdaren”) för `grub-rescue-pc` vid start, är det ännu enklare med följande steg.

1. Starta systemet med kärnparametern ändrad till något i stil med "`root=/dev/sda6 rw init=/bin/sh`".

2. Redigera "`/etc/passwd`" och töm den andra posten för `root-kontot`.

3. Starta om systemet.

Systemets root-skal är nu åtkomligt utan lösenord.

| Notera
När man har root shell-åtkomst kan man komma åt allt på systemet och återställa alla lösenord på systemet. Dessutom kan han kompromissa med lösenordet för alla användarkonton med hjälp av verktyg för att knäcka lösenord med brutal kraft, t.ex. `john` och `crack-paket` (se Avsnitt 9.5.10, ”Kontroll av systemsäkerhet och -integritet”). Detta knäckta lösenord kan leda till att andra system äventyras.

Den enda rimliga mjukvarulösningen för att undvika alla dessa problem är att använda en mjukvarukrypterad rotpartition (eller "`/etc`"-partition) med hjälp av dm-crypt och initramfs (se Avsnitt 9.9, ”Tips om datakryptering”). Du behöver dock alltid ett lösenord för att starta systemet.

## 4.7. Andra åtkomstkontroller

Det finns andra åtkomstkontroller till systemet än den lösenordsbaserade autentiseringen och filbehörigheterna.

| Notera
Se Avsnitt 9.4.16, ”Alt-SysRq-tangenten” för begränsning av SAK-funktionen (Secure Attention Key) i kärnan.

### 4.7.1. Listor för åtkomstkontroll (ACL)

ACL:er är en överuppsättning av de vanliga behörigheterna som förklaras i Avsnitt 1.2.3, ”Behörigheter i filsystemet”.

Du stöter på ACL:er i aktion i moderna skrivbordsmiljöer. När en formaterad USB-lagringsenhet är automatiskt monterad som t.ex. "`/media/penguin/USBSTICK`" kan en normal användare, `pingvinen`, köra:

     $ cd /media/penguin
     $ ls -la
    total 16
    drwxr-x---+ 1 root    root    16 Jan 17 22:55 .
    drwxr-xr-x  1 root    root    28 Sep 17 19:03 ..
    drwxr-xr-x  1 penguin penguin 18 Jan  6 07:05 USBSTICK

"`+`" i den 11:e kolumnen indikerar att ACL:er används. Utan ACL:er skulle en vanlig användare, `pingvin`, inte kunna lista sig på det här sättet eftersom `pingvin` inte är med i `rotgruppen`. Du kan se ACL:er som:

     $ getfacl .
    # file: .
    # owner: root
    # group: root
    user::rwx
    user:penguin:r-x
    group::---
    mask::r-x
    other::---

Här:

- "`user::rwx`", "`group::---`" och "`other::---`" motsvarar de vanliga ägar-, grupp- och andra behörigheterna.

- ACL:n "`user:penguin:r`-x" ger den vanliga användaren `penguin` behörigheten "`r-x`". Detta gjorde det möjligt för "`ls -la`" att lista kataloginnehåll.

- ACL:n "`mask::r-x`" anger den övre gränsen för behörigheter.

Se"POSIX Access Control Lists on Linux", acl(5), getfacl(1) och setfacl(1) för mer information.

### 4.7.2. sudo

sudo(8) är ett program som är utformat så att en sysadmin kan ge begränsade root-privilegier till användare och logga root-aktiviteter. `sudo` kräver endast ett vanligt användarlösenord. Installera `sudo-paketet` och aktivera det genom att ställa in alternativ i "`/etc/sudoers`". Se konfigurationsexempel i "`/usr/share/doc/sudo/examples/sudoers`" och Avsnitt 1.1.12, ”sudo konfiguration”.

Min användning av `sudo` för single user-systemet (se Avsnitt 1.1.12, ”sudo konfiguration”) syftar till att skydda mig mot min egen dumhet. Personligen anser jag att `sudo` är ett bättre alternativ än att använda systemet från root-kontot hela tiden. Följande ändrar till exempel ägaren till "`någon_fil`" till "`mitt_namn`".

    $ sudo chown my_name some_file

Om du känner till root-lösenordet (vilket självinstallerade Debian-användare gör) kan du naturligtvis köra alla kommandon under root från vilket användarkonto som helst med "`su -c`".

### 4.7.3. PolicyKit

PolicyKit är en operativsystemskomponent för kontroll av systemövergripande behörigheter i Unix-liknande operativsystem.

Nyare GUI-program är inte utformade för att köras som privilegierade processer. De kommunicerar med privilegierade processer via PolicyKit för att utföra administrativa åtgärder.

PolicyKit begränsar sådana åtgärder till användarkonton som tillhör `sudo-gruppen` på Debian-systemet.

Se polkit(8).

### 4.7.4. Begränsning av åtkomst till vissa servertjänster

För systemets säkerhet är det en god idé att inaktivera så många serverprogram som möjligt. Detta är särskilt viktigt för nätverksservrar. Att ha oanvända servrar, aktiverade antingen direkt som daemon eller via super-serverprogram, anses vara en säkerhetsrisk.

Många program, t.ex. sshd(8), använder PAM-baserad åtkomstkontroll. Det finns många sätt att begränsa åtkomsten till vissa servertjänster.

- konfigurationsfiler: "`/etc/default/program_namn`"

- Konfiguration av Systemd-tjänstenhet för daemon

- PAM (pluggbara autentiseringsmoduler)

- "`/etc/inetd.conf`" för super-server

- "`/etc/hosts.deny`" och "`/etc/hosts.allow`" för TCP-wrapper, tcpd(8)

- "`/etc/rpc.conf`" för Sun RPC

- "`/etc/at.allow`" och "`/etc/at.deny`" för atd(8)

- "`/etc/cron.allow`" och "`/etc/cron.deny`" för crontab(1)

- Nätverksbrandvägg för nätfilterinfrastruktur

Se Avsnitt 3.6, ”Systemhantering”, Avsnitt 4.5.1, ”Konfigurationsfiler som nås av PAM och NSS”, och Avsnitt 5.7, ”Netfilters infrastruktur”.

| Tips
Sun RPC-tjänster måste vara aktiva för NFS och andra RPC-baserade program.

| Tips
Om du har problem med fjärråtkomst i ett nyare Debian-system, kommentera bort felaktiga konfigurationer som ”`ALL: PARANOID`” i ”`/etc/hosts.deny`” om de finns. (Men du måste vara försiktig med säkerhetsriskerna som är förknippade med denna typ av åtgärd.)

### 4.7.5. Säkerhetsfunktioner i Linux

Linuxkärnan har utvecklats och stöder säkerhetsfunktioner som inte finns i traditionella UNIX-implementationer.

Linux stöder utökade attribut som utökar de traditionella UNIX-attributen (se xattr(7)).

Linux delar upp de privilegier som traditionellt förknippas med superuser i olika enheter, så kallade capabilities(7), som kan aktiveras och inaktiveras oberoende av varandra. Capabilities är ett attribut per tråd sedan kärnversion 2.2.

Ramverket Linux Security Module (LSM) tillhandahåller en mekanism för olika säkerhetskontroller som kan kopplas till nya kärntillägg. Till exempel:

- AppArmor

- Säkerhetshöjande Linux (SELinux)

- Smack (kärnan för förenklad obligatorisk åtkomstkontroll)

- Tomoyo Linux

Eftersom dessa tillägg kan strama åt privilegiemodellen hårdare än den vanliga Unix-liknande säkerhetsmodellen, kan till och med root-behörigheten begränsas. Vi rekommenderar att du läser ramverksdokumentet för Linux Security Module (LSM) på kernel.org.

Linux namnrymder omsluter en global systemresurs med en abstraktion som gör att processerna inom namnrymden ser ut som om de har en egen isolerad instans av den globala resursen. Ändringar i den globala resursen är synliga för andra processer som är medlemmar i namnrymden, men osynliga för andra processer. Sedan kärnversion 5.6 finns det 8 typer av namnrymder (se namnrymder(7), unshare(1), nsenter(1)).

Från och med Debian 11 Bullseye (2021) använder Debian en enhetlig cgroup-hierarki (a.k.a. cgroups-v2).

Exempel på användning av namnrymder med cgrupper för att isolera sina processer och tillåta resurskontroll är:

- Systemd. Se Avsnitt 3.3.1, ”Systemd startas”.

- Sandlådemiljö. Se Avsnitt 7.7, ”Sandlåda”.

- Linux-containrar såsom Docker, LXC. Se Avsnitt 9.11, ”Virtualiserat system”.

Dessa funktioner kan inte realiseras av Avsnitt 4.1, ”Normal Unix-autentisering”. Dessa avancerade ämnen är oftast utanför ramen för detta introduktionsdokument.

Kapitel 3. Initialisering av systemet |  | Kapitel 5. Nätverkskonfiguration