LinOTP tvåfaktorsautentiseringsserver

LinOTP tvåfaktorsautentiseringsserver

Idag vill jag dela med mig av hur man ställer in en tvåfaktorsautentiseringsserver för att skydda ett företagsnätverk, webbplatser, tjänster, ssh. Servern kommer att köra följande kombination: LinOTP + FreeRadius.

Varför behöver han oss?
Detta är en helt gratis, bekväm lösning, inom sitt eget nätverk, oberoende av tredjepartsleverantörer.

Den här tjänsten är mycket bekväm, ganska visuell, till skillnad från andra produkter med öppen källkod, och stöder också ett stort antal funktioner och policyer (till exempel login+lösenord+(PIN+OTPToken)). Genom API:t integreras den med sms-sändningstjänster (LinOTP Config->Provider Config->SMS Provider), genererar koder för mobilapplikationer som Google Authenticator och mycket mer. Jag tycker att det är bekvämare än tjänsten som diskuteras i artikeln.

Denna server fungerar perfekt med Cisco ASA, OpenVPN-server, Apache2, och i allmänhet med nästan allt som stöder autentisering via en RADIUS-server (T.ex. för SSH i datacentret).

Det krävs:

1) Debian 8 (jessie) - Krävs! (provinstallation på debian 9 beskrivs i slutet av artikeln)

Start:

Installerar Debian 8.

Lägg till LinOTP-förvaret:

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

Lägger till nycklar:

# gpg --search-keys 913DFF12F86258E5

Ibland under en "ren" installation, efter att ha kört det här kommandot, visar 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

Detta är den första gnupg-inställningen. Det är ok. Kör bara kommandot igen.
Till Debians fråga:

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 svarar: 1

Nästa:

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

# apt-get update

Installera mysql. I teorin kan du använda en annan sql-server, men för enkelhetens skull kommer jag att använda den som rekommenderad för LinOTP.

(ytterligare information, inklusive omkonfigurering av LinOTP-databasen, finns i den officiella dokumentationen för länk. Där kan du också hitta kommandot: dpkg-reconfigure linotp för att ändra parametrar om du redan har installerat mysql).

# apt-get install mysql-server

# apt-get update

(det skulle inte skada att kolla uppdateringarna igen)
Installera LinOTP och ytterligare moduler:

# apt-get install linotp

Vi svarar på installatörens frågor:
Använd Apache2: ja
Skapa ett lösenord för admin Linotp: "Ditt lösenord"
Generera självsignerat certifikat?: ja
Använd MySQL?: ja
Var finns databasen: localhost
Skapa en LinOTP-databas (basnamn) på servern: LinOTP2
Skapa en separat användare för databasen: LinOTP2
Vi ställer in ett lösenord för användaren: "Ditt lösenord"
Ska jag skapa en databas nu? (något i stil med "Är du säker på att du vill..."): ja
Ange MySQL root-lösenordet som du skapade när du installerade det: "YourPassword"
Klar.

(valfritt, du behöver inte installera det)

# apt-get install linotp-adminclient-cli 

(valfritt, du behöver inte installera det)

# apt-get install libpam-linotp  

Och så vårt Linotp webbgränssnitt är nu tillgängligt på:

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

Jag ska prata om inställningarna i webbgränssnittet lite senare.

Nu, det viktigaste! Vi höjer FreeRadius och länkar det till Linotp.

Installera FreeRadius och modul för att arbeta med LinOTP

# apt-get install freeradius linotp-freeradius-perl

säkerhetskopiera klienten och användarradiekonfigurationer.

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

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

Skapa en tom klientfil:

# touch /etc/freeradius/clients.conf

Redigera vår nya konfigurationsfil (den säkerhetskopierade konfigurationen kan användas som exempel)

# nano /etc/freeradius/clients.conf

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

Skapa sedan en användarfil:

# touch /etc/freeradius/users

Vi redigerar filen och säger till radien att vi kommer att använda perl för autentisering.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Redigera sedan filen /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Vi måste ange sökvägen till perl linotp-skriptet i modulparametern:

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

.....
Därefter skapar vi en fil där vi säger vilken (domän, databas eller fil) vi ska hämta data från.

# 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

Jag ska gå in lite mer i detalj här eftersom det är viktigt:

Fullständig beskrivning av filen med kommentarer:
#IP för linOTP-servern (IP-adress för vår LinOTP-server)
URL=https://172.17.14.103/validate/simplecheck
#Vårt område som vi kommer att skapa i LinOTP-webbgränssnittet.)
REALM=rearm1
#Namn på användargruppen som skapas i LinOTP-webbensmynningen.
RESCONF=platt_fil
#valfritt: kommentera om allt verkar fungera bra
Debug=Sant
#valfritt: använd detta, om du har självsignerade certifikat, annars kommentera bort (SSL om vi skapar vårt eget certifikat och vill verifiera det)
SSL_CHECK=False

Skapa sedan filen /etc/freeradius/sites-available/linotp

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

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

Och kopiera konfigurationen till den (du behöver inte redigera någonting):

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
}

Därefter skapar vi en SIM-länk:

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

Personligen dödar jag standard Radius-sajter, men om du behöver dem kan du antingen redigera deras konfiguration eller inaktivera dem.

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

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

# service freeradius reload

Låt oss nu återgå till webbansiktet och titta på det lite mer detaljerat:
I det övre högra hörnet klickar du på LinOTP Config -> UserIdResolvers -> New
Vi väljer vad vi vill ha: LDAP (AD win, LDAP samba), eller SQL, eller lokala användare av Flatfile-systemet.

Fyll i de obligatoriska fälten.

Därefter skapar vi REALMS:
I det övre högra hörnet klickar du på LinOTP Config -> Realms -> New.
och ge ett namn till våra REALMS, och klicka även på de tidigare skapade UserIdResolvers.

FreeRadius behöver all denna data i filen /etc/linotp2/rlm_perl.ini, som jag skrev om ovan, så om du inte redigerade den då, gör det nu.

Servern är konfigurerad.

Tillägg:

Konfigurera 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 erbjuder mysql (mariaDB) inte att ställa in ett root-lösenord, självklart kan du lämna det tomt, men om du läser nyheterna leder detta väldigt ofta till "epic fails", så vi kommer att ställa in det i alla fall)

# 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

Klistra in koden (skickad av JuriM, tack till honom för det!):

server linotp {
lyssna {
ipaddr = *
port = 1812
typ=auth
}
lyssna {
ipaddr = *
port = 1813
typ = acct
}
auktorisera {
förprocess
uppdatering {
&control:Auth-Type := Perl
}
}
autentisera {
Auth-Type Perl {
perl
}
}
bokföring {
unix
}
}

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

perl {
filnamn = /usr/share/linotp/radius_linotp.pm
func_authenticate = autentisera
func_authorize = auktorisera
}

Tyvärr, i Debian 9 är biblioteket radius_linotp.pm inte installerat från arkiven, så vi tar det från 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

låt oss nu redigera /etc/freeradius/3.0/clients.conf

klientservrar {
ipaddr = 192.168.188.0/24
hemligt = ditt lösenord
}

Låt oss nu korrigera nano /etc/linotp2/rlm_perl.ini

Vi klistrar in samma kod där som när vi installerade på debian 8 (beskrivs ovan)

det är allt enligt tanken. (ej testat än)

Jag kommer att lämna nedan några länkar för att ställa in system som oftast behöver skyddas med tvåfaktorsautentisering:
Ställer in tvåfaktorsautentisering i Apache2

Konfigurera med Cisco ASA(en annan tokengenereringsserver används där, men inställningarna för själva ASA är desamma).

VPN med tvåfaktorsautentisering

justering tvåfaktorsautentisering i ssh (LinOTP används också där) - tack vare författaren. Där kan du också hitta intressanta saker om att sätta upp LiOTP-policyer.

Dessutom stöder cms för många webbplatser tvåfaktorsautentisering (för WordPress har LinOTP till och med sin egen specialmodul för github), till exempel om du vill skapa en skyddad sektion på din företagswebbplats för företagets anställda.
VIKTIGT FAKTA! Markera INTE rutan "Google autenteficator" för att använda Google Authenticator! QR-koden är inte läsbar då... (konstigt faktum)

För att skriva den här artikeln användes information från följande artiklar:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Tack till författarna.

Källa: will.com

Lägg en kommentar