خادم ترخيص LinOTP ثنائي العوامل

صورة

أريد اليوم مشاركة كيفية تكوين خادم مصادقة ثنائي عامل لحماية شبكة الشركة والمواقع والخدمات و ssh. سيعمل الخادم حزمة: LinOTP + FreeRadius.

لماذا نحتاجها؟
هذا حل مجاني ومناسب تمامًا ، داخل شبكته ، بشكل مستقل عن مزودي الطرف الثالث.

هذه الخدمة مريحة للغاية ومرئية تمامًا ، على عكس المنتجات الأخرى مفتوحة المصدر ، كما تدعم عددًا كبيرًا من الوظائف والسياسات (على سبيل المثال ، تسجيل الدخول + كلمة المرور + (PIN + OTPToken)). من خلال واجهة برمجة التطبيقات ، يتكامل مع خدمات إرسال الرسائل القصيرة (LinOTP Config-> Config Configuration> Provider Provider> SMS Provider) ، ويقوم بإنشاء رموز لتطبيقات الهاتف المحمول مثل Google Autentificator وأكثر من ذلك بكثير. أعتقد أنه أكثر ملاءمة من الخدمة المذكورة في المقال .

يعمل هذا الخادم بشكل جيد مع Cisco ASA ، و OpenVPN server ، و Apache2 ، وبالفعل مع كل شيء يدعم المصادقة من خلال خادم RADIUS (على سبيل المثال ، SSH في مركز البيانات).

مطلوب:

1) ديبيان 8 (جيسي) - مطلوب! (يوصف التثبيت التجريبي على دبيان 9 في نهاية المقال)

بدء:

تثبيت ديبيان 8.

إضافة مستودع LinOTP:

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

إضافة مفاتيح:

 # gpg --search-keys 913DFF12F86258E5 

في بعض الأحيان مع تثبيت "نظيف" ، بعد تنفيذ هذا الأمر ، مشاكل دبيان:

 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. لا شيء يدعو للقلق. فقط قم بتشغيل الأمر مرة أخرى.
سألت ديبيانا:

 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) > 

الجواب: 1

التالي:

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

 # apt-get update 

تثبيت الخلية. من الناحية النظرية ، يمكنك استخدام خادم sql مختلف ، ولكن بالنسبة للبساطة سأستخدمه ، كما هو موصى به في LinOTP.

(يمكن العثور على معلومات إضافية ، بما في ذلك حول إعادة تكوين قاعدة بيانات LinOTP ، في الوثائق الرسمية على الرابط . في نفس المكان ، يمكنك العثور على الأمر: dpkg-reconfigure linotp لتغيير الإعدادات إذا قمت بالفعل بتثبيت mysql).

 # apt-get install mysql-server 

 # apt-get update 
(التحقق من التحديثات مرة أخرى لن يضر)
تثبيت LinOTP والوحدات الإضافية:

 # apt-get install linotp 

نجيب على أسئلة برنامج التثبيت:
استخدم Apache2: نعم
إنشاء كلمة مرور للمسؤول Linotp: "YourPassword"
توليد شهادة موقعة ذاتيا ؟: نعم
استخدام الخلية؟: نعم
أين هي قاعدة البيانات: المضيف المحلي
إنشاء قاعدة بيانات LinOTP (اسم قاعدة البيانات) على الخادم: LinOTP2
إنشاء مستخدم منفصل لقاعدة البيانات: LinOTP2
قمنا بتعيين كلمة المرور للمستخدم: "YourPassword"
هل يجب علي إنشاء قاعدة الآن؟ (شيء مثل "هل أنت متأكد أنك تريد ..."): نعم
أدخل كلمة مرور الجذر MySQL التي تم إنشاؤها أثناء التثبيت: "YourPassword"
القيام به.

(اختياري ، لا يمكنك ضبط)

 # apt-get install linotp-adminclient-cli 

(اختياري ، لا يمكنك ضبط)

 # apt-get install libpam-linotp 

وهكذا تتوفر واجهة الويب الخاصة بشركة Linotp الآن على:

 "<b>https</b>: //IP_/manage" 

سأتحدث عن الإعدادات في واجهة الويب لاحقًا.

الآن ، الشيء الأكثر أهمية! رفع FreeRadius وربطه لينوتب.

تثبيت 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 

نقوم بتحرير الملف ، ونخبر دائرة نصف قطرها أننا سوف نستخدم بيرل للمصادقة.

 # 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.XX)/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 = rearm1
# اسم مجموعة juzverej التي تم إنشاؤها في WebMord LinOTP.
RESCONF = flat_file
#optional: التعليق إذا كان كل شيء يبدو على ما يرام
تصحيح = صحيح
#optional: استخدم هذا ، إذا كان لديك شهادات موقعة ذاتيًا ، وإلا قم بالتعليق (SSL إذا أنشأنا شهادتنا ونريد التحقق منها)
SSL_CHECK = خطأ

بعد ذلك ، قم بإنشاء الملف / etc / freeradius / المواقع المتاحة / linotp

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

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

وانسخ التكوين فيه (قم بتحرير أي شيء بشكل غير لائق):

 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 } 

بعد ذلك ، قم بإنشاء رابط sim:

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

أنا شخصياً أقتل مواقع نصف القطر الافتراضية ، لكن إذا كنت في حاجة إليها ، يمكنك إما تحرير التكوين أو تعطيلها.

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

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

 # service freeradius reload 

عد الآن إلى وجه الويب واعتبره بمزيد من التفاصيل:
في الزاوية العلوية اليمنى ، انقر فوق LinOTP Config -> UserIdResolvers -> جديد
اختر ما نريد: LDAP (فوز AD ، LDAP samba) ، أو SQL ، أو مستخدمي Flatfile المحليين.

املأ الحقول المطلوبة

بعد ذلك ، قم بإنشاء REALMS:
في الزاوية العلوية اليمنى ، انقر فوق LinOTP Config -> Realms -> جديد.
وقم بإعطاء اسم لـ REALMS الخاصة بنا ، وكذلك انقر فوق UserIdResolvers التي تم إنشاؤها مسبقًا.

يحتاج FreeRadius إلى كل هذه البيانات في ملف /etc/linotp2/rlm_perl.ini ، الذي كتبت عنه أعلاه ، لذلك إذا لم تقم بتحريره ، فقم بذلك الآن.

تم تكوين كل خادم.

ملحق:

إعداد LinOTP على دبيان 9 (بفضل prikhodkov )
# إضافة مستودع LinOTP إلى /etc/apt/sources.list.d/linotp.list وتحديث اللفت:

صدى "deb linotp.org/apt/debian stretch linotp"> /etc/apt/sources.list.d/linotp.list
apt-get update
apt-get install dirmngr
apt-key adv --recv-keys 913DFF12F86258E5

# تثبيت وتكوين خادم mysql بشكل أساسي:

apt-get install mysql-server

# تثبيت الحزم linotp و 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
# إنشاء روابط إلى ملفات التكوين freeradius

ln-s /etc/freeradius/3.0/sites- available / etc / freeradius / sites-available
ln -s /etc/freeradius/3.0/sites-enabled / etc / freeradius / تمكين المواقع
ln-s /etc/freeradius/3.0/clients.conf /etc/freeradius/clients.conf
ln -s /etc/freeradius/3.0/users / etc / freeradius / المستخدمين

# تثبيت وحدة linotp-auth-freeradius-perl

git clone github.com/LinOTP/linotp-auth-freeradius-perl
مؤتمر نزع السلاح linotp-auth-freeradius-perl /
cp radius_linotp.pm /usr/share/linotp/radius_linotp.pm

# نأتي ملف التكوين freeradius ل linotp إلى هذا النموذج

القط / الخ / freeradius / تمكين المواقع / linotp

خادم linotp {
استمع
ipaddr = *
ميناء = 1812
اكتب = المصادقة
}
استمع
ipaddr = *
ميناء = 1813
اكتب = acct
}
تفويض {
المعالجة المسبقة ل
تحديث
والتحكم: مصادقة النوع: = بيرل
}
}
التوثيق
Auth-Type Perl {
بيرل
}
}
محاسبة
يونيكس
}
}
# في المواقع التي تدعم freeradius نترك linotp فقط

ليرة سورية / الخ / freeradius / تمكين المواقع
linotp

# إضافة المضيفين التي نسمح الاتصالات على freeradius

cat /etc/freeradius/clients.conf

مضيف العميل 1 {
ipaddr = IP_1
قناع الشبكة = 32
سر = 'SECRET_1'
}
مضيف العميل 2 {
ipaddr = IP_2
قناع الشبكة = 32
سر = 'SECRET_2'
}
# كقاعدة للمستخدم نستخدم موصل بيرل

القط / الخ / freeradius / المستخدمين

DEFAULT Auth-type: = perl
}

cat /etc/freeradius/3.0/mods-available/perl

بيرل
اسم الملف = /usr/share/linotp/radius_linotp.pm
func_authenticate = المصادقة
func_authorize = تخويل

}
# في الدليل الذي تم تمكين تعديله ، قم بعمل روابط من الدليل المتاح لتعديل الوحدة النمطية perl وإزالة 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

# إنشاء auditkey لتشغيل linotp

linotp-create-auditkeys -f linotp.ini
# نقوم بإنشاء تكوين للموصل للتحقق من وصول DD إلى نصف القطر

cat /etc/linotp2/rlm_perl.ini

URL = https: // IP_LINOTP_SRV / Validate / simplecheck
REALM = عالم
RESCONF = LocalUser
تصحيح = صحيح
SSL_CHECK = خطأ

سأترك أدناه بعض الارتباطات في إعداد الأنظمة ، والتي غالبًا ما تحتاج إلى الحماية بواسطة مصادقة ثنائية:
تكوين المصادقة ثنائية العامل في Apache2

قم بالإعداد باستخدام Cisco ASA (يتم استخدام خادم إنشاء رمز مميز آخر هناك ، لكن إعدادات ASA نفسها هي نفسها).

VPN مع مصادقة ثنائية

إعداد مصادقة ثنائية العامل في ssh (يستخدم LinOTP أيضًا هناك) - بفضل المؤلف. يمكنك أيضًا العثور على أشياء مثيرة للاهتمام حول تكوين سياسات LiOTP هناك.

أيضًا ، تدعم cms في العديد من المواقع المصادقة ثنائية العوامل (لدى LinOTP وحدة نمطية خاصة بها على github لـ Wordpress) ، على سبيل المثال ، إذا كنت ترغب في إنشاء قسم آمن لموظفي الشركة على موقع شركتك على الويب.
حقيقة مهمة! لا تحدد المربع "Google autenteficator" لاستخدام Google Authenticator! لا يمكن قراءة رمز الاستجابة السريعة ثم ... (حقيقة غريبة)

لكتابة المقالة ، تم استخدام المعلومات من المقالات التالية:
itnan.ru/post.php؟c=1&p=270571
www.digitalbears.net/؟p=469

شكرا للمؤلفين.

Source: https://habr.com/ru/post/ar462523/


All Articles