Instalirajte i konfigurirajte OpenVPN poslužitelj na CentOS 7

U ovom ćemo članku razmotriti instaliranje i konfiguriranje OpenVPN poslužitelja na temelju Linux CentOS 7 i pokazati kako koristiti konfigurirani OpenVPN poslužitelj za povezivanje dva udaljena računala (ili ureda) koja se nalaze iza NAT-a u jednu mrežu. Provest ćemo autentifikaciju VPN klijenata prema certifikatima.

sadržaj:

  • Instalirajte OpenVPN i Easy-RSA
  • Postavljanje i izdavanje certifikata jednostavno-RSA
  • Stvaramo ključeve i certifikate za OpenVPN poslužitelj
  • Konfiguriranje OpenVPN poslužitelja: konfiguracijska datoteka, vatrozid
  • Kombiniramo nekoliko ureda (računala) koristeći OpenVPN

VPN - Skup tehnologija koje vam omogućavaju da izgradite sigurnu mrežu preko javnih mreža ili InterTet-a. Korištenjem VPN-a možete kombinirati internetske segmente razdvojene Internetom u jednu lokalnu mrežu..

OpenVPN - jedna od implementacija otvorenog koda VPN tehnologije temeljene na SSL / TLS (temeljenoj na knjižnici OpenSSL). Korištenjem OpenVPN-a možete kombinirati i udaljene urede i pojedinačna lokalna računala koja se nalaze iza NAT-a u jednu mrežu.

Instalirajte OpenVPN i Easy-RSA

Prvi korak je spajanje EPEL-ovog spremišta i ažuriranje sustava:

yum instalirati epel-release -y
yum update -y

Kad se sustav ažurira, morate ga instalirati pomoću yum paketa za upravljanje OpenVPN i Jednostavan RSA (trebat će nam za implementaciju PKI infrastrukture ključeva na VPN poslužitelju).

yum instalirati openvpn easy-rsa -y

Postavljanje i izdavanje certifikata jednostavno-RSA

Kopirajte sve skripte lako RSA u katalog / etc / openvpn /:

cp -r / usr / share / easy-rsa / itd / openvpn /

Idemo na katalog / etc / openvpn / easy-rsa / 3 / i tamo stvorite datoteku Vars:

cd / etc / openvpn / easy-rsa / 3 /
nano vars

Dodajte sadržaj datoteke (možete je popraviti sami):

set_var EASYRSA "$ OSI" set_var EASYRSA_PKI "$ EASYRSA / PKI" set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "RU" set_var EASYRSA_REQ_PROVINCE "MSK" set_var EASYRSA_REQ_CITY "MSK" set_var EASYRSA_REQ_ORG "IT-tvrtke" set_var EASYRSA_REQ_EMAIL „[email protected]. ru "set_var EASYRSA_REQ_OU" IT odjela "set_var EASYRSA_KEY_SIZE 4096 set_var EASYRSA_ALGO RSA set_var EASYRSA_CA_EXPIRE 7500 set_var EASYRSA_CERT_EXPIRE 3650 set_var EASYRSA_NS_SUPPORT" ne "set_var EASYRSA_NS_COMMENT" za izdavanje potvrda "set_var EASYRSA_EXT_DIR" $ EASYRSA / X509-tipovi "set_var EASYRSA_SSL_CONF" $ EASYRSA / OpenSSL-1.0 .cnf "set_var EASYRSA_DIGEST" sha512 "

Podaci u datoteci mogu se uzeti proizvoljno, to neće ometati konfiguraciju i daljnji rad poslužitelja.

Datoteka mora biti izvršna, pa učinite:

chmod + x vars

Stvaramo ključeve i certifikate za OpenVPN poslužitelj

Prije stvaranja ključa, moramo inicijalizirati direktorij PKI i stvoriti ključ CA.
cd / etc / openvpn / easy-rsa / 3 /
# ./easyrsa init-pki

Napomena: upotreba Easy-RSA konfiguracije iz: ./vars init-pki komplet; sada možete stvoriti CA ili zahtjeve. Vaš novostvoreni PKI dir je: / etc / openvpn / easy-rsa / 3 / pki

Stvorite ključ CA:

./ easyrsa build-ca

Nakon izvršavanja naredbe trebat ćemo odrediti lozinku kako bi se generirali certifikati i ključ. Ubuduće će biti potrebna lozinka za potpisivanje potvrda.

Stvorite ključ poslužitelja (naziv poslužitelja server.vpn.ru):

opcija nopass - onemogući lozinku za server.vpn.ru

# ./easyrsa gen-req server.vpn.ru nopass

Napomena: upotreba konfiguracije Easy-RSA iz: ./vars Korištenje SSL-a: openssl OpenSSL 1.0.2k-fips 26. siječnja 2017. Stvaranje 4096-bitnog RSA privatnog ključa ... ++ ... ++ pisanje novog privatnog ključa u '/ etc / openvpn / easy -rsa / 3 / pki / private / server.vpn.ru.key.R4IYCbD1zP '----- Tražit će se da unesete podatke koji će biti ugrađeni u vaš zahtjev za certifikat. Ono što ćete upisati je ono što se naziva Razlikovano ime ili DN. Postoji vrlo malo polja, ali možete ostaviti prazno. Za neka će polja biti zadana vrijednost, Ako unesete '.', Polje će biti prazno. ----- Uobičajeno ime (npr .: ime vašeg korisnika, domaćina ili poslužitelja) [server.vpn.ru]: Završen je zahtjev za upisivanje ključa i certifikata. Vaše datoteke su: req: /etc/openvpn/easy-rsa/3/pki/reqs/server.vpn.ru.req ključ: /etc/openvpn/easy-rsa/3/pki/private/server.vpn.ru .key

U postupku izdavanja potvrde, u stupcu Uobičajeno ime treba kliknuti ući,.

Potpisat ćemo tipku server.vpn.ru pomoću našeg CA certifikata:

./ easyrsa sign-req server server.vpn.ru

Prilikom potpisivanja potvrde trebat će vam lozinka koju smo postavili prilikom izdavanja certifikata CA:

Kao što je naznačeno na snimci zaslona, ​​u tom ćete procesu morati unijeti da i lozinku od CA.

Da biste provjerili jesu li certifikati generirani bez pogreške, pokrenite naredbu:

# openssl potvrdi -CAfile pki / ca.crt pki / izdano / server.vpn.ru.crt

pki / izdano / server.vpn.ru.crt: U redu

Svi OpenVPN sertifikati stvoreni.

  • Korijenski certifikat nalazi se: 'pki / ca.crt'
  • Privatni ključ poslužitelja nalazi se: 'pki / private / server.vpn.ru.key'
  • Smješten certifikat poslužitelja: 'pki / izdano / server.vpn.ru.crt'

Da biste generirali klijentski ključ, trebate pokrenuti naredbu:

./ easyrsa gen-req ime klijenta nopass

Generirajte ključ klijenta admin1:

# ./easyrsa gen-req admin1 nopass

Napomena: upotreba konfiguracije Easy-RSA iz: ./vars Korištenje SSL-a: openssl OpenSSL 1.0.2k-fips 26. siječnja 2017. Stvaranje 4096-bitnog RSA privatnog ključa ... ++ ... ++ pisanje novog privatnog ključa u '/ etc / openvpn / easy -rsa / 3 / pki / private / admin1.key.R5OY6reT2e '----- upravo će se od vas tražiti da unesete podatke koji će biti ugrađeni u vaš zahtjev za certifikat. Ono što ćete upisati je ono što se naziva Razlikovano ime ili DN. Postoji vrlo malo polja, ali možete ostaviti prazno. Za neka će polja biti zadana vrijednost, Ako unesete '.', Polje će biti prazno. ----- Uobičajeno ime (npr .: ime vašeg korisnika, domaćina ili poslužitelja) [admin1]: Završen je zahtjev za tipkovnicu i certifikat. Vaše datoteke su: req: /etc/openvpn/easy-rsa/3/pki/reqs/admin1.req ključ: /etc/openvpn/easy-rsa/3/pki/private/admin1.key

Kao i kod ključa poslužitelja, morate ga potpisati pomoću CA certifikata:

./ easyrsa sign-req klijent admin1

Potvrda stvorena za korisnika.

Uz to morate generirati Diffie-Hellman ključ koji će se koristiti prilikom razmjene ključeva:

./ easyrsa gen-dh

Generira se dugo:

Tada generiramo TLS certifikat:

openvpn --genkey --secret ta.key

Ako planiramo u budućnosti opozvati certifikate klijenta, moramo generirati CRL ključ:

# ./easyrsa gen-crl

Napomena: upotreba konfiguracije Easy-RSA iz: ./vars Korištenje SSL-a: openssl OpenSSL 1.0.2k-fips 26. siječnja 2017. Korištenje konfiguracije iz /etc/openvpn/easy-rsa/3/pki/safessl-easyrsa.cnf Unesite izraz za prolazak /etc/openvpn/easy-rsa/3/pki/private/ca.key: Ažuriran CRL je stvoren. CRL datoteka: /etc/openvpn/easy-rsa/3/pki/crl.pem

Da biste opozvali potvrdu, izvršite naredbu:

./ easyrsa opozvati admin1 - gdje admin1 to je ime certifikata

Stvoreni su potrebni certifikati za rad, kopirajte ih u radne imenike:

Potvrde poslužitelja:

cp pki / ca.crt / etc / openvpn / server /
cp pki / izdano / server.vpn.ru.crt / itd / openvpn / server /
cp pki / private / server.vpn.ru.key / etc / openvpn / server /
cp pki / private / dh.pem / etc / openvpn / server /
cp pki / private / ta.key / etc / openvpn / server /
cp pki / crl.pem / itd / openvpn / server /

Klijenta:

cp pki / izdan / admin1.crt / itd / openvpn / klijent /
cp pki / private / admin1.key / etc / openvpn / client /

Konfiguriranje OpenVPN poslužitelja: konfiguracijska datoteka, vatrozid

Prijeđimo na postavke konfiguracijske datoteke OpenVPN. Prvo napravite konfiguracijsku datoteku OpenVPN server.conf:

cd / etc / openvpn / && nano server.conf

Promijenite sadržaj datoteke na sljedeće:

# Navedite ulaz, protokol i port uređaja 1194 proto udp dev tun # Navedite put do certifikata poslužitelja ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/server.vpn.ru.crt tipka / etc / openvpn /server/server.vpn.ru.key # Putevi ka tipkama CRL i DH dh /etc/openvpn/server/dh.pem crl-verify /etc/openvpn/server/crl.pem # Navedite postavke IP mreže, adrese s kojih VPN klijenti primit će poslužitelj 15.10.2.0 255.255.255.0 push "preusmjeravanje-gateway def1" # Navedite odredišni DNS poslužitelj push "dhcp-opcija DNS 77.88.8.8" push "dhcp-opcija DNS 8.8.4.4" # Dopustite različitim klijentima da se povežu, s istim dvostrukim ključem-cn # TLS zaštita tls-auth /etc/openvpn/server/ta.key 0 šifra AES-256-CBC tls-verzija-min 1,2 tls-šifra TLS-DHE-RSA-WITH-AES-256- GCM-SHA384: TLS- DHE-RSA-SA-AES-256-CBC-SHA256: TLS-DHE-RSA-WITH-AES-128-GCM-SHA256: TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 auth SHA512 auth-nocache # Još jedna konfiguracija za keepalive 20 60 persist-key persist-tun comp-lzo da daemon korisnik niko ne grupira nikoga # Put do datoteke dnevnika log-dodaj /var/log/openvpn.log glagol 3 

Zatim spremite datoteku. Specificirao sam standardni UDP port 1194 za VPN poslužitelj, ali za OpenVPN možete odrediti bilo koji slobodni port na poslužitelju.

Ostaje konfigurirati pravila vatrozida kako bi se omogućilo povezivanje i usmjeravanje između segmenata.

Ako koristite Firewalld, prvo morate aktivirati kernel modul prosljeđivanje:

# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
# sysctl -p

net.ipv4.ip_forward = 1

Dodajte uslugu openvpn u firewalld, i sučelje tun0 u pouzdanu zonu

vatrozid-cmd - stalni --add-service = openvpn
vatrozid-cmd - stalni --zone = pouzdan --add-sučelje = tun0

Aktivirajte 'MASQUERADE' za pouzdanu zonu firewalld:
vatrozid-cmd - stalni --zone = pouzdan --add-maskarada

Aktiviraj NAT:

vatrozid-cmd - stalni - preusmjeravanje - prolazak kroz ipv4 -t nat -A POSTROJENJE -s 15.10.2.0/24 -o IP poslužitelja -j MASQUERADE
firewall-cmd -reload

Ako upotrebljavate iptables bez firewalld, tada trebate pokrenuti sljedeće naredbe:

iptables -t nat -A POSTROJENJE -s 15.10.2.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp -dport 1194 -j PRIHVAT
usluge iptables uštedjeti

Pokrenite OpenVPN i dodajte ga u pokretanje Linuxa:

systemctl start openvpn @ server
systemctl omogućuju openvpn @ server

Provjerite sluša li port 1194 usluga:

# lsof -i: 1194

KOMAND PID KORISNIK FD TIP UREĐAJA VELIČINA / ISKLJUČUJE NODE IME openvpn 11887 nitko 5u IPv4 45892 0t0 UDP *: openvpn

Provjerimo IP postavke mrežnog sučelja:

# ip a

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3: tun0: mtu 1500 qdisc pfifo_fast state NEZNANO grupa zadano qlen 100 link / none inet 15.10 .2.1 peer 15.10.2.2/32 opseg globalnog tun0 valid_lft zauvijek preferirani_lft zauvijek inet6 fe80 :: db7c: 7fed: 6d4f: 70d2 / 64 zastave veze 800 800

Kao što vidite, na uređaju tun0 dodana je mreža navedena tijekom konfiguracije.

Ovo su minimalne postavke koje trebate učiniti da OpenVPN radi..

Kombiniramo nekoliko ureda (računala) koristeći OpenVPN

Razmislite kako se povezati s OpenVPN serverom s dva udaljena računala koja su na Internet spojena putem NAT-a i organizirati zajedničku mrežu između njih. Za povezivanje s Windows računala na OpenVPN poslužitelj, službenog klijenta koristim od programera. Možete ga preuzeti na službenoj web stranici, nećemo se fokusirati na to, ali idemo izravno na postavljanje.

Nakon što instalirate klijent, morate otići u konfiguracijsku datoteku koju trebate stvoriti na putu:

C: \ programske datoteke \ OpenVPN \ config \

Stvorio sam dosje klijent i dodao sljedeći sadržaj:

klijent dev tun proto udp daljinski 182.122.41.12 1194 razrješenje-pokušaj beskonačno nobind blok-izvan-dns persist-key persist-tun mute-rey-upozorava daljinski-cert-tls server tls-client auth SHA512 tls-auth "C: \\ Programske datoteke \\ OpenVPN \\ config \\ ta.key "1 remote-cert-eku" TLS Provjera web-poslužitelja "ca" C: \\ Programske datoteke \\ OpenVPN \\ config \\ ca.crt "cert" C: \\ Programske datoteke \\ OpenVPN \\ config \\ admin1.crt "tipka" C: \\ Programske datoteke \\ OpenVPN \\ config \\ admin1.key "šifra AES-256-CBC comp-lzo verb 3

Za konfiguriranje potrebni su nam prethodno stvoreni certifikati klijenta, sigurnosti i poslužitelja. Potrebno ih je preuzeti s poslužitelja i staviti u zgodan za vas mapu, nakon čega morate odrediti put do njih u konfiguracijskoj datoteci klijenta OpenVPN..

Nakon što se povežemo putem prečice Open VPN klijenta u ladici:

Spojio sam se i dobio sljedeći IP za svoje računalo:

IPv4 adresa ...: 10.15.2.14 Maska podmreže ...: 255.255.255.252

Na drugom računalu za NAT, izveo sam iste korake, nakon što sam stvorio certifikat za drugog korisnika, kada sam povezao drugo računalo, također sam primio IP mrežu:

IPv4 adresa ...: 15.10.2.6 Maska podmreže ...: 255.255.255.252

Nakon povezivanja, oba su računala na istoj mreži i vide se.

Pokrenite ping na drugom računalu:

Paketna razmjena od 10.15.2.14 do 32 podatkovnih bajtova: Odgovor od 10.15.2.14: broj bajtova = 32 vremena = 67ms TTL = 127

Pokrenite ping na prvom računalu:

Paketna razmjena od 10/15 / 2,6 do 32 bajta podataka: Odgovor od 10/15 / 2,6: broj bajtova = 32 vremena = 71 ms TTL = 127

Oba povezana VPN klijenta mogu izravno razmjenjivati ​​pakete i izravno prenijeti datoteke. Tako smo uspjeli kombinirati dva računala koja se nalaze u različitim dijelovima zemlje u jednu lokalnu mrežu.

Na poslužitelju s OpenVPN-om možete stvoriti neograničen broj ključeva i certifikata za korisnike. Ako vam treba novi certifikat, u katalogu pokrenite sljedeće naredbe / etc / openvpn / easy-rsa / 3:

./ easyrsa gen-req ime klijenta nopass
./ ime klijenta easyrsa sign-req

Ne zaboravite da povremeno opozivate potvrde klijenta ako se ne koriste za zaštitu Vaših podataka.