21/04/2024
- Hvad er Duo to-faktor autentificering?
- Hvorfor bruge Duo Unix?
- Kom godt i gang med Duo Unix
- Konfiguration af Duo Integration
- Test af din Duo-konfiguration
- Testning med Duo Unix
- Produktionsimplementering
- TLS 1.2 og 1.3 Support
- Bidrag til projektet
- Versionsstyring
- Licens
- Support
- Hvordan beskytter jeg SSH med Duo i Linux?
- Konklusion
Hvad er Duo to-faktor autentificering?
I en verden hvor digitale trusler konstant udvikler sig, er det afgørende at beskytte dine systemer mod uautoriseret adgang. Duo to-faktor autentificering (også kendt som 2FA) tilbyder et ekstra lag af sikkerhed ud over den traditionelle adgangskode. Dette betyder, at for at få adgang til et system, skal en bruger ikke kun kende den korrekte adgangskode, men også have en anden form for bevis på deres identitet. Dette kan være noget de har (som en smartphone med en autentificeringsapp), eller noget de er (som et fingeraftryk).

Duo Unix er en specifik implementering af Duo's to-faktor autentificeringsløsning, designet til at beskytte Unix-baserede systemer. Det fungerer typisk ved at integrere med systemets eksisterende autentificeringsmekanismer, såsom Pluggable Authentication Modules (PAM) eller via en selvstændig eksekverbar fil. Dette gør det muligt at sikre adgangen til kritiske tjenester som SSH (Secure Shell) og sudo (superuser do), som giver administrative rettigheder.
Denne artikel vil guide dig gennem processen med at forstå, installere og konfigurere Duo Unix, med fokus på at forbedre sikkerheden på dine Linux-maskiner. Vi vil dække alt fra de nødvendige forudsætninger og installationstrin til testning og overvejelser for produktionsmiljøer.
Hvorfor bruge Duo Unix?
Brugen af to-faktor autentificering er ikke længere en luksus, men en nødvendighed. Her er nogle af de primære fordele ved at integrere Duo Unix:
- Forbedret sikkerhed: Reducerer risikoen for uautoriseret adgang markant, selv hvis en adgangskode bliver kompromitteret.
- Beskyttelse af kritiske systemer: Sikrer adgang til SSH og sudo, som er essentielle for systemadministration.
- Fleksibilitet: Understøtter forskellige autentificeringsmetoder, herunder push-beskeder til smartphones, engangskoder og endda hardware-tokens.
- Brugervenlighed: Designet til at være relativt let at implementere og bruge for slutbrugere.
Kom godt i gang med Duo Unix
Før du kaster dig ud i installationen, er det vigtigt at have de rette forberedelser på plads. Udviklere og systemadministratorer opfordres stærkt til at arbejde i et virtuelt miljø, når de udvikler eller tester Duo Unix. Dette skyldes, at en forkert konfiguration potentielt kan låse dig ude af dit system. Ved at bruge en virtuel maskine, som f.eks. via Vagrant eller Docker, kan du eksperimentere uden risiko for at miste adgangen til dine produktionssystemer.
Installation af nødvendige biblioteker
Afhængigt af din Linux-distribution skal du installere visse tredjepartsbiblioteker. Her er eksempler for Debian-baserede og RHEL-baserede systemer:
Debian/Ubuntu-baserede systemer:
sudo apt-get install autoconf libtool libpam-dev libssl-dev make RHEL/CentOS-baserede systemer:
sudo yum install autoconf libtool pam-devel openssl-devel Hvis du bruger RHEL 7 eller CentOS 7 med SELinux aktiveret, skal du også installere:
sudo yum install selinux-policy-devel bzip2 Kompilering og installation af Duo Unix
Når de nødvendige biblioteker er installeret, kan du fortsætte med at klone Duo Unix-projektet, kompilere og installere det:
- Klon projektet:
git clone <indsæt_url_her> cd duo_unix/ - Generer konfigurationsscripts:
./bootstrap - Konfigurer til din installation (med PAM-understøttelse):
./configure --with-pam --prefix=/usr--prefix=/usrangiver installationsplaceringen. Du kan vælge en anden placering, hvis det ønskes. - Byg projektet:
make - Installer projektet:
sudo make install
Konfiguration af Duo Integration
Efter installationen skal du konfigurere Duo Unix med dine integrationsnøgler. Disse nøgler opnås fra Duo Admin Panel.
- Opret en "Unix" integration: Log ind på dit Duo Admin Panel og opret en ny "Unix" integration, hvis du ikke allerede har en.
- Hent dine nøgler: Fra integrationen får du brug for tre oplysninger: ikey (Integration Key), skey (Secret Key) og api_host.
- Rediger konfigurationsfiler: Disse nøgler skal indsættes i de relevante konfigurationsfiler. Typisk er disse placeret i
/etc/duo/.- Rediger
/etc/duo/login_duo.conf - Rediger
/etc/duo/pam_duo.conf
Indsæt dine ikey, skey og api_host i de angivne felter i disse filer. Sørg for, at filrettighederne er korrekte for at forhindre uautoriseret læsning.
- Rediger
Test af din Duo-konfiguration
Det er afgørende at teste din konfiguration grundigt for at sikre, at alt fungerer som forventet, og at du ikke utilsigtet låser dig selv ude.
Brug følgende kommando til at teste autentificeringen:
sudo login_duo -f mitbrugernavn 'echo "Hello World"' Hvis autentificeringen lykkes (dvs. du godkender via Duo-prompten på din telefon eller en anden metode), vil du se "Hello World" outputtet. Hvis autentificeringen mislykkes, vil kommandoen ikke returnere noget, eller den vil vise en fejlmeddelelse.

Testning med Duo Unix
Duo Unix-projektet inkluderer et omfattende testsæt for at verificere funktionaliteten. For at køre disse tests skal du have Python installeret.
Installation af Python:
- RHEL-baserede:
sudo yum install python - Debian-baserede:
sudo apt-get install python
Kørsel af alle automatiserede tests:
sudo make check Kørsel af individuelle testfiler:
cd tests/ python test_login_duo.py Kørsel af individuelle test-suiter eller test-cases: Tests er organiseret i klasser og metoder. Du kan køre specifikke dele af testen ved at specificere klassen eller metoden, f.eks.:
cd tests/ python test_login_duo.py TestLoginDuoConfig.test_empty_args Python-tests i Duo Unix
Duo Unix anvender Pythons unittest bibliotek til sine automatiserede tests. Disse tests simulerer ofte en Duo-tjeneste (mock duo service) for at verificere, at Duo Unix-softwaren opfører sig korrekt under forskellige scenarier. Selvom de bruger unittest, er mange af disse tests nærmere blackbox-tests, da de interagerer med subprocesser og fokuserer på den samlede funktionalitet snarere end individuelle kodemoduler.
Test med dækning (Coverage)
For at få et dybere indblik i, hvilke dele af koden der testes, kan du kompilere Duo Unix med dækningsmuligheder. Dette kræver installation af gcovr pakken for HTML-rapporter.
- Kompiler med dækning:
./configure --with-coverage --with-pam - Indsaml dækningsdata:
./collect_coverage.sh - Åbn rapporten:
$BROWSER coverage/pam_duo.html
Bemærk, at kompilering med --with-coverage kan deaktivere compileroptimeringer for at give en mere præcis måling af kodeafvikling.
Yderligere testtips
Du kan også køre en mock Duo-server manuelt for at udføre mere specifikke tests. Dette er nyttigt, hvis du vil debugge eller teste specifikke interaktioner.
Start en mock-server:
cd tests/ python mockduo.py certs/mockduo.pem Autentificer mod mock-serveren (i et separat terminalvindue):
../login_duo/login_duo -d -c confs/mockduo.conf -f dinbruger echo "Success" Disse mock-servere kan være følsomme, så det kan være nødvendigt at genstarte dem, hvis du oplever uventet adfærd.
Produktionsimplementering
Mens udviklingsversionen er god til test, anbefaler Duo kraftigt at bruge de stabile udgivelsespakker eller tarballs til produktionsmiljøer. Disse versioner er grundigt testet og optimeret til stabilitet og ydeevne. Detaljerede instruktioner for produktionsimplementering kan findes på Duo's officielle dokumentationsside.
TLS 1.2 og 1.3 Support
Duo Unix benytter systemets installerede OpenSSL-bibliotek til TLS (Transport Layer Security) operationer. Det vil automatisk anvende den højeste tilgængelige TLS-version for at sikre sikre API-kald til Duo. For TLS 1.2 kræves OpenSSL 1.0.1 eller nyere, mens TLS 1.3 kræver OpenSSL 1.1.1 eller nyere.

Bidrag til projektet
Hvis du er interesseret i at bidrage til Duo Unix-projektet, opfordres du til at læse filerne CODEOFCONDUCT.md og CONTRIBUTING.md for at forstå retningslinjerne for adfærd og processen for at indsende pull requests.
Versionsstyring
Projektet anvender SemVer (Semantic Versioning) til versionsstyring, hvilket giver en klar og konsistent måde at angive ændringer og kompatibilitet.
Licens
Duo Unix er licenseret under GPLv2-licensen. Detaljer kan findes i LICENSE-filen i projektets rodmappe.
Support
For fejlrapporter, funktionsanmodninger eller andre supportrelaterede spørgsmål, kan du kontakte Duo support på [email protected].
Hvordan beskytter jeg SSH med Duo i Linux?
Beskyttelse af SSH med Duo i Linux involverer primært installation og konfiguration af pam_duo PAM-modulet. Når dette modul er korrekt installeret og konfigureret med dine Duo-integrationsoplysninger, vil SSH-logins kræve en succesfuld Duo-autentificering ud over den traditionelle adgangskode. Dette kan gøres ved at redigere PAM-konfigurationsfilerne (f.eks. /etc/pam.d/sshd) for at inkludere linjer, der refererer til pam_duo.so.
Eksempel på konfiguration i /etc/pam.d/sshd:
# Første linje (eller hvor du ønsker Duo-prompten skal vises) auth required pam_duo.so # Eventuelt for at tillade lokale logins uden Duo, hvis du bruger `login_duo` direkte # auth substack password-auth Det er vigtigt at teste denne konfiguration omhyggeligt for at undgå at låse dig selv ude af SSH.
Konklusion
Implementering af Duo Unix på dine Linux-systemer er en effektiv måde at styrke din sikkerhedsposition på. Ved at tilføje et ekstra lag af autentificering beskytter du dine systemer mod en lang række trusler. Følg installations- og konfigurationsvejledningen nøje, test grundigt, og overvej at bruge de stabile udgivelser til produktionsmiljøer for at sikre den bedst mulige beskyttelse.
Hvis du vil læse andre artikler, der ligner Duo to-faktor: Sikkerhed for dine Linux-systemer, kan du besøge kategorien Teknologi.
