
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 .
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.listLegg til nøklene:
# gpg --search-keys 913DFF12F86258E5Noen 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 updateInstaller 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 . 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-perltar 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.oldOppretter en tom klientfil:
# touch /etc/freeradius/clients.confRedigerer vår nye konfigurasjonsfil (den sikkerhetskopierte konfigurasjonen kan brukes som eksempel)
# nano /etc/freeradius/clients.confclient 192.168.188.0/24 {
secret = passwd # passord for klienttilkoblinger
}Deretter oppretter vi users-filen:
# touch /etc/freeradius/usersRedigerer filen, og forteller Radius at vi skal bruke perl for autentisering.
# nano /etc/freeradius/usersDEFAULT Auth-type := perlVidere redigerer vi filen /etc/freeradius/modules/perl
# nano /etc/freeradius/modules/perlVi 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.iniURL=https://IP_av_LinOTP-serveren_din(192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=FalseHer 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/linotpOg 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-enabledPersonlig 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 -pbruk 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/linotpLim 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.pmnå 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
(der brukes en annen token-generator-server, men innstillingene for selve ASA er de samme).
Konfigurasjon (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å ), 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:
Takk til forfatterne.
Kilde: habr.com
