Wyszukiwanie w witrynie

Jak skonfigurować VPN opartą na protokole IPsec za pomocą Strongswan na CentOS/RHEL 8


strongSwan to wieloplatformowe, nowoczesne i kompletne rozwiązanie VPN oparte na protokole IPsec o otwartym kodzie źródłowym dla systemu Linux, które zapewnia pełną obsługę Internetowej wymiany kluczy (zarówno IKEv1, jak i IKEv2), aby ustanowić powiązania bezpieczeństwa (SA) między dwoma urządzeniami równorzędnymi. Jest w pełni funkcjonalny, modułowy i oferuje dziesiątki wtyczek, które zwiększają podstawową funkcjonalność.

Powiązany artykuł: Jak skonfigurować VPN opartą na IPsec za pomocą Strongswan na Debianie i Ubuntu

W tym artykule dowiesz się, jak skonfigurować bramy VPN typu site-to-site IPsec przy użyciu strongSwan na serwerach CentOS/RHEL 8. Umożliwia to równorzędnym uwierzytelnianie się nawzajem przy użyciu silnego klucza współdzielonego (PSK). Konfiguracja typu site-to-site oznacza, że za każdą bramą bezpieczeństwa znajduje się podsieć.

Środowisko testowe

Postępując zgodnie z instrukcją, nie zapomnij użyć rzeczywistych adresów IP podczas konfiguracji.

Brama Ośrodka 1
Public IP: 192.168.56.7
Private IP: 10.10.1.1/24
Private Subnet: 10.10.1.0/24
Brama Ośrodka 2
Public IP:  192.168.56.6
Private IP: 10.20.1.1/24
Private Subnet: 10.20.1.0/24

Krok 1: Włączanie przekazywania IP jądra w CentOS 8

1. Zacznij od włączenia funkcji przekazywania IP jądra w pliku konfiguracyjnym /etc/sysctl.conf na obu bramach VPN.

vi /etc/sysctl.conf

Dodaj te linie do pliku.

net.ipv4.ip_forward = 1 
net.ipv6.conf.all.forwarding = 1 
net.ipv4.conf.all.accept_redirects = 0 
net.ipv4.conf.all.send_redirects = 0 

2. Po zapisaniu zmian w pliku uruchom następujące polecenie, aby załadować nowe parametry jądra w czasie wykonywania.

sysctl -p

3. Następnie utwórz stałą trasę statyczną w pliku /etc/sysconfig/network-scripts/route-eth0 na obu bramach bezpieczeństwa.

vi /etc/sysconfig/network-scripts/route-eth0

Dodaj następujący wiersz w pliku.

#Site 1 Gateway
10.20.1.0/24  via 192.168.56.7

#Site 2 Gateway
10.10.1.0/24 via 192.168.56.6

4. Następnie uruchom ponownie menedżera sieci, aby zastosować nowe zmiany.

systemctl restart NetworkManager

Krok 2: Instalacja strongSwan w CentOS 8

5. Pakiet strongswan znajduje się w repozytorium EPEL. Aby go zainstalować, musisz włączyć repozytorium EPEL, a następnie zainstalować strongwan na obu bramach bezpieczeństwa.

dnf install epel-release
dnf install strongswan

6. Aby sprawdzić wersję strongswan zainstalowaną na obu bramach, uruchom następujące polecenie.

strongswan version

7. Następnie uruchom usługę strongswan i włącz ją, aby automatycznie uruchamiała się przy starcie systemu. Następnie sprawdź stan obu bram bezpieczeństwa.

systemctl start strongswan 
systemctl enable strongswan
systemctl status strongswan

Uwaga: najnowsza wersja strongswan w CentOS/REHL 8 obsługuje zarówno swanctl (nowe, przenośne narzędzie wiersza poleceń wprowadzone w wersji strongSwan 5.2.0, służące do konfigurowania, kontrolowania i monitorowania demona IKE Charon za pomocą wtyczki vici) i starter (lub ipsec) korzystający z przestarzałej wtyczki obrysu.

8. Główny katalog konfiguracyjny to /etc/strongswan/, który zawiera pliki konfiguracyjne obu wtyczek:

ls /etc/strongswan/

W tym przewodniku użyjemy narzędzia IPsec, które jest wywoływane za pomocą polecenia strongswan i interfejsu obrysu. Będziemy więc używać następujących plików konfiguracyjnych:

  • /etc/strongswan/ipsec.conf – plik konfiguracyjny podsystemu strongSwan IPsec.
  • /etc/strongswan/ipsec.secrets – plik sekretów.

Krok 3: Konfigurowanie bram bezpieczeństwa

9. Na tym etapie musisz skonfigurować profile połączeń na każdej bramie bezpieczeństwa dla każdej witryny, korzystając z pliku konfiguracyjnego strongswan /etc/strongswan/ipsec.conf.

Konfigurowanie profilu połączenia lokacji 1

cp /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.orig
vi /etc/strongswan/ipsec.conf

Skopiuj i wklej następującą konfigurację do pliku.

config setup
        charondebug="all"
        uniqueids=yes
conn ateway1-to-gateway2
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=192.168.56.7
        leftsubnet=10.10.1.1/24
        right=192.168.56.6
        rightsubnet=10.20.1.1/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Konfigurowanie profilu połączenia lokacji 2

cp /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.orig
vi /etc/strongswan/ipsec.conf

Skopiuj i wklej do pliku następującą konfigurację:

config setup
        charondebug="all"
        uniqueids=yes
conn 2gateway-to-gateway1
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=192.168.56.6
        leftsubnet=10.20.1.1/24
        right=192.168.56.7
        rightsubnet=10.10.1.1/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Opiszmy pokrótce każdy z powyższych parametrów konfiguracyjnych:

  • konfiguracja – określa ogólne informacje konfiguracyjne dla protokołu IPSec, które dotyczą wszystkich połączeń.
  • charondebug – określa, ile danych wyjściowych debugowania Charona powinno być rejestrowanych.
  • uniqueids – określa, czy konkretny identyfikator uczestnika powinien pozostać unikalny.
  • conn gateway1-to-gateway2 – służy do ustawiania nazwy połączenia.
  • type – określa typ połączenia.
  • Auto – używany do deklarowania sposobu obsługi połączenia po uruchomieniu lub ponownym uruchomieniu protokołu IPSec.
  • keyexchange – deklaruje używaną wersję protokołu IKE.
  • authby – określa, w jaki sposób partnerzy powinni się nawzajem uwierzytelniać.
  • left – deklaruje adres IP interfejsu sieci publicznej lewego uczestnika.
  • leftsubnet – deklaruje podsieć prywatną za lewym uczestnikiem.
  • right – deklaruje adres IP interfejsu sieci publicznej odpowiedniego uczestnika.
  • rightsubnet – deklaruje podsieć prywatną za lewym uczestnikiem.
  • ike – służy do zadeklarowania listy algorytmów szyfrowania/uwierzytelniania IKE/ISAKMP SA, które mają zostać użyte. Należy pamiętać, że może to być lista rozdzielona przecinkami.
  • esp – określa listę algorytmów szyfrowania/uwierzytelniania ESP, które mają być użyte w połączeniu.
  • agresywny – deklaruje, czy używać Trybu Agresywnego, czy Głównego.
  • keyingtries – deklaruje liczbę prób, jakie należy podjąć, aby wynegocjować połączenie.
  • ikelifetime – określa, jak długo powinien trwać kanał kluczowania połączenia, zanim zostanie renegocjowany.
  • lifetime – określa, jak długo ma trwać dana instancja połączenia, od udanej negocjacji do wygaśnięcia.
  • dpddelay – deklaruje odstęp czasu, z jakim R_U_THERE wysyłane są do peera wiadomości/wymiany INFORMACYJNE.
  • dpdtimeout – służy do deklarowania limitu czasu, po upływie którego w przypadku braku aktywności wszystkie połączenia z peerem są usuwane.
  • dpdaction – określa sposób użycia protokołu Dead Peer Detection (DPD) do zarządzania połączeniem.

Opis wszystkich parametrów konfiguracyjnych podsystemu strongSwan IPsec można znaleźć czytając stronę podręcznika ipsec.conf.

man ipsec.conf

Krok 4: Konfiguracja PSK do uwierzytelniania peer-to-peer

10. Następnie musisz wygenerować silny PSK, który będzie używany przez równorzędnych partnerów do uwierzytelnienia w następujący sposób.

head -c 24 /dev/urandom | base64

11. Dodaj PSK do pliku /etc/strongswan/ipsec.conf na obu bramach bezpieczeństwa.

vi /etc/strongswan/ipsec.secrets

Wpisz następujący wiersz w pliku.

#Site 1 Gateway
192.168.56.7  192.168.56.6 : PSK "0GE0dIEA0IOSYS2o22wYdicj/lN4WoCL"

#Site 1 Gateway
192.168.56.6  192.168.56.7 : PSK "0GE0dIEA0IOSYS2o22wYdicj/lN4WoCL"

12. Następnie uruchom usługę strong>strongsan i sprawdź stan połączeń.

systemctl restart strongswan
strongswan status

13. Sprawdź, czy możesz uzyskać dostęp do prywatnych podsieci z obu bram bezpieczeństwa, uruchamiając polecenie ping.

ping 10.20.1.1
ping 10.10.1.1

14. I na koniec, aby dowiedzieć się więcej o poleceniach strongswan służących do ręcznego otwierania/wyłączania połączeń i nie tylko, zobacz stronę pomocy strongswan.

strongswan --help

To wszystko na teraz! Aby podzielić się z nami swoimi przemyśleniami lub zadać pytania, skontaktuj się z nami za pomocą poniższego formularza opinii. Aby dowiedzieć się więcej o nowym narzędziu swanctl i nowej, bardziej elastycznej strukturze konfiguracji, zapoznaj się z dokumentacją użytkownika strongSwan.