Täna tahan jagada, kuidas seadistada kahefaktoriline autentimisserver, et kaitsta ettevõtte võrku, saite, teenuseid ja ssh-d. Server käivitab järgmise kombinatsiooni: LinOTP + FreeRadius.
Miks me seda vajame?
See on täiesti tasuta, mugav lahendus oma võrgus, sõltumatu kolmandatest osapooltest.
See teenus on erinevalt teistest avatud lähtekoodiga toodetest väga mugav, üsna visuaalne ning toetab ka tohutul hulgal funktsioone ja eeskirju (näiteks login+parool+(PIN+OTPToken)). API kaudu integreerub see SMS-i saatmisteenustega (LinOTP Config->Provider Config->SMS Provider), genereerib koode mobiilirakendustele nagu Google Authentificator ja palju muud. Ma arvan, et see on mugavam kui teenus, millest räägiti
See server töötab suurepäraselt koos Cisco ASA, OpenVPN serveriga, Apache2-ga ja üldiselt peaaegu kõigega, mis toetab autentimist RADIUS-serveri kaudu (näiteks SSH jaoks andmekeskuses).
Nõutav:
1) Debian 8 (jessie) - Nõutav! (debian 9 prooviinstallimist kirjeldatakse artikli lõpus)
Algus:
Debian 8 installimine.
Lisage LinOTP hoidla:
# echo 'deb http://www.linotp.org/apt/debian jessie linotp' > /etc/apt/sources.list.d/linotp.list
Võtmete lisamine:
# gpg --search-keys 913DFF12F86258E5
Mõnikord kuvab Debian "puhta" installimise ajal pärast selle käsu käivitamist:
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
See on gnupg esialgne seadistus. See on korras. Lihtsalt käivitage käsk uuesti.
Debiani küsimusele:
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) Выход>
Vastame: 1
Järgmine:
# gpg --export 913DFF12F86258E5 | apt-key add -
# apt-get update
Installige mysql. Teoreetiliselt võid kasutada ka teist sql-serverit, kuid lihtsuse mõttes kasutan seda nii, nagu LinOTP puhul soovitatakse.
(lisateavet, sealhulgas LinOTP andmebaasi ümberseadistamist, leiate ametlikust dokumentatsioonist
# apt-get install mysql-server
# apt-get update
(värskendusi uuesti kontrollida ei teeks paha)
Installige LinOTP ja lisamoodulid:
# apt-get install linotp
Vastame paigaldaja küsimustele:
Kasutage Apache2: jah
Looge administraatori Linotp jaoks parool: "Teie parool"
Kas luua iseallkirjastatud sertifikaat?: jah
Kas kasutada MySQL-i?: jah
Kus andmebaas asub: localhost
Looge serveris LinOTP andmebaas (baasnimi): LinOTP2
Looge andmebaasi jaoks eraldi kasutaja: LinOTP2
Seadsime kasutajale parooli: "Teie parool"
Kas ma peaksin kohe andmebaasi looma? (midagi nagu "Kas olete kindel, et tahad..."): jah
Sisestage installimisel loodud MySQL-i juurparool: „YourPassword”
Valmis.
(valikuline, te ei pea seda installima)
# apt-get install linotp-adminclient-cli
(valikuline, te ei pea seda installima)
# apt-get install libpam-linotp
Ja nii on meie Linotpi veebiliides nüüd saadaval aadressil:
"<b>https</b>: //IP_сервера/manage"
Veebiliidese sätetest räägin veidi hiljem.
Nüüd, kõige tähtsam! Tõstame FreeRadiuse üles ja ühendame selle Linotpiga.
Installige FreeRadius ja moodul LinOTP-ga töötamiseks
# apt-get install freeradius linotp-freeradius-perl
varundage kliendi ja kasutajate raadiuse konfiguratsioonid.
# mv /etc/freeradius/clients.conf /etc/freeradius/clients.old
# mv /etc/freeradius/users /etc/freeradius/users.old
Looge tühi kliendifail:
# touch /etc/freeradius/clients.conf
Meie uue konfiguratsioonifaili redigeerimine (varundatud konfiguratsiooni saab kasutada näitena)
# nano /etc/freeradius/clients.conf
client 192.168.188.0/24 {
secret = passwd # пароль для подключения клиентов
}
Järgmisena looge kasutajate fail:
# touch /etc/freeradius/users
Redigeerime faili, öeldes raadiusele, et kasutame autentimiseks perli.
# nano /etc/freeradius/users
DEFAULT Auth-type := perl
Järgmisena redigeerige faili /etc/freeradius/modules/perl
# nano /etc/freeradius/modules/perl
Peame mooduli parameetris määrama perli linotp-skripti tee:
Perl { .......
.........
<source lang="bash">module = /usr/lib/linotp/radius_linotp.pm
... ..
Järgmiseks loome faili, milles ütleme, millisest (domeenist, andmebaasist või failist) andmed võtta.
# 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
Ma räägin siin veidi üksikasjalikumalt, sest see on oluline:
Faili täielik kirjeldus koos kommentaaridega:
#linotp-serveri IP (meie LinOTP-serveri IP-aadress)
URL=https://172.17.14.103/validate/simplecheck
#Meie ala, mille loome LinOTP veebiliideses.)
REALM=rear1
#LinOTP veebikorgis loodud kasutajarühma nimi.
RESCONF=korter_fail
#valikuline: kommenteerige, kas kõik näib toimivat hästi
Silumine = Tõene
#valikuline: kasutage seda, kui teil on iseallkirjastatud sertifikaadid, vastasel juhul kommenteerige (SSL, kui loome oma sertifikaadi ja tahame seda kontrollida)
SSL_CHECK=Vale
Järgmisena looge fail /etc/freeradius/sites-available/linotp
# touch /etc/freeradius/sites-available/linotp
# nano /etc/freeradius/sites-available/linotp
Ja kopeerige konfiguratsioon sinna (pole vaja midagi redigeerida):
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
}
Järgmisena loome SIM-i lingi:
# ln -s ../sites-available/linotp /etc/freeradius/sites-enabled
Isiklikult tapan vaikeraadiusega saidid, kuid kui teil on neid vaja, saate nende konfiguratsiooni muuta või need keelata.
# rm /etc/freeradius/sites-enabled/default
# rm /etc/freeradius/sites-enabled/inner-tunnel
# service freeradius reload
Nüüd pöördume tagasi veebinäo juurde ja vaatame seda veidi üksikasjalikumalt:
Paremas ülanurgas klõpsake LinOTP Config -> UserIdResolvers -> New
Valime, mida tahame: LDAP (AD win, LDAP samba) või SQL või Flatfile süsteemi kohalikud kasutajad.
Täitke nõutud väljad.
Järgmisena loome REALMS:
Klõpsake paremas ülanurgas valikul LinOTP Config -> Realms -> New.
ja andke meie REALMSidele nimi ning klõpsake ka varem loodud UserIdResolveritel.
FreeRadius vajab kõiki neid andmeid failis /etc/linotp2/rlm_perl.ini, nagu ma eespool kirjutasin, nii et kui te seda siis ei muutnud, tehke seda kohe.
Server on kõik konfigureeritud.
täiendus:
LinOTP seadistamine Debian 9-s:
Установка:
# 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
(vaikimisi Debian 9-s ei paku mysql (mariaDB) juurparooli määramist, muidugi võite selle tühjaks jätta, kuid uudiste lugemisel põhjustab see sageli "epic ebaõnnestub", nii et paneme selle igatahes)
# 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
Kleepige kood (saatja JuriM, aitäh talle selle eest!):
server linotp {
kuula {
ipaddr = *
port = 1812
tüüp=auth
}
kuula {
ipaddr = *
port = 1813
tüüp = akt
}
luba {
eeltöötlus
värskenda {
&control:Auth-Type := Perl
}
}
autentida {
Auth-tüüpi Perl {
perl
}
}
raamatupidamine {
unix
}
}
Redigeeri /etc/freeradius/3.0/mods-enabled/perl
perl {
failinimi = /usr/share/linotp/radius_linotp.pm
func_authenticate = autentida
func_authorize = autoriseerida
}
Kahjuks pole Debian 9-s teeki radius_linotp.pm hoidlatest installitud, seega võtame selle githubist.
# 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
redigeerime nüüd faili /etc/freeradius/3.0/clients.conf
kliendi serverid {
ipaddr = 192.168.188.0/24
saladus = teie parool
}
Nüüd parandame nano /etc/linotp2/rlm_perl.ini
Kleebime sinna sama koodi, mis installimisel debian 8-le (kirjeldatud ülal)
see kõik vastavalt ideele. (pole veel testitud)
Jätan allpool mõned lingid süsteemide seadistamiseks, mida kõige sagedamini tuleb kaitsta kahefaktorilise autentimisega:
Kahefaktorilise autentimise seadistamine
reguleerimine
Samuti toetavad paljude saitide cm-d kahefaktorilist autentimist (WordPressi jaoks on LinOTP-l isegi oma spetsiaalne moodul
TÄHTIS FAKT! ÄRGE märkige Google Authenticatori kasutamiseks kasti Google autenteficator! QR-kood pole siis loetav... (kummaline fakt)
Selle artikli kirjutamiseks kasutati teavet järgmistest artiklitest:
Tänud autoritele.
Allikas: www.habr.com