Διακομιστής ελέγχου ταυτότητας δύο παραγόντων LinOTP

Διακομιστής ελέγχου ταυτότητας δύο παραγόντων LinOTP

Σήμερα θέλω να μοιραστώ τον τρόπο ρύθμισης ενός διακομιστή ελέγχου ταυτότητας δύο παραγόντων για την προστασία ενός εταιρικού δικτύου, τοποθεσιών, υπηρεσιών, ssh. Ο διακομιστής θα εκτελέσει τον ακόλουθο συνδυασμό: LinOTP + FreeRadius.

Γιατί μας χρειάζεται;
Αυτή είναι μια εντελώς δωρεάν, βολική λύση, εντός του δικού της δικτύου, ανεξάρτητα από τρίτους παρόχους.

Αυτή η υπηρεσία είναι πολύ βολική, αρκετά οπτική, σε αντίθεση με άλλα προϊόντα ανοιχτού κώδικα και υποστηρίζει επίσης έναν τεράστιο αριθμό λειτουργιών και πολιτικών (Για παράδειγμα, login+password+(PIN+OTPToken)). Μέσω του API, ενσωματώνεται με υπηρεσίες αποστολής sms (LinOTP Config-> Provider Config->SMS Provider), δημιουργεί κωδικούς για εφαρμογές για κινητές συσκευές όπως το Google Authentificator και πολλά άλλα. Νομίζω ότι είναι πιο βολικό από την υπηρεσία που συζητήθηκε άρθρο.

Αυτός ο διακομιστής λειτουργεί τέλεια με Cisco ASA, διακομιστή OpenVPN, Apache2 και γενικά σχεδόν με όλα όσα υποστηρίζουν έλεγχο ταυτότητας μέσω διακομιστή RADIUS (Για παράδειγμα, για SSH στο κέντρο δεδομένων).

Απαιτείται:

1) Debian 8 (jessie) - Πάντα! (η δοκιμαστική εγκατάσταση στο debian 9 περιγράφεται στο τέλος του άρθρου)

Αρχική:

Εγκατάσταση του Debian 8.

Προσθέστε το αποθετήριο LinOTP:

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

Προσθήκη κλειδιών:

# gpg --search-keys 913DFF12F86258E5

Μερικές φορές κατά τη διάρκεια μιας "καθαρής" εγκατάστασης, μετά την εκτέλεση αυτής της εντολής, το 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

Αυτή είναι η αρχική ρύθμιση του gnupg. Είναι εντάξει. Απλώς εκτελέστε ξανά την εντολή.
Στην ερώτηση του 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) Выход>

Απαντάμε: 1

Επόμενο:

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

# apt-get update

Εγκαταστήστε mysql. Θεωρητικά, μπορείτε να χρησιμοποιήσετε έναν άλλο διακομιστή sql, αλλά για λόγους απλότητας θα τον χρησιμοποιήσω όπως συνιστάται για το LinOTP.

(πρόσθετες πληροφορίες, συμπεριλαμβανομένης της αναδιαμόρφωσης της βάσης δεδομένων LinOTP, μπορείτε να βρείτε στην επίσημη τεκμηρίωση για σύνδεσμος. Εκεί μπορείτε επίσης να βρείτε την εντολή: dpkg-reconfigure linotp για να αλλάξετε τις παραμέτρους εάν έχετε ήδη εγκαταστήσει το mysql).

# apt-get install mysql-server

# apt-get update

(δεν θα έβλαπτε να ελέγξετε ξανά τις ενημερώσεις)
Εγκαταστήστε το LinOTP και πρόσθετες ενότητες:

# apt-get install linotp

Απαντάμε στις ερωτήσεις του εγκαταστάτη:
Χρησιμοποιήστε το Apache2: ναι
Δημιουργήστε έναν κωδικό πρόσβασης για τον διαχειριστή Linotp: "Ο κωδικός σας"
Δημιουργία αυτουπογεγραμμένου πιστοποιητικού;: ναι
Χρήση MySQL;: ναι
Πού βρίσκεται η βάση δεδομένων: localhost
Δημιουργήστε μια βάση δεδομένων LinOTP (όνομα βάσης) στον διακομιστή: LinOTP2
Δημιουργήστε έναν ξεχωριστό χρήστη για τη βάση δεδομένων: LinOTP2
Ορίσαμε έναν κωδικό πρόσβασης για τον χρήστη: "Ο κωδικός σας"
Πρέπει να δημιουργήσω μια βάση δεδομένων τώρα; (κάτι σαν "Είσαι σίγουρος ότι θέλεις..."): ναι
Εισαγάγετε τον κωδικό πρόσβασης root MySQL που δημιουργήσατε κατά την εγκατάστασή του: "YourPassword"
Τέλος.

(προαιρετικό, δεν χρειάζεται να το εγκαταστήσετε)

# apt-get install linotp-adminclient-cli 

(προαιρετικό, δεν χρειάζεται να το εγκαταστήσετε)

# apt-get install libpam-linotp  

Και έτσι η διεπαφή ιστού Linotp είναι τώρα διαθέσιμη στη διεύθυνση:

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

Θα μιλήσω για τις ρυθμίσεις στη διεπαφή ιστού λίγο αργότερα.

Τώρα, το πιο σημαντικό! Ανεβάζουμε το FreeRadius και το συνδέουμε με το Linotp.

Εγκαταστήστε το FreeRadius και τη μονάδα για εργασία με το LinOTP

# apt-get install freeradius linotp-freeradius-perl

δημιουργήστε αντίγραφα ασφαλείας των ρυθμίσεων πελάτη και ακτίνας χρηστών.

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

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

Δημιουργήστε ένα κενό αρχείο πελάτη:

# touch /etc/freeradius/clients.conf

Επεξεργασία του νέου μας αρχείου ρυθμίσεων (η διαμόρφωση αντιγράφων ασφαλείας μπορεί να χρησιμοποιηθεί ως παράδειγμα)

# nano /etc/freeradius/clients.conf

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

Στη συνέχεια, δημιουργήστε ένα αρχείο χρηστών:

# touch /etc/freeradius/users

Επεξεργαζόμαστε το αρχείο, λέγοντας radius ότι θα χρησιμοποιήσουμε την perl για έλεγχο ταυτότητας.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Στη συνέχεια, επεξεργαστείτε το αρχείο /etc/freeradius/modules/perl

# nano /etc/freeradius/modules/perl

Πρέπει να καθορίσουμε τη διαδρομή προς το σενάριο perl linotp στην παράμετρο της ενότητας:

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

... ..
Στη συνέχεια, δημιουργούμε ένα αρχείο στο οποίο λέμε από ποιον (τομέα, βάση δεδομένων ή αρχείο) να πάρουμε τα δεδομένα.

# 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

Θα μπω σε λίγο περισσότερες λεπτομέρειες εδώ γιατί είναι σημαντικό:

Πλήρης περιγραφή του αρχείου με σχόλια:
#IP του διακομιστή linOTP (διεύθυνση IP του διακομιστή LinOTP μας)
URL=https://172.17.14.103/validate/simplecheck
#Η περιοχή μας που θα δημιουργήσουμε στη διεπαφή ιστού LinOTP.)
REALM=πίσω όπλο1
#Όνομα της ομάδας χρηστών που δημιουργείται στο ρύγχος ιστού LinOTP.
RESCONF=flat_file
#προαιρετικό: σχολιάστε εάν όλα φαίνονται να λειτουργούν καλά
Debug=True
#optional: χρησιμοποιήστε αυτό, εάν έχετε αυτο-υπογεγραμμένα πιστοποιητικά, διαφορετικά σχολιάστε (SSL εάν δημιουργήσουμε το δικό μας πιστοποιητικό και θέλουμε να το επαληθεύσουμε)
SSL_CHECK=Λάθος

Στη συνέχεια, δημιουργήστε το αρχείο /etc/freeradius/sites-available/linotp

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

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

Και αντιγράψτε το config σε αυτό (δεν χρειάζεται να επεξεργαστείτε τίποτα):

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
}

Στη συνέχεια θα δημιουργήσουμε έναν σύνδεσμο SIM:

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

Προσωπικά, σκοτώνω τις προεπιλεγμένες τοποθεσίες Radius, αλλά αν τις χρειάζεστε, μπορείτε είτε να επεξεργαστείτε τις ρυθμίσεις τους είτε να τις απενεργοποιήσετε.

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

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

# service freeradius reload

Τώρα ας επιστρέψουμε στο web face και ας το δούμε λίγο πιο αναλυτικά:
Στην επάνω δεξιά γωνία κάντε κλικ στο LinOTP Config -> UserIdResolvers -> New
Επιλέγουμε αυτό που θέλουμε: LDAP (AD win, LDAP samba) ή SQL ή τοπικούς χρήστες του συστήματος Flatfile.

Συμπληρώστε τα απαιτούμενα πεδία.

Στη συνέχεια δημιουργούμε REALMS:
Στην επάνω δεξιά γωνία, κάντε κλικ στο LinOTP Config -> Realms -> New.
και δώστε ένα όνομα στα REALMS μας και επίσης κάντε κλικ στα UserIdResolvers που δημιουργήθηκαν προηγουμένως.

Το FreeRadius χρειάζεται όλα αυτά τα δεδομένα στο αρχείο /etc/linotp2/rlm_perl.ini, όπως έγραψα παραπάνω, οπότε αν δεν το επεξεργαστήκατε τότε, κάντε το τώρα.

Ο διακομιστής έχει ρυθμιστεί.

Προσθήκη:

Ρύθμιση του LinOTP στο 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

(από προεπιλογή, στο Debian 9 η mysql (mariaDB) δεν προσφέρει να ορίσετε κωδικό πρόσβασης root, φυσικά μπορείτε να τον αφήσετε κενό, αλλά αν διαβάσετε τις ειδήσεις, αυτό πολύ συχνά οδηγεί σε "epic fails", οπότε θα το ορίσουμε ΤΕΛΟΣ παντων)

# 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

Επικολλήστε τον κωδικό (που εστάλη από τον JuriM, τον ευχαριστούμε για αυτό!):

διακομιστής linotp {
ακούστε {
ipaddr = *
λιμάνι = 1812
τύπος=αυθ
}
ακούστε {
ipaddr = *
λιμάνι = 1813
τύπος = λογ
}
εξουσιοδοτώ {
προεπεξεργασία
ενημέρωση {
&control:Auth-Type := Perl
}
}
έλεγχος ταυτότητας {
Auth-Type Perl {
perl
}
}
λογιστική {
unix
}
}

Επεξεργαστείτε το /etc/freeradius/3.0/mods-enabled/perl

perl {
όνομα αρχείου = /usr/share/linotp/radius_linotp.pm
func_authenticate = έλεγχος ταυτότητας
func_authorize = εξουσιοδοτώ
}

Δυστυχώς, στο Debian 9 η βιβλιοθήκη radius_linotp.pm δεν είναι εγκατεστημένη από τα αποθετήρια, οπότε θα την πάρουμε από το 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

τώρα ας επεξεργαστούμε το /etc/freeradius/3.0/clients.conf

διακομιστές πελάτη {
ipaddr = 192.168.188.0/24
μυστικό = ο κωδικός πρόσβασής σας
}

Τώρα ας διορθώσουμε το nano /etc/linotp2/rlm_perl.ini

Επικολλάμε τον ίδιο κώδικα εκεί όπως κατά την εγκατάσταση στο debian 8 (που περιγράφεται παραπάνω)

όλα αυτά σύμφωνα με την ιδέα. (δεν δοκιμάστηκε ακόμα)

Θα αφήσω παρακάτω μερικούς συνδέσμους σχετικά με τη ρύθμιση συστημάτων που τις περισσότερες φορές πρέπει να προστατεύονται με έλεγχο ταυτότητας δύο παραγόντων:
Ρύθμιση ελέγχου ταυτότητας δύο παραγόντων στο Apache2

Ρύθμιση με Cisco ASA(ένας διαφορετικός διακομιστής δημιουργίας διακριτικών χρησιμοποιείται εκεί, αλλά οι ρυθμίσεις του ίδιου του ASA είναι οι ίδιες).

VPN με έλεγχο ταυτότητας δύο παραγόντων

προσαρμογή έλεγχος ταυτότητας δύο παραγόντων σε ssh (Το LinOTP χρησιμοποιείται επίσης εκεί) - ευχαριστώ τον συγγραφέα. Εκεί μπορείτε επίσης να βρείτε ενδιαφέροντα πράγματα σχετικά με τη ρύθμιση πολιτικών LiOTP.

Επίσης, τα cms πολλών τοποθεσιών υποστηρίζουν έλεγχο ταυτότητας δύο παραγόντων (Για το WordPress, το LinOTP έχει ακόμη και τη δική του ειδική ενότητα για GitHub), για παράδειγμα, εάν θέλετε να δημιουργήσετε μια προστατευμένη ενότητα στον εταιρικό σας ιστότοπο για τους υπαλλήλους της εταιρείας.
ΣΗΜΑΝΤΙΚΟ ΓΕΓΟΝΟΣ! ΜΗΝ τσεκάρετε το πλαίσιο "Google autenteficator" για να χρησιμοποιήσετε το Google Authenticator! Ο κωδικός QR δεν είναι αναγνώσιμος τότε... (περίεργο γεγονός)

Για τη σύνταξη αυτού του άρθρου, χρησιμοποιήθηκαν πληροφορίες από τα ακόλουθα άρθρα:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Ευχαριστώ τους συγγραφείς.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο