LinOTP to-faktor autentiseringsserver

LinOTP to-faktor autentiseringsserver

I dag vil jeg dele hvordan du setter opp en tofaktorautentiseringsserver for å beskytte et bedriftsnettverk, nettsteder, tjenester, ssh. Serveren vil kjøre følgende kombinasjon: LinOTP + FreeRadius.

Hvorfor trenger vi det?
Dette er en helt gratis, praktisk løsning, innenfor sitt eget nettverk, uavhengig av tredjepartsleverandører.

Denne tjenesten er veldig praktisk, ganske visuell, i motsetning til andre åpen kildekode-produkter, og støtter også et stort antall funksjoner og retningslinjer (for eksempel pålogging+passord+(PIN+OTPToken)). Gjennom API-en integreres den med sms-sendingstjenester (LinOTP Config->Provider Config->SMS Provider), genererer koder for mobilapplikasjoner som Google Authentificator og mye mer. Jeg tror det er mer praktisk enn tjenesten omtalt i artikkel.

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

krever:

1) Debian 8 (jessie) - Alltid! (prøveinstallasjon på debian 9 er beskrevet på slutten av artikkelen)

start:

Installerer Debian 8.

Legg til LinOTP-depotet:

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

Legger til nøkler:

# gpg --search-keys 913DFF12F86258E5

Noen ganger under en "ren" installasjon, etter å ha kjørt denne kommandoen, viser Debian:

gpg: создан каталог `/root/.gnupg'
gpg: создан новый файл настроек `/root/.gnupg/gpg.conf'
gpg: ВНИМАНИЕ: параметры в `/root/.gnupg/gpg.conf' еще не активны при этом запуске
gpg: создана таблица ключей `/root/.gnupg/secring.gpg'
gpg: создана таблица ключей `/root/.gnupg/pubring.gpg'
gpg: не заданы серверы ключей (используйте --keyserver)
gpg: сбой при поиске на сервере ключей: плохой URI

Dette er det første gnupg-oppsettet. Det er greit. Bare kjør kommandoen på nytt.
Til Debians spørsmål:

gpg: поиск "913DFF12F86258E5" на hkp сервере keys.gnupg.net
(1)	LSE LinOTP2 Packaging <[email protected]>
	  2048 bit RSA key F86258E5, создан: 2010-05-10
Keys 1-1 of 1 for "913DFF12F86258E5".  Введите числа, N) Следующий или Q) Выход>

Vi svarer: 1

Neste:

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

# apt-get update

Installer mysql. I teorien kan du bruke en annen sql-server, men for enkelhets skyld vil jeg bruke den som anbefalt for LinOTP.

(ytterligere informasjon, inkludert rekonfigurering av LinOTP-databasen, finnes i den offisielle dokumentasjonen for link. Der kan du også finne kommandoen: dpkg-reconfigure linotp for å endre parametere hvis du allerede har installert mysql).

# apt-get install mysql-server

# apt-get update

(det ville ikke skade å sjekke oppdateringene igjen)
Installer LinOTP og tilleggsmoduler:

# apt-get install linotp

Vi svarer på installatørens spørsmål:
Bruk Apache2: ja
Opprett et passord for admin Linotp: "Ditt passord"
Generere selvsignert sertifikat?: ja
Bruk MySQL?: ja
Hvor ligger databasen: localhost
Opprett en LinOTP-database (basenavn) på serveren: LinOTP2
Opprett en egen bruker for databasen: LinOTP2
Vi setter et passord for brukeren: "Ditt passord"
Bør jeg opprette en database nå? (noe sånt som "Er du sikker på at du vil..."): ja
Skriv inn MySQL root-passordet du opprettet da du installerte det: "DittPassord"
Ferdig.

(valgfritt, du trenger ikke å installere det)

# apt-get install linotp-adminclient-cli 

(valgfritt, du trenger ikke å installere det)

# apt-get install libpam-linotp  

Og derfor er vårt Linotp-nettgrensesnitt nå tilgjengelig på:

"<b>https</b>: //IP_сервера/manage"

Jeg skal snakke om innstillingene i nettgrensesnittet litt senere.

Nå, det viktigste! Vi hever FreeRadius og kobler det til Linotp.

Installer FreeRadius og modul for arbeid med LinOTP

# apt-get install freeradius linotp-freeradius-perl

sikkerhetskopiere klient- og brukerradiuskonfigurasjonene.

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

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

Opprett en tom klientfil:

# touch /etc/freeradius/clients.conf

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

# nano /etc/freeradius/clients.conf

client 192.168.188.0/24 {
secret  = passwd # пароль для подключения клиентов
}

Deretter oppretter du en brukerfil:

# touch /etc/freeradius/users

Vi redigerer filen og forteller radius at vi vil bruke perl for autentisering.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Deretter redigerer du filen /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Vi må spesifisere banen til perl linotp-skriptet i modulparameteren:

Perl { .......
.........
<source lang="bash">module = /usr/lib/linotp/radius_linotp.pm

... ..
Deretter lager vi en fil der vi sier hvilket (domene, database eller fil) dataene skal hentes fra.

# touch /etc/linotp2/rlm_perl.ini

# nano /etc/linotp2/rlm_perl.ini

URL=https://IP_вашего_LinOTP_сервера(192.168.X.X)/validate/simplecheck
REALM=webusers1c
RESCONF=LocalUser
Debug=True
SSL_CHECK=False

Jeg skal gå litt mer i detalj her fordi det er viktig:

Full beskrivelse av filen med kommentarer:
#IP til linOTP-serveren (IP-adressen til LinOTP-serveren vår)
URL=https://172.17.14.103/validate/simplecheck
#Vårt område som vi skal lage i LinOTP-nettgrensesnittet.)
REALM=rearm1
#Navnet på brukergruppen som er opprettet i LinOTP-nettmunningen.
RESCONF=flat_fil
#valgfritt: kommenter hvis alt ser ut til å fungere bra
Debug=True
#valgfritt: bruk dette, hvis du har selvsignerte sertifikater, ellers kommenter ut (SSL hvis vi lager vårt eget sertifikat og ønsker å bekrefte det)
SSL_CHECK=Usant

Deretter oppretter du filen /etc/freeeradius/sites-available/linotp

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

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

Og kopier konfigurasjonen inn i den (du trenger ikke å redigere noe):

authorize {
#normalizes maleformed client request before handed on to other modules (see '/etc/freeradius/modules/preprocess')
preprocess
#  If you are using multiple kinds of realms, you probably
#  want to set "ignore_null = yes" for all of them.
#  Otherwise, when the first style of realm doesn't match,
#  the other styles won't be checked.
#allows a list of realm (see '/etc/freeradius/modules/realm')
IPASS
#understands something like USER@REALM and can tell the components apart (see '/etc/freeradius/modules/realm')
suffix
#understands USERREALM and can tell the components apart (see '/etc/freeradius/modules/realm')
ntdomain
#  Read the 'users' file to learn about special configuration which should be applied for
# certain users (see '/etc/freeradius/modules/files')
files
# allows to let authentification to expire (see '/etc/freeradius/modules/expiration')
expiration
# allows to define valid service-times (see '/etc/freeradius/modules/logintime')
logintime
# We got no radius_shortname_map!
pap
}
#here the linotp perl module is called for further processing
authenticate {
perl
}

Deretter oppretter vi en SIM-lenke:

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

Personlig dreper jeg standard Radius-nettsteder, men hvis du trenger dem, kan du enten redigere konfigurasjonen 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 nettfjeset og se på det litt mer detaljert:
I øvre høyre hjørne klikker du LinOTP Config -> UserIdResolvers -> New
Vi velger hva vi vil ha: LDAP (AD win, LDAP samba), eller SQL, eller lokale brukere av Flatfile-systemet.

Fyll ut de obligatoriske feltene.

Deretter lager vi REALMS:
I øvre høyre hjørne klikker du LinOTP Config -> Realms -> New.
og gi et navn til våre REALMS, og klikk også på de tidligere opprettede UserIdResolvers.

FreeRadius trenger alle disse dataene i filen /etc/linotp2/rlm_perl.ini, som jeg skrev om ovenfor, så hvis du ikke redigerte den da, gjør det nå.

Serveren er alt konfigurert.

supplere:

Sette opp LinOTP på Debian 9:

Установка:

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

# mysql -u root -p
use mysql;
UPDATE user SET Password = PASSWORD('тут_пароль') 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 for det!):

server linotp {
lytte {
ipaddr = *
port = 1812
type=aut
}
lytte {
ipaddr = *
port = 1813
type = akkt
}
autorisere {
forprosess
Oppdater {
&control:Auth-Type := Perl
}
}
autentisere {
Auth-Type Perl {
perl
}
}
regnskap {
unix
}
}

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

perl {
filnavn = /usr/share/linotp/radius_linotp.pm
func_authenticate = autentisere
func_authorize = autorisere
}

Dessverre, i Debian 9 er ikke radius_linotp.pm-biblioteket installert fra depotene, 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

la oss nå redigere /etc/freeradius/3.0/clients.conf

klientservere {
ipaddr = 192.168.188.0/24
hemmelig = passordet ditt
}

La oss nå korrigere nano /etc/linotp2/rlm_perl.ini

Vi limer inn den samme koden der som ved installasjon på debian 8 (beskrevet ovenfor)

det er alt etter ideen. (ikke testet enda)

Nedenfor vil jeg legge igjen noen lenker for å sette opp systemer som oftest må beskyttes med tofaktorautentisering:
Sette opp tofaktorautentisering i Apache2

Oppsett med Cisco ASA(en annen tokengenereringsserver brukes der, men innstillingene til selve ASA er de samme).

VPN med tofaktorautentisering

justering tofaktorautentisering i ssh (LinOTP brukes også der) - takket være forfatteren. Der kan du også finne interessante ting om å sette opp LiOTP-policyer.

CMS-ene til mange nettsteder støtter også tofaktorautentisering (for WordPress har LinOTP til og med sin egen spesialmodul for GitHub), for eksempel hvis du ønsker å lage en beskyttet seksjon på bedriftens nettsted for bedriftsansatte.
VIKTIG FAKTA! IKKE merk av for "Google autenteficator" for å bruke Google Authenticator! QR-koden er ikke lesbar da... (merkelig faktum)

For å skrive denne artikkelen ble informasjon fra følgende artikler brukt:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Takk til forfatterne.

Kilde: www.habr.com

Legg til en kommentar