
I dag vil jeg dele, hvordan man konfigurerer en to-faktor godkendelsesserver for beskyttelse af virksomhedens netværk, websteder, tjenester, SSH. Serveren vil køre med: LinOTP + FreeRadius.
Hvorfor har vi brug for det?
Det er en helt gratis, bekvem løsning, der fungerer inden for eget netværk og ikke afhænger af tredjepartsleverandører.
Denne service er meget praktisk, overskuelig i modsætning til andre open source-produkter og understøtter et stort antal funktioner og politikker (for eksempel login+adgangskode+(PIN+OTPToken)). Gennem API integreres den med SMS-udbyder tjenester (LinOTP Config->Provider Config->SMS Provider), genererer koder til mobile apps som Google Autenticator og meget mere. Jeg finder den mere brugervenlig end den service, der overvejes i .
Denne server fungerer fremragende med Cisco ASA, OpenVPN-server, Apache2 og generelt praktisk talt alt, der understøtter autentifikation via RADIUS-server (for eksempel til SSH i et datacenter).
Påkrævet:
1) Debian 8 (jessie) — Det er obligatorisk! (Testinstallationen på Debian 9 er beskrevet i slutningen af artiklen)
Start:
Vi installerer Debian 8.
Vi tilføjer LinOTP-repositoriet:
# echo 'deb http://www.linotp.org/apt/debian jessie linotp' > /etc/apt/sources.list.d/linotp.listVi tilføjer nøgler:
# gpg --search-keys 913DFF12F86258E5Nogle gange ved en "ren" installation, efter at have kørt denne kommando, viser Debian:
gpg: oprettet mappe `/root/.gnupg'
gpg: oprettet ny konfigurationsfil `/root/.gnupg/gpg.conf'
gpg: ADVARSEL: parametre i `/root/.gnupg/gpg.conf' er endnu ikke aktive ved denne opstart
gpg: oprettet nøgletabel `/root/.gnupg/secring.gpg'
gpg: oprettet nøgletabel `/root/.gnupg/pubring.gpg'
gpg: nøgleservere er ikke indstillet (brug --keyserver)
gpg: fejl ved søgning på nøgleserver: dårlig URI
Dette er den indledende konfiguration af gnupg. Det er ikke alvorligt. Kør kommandoen bare igen.
Til Debians spørgsmål:
gpg: søger "913DFF12F86258E5" på hkp-serveren keys.gnupg.net
(1) LSE LinOTP2 Packaging
2048 bit RSA-nøgle F86258E5, oprettet: 2010-05-10
Nøgler 1-1 af 1 for "913DFF12F86258E5". Indtast nummer, N) Næste eller Q) Afslut>Svar: 1
Næste:
# gpg --export 913DFF12F86258E5 | apt-key add -# apt-get updateVi installerer mysql. Teoretisk set kan en anden SQL-server bruges, men jeg vil for enkelhedens skyld bruge den, som anbefales til LinOTP.
(Yderligere oplysninger, herunder om omkonfigurering af LinOTP-database, kan findes i den officielle dokumentation om . Her kan du også finde kommandoen: dpkg-reconfigure linotp for at ændre indstillingerne, hvis du allerede har installeret MySQL).
# apt-get install mysql-server# apt-get update (At tjekke for opdateringer igen vil ikke skade)
Vi installerer LinOTP og yderligere moduler:
# apt-get install linotp Vi svarer på installatørens spørgsmål:
Brug Apache2: ja
Opfind et kodeord til admin Linotp: «DitKodeord»
Generere et selvsigneret certifikat?: ja
Brug MySQL?: ja
Hvor er databasen placeret: localhost
Opretter LinOTP-database (database navn) på serveren: LinOTP2
Opretter en separat bruger til databasen: LinOTP2
Indstil kodeord til brugeren: «DitKodeord»
Skal databasen oprettes nu? (noget i stil med “Er du sikker på, at du vil …”): ja
Indtast root-kodeordet fra MySQL, som du oprettede under installationen: «DitKodeord»
Færdig.
(valgfrit, kan undlades)
# apt-get install linotp-adminclient-cli (valgfrit, kan undlades)
# apt-get install libpam-linotp Og nu er vores webgrænseflade Linotp tilgængelig på adressen:
"<b>https<\/b>: \/\/IP_server\/manage"Jeg vil fortælle lidt mere om indstillingerne i webgrænsefladen senere.
Nu, det vigtigste! Vi starter FreeRadius og knytter det til Linotp.
Installerer FreeRadius og modulet til LinOTP
# apt-get install freeradius linotp-freeradius-perlsikrer konfigurationsfilerne klient og Users for radius.
# mv /etc/freeradius/clients.conf /etc/freeradius/clients.old# mv /etc/freeradius/users /etc/freeradius/users.oldOpretter en tom klientfil:
# touch /etc/freeradius/clients.confRedigerer vores nye konfigurationsfil (den sikkerhedskopierede konfiguration kan bruges som eksempel)
# nano /etc/freeradius/clients.confclient 192.168.188.0/24 {
secret = passwd # adgangskode til klientforbindelser
}Derefter opretter vi brugernavnfilen:
# touch /etc/freeradius/usersRedigerer filen, og fortæller radius, at vi vil bruge perl til autentificering.
# nano /etc/freeradius/usersDEFAULT Auth-type := perlDerefter redigerer vi filen /etc/freeradius/modules/perl
# nano /etc/freeradius/modules/perlVi skal indtaste stien til perl-scriptet linotp i parameteren module:
Perl { .......
.........
module = /usr/lib/linotp/radius_linotp.pm …..
Derefter opretter vi en fil, hvor vi angiver, fra hvilken (domæne, database eller fil) dataene skal hentes.
# touch /etc/linotp2/rlm_perl.ini# nano /etc/linotp2/rlm_perl.iniURL=https://IP_af_din_LinOTP_server(192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=FalseHer stopper jeg lidt mere op, da dette er vigtigt:
Fuld beskrivelse af filen med kommentarer:
#IP of the linotp server (IP адрес нашего LinOTP сервера)
URL=https://172.17.14.103/validate/simplecheck
#Наша область которую мы создадим в веб интерфейсе LinOTP.)
REALM=rearm1
#Имя группы юзверей которая создается в вебморде LinOTP.
RESCONF=flat_file
#optional: comment out if everything seems to work fine
Debug=True
#optional: use this, if you have selfsigned certificates, otherwise comment out (SSL если мы создаем свой сертификат и хотим его проверять)
SSL_CHECK=False
Derefter opretter vi filen /etc/freeradius/sites-available/linotp
# touch /etc/freeradius/sites-available/linotp# nano /etc/freeradius/sites-available/linotpOg vi kopierer konfigurationen ind i den (skal ikke ændres):
authorize {
# normaliserer forkert dannet klientanmodning, før den gives til andre moduler (se '/etc/freeradius/modules/preprocess')
preprocess
# Hvis du bruger flere slags domæner, vil du sandsynligvis
# gerne indstille "ignore_null = yes" for alle af dem.
# Ellers, når den første stil af domæne ikke matcher,
# vil de andre stilarter ikke blive tjekket.
# tillader en liste over domæner (se '/etc/freeradius/modules/realm')
IPASS
# forstår noget som USER@REALM og kan adskille komponenterne (se '/etc/freeradius/modules/realm')
suffix
# forstår USERREALM og kan adskille komponenterne (se '/etc/freeradius/modules/realm')
ntdomain
# Læs 'users'-filen for at lære om særlig konfiguration, der skal anvendes for
# bestemte brugere (se '/etc/freeradius/modules/files')
files
# tillader autentificering at udløbe (se '/etc/freeradius/modules/expiration')
expiration
# tillader at definere gyldige serviceretider (se '/etc/freeradius/modules/logintime')
logintime
# Vi har ikke radius_shortname_map!
pap
}
# her kaldes linotp perl-modulet til videre behandling
authenticate {
perl
}Derefter opretter vi et symlink:
# ln -s ../sites-available/linotp /etc/freeradius/sites-enabledPersonligt dræber jeg standardradius-webstederne, men hvis du har brug for dem, kan du enten redigere deres konfiguration eller deaktivere dem.
# rm /etc/freeradius/sites-enabled/default# rm /etc/freeradius/sites-enabled/inner-tunnel# service freeradius reload Lad os nu gå tilbage til webgrænsefladen og se nærmere på den:
Klik i øverste højre hjørne på LinOTP Config -> UserIdResolvers -> Ny
Vælg hvad vi ønsker: LDAP (AD win, LDAP samba), eller SQL, eller lokale systembrugere Flatfile.
Udfyld de nødvendige felter.
Derefter opretter vi REALMS:
Klik i øverste højre hjørne på LinOTP Config -> Realms -> Ny.
og giv vores REALMS et navn, og klik på den tidligere oprettede UserIdResolvers.
Alle disse oplysninger er nødvendige for freeRadius i filen /etc/linotp2/rlm_perl.ini, som jeg nævnte ovenfor, så hvis du ikke har redigeret den, så gør det nu.
Serveren er konfigureret.
Sårbarheden er bekræftet i mange officielle Docker-billeder, herunder billeder af couchbase, elasticsearch, flink, solr, storm osv.
Opsætning af LinOTP på Debian 9:
Installation:
# echo 'deb http://linotp.org/apt/debian stretch linotp' > /etc/apt/sources.list.d/linotp.list # apt-get install dirmngr# apt-key adv --recv-keys 913DFF12F86258E5
# apt-get update# apt-get install mysql-server(som standard tilbyder Debian 9 mysql (mariaDB) ikke at sætte en rodadgangskode, du kan selvfølgelig lade den være tom, men hvis du læser nyhederne, fører det ofte til "episke fejl", så vi sætter den alligevel)
# mysql -u root -puse mysql;UPDATE user SET Password = PASSWORD('her_er_adgangskoden') WHERE User = 'root';
sigreturn# apt-get install linotp# apt-get install linotp-adminclient-cli# apt-get install python-ldap# apt install freeradius# nano /etc/freeradius/3.0/sites-enabled/linotpVi indsætter koden (sendt af JuriM, tak for det!):
server linotp {
lyt {
ipaddr = *
port = 1812
type = auth
}
lyt {
ipaddr = *
port = 1813
type = acct
}
autoriser {
preprocess
opdater {
&control:Auth-Type := Perl
}
}
autentificer {
Auth-Type Perl {
perl
}
}
regnskab {
unix
}
}
Rediger /etc/freeradius/3.0/mods-enabled/perl
perl {
filnavn = /usr/share/linotp/radius_linotp.pm
func_authenticate = authenticate
func_authorize = authorize
}
Desværre installeres bibliotekerne radius_linotp.pm ikke i debian 9 fra repositories, så vi henter dem fra github.
# apt install git# git clone https://github.com/LinOTP/linotp-auth-freeradius-perl# cd linotp-auth-freeradius-perl/# cp radius_linotp.pm /usr/share/linotp/radius_linotp.pmnu retter vi /etc/freeradius/3.0/clients.conf
client servers {
ipaddr = 192.168.188.0/24
hemmelighed = ditadgangskode
}
nu retter vi nano /etc/linotp2/rlm_perl.ini
Vi indsætter den samme kode som ved installationen på debian 8 (beskrevet ovenfor)
teoretisk set er det hele. (ikke testet endnu)
Jeg efterlader nogle links nedenfor til opsætning af systemer, der ofte kræver beskyttelse med to-faktor autentificering:
Opsætning af to-faktor autentificering i
(der bruges en anden token-genereringsserver, men konfigurationen af ASA er den samme).
Indstillinger (der bruges også LinOTP) — tak til forfatteren. Der kan også findes interessante ting omkring opsætning af LiOTP politikker.
Mange CMS'er understøtter også to-faktor autentificering (For WordPress har LinOTP endda sin egen specielle modul til ), for eksempel hvis du vil lave et beskyttet område for virksomhedens ansatte på dit firmas websted.
VIGTIG FAKT! Sæt ikke flueben ved «Google autenteficator» for at bruge Google autentifikator! QR-koden kan ikke scannes så... (mærkelig fakta)
Til skrivningen af artiklen blev der brugt information fra følgende artikler:
Tak til forfatterne.
Kilde: habr.com
