LinOTP to-faktor autentificeringsserver

LinOTP to-faktor autentificeringsserver

I dag vil jeg dele, hvordan man opsætter en to-faktor autentificeringsserver for at beskytte et virksomhedsnetværk, websteder, tjenester, ssh. Serveren vil køre følgende kombination: LinOTP + FreeRadius.

Hvorfor har vi brug for det?
Dette er en helt gratis, bekvem løsning inden for sit eget netværk, uafhængig af tredjepartsudbydere.

Denne service er meget praktisk, ret visuel i modsætning til andre open source-produkter og understøtter også et stort antal funktioner og politikker (For eksempel login+adgangskode+(PIN+OTPToken)). Gennem API'en integreres den med sms-afsendelsestjenester (LinOTP Config->Provider Config->SMS Provider), genererer koder til mobilapplikationer såsom Google Authenticator og meget mere. Jeg synes, det er mere praktisk end den service, der er diskuteret i artiklen.

Denne server fungerer perfekt med Cisco ASA, OpenVPN server, Apache2, og generelt med næsten alt, der understøtter autentificering via en RADIUS-server (F.eks. til SSH i datacenteret).

kræver:

1) Debian 8 (jessie) - Altid! (prøveinstallation på debian 9 er beskrevet i slutningen af ​​artiklen)

Home:

Installation af Debian 8.

Tilføj LinOTP-lageret:

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

Tilføjelse af nøgler:

# gpg --search-keys 913DFF12F86258E5

Nogle gange under en "ren" installation, efter at have kørt denne kommando, 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 den indledende gnupg-opsætning. Det er ok. Bare kør kommandoen igen.
Til Debians spørgsmå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

Næste:

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

# apt-get update

Installer mysql. I teorien kan du bruge en anden sql-server, men for nemheds skyld vil jeg bruge den som anbefalet til LinOTP.

(yderligere oplysninger, herunder rekonfigurering af LinOTP-databasen, kan findes i den officielle dokumentation for link. Der kan du også finde kommandoen: dpkg-reconfigure linotp for at ændre parametre, hvis du allerede har installeret mysql).

# apt-get install mysql-server

# apt-get update

(det ville ikke skade at tjekke opdateringerne igen)
Installer LinOTP og yderligere moduler:

# apt-get install linotp

Vi besvarer installatørens spørgsmål:
Brug Apache2: ja
Opret en adgangskode til admin Linotp: "Dit kodeord"
Generer selvsigneret certifikat?: ja
Brug MySQL?: ja
Hvor er databasen placeret: localhost
Opret en LinOTP-database (basenavn) på serveren: LinOTP2
Opret en separat bruger til databasen: LinOTP2
Vi sætter en adgangskode til brugeren: "Dit kodeord"
Skal jeg oprette en database nu? (noget i stil med "Er du sikker på, at du vil..."): ja
Indtast MySQL root-adgangskoden, som du oprettede, da du installerede den: "YourPassword"
Udført.

(valgfrit, du behøver ikke at installere det)

# apt-get install linotp-adminclient-cli 

(valgfrit, du behøver ikke at installere det)

# apt-get install libpam-linotp  

Og derfor er vores Linotp-webgrænseflade nu tilgængelig på:

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

Jeg vil tale om indstillingerne i webgrænsefladen lidt senere.

Nu, det vigtigste! Vi hæver FreeRadius og forbinder det med Linotp.

Installer FreeRadius og modul til at arbejde med LinOTP

# apt-get install freeradius linotp-freeradius-perl

sikkerhedskopiere klient- og brugerradius-konfigurationerne.

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

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

Opret en tom klientfil:

# touch /etc/freeradius/clients.conf

Redigering af vores nye konfigurationsfil (den sikkerhedskopierede konfiguration kan bruges som eksempel)

# nano /etc/freeradius/clients.conf

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

Opret derefter en brugerfil:

# touch /etc/freeradius/users

Vi redigerer filen og fortæller radius, at vi vil bruge perl til godkendelse.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Rediger derefter filen /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Vi skal angive stien til perl linotp-scriptet i modulparameteren:

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

... ..
Dernæst opretter vi en fil, hvori vi siger, hvilket (domæne, database eller fil) vi skal tage dataene 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 vil gå lidt mere i detaljer her, fordi det er vigtigt:

Fuld beskrivelse af filen med kommentarer:
#IP for linotp-serveren (IP-adressen på vores LinOTP-server)
URL=https://172.17.14.103/validate/simplecheck
#Vores område, som vi vil oprette i LinOTP-webgrænsefladen.)
REALM=rearm1
#Navn på den brugergruppe, der er oprettet i LinOTP-webmulden.
RESCONF=flad_fil
#valgfrit: kommenter, hvis alt ser ud til at fungere fint
Debug=Sandt
#valgfrit: brug dette, hvis du har selvsignerede certifikater, ellers kommenter ud (SSL hvis vi opretter vores eget certifikat og ønsker at verificere det)
SSL_CHECK=Falsk

Opret derefter filen /etc/freeradius/sites-available/linotp

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

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

Og kopier konfigurationen ind i den (ingen grund til at redigere noget):

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
}

Dernæst vil vi oprette et SIM-link:

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

Personligt dræber jeg standard Radius-websteder, 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 vende tilbage til web-ansigtet og se på det lidt mere detaljeret:
I øverste højre hjørne skal du klikke på LinOTP Config -> UserIdResolvers -> New
Vi vælger, hvad vi vil have: LDAP (AD win, LDAP samba), eller SQL, eller lokale brugere af Flatfile-systemet.

Udfyld de påkrævede felter.

Dernæst opretter vi REALMS:
I øverste højre hjørne skal du klikke på LinOTP Config -> Realms -> New.
og giv et navn til vores REALMS, og klik også på de tidligere oprettede UserIdResolvers.

FreeRadius har brug for alle disse data i filen /etc/linotp2/rlm_perl.ini, som jeg skrev om ovenfor, så hvis du ikke redigerede det dengang, så gør det nu.

Serveren er alt sammen konfigureret.

supplement:

Opsætning af 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 tilbyder mysql (mariaDB) ikke at sætte en root-adgangskode, selvfølgelig kan du lade den stå tom, men hvis du læser nyhederne, fører dette meget ofte til "epic fails", så vi indstiller det alligevel)

# 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

Indsæt koden (sendt af JuriM, tak til ham for det!):

server linotp {
Hør efter {
ipaddr = *
port = 1812
type=aut
}
Hør efter {
ipaddr = *
port = 1813
type = acct
}
autorisere {
forproces
opdatering {
&control:Auth-Type := Perl
}
}
autentificere {
Auth-Type Perl {
perl
}
}
regnskab {
unix
}
}

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

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

Desværre er radius_linotp.pm-biblioteket i Debian 9 ikke installeret fra lagrene, så vi tager 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

lad os nu redigere /etc/freeradius/3.0/clients.conf

klientservere {
ipaddr = 192.168.188.0/24
hemmelig = din adgangskode
}

Lad os nu rette nano /etc/linotp2/rlm_perl.ini

Vi indsætter den samme kode der, som ved installation på debian 8 (beskrevet ovenfor)

det er alt efter ideen. (ikke testet endnu)

Nedenfor vil jeg efterlade et par links om opsætning af systemer, der oftest skal beskyttes med to-faktor-godkendelse:
Opsætning af to-faktor-godkendelse i Apache2

Opsætning med Cisco ASA(en anden tokengenereringsserver bruges der, men indstillingerne for selve ASA er de samme).

VPN med to-faktor autentificering

justering to-faktor-godkendelse i ssh (LinOTP bruges også der) - tak til forfatteren. Der kan du også finde interessante ting om opsætning af LiOTP-politikker.

CMS'erne på mange websteder understøtter også to-faktor-autentificering (for WordPress har LinOTP endda sit eget specielle modul til github), for eksempel, hvis du vil lave en beskyttet sektion på din virksomheds hjemmeside til virksomhedens ansatte.
VIGTIG FAKTA! Markér IKKE afkrydsningsfeltet "Google Autenteficator" for at bruge Google Authenticator! QR-koden kan da ikke læses... (mærkeligt faktum)

For at skrive denne artikel blev oplysninger fra følgende artikler brugt:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Tak til forfatterne.

Kilde: www.habr.com

Tilføj en kommentar