ProHoster > Log > administrasjon > Sette opp autentisering i L2TP-nettverket ved hjelp av Rutoken EDS 2.0 og Rutoken PKI
Sette opp autentisering i L2TP-nettverket ved hjelp av Rutoken EDS 2.0 og Rutoken PKI
Problemer
For nylig var det mange som ikke visste hvordan det var å jobbe hjemmefra. Pandemien har dramatisk endret situasjonen i verden; alle har begynt å tilpasse seg de nåværende omstendighetene, nemlig til det faktum at det rett og slett har blitt utrygt å forlate huset. Og mange måtte raskt organisere arbeid hjemmefra for sine ansatte.
Mangelen på en kompetent tilnærming til valg av løsninger for fjernarbeid kan imidlertid føre til irreversible tap. Brukerpassord kan bli stjålet, og dette vil tillate en angriper å ukontrollert koble seg til nettverket og IT-ressursene til bedriften.
Det er derfor behovet for å lage pålitelige bedrifts-VPN-nettverk nå har økt. Jeg skal fortelle deg om pålitelig, sikker и enkel ved bruk av et VPN-nettverk.
Den fungerer i henhold til IPsec/L2TP-skjemaet, som bruker ikke-hentbare nøkler og sertifikater lagret på tokens for å autentisere klienter, og overfører også data over nettverket i kryptert form.
En server med CentOS 7 (adresse: centos.vpn.server.ad) og en klient med Ubuntu 20.04, samt en klient med Windows 10, ble brukt som demonstrasjonsstativ for konfigurasjon.
Systembeskrivelse
VPN vil fungere i henhold til IPSec + L2TP + PPP-skjemaet. Protokoll Punkt-til-punkt-protokoll (PPP) opererer på datalinklaget til OSI-modellen og gir brukerautentisering og kryptering av overførte data. Dataene er innkapslet i dataene til L2TP-protokollen, som faktisk sikrer opprettelsen av en tilkobling i VPN-nettverket, men gir ikke autentisering og kryptering.
L2TP-data er innkapslet i IPSec, som også gir autentisering og kryptering, men i motsetning til PPP, skjer autentisering og kryptering på enhetsnivå, ikke på brukernivå.
Denne funksjonen lar deg autentisere brukere kun fra visse enheter. Vi vil bruke IPSec-protokollen som den er og tillate brukerautentisering fra alle enheter.
Brukerautentisering ved bruk av smartkort vil bli utført på PPP-protokollnivå ved bruk av EAP-TLS-protokollen.
Mer detaljert informasjon om driften av denne kretsen finner du i denne artikkelen.
Hvorfor oppfyller denne ordningen alle tre kravene til et godt VPN-nettverk?
Påliteligheten til denne ordningen har blitt testet av tid. Den har blitt brukt til å distribuere VPN-nettverk siden 2000.
Sikker brukerautentisering leveres av PPP-protokollen. Standardimplementering av PPP-protokollen utviklet av Paul Mackerras ikke gir et tilstrekkelig sikkerhetsnivå, fordi For autentisering brukes i beste fall autentisering med pålogging og passord. Vi vet alle at et påloggingspassord kan spioneres på, gjettes eller stjeles. Men i lang tid nå utvikleren Jan Just Keijser в dens gjennomføring Denne protokollen korrigerte dette problemet og la til muligheten til å bruke protokoller basert på asymmetrisk kryptering, for eksempel EAP-TLS, for autentisering. I tillegg la han til muligheten til å bruke smartkort for autentisering, noe som gjorde systemet sikrere.
For tiden pågår det aktive forhandlinger for å slå sammen disse to prosjektene og du kan være sikker på at før eller siden vil dette skje uansett. For eksempel har en lappet versjon av PPP vært i Fedora-lagrene i lang tid, ved å bruke sikre protokoller for autentisering.
Inntil nylig kunne dette nettverket bare brukes av Windows-brukere, men våre kolleger fra Moscow State University Vasily Shokov og Alexander Smirnov fant gammelt L2TP-klientprosjekt for Linux og endret den. Sammen fikset vi mange feil og mangler i klientens arbeid, forenklet installasjonen og konfigurasjonen av systemet, selv når vi bygger fra kilden. De viktigste av dem er:
Rettet kompatibilitetsproblemer til den gamle klienten med grensesnittet til nye versjoner av openssl og qt.
Fjernet pppd fra å sende token-PIN-en gjennom en midlertidig fil.
Rettet feil oppstart av passordforespørselsprogrammet gjennom det grafiske grensesnittet. Dette ble gjort ved å installere riktig miljø for xl2tpd-tjenesten.
Byggingen av L2tpIpsecVpn-demonen utføres nå sammen med byggingen av selve klienten, noe som forenkler bygge- og konfigurasjonsprosessen.
For å lette utviklingen er Azure Pipelines-systemet koblet til for å teste riktigheten av bygget.
Lagt til muligheten til å tvinge nedgradering sikkerhetsnivå i sammenheng med openssl. Dette er nyttig for riktig støtte for nye operativsystemer der standard sikkerhetsnivå er satt til 2, med VPN-nettverk som bruker sertifikater som ikke oppfyller sikkerhetskravene til dette nivået. Dette alternativet vil være nyttig for å jobbe med eksisterende gamle VPN-nettverk.
Denne klienten støtter bruk av smartkort for autentisering, og skjuler også så mye som mulig alle vanskelighetene og vanskelighetene ved å sette opp dette opplegget under Linux, noe som gjør klientoppsettet så enkelt og raskt som mulig.
Selvfølgelig, for en praktisk forbindelse mellom PPP og klientens GUI, var det ikke mulig uten ytterligere redigeringer til hvert av prosjektene, men likevel ble de minimert og redusert til et minimum:
Fikset feil i rekkefølgen for lasting av konfigurasjonen og initialisering av openssl-konteksten. Denne feilen tillot oss ikke å laste inn noe fra den lokale /etc/ppp/openssl.cnf konfigurasjonsfilen bortsett fra informasjon om openssl-motorer for arbeid med smartkort, noe som var en alvorlig ulempe hvis for eksempel, i tillegg til informasjon om motorer, vi ønsket å sette noe annet. For eksempel, fiks sikkerhetsnivået når du oppretter en tilkobling.
Nå kan du begynne å konfigurere.
Server Tuning
La oss installere alle nødvendige pakker.
Installere strongswan (IPsec)
Først av alt, la oss konfigurere brannmuren for ipsec-drift
Vi vil også sette et felles påloggingspassord. Det delte passordet må være kjent for alle nettverksdeltakere for autentisering. Denne metoden er åpenbart upålitelig, fordi dette passordet kan lett bli kjent for enkeltpersoner som vi ikke ønsker å gi tilgang til nettverket.
Men selv dette faktum vil ikke påvirke sikkerheten til nettverket, fordi Grunnleggende datakryptering og brukerautentisering utføres av PPP-protokollen. Men for rettferdighetens skyld er det verdt å merke seg at strongswan støtter sikrere teknologier for autentisering, for eksempel ved bruk av private nøkler. Strongswan har også muligheten til å gi autentisering ved hjelp av smartkort, men foreløpig støttes bare et begrenset utvalg av enheter, og derfor er autentisering ved hjelp av Rutoken-tokens og smartkort fortsatt vanskelig. La oss angi et generelt passord via fil /etc/strongswan/ipsec.secrets:
La oss konfigurere det via fil /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
Vi utsteder rotsertifikatet og serversertifikatet:
#директория с сертификатами пользователей, УЦ и сервера
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
Dermed er vi ferdige med det grunnleggende serveroppsettet. Resten av serverkonfigurasjonen innebærer å legge til nye klienter.
Legger til en ny klient
For å legge til en ny klient til nettverket, må du legge til sertifikatet til listen over klarerte for denne klienten.
Hvis en bruker ønsker å bli medlem av et VPN-nettverk, oppretter han et nøkkelpar og en sertifikatapplikasjon for denne klienten. Hvis brukeren er klarert, kan denne applikasjonen signeres, og det resulterende sertifikatet kan skrives til sertifikatkatalogen:
MERKNADER
For å unngå forvirring er det bedre at: Fellesnavn, sertifikatfilnavn og brukernavn er unike.
Det er også verdt å sjekke at navnet på brukeren vi legger til ikke vises noe sted i andre autentiseringsfiler, ellers vil det oppstå problemer med måten brukeren autentiseres på.
Det samme sertifikatet må sendes tilbake til brukeren.
Generering av nøkkelpar og sertifikat
For vellykket autentisering må klienten:
generere et nøkkelpar;
ha et CA-rotsertifikat;
ha et sertifikat for nøkkelparet ditt signert av rot-CA.
for klient på Linux
La oss først generere et nøkkelpar på tokenet og lage en applikasjon for sertifikatet:
for Windows- og Linux-klienter (mer universell metode)
Denne metoden er mer universell, fordi lar deg generere en nøkkel og et sertifikat som vil bli gjenkjent av Windows- og Linux-brukere, men det krever en Windows-maskin for å utføre nøkkelgenereringsprosedyren.
Før du genererer forespørsler og importerer sertifikater, må du legge til VPN-nettverkets rotsertifikat i listen over klarerte. For å gjøre dette, åpne det og velg alternativet "Installer sertifikat" i vinduet som åpnes:
I vinduet som åpnes velger du å installere et sertifikat for den lokale brukeren:
La oss installere sertifikatet i CAs pålitelige rotsertifikatlager:
Etter alle disse handlingene er vi enige i alle videre punkter. Systemet er nå konfigurert.
Etter dette vil vi generere et nøkkelpar og lage en applikasjon for sertifikatet. For å gjøre dette, åpne powershell og skriv inn følgende kommando:
certreq.exe -new -pin $PIN .cert.tmp .client.req
Send den opprettede applikasjonen client.req til CA og vent på at client.pem-sertifikatet mottas. Det kan skrives til et token og legges til Windows-sertifikatlageret ved å bruke følgende kommando:
certreq.exe -accept .client.pem
Det er verdt å merke seg at lignende handlinger kan reproduseres ved hjelp av det grafiske grensesnittet til mmc-programmet, men denne metoden er mer tidkrevende og mindre programmerbar.
Sette opp Ubuntu-klienten
MERKNADER
Å sette opp en klient på Linux er for tiden ganske tidkrevende, fordi... krever å bygge separate programmer fra kilden. Vi vil prøve å sikre at alle endringer er inkludert i de offisielle depotene i nær fremtid.
For å sikre tilkobling på IPSec-nivå til serveren, brukes strongswan-pakken og xl2tp-demonen. For å forenkle tilkobling til nettverket ved hjelp av smartkort, vil vi bruke l2tp-ipsec-vpn-pakken, som gir et grafisk skall for forenklet tilkoblingsoppsett.
La oss begynne å sette sammen elementene trinn for trinn, men før det vil vi installere alle nødvendige pakker for at VPN skal fungere direkte:
sudo apt-get install xl2tpd strongswan libp11-3
Installere programvare for arbeid med tokens
Installer det nyeste librtpkcs11ecp.so-biblioteket fra сайта, også biblioteker for arbeid med smartkort:
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
Installere L2tpIpsecVpn-klienten
For øyeblikket må klienten også kompileres fra kildekoden. Dette gjøres ved å bruke følgende kommandosekvens:
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
Sette opp L2tpIpsecVpn-klienten
Start den installerte klienten:
Etter lansering skal L2tpIpsecVPN-appleten åpnes. Høyreklikk på den og konfigurer tilkoblingen:
For å jobbe med tokens angir vi først og fremst banen til opensc-motoren til OpenSSL-motoren og PKCS#11-biblioteket. For å gjøre dette, åpne fanen "Innstillinger" for å konfigurere openssl-parametere:
.
La oss lukke vinduet for OpenSSL-innstillinger og gå videre til å sette opp nettverket. La oss legge til et nytt nettverk ved å klikke på Legg til...-knappen i innstillingspanelet og angi nettverksnavnet:
Etter dette vil dette nettverket bli tilgjengelig i innstillingspanelet. Dobbelt-høyreklikk på det nye nettverket for å konfigurere det. På den første fanen må du gjøre IPsec-innstillinger. La oss angi serveradressen og den offentlige nøkkelen:
Etter dette, gå til kategorien PPP-innstillinger og angi brukernavnet som vi vil ha tilgang til nettverket under:
Etter dette åpner du fanen Egenskaper og spesifiserer banen til nøkkelen, klientsertifikatet og CA:
La oss lukke denne fanen og utføre de endelige innstillingene; for å gjøre dette, åpne "IP-innstillinger"-fanen og merk av i boksen ved siden av alternativet "Mothent DNS-serveradresse automatisk":
Dette alternativet vil tillate klienten å motta en personlig IP-adresse i nettverket fra serveren.
Etter alle innstillingene, lukk alle faner og start klienten på nytt:
Koble til nettverket
Etter innstillingene kan du koble til nettverket. For å gjøre dette, åpne applet-fanen og velg nettverket vi vil koble til:
Under etableringsprosessen vil klienten be oss om å angi Rutoken PIN-kode:
Hvis det vises et varsel i statuslinjen om at tilkoblingen er opprettet, betyr det at oppsettet var vellykket:
Ellers er det verdt å finne ut hvorfor forbindelsen ikke ble opprettet. For å gjøre dette, bør du se på programloggen ved å velge kommandoen "Tilkoblingsinformasjon" i appleten:
Sette opp Windows-klienten
Å sette opp en klient på Windows er mye enklere enn på Linux, fordi... All nødvendig programvare er allerede innebygd i systemet.
System oppsett
Vi vil installere alle nødvendige drivere for å jobbe med Rutokens ved å laste dem ned fra av. nettstedet.
Importerer et rotsertifikat for autentisering
Last ned serverrotsertifikatet og installer det på systemet. For å gjøre dette, åpne det og velg alternativet "Installer sertifikat" i vinduet som åpnes:
I vinduet som åpnes velger du å installere et sertifikat for den lokale brukeren. Hvis du vil at sertifikatet skal være tilgjengelig for alle brukere på datamaskinen, bør du velge å installere sertifikatet på den lokale datamaskinen:
La oss installere sertifikatet i CAs pålitelige rotsertifikatlager:
Etter alle disse handlingene er vi enige i alle videre punkter. Systemet er nå konfigurert.
Sette opp en VPN-tilkobling
For å sette opp en VPN-tilkobling, gå til kontrollpanelet og velg alternativet for å opprette en ny tilkobling.
I popup-vinduet velger du alternativet for å opprette en tilkobling for å koble til arbeidsplassen din:
I neste vindu velger du en VPN-tilkobling:
og angi VPN-tilkoblingsdetaljene, og spesifiser også alternativet for å bruke et smartkort:
Oppsettet er ikke fullført ennå. Alt som gjenstår er å spesifisere den delte nøkkelen for IPsec-protokollen; for å gjøre dette, gå til fanen "Nettverkstilkoblingsinnstillinger" og deretter til fanen "Egenskaper for denne tilkoblingen":
I vinduet som åpnes, gå til "Sikkerhet", spesifiser "L2TP/IPsec Network" som nettverkstype og velg "Avanserte innstillinger":
I vinduet som åpnes, spesifiser den delte IPsec-nøkkelen:
Подключение
Etter å ha fullført oppsettet, kan du prøve å koble til nettverket:
Under tilkoblingsprosessen vil vi bli bedt om å angi token-PIN-koden:
Vi har satt opp et sikkert VPN-nettverk og sørget for at det ikke er vanskelig.
Anerkjennelser
Jeg vil nok en gang takke våre kolleger Vasily Shokov og Alexander Smirnov for arbeidet de har gjort sammen for å forenkle opprettelsen av VPN-tilkoblinger for Linux-klienter.