LinOTP tweefactorauthenticatieserver

LinOTP tweefactorauthenticatieserver

Vandaag wil ik delen hoe je een tweefactorauthenticatieserver instelt om een ​​bedrijfsnetwerk, sites, services en ssh te beschermen. De server draait de volgende combinatie: LinOTP + FreeRadius.

Waarom heeft hij ons nodig?
Dit is een geheel gratis, handige oplossing, binnen het eigen netwerk, onafhankelijk van externe providers.

Deze service is erg handig, behoorlijk visueel, in tegenstelling tot andere open source-producten, en ondersteunt ook een groot aantal functies en beleid (bijvoorbeeld login+wachtwoord+(PIN+OTPToken)). Via de API integreert het met sms-verzenddiensten (LinOTP Config->Provider Config->SMS Provider), genereert het codes voor mobiele applicaties zoals Google Authentificator en nog veel meer. Ik denk dat het handiger is dan de service die wordt besproken статье.

Deze server werkt perfect met Cisco ASA, OpenVPN-server, Apache2 en in het algemeen met vrijwel alles dat authenticatie via een RADIUS-server ondersteunt (bijvoorbeeld voor SSH in het datacenter).

vereist:

1) Debian 8 (jessie) - Verplicht! (proefinstallatie op debian 9 wordt beschreven aan het einde van het artikel)

start:

Debian 8 installeren.

Voeg de LinOTP-repository toe:

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

Sleutels toevoegen:

# gpg --search-keys 913DFF12F86258E5

Soms geeft Debian tijdens een “schone” installatie, na het uitvoeren van dit commando, het volgende weer:

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

Dit is de eerste gnupg-installatie. Het is ok. Voer de opdracht gewoon opnieuw uit.
Op de vraag van Debian:

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) Выход>

Wij antwoorden: 1

Volgende:

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

# apt-get update

Mysql installeren. In theorie kun je een andere SQL-server gebruiken, maar voor de eenvoud zal ik deze gebruiken zoals aanbevolen voor LinOTP.

(aanvullende informatie, inclusief het opnieuw configureren van de LinOTP-database, is te vinden in de officiële documentatie voor link. Daar kun je ook het commando vinden: dpkg-reconfigure linotp om parameters te wijzigen als je mysql al hebt geïnstalleerd).

# apt-get install mysql-server

# apt-get update

(het kan geen kwaad om de updates nog eens te controleren)
Installeer LinOTP en extra modules:

# apt-get install linotp

Wij beantwoorden de vragen van de installateur:
Gebruik Apache2: ja
Maak een wachtwoord aan voor beheerder Linotp: “Uw wachtwoord”
Zelfondertekend certificaat genereren?: ja
MySQL gebruiken?: ja
Waar bevindt de database zich: localhost
Maak een LinOTP-database (basisnaam) op de server: LinOTP2
Maak een aparte gebruiker aan voor de database: LinOTP2
We hebben een wachtwoord voor de gebruiker ingesteld: “Uw wachtwoord”
Moet ik nu een database aanmaken? (zoiets als “Weet je zeker dat je wilt...”): ja
Voer het MySQL-rootwachtwoord in dat u bij de installatie hebt aangemaakt: “YourPassword”
Klaar.

(optioneel, je hoeft het niet te installeren)

# apt-get install linotp-adminclient-cli 

(optioneel, je hoeft het niet te installeren)

# apt-get install libpam-linotp  

En dus is onze Linotp-webinterface nu beschikbaar op:

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

Ik zal het later hebben over de instellingen in de webinterface.

Nu het allerbelangrijkste! We verhogen FreeRadius en koppelen het met Linotp.

Installeer FreeRadius en module voor het werken met LinOTP

# apt-get install freeradius linotp-freeradius-perl

maak een back-up van de client- en gebruikersradiusconfiguraties.

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

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

Maak een leeg klantenbestand aan:

# touch /etc/freeradius/clients.conf

Ons nieuwe configuratiebestand bewerken (de geback-upte configuratie kan als voorbeeld worden gebruikt)

# nano /etc/freeradius/clients.conf

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

Maak vervolgens een gebruikersbestand:

# touch /etc/freeradius/users

We bewerken het bestand en vertellen radius dat we perl zullen gebruiken voor authenticatie.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Bewerk vervolgens het bestand /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

We moeten het pad naar het perl linotp-script opgeven in de moduleparameter:

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

.....
Vervolgens maken we een bestand waarin we aangeven uit welk domein (domein, database of bestand) we de gegevens moeten halen.

# 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

Ik zal hier wat dieper op ingaan, omdat het belangrijk is:

Volledige beschrijving van het bestand met commentaar:
#IP van de linOTP-server (IP-adres van onze LinOTP-server)
URL=https://172.17.14.103/validate/simplecheck
#Ons gebied dat we zullen creëren in de LinOTP-webinterface.)
REAL=herwapenen1
#Naam van de gebruikersgroep die is aangemaakt in de LinOTP-webmuilkorf.
RESCONF=plat_bestand
#optioneel: geef commentaar als alles goed lijkt te werken
Foutopsporing=Waar
#optioneel: gebruik dit als u zelfondertekende certificaten heeft, geef anders commentaar (SSL als we ons eigen certificaat maken en dit willen verifiëren)
SSL_CHECK=Onwaar

Maak vervolgens het bestand /etc/freeradius/sites-available/linotp

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

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

En kopieer de configuratie ernaar (u hoeft niets te bewerken):

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
}

Vervolgens maken we een SIM-link:

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

Persoonlijk dood ik standaard Radius-sites, maar als je ze nodig hebt, kun je hun configuratie bewerken of uitschakelen.

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

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

# service freeradius reload

Laten we nu terugkeren naar het webgezicht en er wat gedetailleerder naar kijken:
Klik in de rechterbovenhoek op LinOTP Config -> UserIdResolvers -> Nieuw
We kiezen wat we willen: LDAP (AD win, LDAP samba), of SQL, of lokale gebruikers van het Flatfile-systeem.

Vul de verplichte velden in.

Vervolgens creëren we REALMS:
Klik in de rechterbovenhoek op LinOTP Config -> Realms -> Nieuw.
en geef een naam aan onze REALMS, en klik ook op de eerder gemaakte UserIdResolvers.

FreeRadius heeft al deze gegevens nodig in het bestand /etc/linotp2/rlm_perl.ini, zoals ik hierboven schreef, dus als je het toen niet hebt bewerkt, doe het dan nu.

De server is helemaal geconfigureerd.

aan te vullen:

LinOTP instellen op Debian 9:

Omgeving:

# 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

(standaard biedt mysql (mariaDB) in Debian 9 niet aan om een ​​root-wachtwoord in te stellen, je kunt het natuurlijk leeg laten, maar als je het nieuws leest, leidt dit heel vaak tot “epische mislukkingen”, dus we zullen het instellen Hoe dan ook)

# 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

Plak de code (verzonden door JuriM, bedankt daarvoor!):

server linotp {
luisteren {
ipaddr = *
port = 1812
type=auth
}
luisteren {
ipaddr = *
port = 1813
soort = acc
}
toestemming geven {
voorbewerken
update {
&control:Auth-Type := Perl
}
}
authenticeren {
Verificatietype Perl {
perl
}
}
boekhouding {
unix
}
}

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

perl {
bestandsnaam = /usr/share/linotp/radius_linotp.pm
func_authenticate = authenticeren
func_authorize = autoriseren
}

Helaas wordt in Debian 9 de bibliotheek radius_linotp.pm niet vanuit de repository's geïnstalleerd, dus halen we deze van 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

Laten we nu /etc/freeradius/3.0/clients.conf bewerken

clientservers {
ipaddr = 192.168.188.0/24
geheim = uw wachtwoord
}

Laten we nu nano /etc/linotp2/rlm_perl.ini corrigeren

We plakken daar dezelfde code als bij de installatie op debian 8 (hierboven beschreven)

dat is allemaal volgens het idee. (nog niet getest)

Ik laat hieronder een paar links achter voor het opzetten van systemen die meestal moeten worden beschermd met tweefactorauthenticatie:
Tweefactorauthenticatie instellen in Apache2

Installatie met Cisco ASA(daar wordt een andere tokengeneratieserver gebruikt, maar de instellingen van de ASA zelf zijn hetzelfde).

VPN met tweefactorauthenticatie

afstelling tweefactorauthenticatie in ssh (LinOTP wordt daar ook gebruikt) - met dank aan de auteur. Daar kun je ook interessante dingen vinden over het opzetten van LiOTP-beleid.

Ook ondersteunt het cms van veel sites tweefactorauthenticatie (voor WordPress heeft LinOTP zelfs een eigen speciale module voor GitHub), bijvoorbeeld als u een beveiligd gedeelte op uw bedrijfswebsite wilt maken voor bedrijfsmedewerkers.
BELANGRIJK FEIT! Vink het vakje “Google autenteficator” NIET aan om Google Authenticator te gebruiken! De QR-code is dan niet leesbaar... (vreemd feit)

Voor het schrijven van dit artikel is informatie uit de volgende artikelen gebruikt:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Met dank aan de auteurs.

Bron: www.habr.com

Voeg een reactie