To-faktorautentiseringsserver LinOTP

To-faktorautentiseringsserver LinOTP

I dag vil jeg dele hvordan man setter opp en to-faktor autentiseringsserver for å beskytte bedriftens nettverk, nettsteder, tjenester og ssh. Serveren vil kjøre en kombinasjon av: LinOTP + FreeRadius.

Hvorfor trenger vi den?
Dette er en helt gratis og praktisk løsning i eget nettverk, uavhengig av tredjepartsleverandører.

Denne tjenesten er veldig praktisk, lettfattelig, i motsetning til andre åpne kildeprodukter, og støtter også et stort antall funksjoner og retningslinjer (for eksempel login+passord+(PIN+OTPToken)). Den integrerer med SMS-tjenester gjennom API (LinOTP Config->Provider Config->SMS Provider), genererer koder for mobilapplikasjoner som Google Authenticator og mye mer. Jeg synes den er mer brukervennlig enn den tjenesten som vurderes i artikkelen.

Denne serveren fungerer utmerket med Cisco ASA, OpenVPN-server, Apache2, og generelt med alt som støtter autentisering via RADIUS-server (for eksempel til SSH i datasenteret).

Kreves:

1) Debian 8 (jessie) — Absolutt! (testinstallasjonen på debian 9 er beskrevet på slutten av artikkelen)

Start:

Installer Debian 8.

Legg til LinOTP-repositoriet:

# echo 'deb http://www.linotp.org/apt/debian jessie linotp' > /etc/apt/sources.list.d/linotp.list

Legg til nøklene:

# gpg --search-keys 913DFF12F86258E5

Noen ganger, ved en "ren" installasjon, gir Debian følgende etter å ha kjørt denne kommandoen:

gpg: opprettet katalog `/root/.gnupg'
gpg: opprettet ny konfigurasjonsfil `/root/.gnupg/gpg.conf'
gpg: ADVARSEL: innstillingene i `/root/.gnupg/gpg.conf' er ikke aktive ved denne lanseringen
gpg: opprettet nøkkeltabell `/root/.gnupg/secring.gpg'
gpg: opprettet nøkkeltabell `/root/.gnupg/pubring.gpg'
gpg: ingen nøkkeltjenere er angitt (bruk --keyserver)
gpg: feilkode ved søk på nøkkelserver: dårlig URI

Dette er den første konfigurasjonen av gnupg. Ikke bekymre deg. Bare kjør kommandoen igjen.
Når Debian spør:

gpg: søker "913DFF12F86258E5" på hkp-serveren keys.gnupg.net
(1)	LSE LinOTP2 Packaging 
	  2048 bit RSA-nøkkel F86258E5, opprettet: 2010-05-10
Keys 1-1 av 1 for "913DFF12F86258E5". Skriv inn nummer, N) Neste eller Q) Avslutt>

Svar: 1

Videre:

# gpg --export 913DFF12F86258E5 | apt-key add -

# apt-get update

Installer mysql. Teoretisk kan man bruke en annen SQL-server, men for enkelhets skyld vil jeg bruke denne, da den anbefales for LinOTP.

(tilleggsinformasjon, inkludert om rekonfigurasjon av LinOTP-databasen, finnes i den offisielle dokumentasjonen for lenken. Der kan man også finne kommandoen: dpkg-reconfigure linotp for å endre innstillingene hvis du allerede har installert mysql).

# apt-get install mysql-server

# apt-get update

(å sjekke oppdateringer igjen vil ikke skade)
Installer LinOTP og tilleggsmoduler:

# apt-get install linotp

Svar på spørsmålene fra installasjonsprogrammet:
Bruke Apache2: ja
Velg et passord for admin Linotp: «DittPassord»
Generere et selvsignert sertifikat?: ja
Bruke MySQL?: ja
Hvor ligger databasen: localhost
Oppretter databasen LinOTP (db-navn) på serveren: LinOTP2
Oppretter en egen bruker for databasen: LinOTP2
Setter passordet for brukeren: «DittPassord»
Skal databasen opprettes nå? (noe liknende “Er du sikker på at du vil …”): ja
Skriv inn root-passordet for MySQL som ble opprettet under installasjonen: «DittPassord»
Ferdig.

(valgfritt, kan også utelates)

# apt-get install linotp-adminclient-cli 

(valgfritt, kan også utelates)

# apt-get install libpam-linotp  

Så, vårt webgrensesnitt LinOTP er nå tilgjengelig på følgende adresse:

"<b>https<\/b>: \/\/IP_server\/manage"

Jeg vil komme tilbake til innstillingene i webgrensesnittet senere.

Nå, det viktigste! Vi setter opp FreeRadius og knytter det til LinOTP.

Installerer FreeRadius og modulen for LinOTP

# apt-get install freeradius linotp-freeradius-perl

tar backup av konfigurasjonene til client og Users for Radius.

# mv /etc/freeradius/clients.conf  /etc/freeradius/clients.old

# mv /etc/freeradius/users  /etc/freeradius/users.old

Oppretter en tom klientfil:

# touch /etc/freeradius/clients.conf

Redigerer vår nye konfigurasjonsfil (den sikkerhetskopierte konfigurasjonen kan brukes som eksempel)

# nano /etc/freeradius/clients.conf

client 192.168.188.0/24 {
secret = passwd # passord for klienttilkoblinger
}

Deretter oppretter vi users-filen:

# touch /etc/freeradius/users

Redigerer filen, og forteller Radius at vi skal bruke perl for autentisering.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Videre redigerer vi filen /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Vi må angi stien til perl-skriptet linotp i parameteren module:

Perl { .......
.........
module = /usr/lib/linotp/radius_linotp.pm

…..
Videre oppretter vi en fil hvor vi angir hvilken (domene, database eller fil) vi henter data fra.

# touch /etc/linotp2/rlm_perl.ini

# nano /etc/linotp2/rlm_perl.ini

URL=https://IP_av_LinOTP-serveren_din(192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=False

Her stopper jeg litt mer opp, fordi dette er viktig:

Full beskrivelse av 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

Vi oppretter nå filen /etc/freeradius/sites-available/linotp

# touch /etc/freeradius/sites-available/linotp

# nano /etc/freeradius/sites-available/linotp

Og kopierer inn konfigurasjonen (ingen endringer er nødvendige):

authorize {
#normalizes malformerte klientforespørsel før den leveres til andre moduler (se '/etc/freeradius/modules/preprocess')
preprocess
#  Hvis du bruker flere typer realms, vil du sannsynligvis
#  sette "ignore_null = yes" for alle.
#  Ellers, når den første stil av realm ikke samsvarer,
#  vil ikke de andre stilene bli sjekket.
# tillater en liste av realms (se '/etc/freeradius/modules/realm')
IPASS
#forstår noe som USER@REALM og kan skille komponentene (se '/etc/freeradius/modules/realm')
suffix
#forstår USERREALM og kan skille komponentene (se '/etc/freeradius/modules/realm')
ntdomain
#  Leser 'users'-filen for å lære om spesiell konfigurasjon som kan gjelde for
# bestemte brukere (se '/etc/freeradius/modules/files')
files
# tillater å la autentisering gå ut (se '/etc/freeradius/modules/expiration')
expiration
# tillater å definere gyldige tjenestetider (se '/etc/freeradius/modules/logintime')
logintime
# Vi har ingen radius_shortname_map!
pap
}
#her kalles linotp perl-modulen for videre behandling
authenticate {
perl
}

Deretter lager vi en symlink:

# ln -s ../sites-available/linotp /etc/freeradius/sites-enabled

Personlig dreper jeg de standard Radius-nettsidene, men hvis du trenger dem, kan du enten redigere konfigurasjonen deres eller deaktivere dem.

# rm /etc/freeradius/sites-enabled/default

# rm /etc/freeradius/sites-enabled/inner-tunnel

# service freeradius reload

La oss nå gå tilbake til webgrensesnittet og se nærmere på det:
Klikk oppe til høyre på LinOTP Config -> UserIdResolvers -> Ny
Velg hva du ønsker: LDAP (AD win, LDAP samba), SQL, eller lokale brukere i systemet Flatfile.

Fyll ut de nødvendige feltene.

Deretter lager vi REALMS:
Klikk oppe til høyre på LinOTP Config -> Realms -> Ny.
gi REALMS-navnet vårt, og klikk på den tidligere opprettede UserIdResolvers.

Alle disse dataene er nødvendige for freeRadius i filen /etc/linotp2/rlm_perl.ini, som jeg nevnte tidligere, så hvis du ikke har redigert den, gjør det nå.

Serveren er nå konfigurert.

Tillegg:

Konfigurering av LinOTP på Debian 9:

Installasjon:

# 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 tilbyr Debian 9 mysql (mariaDB) ikke å sette et rotpassord, du kan selvfølgelig la det stå tomt, men hvis du leser nyhetene, fører det ofte til 'epic fails', så vi vil sette det allikevel)

# mysql -u root -p
bruk mysql;
UPDATE user SET Password = PASSWORD('her_passord') WHERE User = 'root';
exit
# 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/linotp

Lim inn koden (sendt av JuriM, takk til ham!):

server linotp {
lytt {
ipaddr = *
port = 1812
type = auth
}
lytt {
ipaddr = *
port = 1813
type = acct
}
autoriser {
forbehandling
oppdater {
&control:Auth-Type := Perl
}
}
autentiser {
Auth-Type Perl {
perl
}
}
regnskap {
unix
}
}

Rediger /etc/freeradius/3.0/mods-enabled/perl

perl {
filnavn = /usr/share/linotp/radius_linotp.pm
func_authenticate = authenticate
func_authorize = authorize
}

Dessverre, i Debian 9 installeres ikke biblioteket radius_linotp.pm fra repositoriene, så vi tar det 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.pm

nå justerer vi /etc/freeradius/3.0/clients.conf

klient servere {
ipaddr = 192.168.188.0/24
hemmelig = dittpassord
}

nå justerer vi nano /etc/linotp2/rlm_perl.ini

Lim inn den samme koden som ved installasjonen på Debian 8 (beskrevet ovenfor)

i teorien alt. (til nå ikke testet)

Jeg vil legge igjen noen lenker nedenfor om konfigurering av systemer som ofte må beskyttes med to-faktor-autentisering:
Konfigurering av to-faktor-autentisering i Apache2

Konfigurering med Cisco ASA(der brukes en annen token-generator-server, men innstillingene for selve ASA er de samme).

VPN med to-faktor-autentisering

Konfigurasjon to-faktor-autentisering i ssh (der brukes også LinOTP) – takk til forfatteren. Der kan du også finne interessante ting om innstillingene av LiOTP.

Også cms for mange nettsteder støtter to-faktor-autentisering (For WordPress har LinOTP til og med en egen spesialmodul på github), for eksempel hvis du ønsker å lage en beskyttet seksjon for ansatte på ditt bedriftsnettsted.
VIKTIG FAKT! IKKE sett merket på «Google autenteficator» for å bruke Google autentifisering! QR-koden leses da ikke... (merkelig faktum)

Informasjonen i artikkelen er hentet fra følgende artikler:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Takk til forfatterne.

Kilde: habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster