LinOTP iki faktörlü kimlik doğrulama sunucusu

LinOTP iki faktörlü kimlik doğrulama sunucusu

Bugün kurumsal ağınızı, web sitelerinizi, hizmetlerinizi, ssh'nizi korumak için iki faktörlü kimlik doğrulama sunucusunun nasıl kurulacağını paylaşmak istiyorum. Sunucu şu kombinasyonu çalıştıracaktır: LinOTP + FreeRadius.

Neden ihtiyacımız var?
Bu, kendi ağı içerisinde, üçüncü taraf sağlayıcılardan bağımsız, tamamen ücretsiz, kullanışlı bir çözümdür.

Bu hizmet, diğer açık kaynaklı ürünlerden farklı olarak çok kullanışlı ve oldukça görseldir ve aynı zamanda çok sayıda işlevi ve politikayı da destekler (Örneğin, oturum açma+şifre+(PIN+OTTPToken)). API aracılığıyla sms gönderme hizmetleriyle (LinOTP Config->Provider Config->SMS Provider) entegre olur, Google Authentificator gibi mobil uygulamalar ve çok daha fazlası için kodlar üretir. Bahsedilen hizmetten daha uygun olduğunu düşünüyorum. Makale.

Bu sunucu Cisco ASA, OpenVPN sunucusu, Apache2 ve genel olarak RADIUS sunucusu aracılığıyla kimlik doğrulamayı destekleyen hemen hemen her şeyle (örneğin, veri merkezindeki SSH için) mükemmel çalışır.

Gerekli:

1) Debian 8 (jessie) - emin olun! (debian 9 üzerinde deneme kurulumu yazının sonunda anlatılmıştır)

Ev:

Debian 8'in kurulumu.

LinOTP deposunu ekleyin:

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

Anahtar ekleme:

# gpg --search-keys 913DFF12F86258E5

Bazen "temiz" kurulum sırasında bu komutu çalıştırdıktan sonra Debian şunu görüntüler:

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

Bu ilk gnupg kurulumudur. Önemli değil. Sadece komutu tekrar çalıştırın.
Debian'ın sorusuna:

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

Cevap veriyoruz: 1

Sonraki:

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

# apt-get update

MySQL'i yükleyin. Teorik olarak başka bir sql sunucusu kullanabilirsiniz, ancak kolaylık olması açısından onu LinOTP için önerildiği şekilde kullanacağım.

(LinOTP veritabanının yeniden yapılandırılması da dahil olmak üzere ek bilgiler, resmi belgelerde bulunabilir. bağlantı. Orada ayrıca şu komutu da bulabilirsiniz: dpkg-reconfigure linotp, eğer mysql'i zaten yüklediyseniz parametreleri değiştirmek için).

# apt-get install mysql-server

# apt-get update

(Güncellemeleri tekrar kontrol etmekten zarar gelmez)
LinOTP'yi ve ek modülleri yükleyin:

# apt-get install linotp

Kurulumcunun sorularını yanıtlıyoruz:
Apache2'yi kullanın: evet
Yönetici Linotp için bir şifre oluşturun: “Şifreniz”
Kendinden imzalı sertifika oluşturulsun mu?: evet
MySQL mi kullanıyorsunuz?: evet
Veritabanı nerede bulunur: localhost
Sunucuda bir LinOTP veritabanı (temel adı) oluşturun: LinOTP2
Veritabanı için ayrı bir kullanıcı oluşturun: LinOTP2
Kullanıcıya bir şifre belirledik: “Şifreniz”
Şimdi bir veritabanı oluşturmalı mıyım? ("İstediğinden emin misin..." gibi bir şey): evet
Kurulum sırasında oluşturduğunuz MySQL root şifresini girin: “YourPassword”
Bitti.

(isteğe bağlı, yüklemenize gerek yok)

# apt-get install linotp-adminclient-cli 

(isteğe bağlı, yüklemenize gerek yok)

# apt-get install libpam-linotp  

Linotp web arayüzümüz artık şu adreste mevcuttur:

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

Web arayüzündeki ayarlardan biraz sonra bahsedeceğim.

Şimdi en önemli şey! FreeRadius'u yükseltiyoruz ve Linotp'a bağlıyoruz.

LinOTP ile çalışmak için FreeRadius'u ve modülü yükleyin

# apt-get install freeradius linotp-freeradius-perl

istemciyi ve Kullanıcı yarıçapı yapılandırmalarını yedekleyin.

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

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

Boş bir istemci dosyası oluşturun:

# touch /etc/freeradius/clients.conf

Yeni konfigürasyon dosyamızı düzenliyoruz (yedeklenen konfigürasyon örnek olarak kullanılabilir)

# nano /etc/freeradius/clients.conf

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

Daha sonra bir kullanıcı dosyası oluşturun:

# touch /etc/freeradius/users

Radius'a kimlik doğrulama için Perl kullanacağımızı söyleyerek dosyayı düzenliyoruz.

# nano /etc/freeradius/users

DEFAULT Auth-type := perl

Sonra /etc/freeradius/modules/perl dosyasını düzenleyin

# nano /etc/freeradius/modules/perl

Perl linotp betiğinin yolunu modül parametresinde belirtmemiz gerekiyor:

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

.....
Daha sonra veriyi hangi kaynaktan (domain, veritabanı veya dosya) alacağımızı söylediğimiz bir dosya oluşturuyoruz.

# 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

Önemli olduğu için burada biraz daha ayrıntıya gireceğim:

Yorumlarla birlikte dosyanın tam açıklaması:
#linOTP sunucusunun IP'si (LinOTP sunucumuzun IP adresi)
URL=https://172.17.14.103/validate/simplecheck
#LinOTP web arayüzünde oluşturacağımız alanımız.)
ALAN=arka1
#LinOTP web namlusunda oluşturulan kullanıcı grubunun adı.
RESCONF=düz_dosya
#isteğe bağlı: her şey yolunda görünüyorsa yorum yapın
Hata ayıklama=Doğru
#isteğe bağlı: kendinden imzalı sertifikalarınız varsa bunu kullanın, aksi halde yorum yapın (kendi sertifikamızı oluşturursak ve doğrulamak istiyorsak SSL)
SSL_CHECK=Yanlış

Daha sonra /etc/freeradius/sites-available/linotp dosyasını oluşturun

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

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

Ve yapılandırmayı içine kopyalayın (hiçbir şeyi düzenlemenize gerek yok):

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
}

Daha sonra bir SIM bağlantısı oluşturacağız:

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

Şahsen ben varsayılan Radius sitelerini kapatıyorum, ancak onlara ihtiyacınız varsa yapılandırmalarını düzenleyebilir veya devre dışı bırakabilirsiniz.

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

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

# service freeradius reload

Şimdi web yüzüne dönelim ve biraz daha detaylı bakalım:
Sağ üst köşede LinOTP Config -> UserIdResolvers -> New'e tıklayın
Ne istediğimizi seçiyoruz: LDAP (AD win, LDAP samba), veya SQL veya Flatfile sisteminin yerel kullanıcıları.

Gerekli alanları doldurun.

Daha sonra REALMS'ı oluşturuyoruz:
Sağ üst köşede LinOTP Yapılandırması -> Bölgeler -> Yeni'ye tıklayın.
ve REALMS'imize bir isim verin ve ayrıca daha önce oluşturulan UserIdResolvers'a tıklayın.

Yukarıda yazdığım gibi FreeRadius'un tüm bu verilere /etc/linotp2/rlm_perl.ini dosyasında ihtiyacı var, o yüzden düzenlemediyseniz şimdi yapın.

Sunucunun tamamı yapılandırılmıştır.

Ek:

Debian 9'da LinOTP Kurulumu:

Установка:

# 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

(varsayılan olarak Debian 9'da mysql (mariaDB) root şifresi belirlemeyi önermez, elbette boş bırakabilirsiniz, ancak haberleri okursanız bu genellikle "epik başarısızlığa" yol açar, bu yüzden onu ayarlayacağız Neyse)

# 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

Kodu yapıştırın (JuriM tarafından gönderildi, bunun için kendisine teşekkür ederiz!):

sunucu linotp {
Dinlemek {
ipaddr = *
bağlantı noktası = 1812
tür=yetkilendirme
}
Dinlemek {
ipaddr = *
bağlantı noktası = 1813
tür = eylem
}
yetki vermek {
önişleyebilir
güncelleme {
&kontrol:Kimlik Doğrulama Türü := Perl
}
}
kimlik doğrulaması {
Kimlik Doğrulama Türü Perl {
perl
}
}
muhasebe {
unix
}
}

/etc/freeradius/3.0/mods-enabled/Perl'i düzenleyin

perl {
dosya adı = /usr/share/linotp/radius_linotp.pm
func_authenticate = kimlik doğrulama
func_authorize = yetkilendirme
}

Maalesef Debian 9'da radius_linotp.pm kütüphanesi depolardan kurulmadığından onu github'dan alacağız.

# 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

şimdi /etc/freeradius/3.0/clients.conf dosyasını düzenleyelim

istemci sunucuları {
ipaddr = 192.168.188.0/24
gizli = şifreniz
}

Şimdi nano /etc/linotp2/rlm_perl.ini dosyasını düzeltelim

Debian 8'e kurulum sırasındaki kodun aynısını buraya yapıştırıyoruz (yukarıda açıklanmıştır)

hepsi bu fikre göre. (henüz test edilmedi)

Çoğunlukla iki faktörlü kimlik doğrulamayla korunması gereken sistemlerin kurulumuyla ilgili birkaç bağlantıyı aşağıya bırakacağım:
İki faktörlü kimlik doğrulamayı ayarlama Apache2

Cisco ASA ile Kurulum(Orada farklı bir jeton oluşturma sunucusu kullanılıyor, ancak ASA'nın kendi ayarları aynı).

İki faktörlü kimlik doğrulamalı VPN

Ayar ssh'de iki faktörlü kimlik doğrulama (LinOTP de orada kullanılıyor) - yazar sayesinde. Burada LiOTP politikalarının ayarlanmasıyla ilgili ilginç şeyler de bulabilirsiniz.

Ayrıca birçok sitenin cms'si iki faktörlü kimlik doğrulamayı destekler (WordPress için LinOTP'nin kendi özel modülü bile vardır). github), örneğin kurumsal web sitenizde şirket çalışanları için korumalı bir bölüm yapmak istiyorsanız.
ÖNEMLİ GERÇEK! Google Authenticator'ı kullanmak için “Google Authenticator” kutusunu işaretlemeyin! O zaman QR kodu okunamıyor... (garip gerçek)

Bu makaleyi yazmak için aşağıdaki makalelerden alınan bilgiler kullanıldı:
itnan.ru/post.php?c=1&p=270571
www.digitalbears.net/?p=469

Yazarlara teşekkürler.

Kaynak: habr.com

Yorum ekle