
أريد اليوم مشاركة كيفية تكوين خادم مصادقة ثنائي عامل لحماية شبكة الشركة والمواقع والخدمات و 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:
إضافة مفاتيح:
في بعض الأحيان مع تثبيت "نظيف" ، بعد تنفيذ هذا الأمر ، مشاكل دبيان:
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
التالي:
تثبيت الخلية. من الناحية النظرية ، يمكنك استخدام خادم sql مختلف ، ولكن بالنسبة للبساطة سأستخدمه ، كما هو موصى به في LinOTP.
(يمكن العثور على معلومات إضافية ، بما في ذلك حول إعادة تكوين قاعدة بيانات LinOTP ، في الوثائق الرسمية على
الرابط . في نفس المكان ، يمكنك العثور على الأمر: dpkg-reconfigure linotp لتغيير الإعدادات إذا قمت بالفعل بتثبيت mysql).
(التحقق من التحديثات مرة أخرى لن يضر)
تثبيت LinOTP والوحدات الإضافية:
نجيب على أسئلة برنامج التثبيت:
استخدم Apache2: نعم
إنشاء كلمة مرور للمسؤول Linotp: "YourPassword"
توليد شهادة موقعة ذاتيا ؟: نعم
استخدام الخلية؟: نعم
أين هي قاعدة البيانات: المضيف المحلي
إنشاء قاعدة بيانات LinOTP (اسم قاعدة البيانات) على الخادم: LinOTP2
إنشاء مستخدم منفصل لقاعدة البيانات: LinOTP2
قمنا بتعيين كلمة المرور للمستخدم: "YourPassword"
هل يجب علي إنشاء قاعدة الآن؟ (شيء مثل "هل أنت متأكد أنك تريد ..."): نعم
أدخل كلمة مرور الجذر MySQL التي تم إنشاؤها أثناء التثبيت: "YourPassword"
القيام به.
(اختياري ، لا يمكنك ضبط)
(اختياري ، لا يمكنك ضبط)
وهكذا تتوفر واجهة الويب الخاصة بشركة Linotp الآن على:
"<b>https</b>: //IP_/manage"
سأتحدث عن الإعدادات في واجهة الويب لاحقًا.
الآن ، الشيء الأكثر أهمية! رفع FreeRadius وربطه لينوتب.
تثبيت FreeRadius ووحدة LinOTP
العميل النسخ الاحتياطي والتكوينات دائرة نصف قطرها المستخدمين.
قم بإنشاء ملف عميل فارغ:
نقوم بتحرير ملف التكوين الجديد (يمكن استخدام تهيئة النسخ الاحتياطي كمثال)
client 192.168.188.0/24 { secret = passwd # }
بعد ذلك ، قم بإنشاء ملف المستخدمين:
نقوم بتحرير الملف ، ونخبر دائرة نصف قطرها أننا سوف نستخدم بيرل للمصادقة.
DEFAULT Auth-type := perl
بعد ذلك ، قم بتحرير الملف / etc / freeradius / modules / perl
نحتاج إلى كتابة المسار إلى البرنامج النصي perl linotp في معلمة الوحدة النمطية:
Perl { ....... ......... <source lang="bash">module = /usr/lib/linotp/radius_linotp.pm
.....
بعد ذلك ، نقوم بإنشاء ملف نقول من خلالها (المجال أو قاعدة البيانات أو الملف) لأخذ البيانات.
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
وانسخ التكوين فيه (قم بتحرير أي شيء بشكل غير لائق):
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:
أنا شخصياً أقتل مواقع نصف القطر الافتراضية ، لكن إذا كنت في حاجة إليها ، يمكنك إما تحرير التكوين أو تعطيلها.
عد الآن إلى وجه الويب واعتبره بمزيد من التفاصيل:
في الزاوية العلوية اليمنى ، انقر فوق 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=270571www.digitalbears.net/؟p=469شكرا للمؤلفين.