ProHoster > Blog > yönetim > Rutoken EDS 2 ve Rutoken PKI kullanarak L2.0TP ağında kimlik doğrulamayı ayarlama
Rutoken EDS 2 ve Rutoken PKI kullanarak L2.0TP ağında kimlik doğrulamayı ayarlama
Sorunlar
Son zamanlarda çoğu kişi evden çalışmanın nasıl bir şey olduğunu bilmiyordu. Pandemi dünyadaki durumu dramatik bir şekilde değiştirdi; herkes mevcut koşullara, yani evden çıkmanın artık güvensiz hale geldiği gerçeğine uyum sağlamaya başladı. Ve birçoğu, çalışanları için hızlı bir şekilde evden çalışmayı organize etmek zorunda kaldı.
Ancak uzaktan çalışmaya yönelik çözümlerin seçimi konusunda yetkin bir yaklaşımın olmayışı, geri dönüşü olmayan kayıplara yol açabilir. Kullanıcı şifreleri çalınabilir ve bu, bir saldırganın işletmenin ağına ve BT kaynaklarına kontrolsüz bir şekilde bağlanmasına olanak tanır.
Bu nedenle güvenilir kurumsal VPN ağları oluşturma ihtiyacı artık arttı. sana anlatacağım güvenilir, güvenli и basit bir VPN ağı kullanırken.
İstemcilerin kimliğini doğrulamak için alınamayan anahtarları ve belirteçlerde depolanan sertifikaları kullanan ve ayrıca verileri ağ üzerinden şifrelenmiş biçimde ileten IPsec/L2TP şemasına göre çalışır.
Yapılandırma için gösteri standları olarak CentOS 7'ye sahip bir sunucu (adres: centos.vpn.server.ad) ve Ubuntu 20.04'e sahip bir istemcinin yanı sıra Windows 10'a sahip bir istemci kullanıldı.
Sistem açıklaması
VPN, IPSec + L2TP + PPP şemasına göre çalışacaktır. Protokol Noktadan Noktaya Protokolü (PPP) OSI modelinin veri bağlantı katmanında çalışır ve iletilen verilerin kullanıcı kimlik doğrulamasını ve şifrelenmesini sağlar. Verileri, aslında VPN ağında bir bağlantı oluşturulmasını sağlayan ancak kimlik doğrulama ve şifreleme sağlamayan L2TP protokolünün verileri içinde kapsüllenmiştir.
L2TP verileri, kimlik doğrulama ve şifreleme de sağlayan IPSec'te kapsüllenir, ancak PPP'den farklı olarak kimlik doğrulama ve şifreleme, kullanıcı düzeyinde değil cihaz düzeyinde gerçekleşir.
Bu özellik, yalnızca belirli cihazlarda kullanıcıların kimliğini doğrulamanıza olanak tanır. IPSec protokolünü olduğu gibi kullanacağız ve herhangi bir cihazdan kullanıcı kimlik doğrulamasına izin vereceğiz.
Akıllı kartlar kullanılarak kullanıcı kimlik doğrulaması, EAP-TLS protokolü kullanılarak PPP protokolü düzeyinde gerçekleştirilecektir.
Bu devrenin çalışmasıyla ilgili daha detaylı bilgiyi şurada bulabilirsiniz. Bu makalede.
Bu şema neden iyi bir VPN ağının üç gereksinimini de karşılıyor?
Bu planın güvenilirliği zamanla test edilmiştir. 2000'den beri VPN ağlarını dağıtmak için kullanılıyor.
Güvenli kullanıcı kimlik doğrulaması PPP protokolü tarafından sağlanır. Paul Mackerras tarafından geliştirilen PPP protokolünün standart uygulaması yeterli güvenlik sağlayamıyor çünkü Kimlik doğrulama için en iyi durumda, kullanıcı adı ve şifre kullanılarak yapılan kimlik doğrulama kullanılır. Hepimiz bir oturum açma parolasının gözetlenebileceğini, tahmin edilebileceğini veya çalınabileceğini biliyoruz. Ancak uzun süredir geliştirici Jan Just Keijser в uygulanması Bu protokol bu sorunu düzeltti ve kimlik doğrulama için EAP-TLS gibi asimetrik şifrelemeye dayalı protokolleri kullanma olanağı ekledi. Ayrıca kimlik doğrulama için akıllı kart kullanma olanağını da ekleyerek sistemi daha güvenli hale getirdi.
Şu anda bu iki projenin birleştirilmesi için aktif görüşmeler sürüyor ve er ya da geç bunun gerçekleşeceğinden emin olabilirsiniz. Örneğin, PPP'nin yamalı bir sürümü, kimlik doğrulama için güvenli protokoller kullanılarak uzun süredir Fedora depolarında bulunuyor.
Yakın zamana kadar bu ağ yalnızca Windows kullanıcıları tarafından kullanılabiliyordu ancak Moskova Devlet Üniversitesi'nden meslektaşlarımız Vasily Shokov ve Alexander Smirnov şunu buldu: Linux için eski L2TP istemci projesi ve onu değiştirdik. Birlikte müşterinin çalışmasındaki birçok hatayı ve eksikliği giderdik, kaynaktan oluştururken bile sistemin kurulumunu ve konfigürasyonunu basitleştirdik. Bunlardan en önemlileri şunlardır:
Eski istemcinin openssl ve qt'nin yeni sürümlerinin arayüzüyle olan uyumluluk sorunları düzeltildi.
Pppd'nin belirteç PIN'ini geçici bir dosya aracılığıyla geçirmesi kaldırıldı.
Şifre isteme programının grafik arayüz üzerinden hatalı başlatılması düzeltildi. Bu, xl2tpd hizmeti için doğru ortamın kurulmasıyla yapıldı.
L2tpIpsecVpn arka plan programının yapısı artık istemcinin yapısıyla birlikte yürütülüyor, bu da oluşturma ve yapılandırma sürecini basitleştiriyor.
Geliştirme kolaylığı için, yapının doğruluğunu test etmek amacıyla Azure Pipelines sistemi bağlanır.
Sürüm düşürmeye zorlama yeteneği eklendi Güvenlik seviyesi openssl bağlamında. Bu, standart güvenlik düzeyinin 2 olarak ayarlandığı yeni işletim sistemlerini, bu düzeyin güvenlik gereksinimlerini karşılamayan sertifikaları kullanan VPN ağlarıyla doğru şekilde desteklemek için kullanışlıdır. Bu seçenek mevcut eski VPN ağlarıyla çalışmak için faydalı olacaktır.
Bu istemci, kimlik doğrulama için akıllı kartların kullanımını destekler ve ayrıca bu şemayı Linux altında kurmanın tüm zorluklarını ve zorluklarını mümkün olduğunca gizleyerek istemci kurulumunu mümkün olduğunca basit ve hızlı hale getirir.
Elbette, PPP ile istemci GUI'si arasında uygun bir bağlantı sağlamak, projelerin her birinde ek düzenlemeler yapılmadan mümkün değildi, ancak yine de bunlar en aza indirildi ve en aza indirildi:
Sabit yapılandırmayı yükleme ve openssl bağlamını başlatma sırasındaki hata. Bu hata, akıllı kartlarla çalışmak için openssl motorları hakkındaki bilgiler dışında yerel /etc/ppp/openssl.cnf yapılandırma dosyasından herhangi bir şey yüklememize izin vermedi; bu, örneğin motorlarla ilgili bilgilere ek olarak, ciddi bir rahatsızlıktı. başka bir şey ayarlamak istedik. Örneğin, bağlantı kurarken güvenlik düzeyini düzeltin.
Artık kuruluma başlayabilirsiniz.
Sunucu Ayarlama
Gerekli tüm paketleri kuralım.
Strongswan'ı (IPsec) yükleme
Öncelikle güvenlik duvarını ipsec işlemi için yapılandıralım
Ayrıca ortak bir giriş şifresi de belirleyeceğiz. Kimlik doğrulama için paylaşılan parolanın tüm ağ katılımcıları tarafından bilinmesi gerekir. Bu yöntem açıkça güvenilmezdir, çünkü bu şifre, ağa erişim sağlamak istemediğimiz kişiler tarafından kolaylıkla bilinebilir.
Ancak bu gerçek bile ağın güvenliğini etkilemeyecektir çünkü Temel veri şifreleme ve kullanıcı kimlik doğrulaması PPP protokolü tarafından gerçekleştirilir. Ancak adil olmak gerekirse, Strongswan'ın kimlik doğrulama için örneğin özel anahtarların kullanılması gibi daha güvenli teknolojileri desteklediğini belirtmekte fayda var. Strongswan ayrıca akıllı kartlar kullanarak kimlik doğrulama sağlama yeteneğine de sahip ancak şu ana kadar yalnızca sınırlı sayıda cihaz destekleniyor ve bu nedenle Rutoken belirteçleri ve akıllı kartlar kullanılarak kimlik doğrulama hala zor. Dosya üzerinden genel bir şifre belirleyelim /etc/strongswan/ipsec.secrets:
Dosya üzerinden yapılandıralım /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
Kök sertifikayı ve sunucu sertifikasını veriyoruz:
#директория с сертификатами пользователей, УЦ и сервера
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
Böylece temel sunucu kurulumunu tamamladık. Sunucu yapılandırmasının geri kalanı yeni istemcilerin eklenmesini içerir.
Yeni bir müşteri ekleme
Ağa yeni bir istemci eklemek için, sertifikasını bu istemcinin güvenilenler listesine eklemelisiniz.
Kullanıcı bir VPN ağına üye olmak isterse bu client için bir anahtar çifti ve sertifika uygulaması oluşturur. Kullanıcı güvenilirse bu uygulama imzalanabilir ve elde edilen sertifika, sertifikalar dizinine yazılabilir:
NOT
Karışıklığı önlemek için aşağıdakiler daha iyidir: Ortak Ad, sertifika dosyası adı ve kullanıcı adı benzersiz olmalıdır.
Eklediğimiz kullanıcının adının diğer kimlik doğrulama dosyalarının hiçbir yerinde görünmediğini kontrol etmek de önemlidir, aksi takdirde kullanıcının kimliğinin doğrulanma şekliyle ilgili sorunlar ortaya çıkacaktır.
Aynı sertifikanın kullanıcıya geri gönderilmesi gerekmektedir.
Anahtar çifti ve sertifika oluşturma
Başarılı kimlik doğrulama için istemcinin şunları yapması gerekir:
bir anahtar çifti oluşturun;
CA kök sertifikasına sahip olmak;
Anahtar çiftiniz için kök CA tarafından imzalanmış bir sertifikaya sahip olun.
Linux'taki istemci için
Öncelikle token üzerinde bir anahtar çifti oluşturalım ve sertifika için bir uygulama oluşturalım:
Görüntülenen client.req uygulamasını CA'ya gönderin. Anahtar çiftiniz için bir sertifika aldığınızda, bunu anahtarla aynı kimliğe sahip bir belirtece yazın:
Windows ve Linux istemcileri için (daha evrensel yöntem)
Bu yöntem daha evrenseldir çünkü Windows ve Linux kullanıcıları tarafından başarıyla tanınacak bir anahtar ve sertifika oluşturmanıza olanak tanır, ancak anahtar oluşturma prosedürünü gerçekleştirmek için bir Windows makinesi gerekir.
İstek oluşturmadan ve sertifikaları içe aktarmadan önce, VPN ağının kök sertifikasını güvenilir olanlar listesine eklemelisiniz. Bunu yapmak için açın ve açılan pencerede “Sertifikayı yükle” seçeneğini seçin:
Açılan pencerede yerel kullanıcı için sertifika yüklemeyi seçin:
Bundan sonra bir anahtar çifti oluşturup sertifika için bir uygulama oluşturacağız. Bunu yapmak için powershell'i açın ve aşağıdaki komutu girin:
certreq.exe -new -pin $PIN .cert.tmp .client.req
Oluşturulan client.req uygulamasını CA'nıza gönderin ve client.pem sertifikasının alınmasını bekleyin. Aşağıdaki komut kullanılarak bir belirtece yazılabilir ve Windows sertifika deposuna eklenebilir:
certreq.exe -accept .client.pem
MMC programının grafik arayüzü kullanılarak benzer eylemlerin yeniden üretilebileceğini belirtmekte fayda var, ancak bu yöntem daha fazla zaman alır ve daha az programlanabilir.
Ubuntu istemcisini kurma
NOT
Linux'ta bir istemci kurmak şu anda oldukça zaman alıyor çünkü... kaynaktan ayrı programlar oluşturmayı gerektirir. Yakın gelecekte tüm değişikliklerin resmi depolara dahil edilmesini sağlamaya çalışacağız.
Sunucuya IPSec düzeyinde bağlantı sağlamak için Strongswan paketi ve xl2tp arka plan programı kullanılır. Akıllı kartlar kullanarak ağa bağlanmayı basitleştirmek amacıyla, basitleştirilmiş bağlantı kurulumu için grafiksel bir kabuk sağlayan l2tp-ipsec-vpn paketini kullanacağız.
Öğeleri adım adım birleştirmeye başlayalım, ancak bundan önce VPN'in doğrudan çalışması için gerekli tüm paketleri yükleyeceğiz:
sudo apt-get install xl2tpd strongswan libp11-3
Belirteçlerle çalışmak için yazılım yükleme
En son librtpkcs11ecp.so kitaplığını şuradan yükleyin: сайта, ayrıca akıllı kartlarla çalışmaya yönelik kütüphaneler:
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 istemcisini yükleme
Şu anda istemcinin de kaynak koddan derlenmesi gerekiyor. Bu, aşağıdaki komut dizisi kullanılarak yapılır:
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 istemcisini kurma
Kurulu istemciyi başlatın:
Başlattıktan sonra L2tpIpsecVPN uygulaması açılmalıdır. Üzerine sağ tıklayın ve bağlantıyı yapılandırın:
Tokenlarla çalışmak için öncelikle OpenSSL motorunun opensc motoruna ve PKCS#11 kütüphanesine giden yolu belirtiyoruz. Bunu yapmak için openssl parametrelerini yapılandırmak üzere "Tercihler" sekmesini açın:
.
OpenSSL ayarları penceresini kapatıp ağ kurulumuna geçelim. Ayarlar panelindeki Ekle... butonuna tıklayarak yeni bir ağ ekleyelim ve ağ adını girelim:
Bundan sonra bu ağ, ayarlar panelinde kullanılabilir hale gelecektir. Yapılandırmak için yeni ağa çift sağ tıklayın. İlk sekmede IPsec ayarlarını yapmanız gerekiyor. Sunucu adresini ve ortak anahtarı ayarlayalım:
Bundan sonra PPP ayarları sekmesine gidin ve orada ağa erişmek istediğimiz kullanıcı adını belirtin:
Bundan sonra Özellikler sekmesini açın ve anahtarın, istemci sertifikasının ve CA'nın yolunu belirtin:
Bu sekmeyi kapatıp son ayarları yapalım; bunun için “IP ayarları” sekmesini açın ve “DNS sunucu adresini otomatik olarak al” seçeneğinin yanındaki kutuyu işaretleyin:
Bu seçenek, istemcinin ağ içindeki sunucudan kişisel bir IP adresi almasına olanak tanır.
Tüm ayarlardan sonra tüm sekmeleri kapatın ve istemciyi yeniden başlatın:
Ağ bağlantısı
Ayarların ardından ağa bağlanabilirsiniz. Bunu yapmak için uygulama sekmesini açın ve bağlanmak istediğimiz ağı seçin:
Bağlantı kurma işlemi sırasında müşteri bizden Rutoken PIN kodunu girmemizi isteyecektir:
Durum çubuğunda bağlantının başarıyla kurulduğuna dair bir bildirim görünürse bu, kurulumun başarılı olduğu anlamına gelir:
Aksi takdirde, bağlantının neden kurulmadığını bulmaya değer. Bunu yapmak için uygulamadaki "Bağlantı bilgileri" komutunu seçerek program günlüğüne bakmalısınız:
Windows istemcisini kurma
Windows'ta bir istemci kurmak Linux'a göre çok daha kolaydır, çünkü... Gerekli tüm yazılımlar sistemde zaten yerleşiktir.
Sistem kurulumu
Rutokens ile çalışmak için gerekli tüm sürücüleri şuradan indirerek kuracağız: ile ilgili. alan.
Kimlik doğrulama için kök sertifikayı içe aktarma
Sunucu kök sertifikasını indirin ve sisteme yükleyin. Bunu yapmak için açın ve açılan pencerede “Sertifikayı yükle” seçeneğini seçin:
Açılan pencerede yerel kullanıcı için sertifika yüklemeyi seçin. Sertifikanın bilgisayardaki tüm kullanıcılar tarafından kullanılabilir olmasını istiyorsanız sertifikayı yerel bilgisayara yüklemeyi seçmelisiniz:
Tüm bu eylemlerden sonra diğer tüm noktalara katılıyoruz. Sistem artık yapılandırılmıştır.
VPN bağlantısı kurma
VPN bağlantısı kurmak için kontrol paneline gidin ve yeni bağlantı oluşturma seçeneğini seçin.
Açılan pencerede, iş yerinize bağlanmak için bağlantı oluşturma seçeneğini seçin:
Bir sonraki pencerede bir VPN bağlantısı seçin:
VPN bağlantı ayrıntılarını girin ve ayrıca akıllı kart kullanma seçeneğini de belirtin:
Kurulum henüz tamamlanmadı. Geriye kalan tek şey IPsec protokolü için paylaşılan anahtarı belirlemek; bunu yapmak için "Ağ bağlantı ayarları" sekmesine ve ardından "Bu bağlantının özellikleri" sekmesine gidin:
Açılan pencerede “Güvenlik” sekmesine gidin, ağ türü olarak “L2TP/IPsec Ağı”nı belirtin ve “Gelişmiş Ayarlar”ı seçin:
Açılan pencerede paylaşılan IPsec anahtarını belirtin:
Bağlantı
Kurulumu tamamladıktan sonra ağa bağlanmayı deneyebilirsiniz:
Bağlantı işlemi sırasında belirteç PIN kodunu girmemiz istenecektir:
Güvenli bir VPN ağı kurduk ve bunun zor olmadığından emin olduk.
Teşekkür
Meslektaşlarımız Vasily Shokov ve Alexander Smirnov'a, Linux istemcileri için VPN bağlantılarının oluşturulmasını kolaylaştırmak amacıyla birlikte yaptıkları çalışmalar için bir kez daha teşekkür etmek istiyorum.