LinOTP dvojfaktorový autentifikačný server

LinOTP dvojfaktorový autentifikačný server

Dnes sa chcem podeliť o to, ako nastaviť dvojfaktorový autentifikačný server na ochranu podnikovej siete, stránok, služieb, ssh. Server spustí nasledujúcu kombináciu: LinOTP + FreeRadius.

Prečo to potrebujeme?
Ide o úplne bezplatné, pohodlné riešenie v rámci vlastnej siete, nezávislé od poskytovateľov tretích strán.

Táto služba je veľmi pohodlná, celkom vizuálna, na rozdiel od iných produktov s otvoreným zdrojovým kódom, a tiež podporuje veľké množstvo funkcií a politík (napríklad prihlásenie+heslo+(PIN+OTPToken)). Cez API sa integruje so službami odosielania sms (LinOTP Config->Provider Config->SMS Provider), generuje kódy pre mobilné aplikácie ako Google Authentificator a mnohé ďalšie. Myslím, že je to pohodlnejšie ako služba, o ktorej sa hovorí článok.

Tento server perfektne spolupracuje s Cisco ASA, OpenVPN serverom, Apache2 a vo všeobecnosti takmer so všetkým, čo podporuje autentifikáciu cez RADIUS server (napríklad pre SSH v dátovom centre).

Vyžaduje sa:

1) Debian 8 (jessie) - Povinné! (skúšobná inštalácia na debian 9 je popísaná na konci článku)

Štart:

Inštalácia Debianu 8.

Pridajte úložisko LinOTP:

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

Pridanie kľúčov:

# gpg --search-keys 913DFF12F86258E5

Niekedy počas „čistej“ inštalácie po spustení tohto príkazu Debian zobrazí:

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

Toto je počiatočné nastavenie gnupg. Je to v poriadku. Stačí znova spustiť príkaz.
Na otázku Debianu:

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

Odpovedáme: 1

Ďalšie:

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

# apt-get update

Nainštalujte mysql. Teoreticky môžete použiť iný sql server, ale pre jednoduchosť ho budem používať ako odporúčaný pre LinOTP.

(ďalšie informácie, vrátane prekonfigurovania databázy LinOTP, nájdete v oficiálnej dokumentácii pre odkaz. Tam môžete tiež nájsť príkaz: dpkg-reconfigure linotp na zmenu parametrov, ak ste už nainštalovali mysql).

# apt-get install mysql-server

# apt-get update

(neškodilo by znova skontrolovať aktualizácie)
Nainštalujte LinOTP a ďalšie moduly:

# apt-get install linotp

Odpovedáme na otázky inštalatéra:
Použiť Apache2: áno
Vytvorte heslo pre správcu Linotp: „Vaše heslo“
Vygenerovať certifikát s vlastným podpisom?: áno
Používať MySQL?: Áno
Kde sa nachádza databáza: localhost
Vytvorte databázu LinOTP (základný názov) na serveri: LinOTP2
Vytvorte samostatného používateľa pre databázu: LinOTP2
Používateľovi sme nastavili heslo: „Vaše heslo“
Mám teraz vytvoriť databázu? (niečo ako „Ste si istý, že chcete...“): áno
Zadajte koreňové heslo MySQL, ktoré ste vytvorili pri inštalácii: „Vaše heslo“
Hotovo.

(voliteľné, nemusíte ho inštalovať)

# apt-get install linotp-adminclient-cli 

(voliteľné, nemusíte ho inštalovať)

# apt-get install libpam-linotp  

A tak je naše webové rozhranie Linotp teraz dostupné na:

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

O nastaveniach vo webovom rozhraní poviem trochu neskôr.

Teraz to najdôležitejšie! Zvyšujeme FreeRadius a spájame ho s Linotp.

Nainštalujte FreeRadius a modul pre prácu s LinOTP

# apt-get install freeradius linotp-freeradius-perl

zálohovanie konfigurácií klienta a okruhu používateľov.

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

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

Vytvorte prázdny súbor klienta:

# touch /etc/freeradius/clients.conf

Úprava nášho nového konfiguračného súboru (ako príklad možno použiť zálohovanú konfiguráciu)

# nano /etc/freeradius/clients.conf

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

Ďalej vytvorte používateľský súbor:

# touch /etc/freeradius/users

Upravíme súbor a povieme polomeru, že na autentifikáciu použijeme perl.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Ďalej upravte súbor /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Musíme zadať cestu k skriptu perl linotp v parametri modulu:

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

... ..
Ďalej si vytvoríme súbor, v ktorom povieme, z ktorého (doména, databáza alebo súbor) sa majú údaje prevziať.

# 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

Pôjdem tu trochu podrobnejšie, pretože je to dôležité:

Úplný popis súboru s komentármi:
#IP servera linOTP (IP adresa nášho servera LinOTP)
URL=https://172.17.14.103/validate/simplecheck
#Naša oblasť, ktorú vytvoríme vo webovom rozhraní LinOTP.)
REALM=rearm1
#Názov skupiny používateľov, ktorá je vytvorená vo webovom náhubku LinOTP.
RESCONF=plochý_súbor
#voliteľné: napíšte komentár, ak sa zdá, že všetko funguje dobre
Debug=Pravda
#voliteľné: toto použite, ak máte certifikáty s vlastným podpisom, inak komentujte (SSL, ak si vytvoríme vlastný certifikát a chceme ho overiť)
SSL_CHECK=Nepravda

Ďalej vytvorte súbor /etc/freeradius/sites-available/linotp

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

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

A skopírujte do neho konfiguráciu (nie je potrebné nič upravovať):

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
}

Ďalej vytvoríme odkaz na SIM kartu:

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

Osobne zabíjam predvolené lokality Radius, ale ak ich potrebujete, môžete upraviť ich konfiguráciu alebo ich zakázať.

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

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

# service freeradius reload

Teraz sa vráťme k webovej stránke a pozrime sa na ňu trochu podrobnejšie:
V pravom hornom rohu kliknite na LinOTP Config -> UserIdResolvers -> New
Vyberieme si čo chceme: LDAP (AD win, LDAP samba), alebo SQL, alebo lokálni používatelia systému Flatfile.

Vyplňte požadované polia.

Ďalej vytvoríme REALMS:
V pravom hornom rohu kliknite na LinOTP Config -> Realms -> New.
a pomenujte naše REALMS a tiež kliknite na predtým vytvorené UserIdResolvers.

FreeRadius potrebuje všetky tieto údaje v súbore /etc/linotp2/rlm_perl.ini, ako som o tom písal vyššie, takže ak ste to vtedy neupravovali, urobte to teraz.

Celý server je nakonfigurovaný.

Dodatok:

Nastavenie LinOTP na Debian 9:

nastavenia:

# 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

(v Debiane 9 štandardne mysql (mariaDB) neponúka nastavenie rootovského hesla, samozrejme ho môžete nechať prázdne, ale ak čítate správy, veľmi často to vedie k „epickým zlyhaniam“, takže ho nastavíme každopádne)

# 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

Prilepte kód (zaslal JuriM, ďakujeme mu za to!):

server linotp {
počúvať {
ipaddr = *
port = 1812
typ=auth
}
počúvať {
ipaddr = *
port = 1813
typ = akt
}
povoliť {
predspracovanie
aktualizovať {
&control:Auth-Type := Perl
}
}
overiť {
Auth-Type Perl {
perl
}
}
účtovníctvo {
unix
}
}

Upravte súbor /etc/freeradius/3.0/mods-enabled/perl

perl {
názov súboru = /usr/share/linotp/radius_linotp.pm
func_authenticate = overiť
func_authorize = autorizovať
}

Bohužiaľ, v Debiane 9 nie je knižnica radius_linotp.pm nainštalovaná z repozitárov, takže ju prevezmeme z githubu.

# 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

teraz upravme /etc/freeradius/3.0/clients.conf

klientske servery {
ipaddr = 192.168.188.0/24
tajomstvo = vaše heslo
}

Teraz opravíme nano /etc/linotp2/rlm_perl.ini

Vložíme tam rovnaký kód ako pri inštalácii na debian 8 (popísané vyššie)

to je všetko podľa predstavy. (zatiaľ netestované)

Nižšie zanechám niekoľko odkazov na nastavenie systémov, ktoré je najčastejšie potrebné chrániť pomocou dvojfaktorovej autentifikácie:
Nastavenie dvojfaktorovej autentifikácie v Apache2

Nastavenie pomocou Cisco ASA(je tam použitý iný server na generovanie tokenov, ale nastavenia samotného ASA sú rovnaké).

VPN s dvojfaktorovou autentifikáciou

nastavenie dvojfaktorová autentifikácia v ssh (je tam použitý aj LinOTP) - vďaka autorovi. Nájdete tam aj zaujímavé veci o nastavení LiOTP politík.

CMS mnohých stránok tiež podporuje dvojfaktorovú autentifikáciu (pre WordPress má LinOTP dokonca svoj vlastný špeciálny modul pre GitHub), napríklad ak chcete na svojej firemnej webovej stránke vytvoriť chránenú sekciu pre zamestnancov spoločnosti.
DÔLEŽITÉ FAKT! NEZAZNAČUJTE políčko „Google autenteficator“, ak chcete používať Google Authenticator! QR kód potom nie je čitateľný... (podivný fakt)

Na napísanie tohto článku boli použité informácie z nasledujúcich článkov:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Ďakujem autorom.

Zdroj: hab.com

Pridať komentár