Avui vull compartir com configurar un servidor d'autenticació de dos factors per protegir la xarxa corporativa, llocs, serveis, ssh. L'enllaç funcionarà al servidor: LinOTP + FreeRadius.
Per què ens necessita?
Aquesta és una solució totalment gratuïta i còmoda, dins de la vostra xarxa, independent de proveïdors de tercers.
Aquest servei és molt còmode, força visual, a diferència d'altres productes de codi obert, i també admet un gran nombre de funcions i polítiques (per exemple, inici de sessió+contrasenya+(PIN+OTPToken)). Mitjançant l'API, s'integra amb serveis d'enviament de sms (LinOTP Config->Provider Config->SMS Provider), genera codis per a aplicacions mòbils com Google Autentificator i molt més. Crec que és més convenient que el servei considerat
Aquest servidor funciona bé amb Cisco ASA, servidor OpenVPN, Apache2 i, de fet, amb gairebé tot el que admet l'autenticació mitjançant un servidor RADIUS (per exemple, per SSH al centre de dades).
Es requereix:
1) Debian 8 (jessie) - Sempre! (La instal·lació de prova a Debian 9 es descriu al final de l'article)
Començar:
Instal·leu Debian 8.
Afegiu el repositori LinOTP:
# echo 'deb http://www.linotp.org/apt/debian jessie linotp' > /etc/apt/sources.list.d/linotp.list
Afegint claus:
# gpg --search-keys 913DFF12F86258E5
De vegades, en una instal·lació neta, després d'executar aquesta ordre, Debian emet:
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
Aquesta és la configuració inicial de gnupg. Està bé. Només cal que torneu a executar l'ordre.
A la pregunta de 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) Выход>
Resposta: 1
Següent:
# gpg --export 913DFF12F86258E5 | apt-key add -
# apt-get update
Instal·leu mysql. En teoria, podeu utilitzar un altre servidor sql, però per senzillesa el faré servir tal com es recomana per a LinOTP.
(Es pot trobar informació addicional, inclosa la reconfiguració de la base de dades LinOTP, a la documentació oficial de
# apt-get install mysql-server
# apt-get update
(No fa mal tornar a comprovar si hi ha actualitzacions)
Instal·leu LinOTP i mòduls addicionals:
# apt-get install linotp
Responem les preguntes de l'instal·lador:
Utilitzeu Apache2: sí
Creeu una contrasenya per a l'administrador Linotp: "YourPassword"
Generar certificat autofirmat?: sí
Utilitzeu MySQL?: sí
On es troba la base de dades: localhost
Creeu una base de dades LinOTP (nom base) al servidor: LinOTP2
Creeu un usuari independent per a la base de dades: LinOTP2
Establiu la contrasenya per a l'usuari: "YourPassword"
He de crear una base ara? (alguna cosa com "Estàs segur que vols..."): sí
Introduïu la contrasenya root de MySQL que vau crear durant la instal·lació: "YourPassword"
Fet.
(opcional, no es pot posar)
# apt-get install linotp-adminclient-cli
(opcional, no es pot posar)
# apt-get install libpam-linotp
La nostra interfície web de Linotp ja està disponible a:
"<b>https</b>: //IP_сервера/manage"
De la configuració de la interfície web parlaré una mica més endavant.
Ara, el més important! Aixeca FreeRadius i enllaça'l a Linotp.
Instal·leu FreeRadius i el mòdul LinOTP
# apt-get install freeradius linotp-freeradius-perl
Feu una còpia de seguretat de les configuracions del client i dels usuaris del radi.
# mv /etc/freeradius/clients.conf /etc/freeradius/clients.old
# mv /etc/freeradius/users /etc/freeradius/users.old
Creeu un fitxer de client buit:
# touch /etc/freeradius/clients.conf
Editant el nostre nou fitxer de configuració (la configuració de la còpia de seguretat es pot utilitzar com a exemple)
# nano /etc/freeradius/clients.conf
client 192.168.188.0/24 {
secret = passwd # пароль для подключения клиентов
}
A continuació, creeu el fitxer d'usuaris:
# touch /etc/freeradius/users
Editem el fitxer, dient al radi que utilitzarem perl per a l'autenticació.
# nano /etc/freeradius/users
DEFAULT Auth-type := perl
A continuació, editeu el fitxer /etc/freeradius/modules/perl
# nano /etc/freeradius/modules/perl
Hem d'establir el camí a l'script perl linotp al paràmetre del mòdul:
Perl { .......
.........
<source lang="bash">module = /usr/lib/linotp/radius_linotp.pm
... ..
A continuació, creem un fitxer en el qual diem de quin (domini, base de dades o fitxer) prendre les dades.
# 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
Aquí m'atendré una mica més, perquè és important:
Descripció completa del fitxer amb comentaris:
#IP del servidor linotp (adreça IP del nostre servidor LinOTP)
URL=https://172.17.14.103/validate/simplecheck
#La nostra àrea que crearem a la interfície web de LinOTP.)
REALM=rearma1
#Nom del grup d'usuaris que es crea al webmord LinOTP.
RESCONF=fitxer_pla
#opcional: comenta si tot sembla funcionar bé
Depuració=Veritat
#opcional: utilitzeu això, si teniu certificats autofirmats, en cas contrari, feu un comentari (SSL si creem el nostre propi certificat i volem verificar-lo)
SSL_CHECK=Fals
A continuació, creeu el fitxer /etc/freeradius/sites-available/linotp
# touch /etc/freeradius/sites-available/linotp
# nano /etc/freeradius/sites-available/linotp
I copieu-hi la configuració (no cal editar res):
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
}
A continuació, farem un enllaç sim:
# ln -s ../sites-available/linotp /etc/freeradius/sites-enabled
Personalment, mato els llocs de radi predeterminats, però si els necessiteu, podeu editar-ne la configuració o desactivar-los.
# rm /etc/freeradius/sites-enabled/default
# rm /etc/freeradius/sites-enabled/inner-tunnel
# service freeradius reload
Ara tornem al morrió web i mirem-ho amb una mica més de detall:
A la cantonada superior dreta, feu clic a LinOTP Config -> UserIdResolvers -> Nou
Triem el que volem: LDAP (AD win, LDAP samba), o SQL, o usuaris locals del sistema Flatfile.
Ompliu els camps obligatoris.
A continuació, creem REALMS:
A la cantonada superior dreta, feu clic a LinOTP Config -> Realms -> New.
i doneu un nom als nostres REALMS, i també feu clic als UserIdResolvers creats anteriorment.
FreeRadius necessita totes aquestes dades al fitxer /etc/linotp2/rlm_perl.ini, sobre el qual he escrit més amunt, així que si no l'heu editat aleshores, feu-ho ara.
Tot el servidor està configurat.
Suplement:
Configuració de LinOTP a 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
(per defecte, a Debian 9 mysql (mariaDB) no ofereix establir una contrasenya d'arrel, per descomptat, podeu deixar-la en blanc, però si llegiu la notícia, sovint porta a "errors èpics", així que encara la configurarem )
# 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
Enganxeu el codi (enviat per JuriM, gràcies a ell per això!):
servidor linotp {
escolta {
ipaddr=*
port=1812
tipus = auth
}
escolta {
ipaddr=*
port=1813
tipus = compte
}
autoritzar {
preprocés
actualitzar {
&control:Auth-Type:= Perl
}
}
autenticar {
Perl de tipus d'autenticació {
perl
}
}
comptabilitat {
unix
}
}
Editeu /etc/freeradius/3.0/mods-enabled/perl
perl {
nom de fitxer = /usr/share/linotp/radius_linotp.pm
func_authenticate = autenticar
func_authorize = autoritzar
}
Malauradament, a debian 9, la biblioteca radius_linotp.pm no s'instal·la des dels dipòsits, així que la prendrem de 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
ara arreglem /etc/freeradius/3.0/clients.conf
servidors clients {
ipaddr = 192.168.188.0/24
secret = la teva contrasenya
}
ara arreglem nano /etc/linotp2/rlm_perl.ini
Enganxem allà el mateix codi que quan instal·lem a Debian 8 (descrit més amunt)
en la idea de tot. (encara no provat)
A continuació, deixaré uns quants enllaços per configurar sistemes que sovint s'han de protegir amb una autorització de dos factors:
Configuració de l'autenticació de dos factors
ajust
A més, els cms de molts llocs admeten l'autenticació de dos factors (per a WordPress, LinOTP fins i tot té el seu propi mòdul especial sobre
FET IMPORTANT! NO marqueu la casella "Google Authenticator" per utilitzar Google Authenticator! Aleshores, el codi QR no es pot llegir... (fet estrany)
La informació dels articles següents s'ha utilitzat per escriure l'article:
Gràcies als autors.
Font: www.habr.com