ProHoster > وبلاگ > اداره > تنظیم احراز هویت در شبکه L2TP با استفاده از Rutoken EDS 2.0 و Rutoken PKI
تنظیم احراز هویت در شبکه L2TP با استفاده از Rutoken EDS 2.0 و Rutoken PKI
مسائل
اخیراً، بسیاری نمیدانستند کار کردن در خانه چگونه است. این بیماری همه گیر وضعیت جهان را به طرز چشمگیری تغییر داده است؛ همه شروع به انطباق با شرایط فعلی کرده اند، یعنی با این واقعیت که خروج از خانه به سادگی ناامن شده است. و بسیاری مجبور شدند به سرعت کار را از خانه برای کارمندان خود سازماندهی کنند.
با این حال، فقدان یک رویکرد شایسته برای انتخاب راه حل برای کار از راه دور می تواند منجر به خسارات جبران ناپذیر شود. رمزهای عبور کاربر را می توان به سرقت برد، و این به مهاجم اجازه می دهد تا به طور غیرقابل کنترلی به شبکه و منابع IT شرکت متصل شود.
به همین دلیل است که نیاز به ایجاد شبکه های VPN شرکتی قابل اعتماد در حال حاضر افزایش یافته است. من به شما در مورد قابل اعتماد, امن и ساده در استفاده از شبکه VPN
طبق طرح IPsec/L2TP کار میکند، که از کلیدها و گواهیهای غیرقابل بازیابی ذخیرهشده در توکنها برای احراز هویت کلاینتها استفاده میکند و همچنین دادهها را به شکل رمزگذاری شده از طریق شبکه منتقل میکند.
یک سرور با CentOS 7 (آدرس: centos.vpn.server.ad) و یک سرویس گیرنده با اوبونتو 20.04، و همچنین یک کلاینت با ویندوز 10، به عنوان مخفف نمایش برای پیکربندی استفاده شد.
شرح سیستم
VPN طبق طرح IPSec + L2TP + PPP کار خواهد کرد. پروتکل پروتکل نقطه به نقطه (PPP) در لایه پیوند داده مدل OSI عمل می کند و احراز هویت کاربر و رمزگذاری داده های ارسالی را فراهم می کند. داده های آن در داده های پروتکل L2TP کپسوله شده است، که در واقع ایجاد یک اتصال در شبکه VPN را تضمین می کند، اما احراز هویت و رمزگذاری را ارائه نمی دهد.
داده های L2TP در IPSec کپسوله می شوند، که احراز هویت و رمزگذاری را نیز فراهم می کند، اما برخلاف PPP، احراز هویت و رمزگذاری در سطح دستگاه اتفاق می افتد نه در سطح کاربر.
این ویژگی به شما اجازه می دهد تا کاربران را فقط از دستگاه های خاصی احراز هویت کنید. ما از پروتکل IPSec همانطور که هست استفاده می کنیم و اجازه احراز هویت کاربر را از هر دستگاهی می دهیم.
احراز هویت کاربر با استفاده از کارت های هوشمند در سطح پروتکل PPP با استفاده از پروتکل EAP-TLS انجام خواهد شد.
اطلاعات دقیق تر در مورد عملکرد این مدار را می توانید در اینجا بیابید این مقاله.
چرا این طرح هر سه الزامات یک شبکه VPN خوب را برآورده می کند؟
قابلیت اطمینان این طرح با گذشت زمان آزمایش شده است. از سال 2000 برای استقرار شبکه های VPN استفاده شده است.
احراز هویت امن کاربر توسط پروتکل PPP ارائه می شود. اجرای استاندارد پروتکل PPP که توسط Paul Mackerras ایجاد شده است سطح کافی از امنیت را فراهم نمی کند، زیرا برای احراز هویت در بهترین حالت از احراز هویت با استفاده از لاگین و رمز عبور استفاده می شود. همه ما می دانیم که رمز ورود به سیستم قابل جاسوسی، حدس زدن یا سرقت است. با این حال، برای مدت طولانی در حال حاضر توسعه دهنده جان جاست کیسر в اجرای آن این پروتکل این مشکل را اصلاح کرد و قابلیت استفاده از پروتکلهای مبتنی بر رمزگذاری نامتقارن مانند EAP-TLS را برای احراز هویت اضافه کرد. علاوه بر این، او قابلیت استفاده از کارت های هوشمند را برای احراز هویت اضافه کرد که باعث امنیت بیشتر سیستم شد.
در حال حاضر مذاکرات فعالی برای ادغام این دو پروژه در حال انجام است و مطمئن باشید دیر یا زود این اتفاق خواهد افتاد. به عنوان مثال، یک نسخه وصله شده از PPP برای مدت طولانی در مخازن فدورا بوده و از پروتکل های امن برای احراز هویت استفاده می کند.
تا همین اواخر، این شبکه فقط توسط کاربران ویندوز قابل استفاده بود، اما همکاران ما از دانشگاه دولتی مسکو واسیلی شوکوف و الکساندر اسمیرنوف دریافتند پروژه قدیمی مشتری L2TP برای لینوکس و آن را اصلاح کرد. با هم، بسیاری از اشکالات و کاستی ها را در کار مشتری برطرف کردیم، نصب و پیکربندی سیستم را حتی در هنگام ساخت از منبع ساده کردیم. مهمترین آنها عبارتند از:
رفع مشکلات سازگاری کلاینت قدیمی با رابط نسخه های جدید openssl و qt.
pppd را از ارسال پین رمز از طریق یک فایل موقت حذف کرد.
راه اندازی نادرست برنامه درخواست رمز عبور از طریق رابط گرافیکی رفع شد. این کار با نصب محیط صحیح برای سرویس xl2tpd انجام شد.
ساخت دیمون L2tpIpsecVpn اکنون همراه با ساخت خود کلاینت انجام می شود که فرآیند ساخت و پیکربندی را ساده می کند.
برای سهولت توسعه، سیستم لولههای لاجورد برای آزمایش درستی ساخت وصل شده است.
قابلیت کاهش اجباری اضافه شده است سطح امنیت در زمینه openssl. این برای پشتیبانی صحیح از سیستم عامل های جدید که در آن سطح امنیتی استاندارد روی 2 تنظیم شده است، با شبکه های VPN که از گواهی هایی استفاده می کنند که الزامات امنیتی این سطح را برآورده نمی کنند، مفید است. این گزینه برای کار با شبکه های قدیمی VPN موجود مفید خواهد بود.
این کلاینت از استفاده از کارتهای هوشمند برای احراز هویت پشتیبانی میکند و همچنین تا حد امکان تمام سختیها و سختیهای راهاندازی این طرح را تحت لینوکس پنهان میکند و راهاندازی کلاینت را تا حد امکان ساده و سریع میکند.
البته، برای اتصال راحت بین PPP و رابط کاربری گرافیکی مشتری، بدون ویرایش های اضافی برای هر یک از پروژه ها امکان پذیر نبود، اما با این وجود آنها به حداقل رسیده و به حداقل می رسند:
درست شد خطا در ترتیب بارگیری پیکربندی و مقداردهی اولیه متن openssl. این خطا به ما اجازه بارگذاری هیچ چیزی از فایل پیکربندی /etc/ppp/openssl.cnf محلی را نمی داد، به جز اطلاعات مربوط به موتورهای openssl برای کار با کارت های هوشمند، که برای مثال، علاوه بر اطلاعات مربوط به موتورها، ناراحتی جدی بود. ما می خواستیم چیز دیگری تنظیم کنیم. به عنوان مثال، هنگام برقراری اتصال، سطح امنیتی را اصلاح کنید.
اکنون می توانید راه اندازی را شروع کنید.
تنظیم سرور
بیایید تمام بسته های لازم را نصب کنیم.
نصب strongswan (IPsec)
اول از همه، اجازه دهید فایروال را برای عملیات ipsec پیکربندی کنیم
ما همچنین یک رمز عبور مشترک برای ورود تعیین می کنیم. رمز عبور مشترک باید برای همه شرکت کنندگان شبکه برای احراز هویت شناخته شود. این روش بدیهی است که قابل اعتماد نیست، زیرا این رمز عبور می تواند به راحتی برای افرادی که ما نمی خواهیم دسترسی به شبکه را برای آنها فراهم کنیم شناخته شود.
با این حال، حتی این واقعیت نیز بر امنیت شبکه تأثیر نمی گذارد، زیرا رمزگذاری داده های اولیه و احراز هویت کاربر توسط پروتکل PPP انجام می شود. اما انصافاً شایان ذکر است که strongswan از فناوری های امن تری برای احراز هویت پشتیبانی می کند، به عنوان مثال، با استفاده از کلیدهای خصوصی. Strongswan همچنین توانایی ارائه احراز هویت با استفاده از کارتهای هوشمند را دارد، اما تاکنون تنها طیف محدودی از دستگاهها پشتیبانی میشوند و بنابراین احراز هویت با استفاده از توکنهای روتوکن و کارتهای هوشمند همچنان دشوار است. بیایید یک رمز عبور کلی از طریق فایل تنظیم کنیم /etc/strongswan/ipsec.secrets:
بیایید آن را از طریق فایل پیکربندی کنیم /etc/xl2tpd/xl2tpd.conf:
[global]
force userspace = yes
listen-addr = 0.0.0.0
ipsec saref = yes
[lns default]
exclusive = no
; определяет статический адрес сервера в виртуальной сети
local ip = 100.10.10.1
; задает диапазон виртуальных адресов
ip range = 100.10.10.1-100.10.10.254
assign ip = yes
refuse pap = yes
require authentication = yes
; данную опцию можно отключить после успешной настройки сети
ppp debug = yes
length bit = yes
pppoptfile = /etc/ppp/options.xl2tpd
; указывает адрес сервера в сети
name = centos.vpn.server.ad
#директория с сертификатами пользователей, УЦ и сервера
sudo mkdir /etc/ppp/certs
#директория с закрытыми ключами сервера и УЦ
sudo mkdir /etc/ppp/keys
#запрещаем любой доступ к этой дирректории кроме администатора
sudo chmod 0600 /etc/ppp/keys/
#генерируем ключ и выписываем сертификат УЦ
sudo openssl genrsa -out /etc/ppp/keys/ca.pem 2048
sudo openssl req -key /etc/ppp/keys/ca.pem -new -x509 -out /etc/ppp/certs/ca.pem -subj "/C=RU/CN=L2TP CA"
#генерируем ключ и выписываем сертификат сервера
sudo openssl genrsa -out /etc/ppp/keys/server.pem 2048
sudo openssl req -new -out server.req -key /etc/ppp/keys/server.pem -subj "/C=RU/CN=centos.vpn.server.ad"
sudo openssl x509 -req -in server.req -CAkey /etc/ppp/keys/ca.pem -CA /etc/ppp/certs/ca.pem -out /etc/ppp/certs/server.pem -CAcreateserial
بنابراین، ما با تنظیمات اولیه سرور به پایان رسیدیم. بقیه تنظیمات سرور شامل افزودن کلاینت های جدید است.
افزودن مشتری جدید
برای افزودن یک کلاینت جدید به شبکه، باید گواهی آن را به لیست مورد اعتماد این سرویس گیرنده اضافه کنید.
اگر کاربر بخواهد عضو یک شبکه VPN شود، یک جفت کلید و یک برنامه گواهی برای این کلاینت ایجاد می کند. اگر کاربر مورد اعتماد باشد، این برنامه را می توان امضا کرد و گواهی حاصل را می توان در فهرست گواهینامه ها نوشت:
توجه داشته باشید
برای جلوگیری از سردرگمی، بهتر است: نام مشترک، نام فایل گواهی و نام کاربری منحصر به فرد باشد.
همچنین ارزش بررسی این را دارد که نام کاربری که اضافه می کنیم در هیچ جای دیگر فایل های احراز هویت ظاهر نشود، در غیر این صورت در نحوه احراز هویت کاربر با مشکل مواجه خواهد شد.
همان گواهی باید به کاربر ارسال شود.
ایجاد یک جفت کلید و گواهی
برای احراز هویت موفق، مشتری باید:
ایجاد یک جفت کلید؛
داشتن گواهی ریشه CA؛
یک گواهی برای جفت کلید خود داشته باشید که توسط CA ریشه امضا شده است.
برای مشتری در لینوکس
ابتدا، اجازه دهید یک جفت کلید روی توکن ایجاد کنیم و یک برنامه کاربردی برای گواهی ایجاد کنیم:
این روش جهانی تر است، زیرا به شما امکان می دهد یک کلید و گواهی تولید کنید که با موفقیت توسط کاربران ویندوز و لینوکس شناسایی شود، اما برای انجام فرآیند تولید کلید به یک ماشین ویندوز نیاز دارد.
قبل از ایجاد درخواست و وارد کردن گواهی، باید گواهی ریشه شبکه VPN را به لیست موارد مورد اعتماد اضافه کنید. برای این کار آن را باز کرده و در پنجره باز شده گزینه Install Certificate را انتخاب کنید:
در پنجره ای که باز می شود، نصب گواهی برای کاربر محلی را انتخاب کنید:
اجازه دهید گواهی را در فروشگاه گواهی ریشه قابل اعتماد CA نصب کنیم:
پس از تمام این اقدامات، ما با تمام نکات بعدی موافق هستیم. اکنون سیستم پیکربندی شده است.
پس از این، یک جفت کلید ایجاد می کنیم و یک برنامه برای گواهی ایجاد می کنیم. برای انجام این کار، powershell را باز کرده و دستور زیر را وارد کنید:
certreq.exe -new -pin $PIN .cert.tmp .client.req
برنامه ایجاد شده client.req را به CA خود ارسال کنید و منتظر بمانید تا گواهی client.pem دریافت شود. می توان آن را در یک توکن نوشت و با استفاده از دستور زیر به فروشگاه گواهی ویندوز اضافه کرد:
certreq.exe -accept .client.pem
شایان ذکر است که اقدامات مشابه را می توان با استفاده از رابط گرافیکی برنامه mmc بازتولید کرد، اما این روش زمان برتر و کمتر قابل برنامه ریزی است.
راه اندازی سرویس گیرنده اوبونتو
توجه داشته باشید
راه اندازی یک کلاینت در لینوکس در حال حاضر بسیار زمان بر است، زیرا... نیاز به ساخت برنامه های جداگانه از منبع دارد. ما سعی خواهیم کرد اطمینان حاصل کنیم که در آینده نزدیک همه تغییرات در مخازن رسمی گنجانده شده است.
برای اطمینان از اتصال در سطح IPSec به سرور، از بسته strongswan و دیمون xl2tp استفاده می شود. برای ساده سازی اتصال به شبکه با استفاده از کارت های هوشمند، از بسته l2tp-ipsec-vpn استفاده می کنیم که یک پوسته گرافیکی برای راه اندازی ساده اتصال ارائه می دهد.
بیایید مرحله به مرحله مونتاژ عناصر را شروع کنیم، اما قبل از آن تمام بسته های لازم برای کار مستقیم VPN را نصب خواهیم کرد:
sudo apt-get install xl2tpd strongswan libp11-3
نصب نرم افزار برای کار با توکن ها
آخرین کتابخانه librtpkcs11ecp.so را از اینجا نصب کنید سایت، همچنین کتابخانه هایی برای کار با کارت های هوشمند:
sudo apt-get -y install git make gcc libssl-dev
git clone "https://github.com/jjkeijser/ppp"
cd ppp
./configure --prefix /usr
make -j4
sudo make install
نصب کلاینت L2tpIpsecVpn
در حال حاضر، مشتری همچنین باید از کد منبع کامپایل شود. این کار با استفاده از دستورات زیر انجام می شود:
sudo apt-get -y install git qt5-qmake qt5-default build-essential libctemplate-dev libltdl-dev
git clone "https://github.com/Sander80/l2tp-ipsec-vpn"
cd l2tp-ipsec-vpn
make -j4
sudo make install
راه اندازی سرویس گیرنده L2tpIpsecVpn
کلاینت نصب شده را راه اندازی کنید:
پس از راه اندازی، اپلت L2tpIpsecVPN باید باز شود. روی آن راست کلیک کرده و اتصال را پیکربندی کنید:
برای کار با توکن ها، ابتدا مسیر موتور opensc موتور OpenSSL و کتابخانه PKCS#11 را نشان می دهیم. برای انجام این کار، تب "Preferences" را برای پیکربندی پارامترهای openssl باز کنید:
.
بیایید پنجره تنظیمات OpenSSL را ببندیم و به راه اندازی شبکه برویم. بیایید با کلیک بر روی دکمه افزودن... در پنل تنظیمات، یک شبکه جدید اضافه کنیم و نام شبکه را وارد کنیم:
پس از این، این شبکه در پنل تنظیمات در دسترس خواهد بود. روی شبکه جدید دوبار کلیک کنید تا پیکربندی شود. در تب اول باید تنظیمات IPsec را انجام دهید. بیایید آدرس سرور و کلید عمومی را تنظیم کنیم:
پس از این، به تب تنظیمات PPP بروید و نام کاربری را که می خواهیم تحت آن به شبکه دسترسی پیدا کنیم را در آنجا مشخص کنید:
پس از این، تب Properties را باز کنید و مسیر کلید، گواهی مشتری و CA را مشخص کنید:
بیایید این برگه را ببندیم و تنظیمات نهایی را انجام دهیم؛ برای این کار، تب "IP settings" را باز کرده و کادر کنار گزینه "Obtain DNS server address automatically" را علامت بزنید:
این گزینه به مشتری این امکان را می دهد که یک آدرس IP شخصی را در داخل شبکه از سرور دریافت کند.
پس از انجام تمام تنظیمات، تمام تب ها را ببندید و کلاینت را مجددا راه اندازی کنید:
اتصال به شبکه
پس از انجام تنظیمات می توانید به شبکه متصل شوید. برای انجام این کار، تب applet را باز کرده و شبکه ای را که می خواهیم به آن متصل شویم را انتخاب کنید:
در طول فرآیند برقراری اتصال، مشتری از ما میخواهد که کد پین روتوکن را وارد کنیم:
اگر اعلانی در نوار وضعیت ظاهر شد مبنی بر اینکه اتصال با موفقیت برقرار شده است، به این معنی است که تنظیم با موفقیت انجام شده است:
در غیر این صورت، ارزش آن را دارد که بفهمیم چرا اتصال برقرار نشد. برای انجام این کار، باید با انتخاب دستور "اطلاعات اتصال" در اپلت، به گزارش برنامه نگاه کنید:
راه اندازی سرویس گیرنده ویندوز
راه اندازی یک کلاینت در ویندوز بسیار ساده تر از لینوکس است، زیرا ... تمام نرم افزارهای لازم از قبل در سیستم تعبیه شده است.
راه اندازی سیستم
ما تمام درایورهای لازم برای کار با روتوکن ها را با دانلود از آنها نصب می کنیم از. سایت.
وارد کردن گواهی ریشه برای احراز هویت
گواهی ریشه سرور را دانلود و بر روی سیستم نصب کنید. برای این کار آن را باز کرده و در پنجره باز شده گزینه Install Certificate را انتخاب کنید:
در پنجره باز شده، نصب گواهی برای کاربر محلی را انتخاب کنید. اگر میخواهید گواهی برای همه کاربران رایانه در دسترس باشد، باید گواهی را در رایانه محلی نصب کنید:
اجازه دهید گواهی را در فروشگاه گواهی ریشه قابل اعتماد CA نصب کنیم:
پس از تمام این اقدامات، ما با تمام نکات بعدی موافق هستیم. اکنون سیستم پیکربندی شده است.
راه اندازی اتصال VPN
برای راه اندازی یک اتصال VPN، به کنترل پنل بروید و گزینه ایجاد اتصال جدید را انتخاب کنید.
در پنجره پاپ آپ، گزینه ایجاد اتصال برای اتصال به محل کار خود را انتخاب کنید:
در پنجره بعدی، یک اتصال VPN را انتخاب کنید:
و جزئیات اتصال VPN را وارد کنید و همچنین گزینه استفاده از کارت هوشمند را مشخص کنید:
تنظیم هنوز کامل نشده است. تنها چیزی که باقی می ماند این است که کلید مشترک را برای پروتکل IPsec مشخص کنید؛ برای انجام این کار، به تب "تنظیمات اتصال شبکه" و سپس به تب "Properties for this connection" بروید:
در پنجره ای که باز می شود، به تب "امنیت" بروید، "L2TP/IPsec Network" را به عنوان نوع شبکه مشخص کنید و "Advanced Settings" را انتخاب کنید:
در پنجره ای که باز می شود، کلید IPsec مشترک را مشخص کنید:
Подключение
پس از تکمیل تنظیمات، می توانید سعی کنید به شبکه متصل شوید:
در طول فرآیند اتصال، باید کد پین رمز را وارد کنیم:
ما یک شبکه VPN ایمن راه اندازی کرده ایم و مطمئن شده ایم که دشوار نیست.
تقدیر و تشکر
من می خواهم یک بار دیگر از همکارانمان واسیلی شوکوف و الکساندر اسمیرنوف به خاطر کاری که با هم برای ساده سازی ایجاد اتصالات VPN برای مشتریان لینوکس انجام داده اند تشکر کنم.