
Hari ini saya ingin berbagi cara mengkonfigurasi server otentikasi dua faktor untuk melindungi jaringan perusahaan, situs, layanan, ssh. Server akan bekerja bundel: LinOTP + FreeRadius.
Mengapa kita membutuhkannya?
Ini adalah solusi yang benar-benar gratis dan nyaman, dalam jaringannya, independen dari penyedia pihak ketiga.
Layanan ini sangat nyaman, cukup visual, tidak seperti produk open source lainnya, dan juga mendukung sejumlah besar fungsi dan kebijakan (misalnya, login + kata sandi + (PIN + OTPToken)). Melalui API itu terintegrasi dengan layanan pengiriman sms (LinOTP Config-> Provider Config-> Penyedia SMS), menghasilkan kode untuk aplikasi seluler seperti Google Autentificator dan banyak lagi. Saya pikir ini lebih nyaman daripada layanan yang dipertimbangkan dalam
artikel ini .
Server ini berfungsi baik dengan Cisco ASA, server OpenVPN, Apache2, dan memang dengan hampir semua yang mendukung otentikasi melalui server RADIUS (misalnya, untuk SSH di pusat data).
Diperlukan:
1) Debian 8 (jessie) -
Wajib! (Instalasi uji coba pada debian 9 dijelaskan di akhir artikel)
Mulai:
Menginstal Debian 8.
Tambahkan repositori LinOTP:
Tambahkan kunci:
Terkadang dengan instalasi "bersih", setelah menjalankan perintah ini, masalah 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
Ini adalah pengaturan awal gnupg. Tidak ada yang perlu dikhawatirkan. Jalankan perintah lagi.
Ditanyakan oleh Debiana:
gpg: "913DFF12F86258E5" hkp keys.gnupg.net (1) LSE LinOTP2 Packaging <linotp2@lsexperts.de> 2048 bit RSA key F86258E5, : 2010-05-10 Keys 1-1 of 1 for "913DFF12F86258E5". , N) Q) >
Jawab: 1
Selanjutnya:
Instal mysql. Secara teori, Anda dapat menggunakan server sql yang berbeda, tetapi untuk kesederhanaan saya akan menggunakannya, seperti yang disarankan untuk LinOTP.
(informasi tambahan, termasuk tentang mengkonfigurasi ulang basis data LinOTP, dapat ditemukan di dokumentasi resmi di
tautan . Di tempat yang sama, Anda dapat menemukan perintah: dpkg-mengkonfigurasi ulang linotp untuk mengubah pengaturan jika Anda sudah menginstal mysql).
(Memeriksa pembaruan lagi tidak akan sakit)
Instal LinOTP dan modul tambahan:
Kami menjawab pertanyaan penginstal:
Gunakan Apache2: ya
Buat kata sandi untuk admin Linotp: "YourPassword"
Hasilkan sertifikat yang ditandatangani sendiri?: Ya
Gunakan MySQL?: Ya
Di mana basis datanya: localhost
Buat database LinOTP (nama database) di server: LinOTP2
Buat pengguna terpisah untuk basis data: LinOTP2
Kami menetapkan kata sandi untuk pengguna: "YourPassword"
Haruskah saya membuat basis sekarang? (sesuatu seperti "Apakah kamu yakin kamu mau ..."): ya
Masukkan kata sandi root MySQL yang dibuat selama instalasi: "YourPassword"
Selesai
(opsional, Anda tidak dapat mengatur)
(opsional, Anda tidak dapat mengatur)
Dan antarmuka web Linotp kami sekarang tersedia di:
"<b>https</b>: //IP_/manage"
Saya akan berbicara tentang pengaturan di antarmuka web sedikit kemudian.
Sekarang, yang terpenting! Naikkan FreeRadius dan tautkan ke Linotp.
Instal FreeRadius dan modul LinOTP
klien cadangan dan konfigurasi radius Pengguna.
Buat file klien kosong:
Kami mengedit file konfigurasi baru kami (konfigurasi cadangan dapat digunakan sebagai contoh)
client 192.168.188.0/24 { secret = passwd # }
Selanjutnya, buat file pengguna:
Kami mengedit file, memberi tahu radius yang akan kami gunakan perl untuk otentikasi.
DEFAULT Auth-type := perl
Selanjutnya, edit file / etc / freeradius / modules / perl
Kita perlu menulis path ke skrip perl linotp di parameter modul:
Perl { ....... ......... <source lang="bash">module = /usr/lib/linotp/radius_linotp.pm
.....
Selanjutnya, kita membuat file di mana kita katakan dari mana (domain, database atau file) untuk mengambil data.
URL=https://IP__LinOTP_(192.168.XX)/validate/simplecheck REALM=webusers1c RESCONF=LocalUser Debug=True SSL_CHECK=False
Di sini saya akan tinggal sedikit lagi, karena ini penting:
Deskripsi lengkap file dengan komentar:
#IP server linotp (alamat IP server LinOTP kami)
URL = https: //172.17.14.103/validate/simplecheck
# Area kami yang akan kami buat di antarmuka web LinOTP.)
REALM = mempersenjatai kembali1
# Nama grup juzverej yang dibuat di webmord LinOTP.
RESCONF = flat_file
#optional: beri komentar jika semuanya tampak berfungsi dengan baik
Debug = Benar
#optional: gunakan ini, jika Anda memiliki sertifikat yang ditandatangani sendiri, jika tidak komentarlah (SSL jika kami membuat sertifikat kami dan ingin memverifikasinya)
SSL_CHECK = Salah
Selanjutnya, buat file / etc / freeradius / sites-available / linotp
Dan salin konfigurasi ke dalamnya (edit tidak ada yang tidak tepat):
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 USER\REALM 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 }
Selanjutnya, buat tautan sim:
Secara pribadi, saya membunuh situs radius standar, tetapi jika Anda membutuhkannya, Anda dapat mengedit konfigurasi atau menonaktifkannya.
Sekarang kembali ke wajah web dan pertimbangkan lebih detail:
Di sudut kanan atas, klik LinOTP Config -> UserIdResolvers -> Baru
Pilih apa yang kita inginkan: LDAP (AD win, LDAP samba), atau SQL, atau pengguna Flatfile lokal.
Isi kolom yang wajib diisi.
Selanjutnya, buat REALMS:
Di sudut kanan atas, klik LinOTP Config -> Realms -> New.
dan berikan nama untuk REALMS kami, juga klik pada UserIdResolvers yang dibuat sebelumnya.
Semua data ini diperlukan oleh freeRadius dalam file /etc/linotp2/rlm_perl.ini, seperti yang saya tulis di atas, jadi jika Anda belum mengeditnya maka lakukan sekarang.
Semua server sudah dikonfigurasi.
Tambahan:
Menyiapkan LinOTP pada Debian 9 (Terima kasih kepada
prikhodkov )
# Tambahkan repositori LinOTP ke /etc/apt/sources.list.d/linotp.list dan perbarui lobak:
echo "deb
linotp.org/apt/debian stretch linotp"> /etc/apt/sources.list.d/linotp.list
pembaruan apt-get
apt-get install dirmngr
apt-key adv --recv-keys 913DFF12F86258E5
# Instal dan konfigurasikan server mysql pada dasarnya:
apt-get install mysql-server
# Instal paket linotp dan freeradius
apt-get install linotp linotp-adminclient-cli python-ldap freeradius python-passlib python-bcrypt git libio-all-lwp-perl libconfig-file-perl libtry-tiny-perl
# Buat symlink ke file konfigurasi freeradius
Pada -s /etc/freeradius/3.0/sites-tersedia / etc / freeradius / sites-available
ln -s /etc/freeradius/3.0/sites-enabled / etc / freeradius / sites-enabled
ln -s /etc/freeradius/3.0/clients.conf /etc/freeradius/clients.conf
ln -s /etc/freeradius/3.0/users / etc / freeradius / pengguna
# Pasang modul linotp-auth-freeradius-perl
git clone
github.com/LinOTP/linotp-auth-freeradius-perlcd linotp-auth-freeradius-perl /
cp radius_linotp.pm /usr/share/linotp/radius_linotp.pm
# Kami membawa file konfigurasi freeradius untuk linotp ke formulir ini
cat / etc / freeradius / situs-enabled / linotp
server linotp {
dengarkan {
ipaddr = *
port = 1812
type = auth
}
dengarkan {
ipaddr = *
port = 1813
type = acct
}
otorisasi {
preprocess
perbarui {
& kontrol: Auth-Type: = Perl
}
}
otentikasi {
Auth-Type Perl {
perl
}
}
akuntansi {
unix
}
}
# Di situs-diaktifkan untuk freeradius kami hanya menyisakan linotp
ls / etc / freeradius / situs-enabled
linotp
# Tambahkan host tempat kami mengizinkan koneksi pada freeradius
cat /etc/freeradius/clients.conf
client host1 {
ipaddr = IP_1
netmask = 32
secret = 'SECRET_1'
}
client host2 {
ipaddr = IP_2
netmask = 32
secret = 'SECRET_2'
}
# Sebagai basis pengguna, kami menggunakan konektor perl
cat / etc / freeradius / pengguna
DEFAULT Auth-type: = perl
}
cat /etc/freeradius/3.0/mods-available/perl
perl {
filename = /usr/share/linotp/radius_linotp.pm
func_authenticate = otentikasi
func_authorize = otorisasi
}
# Dalam direktori mod-enabled, buat symlink dari direktori mod-available untuk modul perl dan hapus eap
ln -s /etc/freeradius/3.0/mods-available/perl /etc/freeradius/3.0/mods-enabled/perl
rm /etc/freeradius/3.0/mods-enabled/eap
# Buat auditkey untuk menjalankan linotp
linotp-create-auditkeys -f linotp.ini
# Kami membuat konfigurasi konektor untuk memeriksa kedatangan DD ke radius
cat /etc/linotp2/rlm_perl.ini
URL = https: // IP_LINOTP_SRV / validate / simplecheck
REALM = ranah
RESCONF = Pengguna Lokal
Debug = Benar
SSL_CHECK = Salah
Saya akan meninggalkan beberapa tautan di bawah tentang pengaturan sistem, yang paling sering perlu dilindungi oleh otentikasi dua faktor:
Mengkonfigurasi otentikasi dua faktor di
Apache2Pengaturan dengan Cisco ASA (server token generation lain digunakan di sana, tetapi pengaturan ASA itu sendiri sama).
VPN dengan otentikasi dua faktorMenyiapkan
otentikasi dua faktor dalam ssh (LinOTP juga digunakan di sana) - terima kasih kepada penulis. Anda juga dapat menemukan hal-hal menarik tentang mengonfigurasi kebijakan LiOTP di sana.
Juga, cms dari banyak situs mendukung otentikasi dua faktor (untuk Wordpress, LinOTP bahkan memiliki modul khusus di
github ), misalnya, jika Anda ingin membuat bagian yang aman untuk karyawan perusahaan di situs web perusahaan Anda.
FAKTA PENTING! JANGAN mencentang kotak "Google autenteficator" untuk menggunakan Google Authenticator! Kode QR tidak dapat dibaca kalau begitu ... (fakta aneh)
Untuk menulis artikel, informasi digunakan dari artikel berikut:
itnan.ru/post.php?c=1&p=270571www.digitalbears.net/?p=469Terima kasih kepada penulis.