LinOTP dvoufaktorový autentizační server

LinOTP dvoufaktorový autentizační server

Dnes se chci podělit o to, jak nastavit dvoufaktorový autentizační server pro ochranu podnikové sítě, webů, služeb, ssh. Odkaz bude fungovat na serveru: LinOTP + FreeRadius.

Proč nás potřebuje?
Jedná se o zcela bezplatné a pohodlné řešení v rámci vaší sítě, nezávislé na poskytovatelích třetích stran.

Tato služba je velmi pohodlná, docela vizuální, na rozdíl od jiných produktů s otevřeným zdrojovým kódem a také podporuje velké množství funkcí a zásad (například přihlášení+heslo+(PIN+OTPToken)). Prostřednictvím API se integruje se službami odesílání sms (LinOTP Config->Provider Config->SMS Provider), generuje kódy pro mobilní aplikace jako je Google Autentificator a mnoho dalšího. Myslím, že je to pohodlnější než služba zvažovaná v článek.

Tento server funguje dobře s Cisco ASA, OpenVPN serverem, Apache2 a vlastně téměř se vším, co podporuje autentizaci přes RADIUS server (například pro SSH do datového centra).

Požadováno:

1) Debian 8 (jessie) - Ujistěte se, že! (zkušební instalace na debianu 9 je popsána na konci článku)

Začátek:

Nainstalujte Debian 8.

Přidejte úložiště LinOTP:

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

Přidání klíčů:

# gpg --search-keys 913DFF12F86258E5

Někdy při čisté instalaci po provedení tohoto příkazu Debian problémy:

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čáteční nastavení gnupg. To je v pořádku. Stačí znovu spustit pří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) Выход>

Odpověď: 1

Další:

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

# apt-get update

Nainstalujte mysql. Teoreticky můžete použít jiný sql server, ale pro jednoduchost jej použiji podle doporučení pro LinOTP.

(další informace, včetně překonfigurování databáze LinOTP, lze nalézt v oficiální dokumentaci pro odkaz. Na stejném místě můžete najít příkaz: dpkg-reconfigure linotp pro změnu nastavení, pokud jste již nainstalovali mysql).

# apt-get install mysql-server

# apt-get update

(Neškodí znovu zkontrolovat aktualizace)
Nainstalujte LinOTP a další moduly:

# apt-get install linotp

Odpovídáme na otázky instalatéra:
Použít Apache2: ano
Vytvořte heslo pro administrátora Linotp: "YourPassword"
Vygenerovat certifikát s vlastním podpisem?: Ano
Použít MySQL?: Ano
Kde je umístěna databáze: localhost
Vytvořte databázi LinOTP (základní název) na serveru: LinOTP2
Vytvořte samostatného uživatele pro databázi: LinOTP2
Nastavte heslo pro uživatele: "YourPassword"
Mám teď vytvořit základnu? (něco jako „Jste si jistý, že chcete…“): ano
Zadejte kořenové heslo MySQL, které jste vytvořili během instalace: „YourPassword“
Hotovo.

(volitelné, nemůžete vložit)

# apt-get install linotp-adminclient-cli 

(volitelné, nemůžete vložit)

# apt-get install libpam-linotp  

A tak je naše webové rozhraní Linotp nyní dostupné na:

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

O nastavení ve webovém rozhraní budu mluvit o něco později.

A teď to nejdůležitější! Zvyšte FreeRadius a propojte jej s Linotp.

Nainstalujte FreeRadius a modul LinOTP

# apt-get install freeradius linotp-freeradius-perl

zálohujte konfigurace klienta a uživatelů rádiusu.

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

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

Vytvořte prázdný soubor klienta:

# touch /etc/freeradius/clients.conf

Úprava našeho nového konfiguračního souboru (jako příklad lze použít zálohovanou konfiguraci)

# nano /etc/freeradius/clients.conf

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

Dále vytvořte soubor uživatelů:

# touch /etc/freeradius/users

Upravíme soubor a sdělíme rádius, že pro ověření použijeme perl.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Dále upravte soubor /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Musíme nastavit cestu ke skriptu linotp perl v parametru modulu:

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

... ..
Dále si vytvoříme soubor, ve kterém řekneme, ze kterého (domény, databáze nebo souboru) vzít data.

# 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

Zde se zastavím trochu více, protože je důležité:

Úplný popis souboru s komentáři:
#IP linotp serveru (IP adresa našeho LinOTP serveru)
URL=https://172.17.14.103/validate/simplecheck
#Naše oblast, kterou vytvoříme ve webovém rozhraní LinOTP.)
REALM=rearm1
#Název skupiny uživatelů, která je vytvořena ve webmordu LinOTP.
RESCONF=plochý_soubor
#nepovinné: okomentujte, pokud se zdá, že vše funguje dobře
Debug=Pravda
#nepovinné: použijte toto, pokud máte certifikáty s vlastním podpisem, jinak komentujte (SSL, pokud si vytvoříme vlastní certifikát a chceme ho ověřit)
SSL_CHECK=Nepravda

Dále vytvořte soubor /etc/freeradius/sites-available/linotp

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

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

A zkopírujte do něj konfiguraci (nemusí se nic upravovat):

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ále vytvoříme odkaz na sim:

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

Osobně zabíjím výchozí rádiusové weby, ale pokud je potřebujete, můžete upravit jejich konfiguraci nebo je zakázat.

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

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

# service freeradius reload

Nyní se vraťme k webovému náhubku a podívejme se na něj trochu podrobněji:
V pravém horním rohu klikněte na LinOTP Config -> UserIdResolvers -> New
Vybereme si, co chceme: LDAP (AD win, LDAP samba), nebo SQL, případně lokální uživatelé systému Flatfile.

Vyplňte požadovaná pole.

Dále vytvoříme REALMS:
V pravém horním rohu klikněte na LinOTP Config -> Realms -> New.
a pojmenujte naše REALMS a také klikněte na UserIdResolvers vytvořené dříve.

Všechna tato data potřebuje freeRadius v souboru /etc/linotp2/rlm_perl.ini, o kterém jsem psal výše, takže pokud jste je tehdy neupravovali, udělejte to nyní.

Celý server je nakonfigurován.

Dodatek:

Nastavení LinOTP na Debianu 9:

Instalace:

# 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

(ve výchozím nastavení v Debianu 9 mysql (mariaDB) nenabízí nastavení rootovského hesla, samozřejmě ho můžete nechat prázdné, ale pokud čtete novinky, často to vede k "epickému selhání", takže ho stejně nastavíme )

# 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

Vložte kód (zaslaný JuriMem, děkujeme mu za to!):

server linotp {
poslouchat {
ipaddr=*
port=1812
typ = auth
}
poslouchat {
ipaddr=*
port=1813
typ = akt
}
povolit {
předzpracování
Aktualizace {
&control:Auth-Type := Perl
}
}
ověřit {
Auth-Type Perl {
perl
}
}
účetnictví {
unix
}
}

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

perl {
název_souboru = /usr/share/linotp/radius_linotp.pm
func_authenticate = ověřit
func_authorize = autorizovat
}

Bohužel v debianu 9 není knihovna radius_linotp.pm nainstalována z repozitářů, takže ji vezmeme 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

nyní opravíme /etc/freeradius/3.0/clients.conf

klientské servery {
ipaddr = 192.168.188.0/24
tajné = vaše heslo
}

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

Vložíme tam stejný kód jako při instalaci na debian 8 (popsáno výše)

na myšlence všeho. (zatím nevyzkoušeno)

Níže zanechám několik odkazů na nastavení systémů, které je nejčastěji potřeba chránit dvoufaktorovou autorizací:
Nastavení dvoufaktorové autentizace v Apache2

Konfigurace pomocí Cisco ASA(používá jiný server pro generování tokenů, ale nastavení samotného ASA je stejné).

VPN s dvoufaktorovou autentizací

Nastavení dvoufaktorová autentizace v ssh (je tam použit i LinOTP) - díky autorovi. Tam také můžete najít zajímavé věci o nastavení zásad LiOTP.

Také cms mnoha webů podporuje dvoufaktorovou autentizaci (pro WordPress má LinOTP dokonce svůj vlastní speciální modul na GitHub), například pokud chcete na svém firemním webu vytvořit zabezpečenou sekci pro zaměstnance společnosti.
DŮLEŽITÝ FAKT! NEZAškrtávejte políčko „Google Authenticator“, chcete-li používat Google Authenticator! QR kód pak není čitelný... (divný fakt)

K napsání článku byly použity informace z následujících článků:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Díky autorům.

Zdroj: www.habr.com

Přidat komentář