Szyfrujemy zgodnie z GOST: przewodnik po konfigurowaniu dynamicznego routingu ruchu

Szyfrujemy zgodnie z GOST: przewodnik po konfigurowaniu dynamicznego routingu ruchu
Jeśli Twoja firma przesyła lub otrzymuje za pośrednictwem sieci dane osobowe i inne informacje poufne podlegające ochronie zgodnie z prawem, wymagane jest zastosowanie szyfrowania GOST. Dziś opowiemy jak wdrożyliśmy u jednego z klientów takie szyfrowanie w oparciu o bramkę kryptograficzną S-Terra (CS). Ta historia zainteresuje specjalistów ds. bezpieczeństwa informacji, a także inżynierów, projektantów i architektów. W tym poście nie będziemy zagłębiać się w niuanse konfiguracji technicznej, skupimy się na kluczowych punktach konfiguracji podstawowej. Ogromne ilości dokumentacji dotyczącej konfiguracji demonów systemu operacyjnego Linux, na których oparty jest S-Terra CS, są swobodnie dostępne w Internecie. Dokumentacja dotycząca konfiguracji własnego oprogramowania S-Terra jest również publicznie dostępna na stronie portal producent.

Kilka słów o projekcie

Topologia sieci Klienta była standardowa – pełna siatka pomiędzy centrum a oddziałami. Konieczne było wprowadzenie szyfrowania kanałów wymiany informacji pomiędzy wszystkimi stronami, których było 8.

Zwykle w takich projektach wszystko jest statyczne: statyczne trasy do sieci lokalnej witryny są ustawione na bramkach kryptograficznych (CG), rejestrowane są listy adresów IP (ACL) do szyfrowania. Jednak w tym przypadku witryny nie mają scentralizowanej kontroli i w ich sieciach lokalnych wszystko może się zdarzyć: sieci można dodawać, usuwać i modyfikować na wszelkie możliwe sposoby. Aby uniknąć rekonfiguracji routingu i ACL na KS podczas zmiany adresowania sieci lokalnych w lokalizacjach, zdecydowano się zastosować tunelowanie GRE i routing dynamiczny OSPF, który obejmuje wszystkie KS i większość routerów na poziomie rdzenia sieci w lokalizacjach ( w niektórych witrynach administratorzy infrastruktury woleli używać SNAT zamiast KS na routerach jądra).

Tunelowanie GRE pozwoliło nam rozwiązać dwa problemy:
1. Użyj adresu IP zewnętrznego interfejsu CS do szyfrowania na liście ACL, która hermetyzuje cały ruch wysyłany do innych witryn.
2. Zorganizuj tunele ptp pomiędzy CS, co pozwala na skonfigurowanie dynamicznego routingu (w naszym przypadku MPLS L3VPN dostawcy jest zorganizowany pomiędzy lokalizacjami).

Klient zlecił wdrożenie szyfrowania jako usługę. W przeciwnym razie musiałby nie tylko utrzymywać bramy kryptograficzne lub zlecać je jakiejś organizacji, ale także samodzielnie monitorować cykl życia certyfikatów szyfrujących, odnawiać je na czas i instalować nowe.
Szyfrujemy zgodnie z GOST: przewodnik po konfigurowaniu dynamicznego routingu ruchu
A teraz faktyczna notatka - jak i co skonfigurowaliśmy

Uwaga do tematu CII: konfiguracja bramy kryptograficznej

Podstawowa konfiguracja sieci

Na początek uruchamiamy nowego CS-a i wchodzimy do konsoli administracyjnej. Należy zacząć od zmiany wbudowanego hasła administratora - polecenie zmień hasło użytkownika administrator. Następnie należy przeprowadzić procedurę inicjalizacji (polecenie zainicjować), podczas którego wprowadzane są dane licencyjne i inicjowany jest czujnik liczb losowych (RNS).

Uwaga! Po inicjalizacji S-Terra CC ustalana jest polityka bezpieczeństwa, w której interfejsy bramy bezpieczeństwa nie pozwalają na przesyłanie pakietów. Musisz albo utworzyć własną politykę, albo użyć polecenia uruchom csconf_mgr aktywuj aktywuj predefiniowaną politykę zezwalającą.
Następnie musisz skonfigurować adresowanie interfejsów zewnętrznych i wewnętrznych, a także trasę domyślną. Preferowana jest praca z konfiguracją sieci CS i konfigurowanie szyfrowania za pomocą konsoli podobnej do Cisco. Ta konsola jest przeznaczona do wprowadzania poleceń podobnych do poleceń Cisco IOS. Konfiguracja wygenerowana za pomocą konsoli typu Cisco jest z kolei konwertowana na odpowiednie pliki konfiguracyjne, z którymi współpracują demony systemu operacyjnego. Do konsoli typu Cisco możesz przejść z konsoli administracyjnej za pomocą polecenia skonfigurować.

Zmień hasła dla wbudowanych csconów użytkownika i włącz:

>włącz
Hasło: csp (preinstalowane)
#skonfiguruj terminal
#username cscons przywilej 15 sekret 0 #enable sekret 0 Konfigurowanie podstawowej konfiguracji sieci:

#interfejs GigabitEthernet0/0
#adres IP 10.111.21.3 255.255.255.0
#bez wyłączania
#interfejs GigabitEthernet0/1
#adres IP 192.168.2.5 255.255.255.252
#bez wyłączania
#ip trasa 0.0.0.0 0.0.0.0 10.111.21.254

GRE

Wyjdź z konsoli podobnej do Cisco i przejdź do powłoki Debiana za pomocą polecenia system. Ustaw własne hasło dla użytkownika korzeń według zespołu passwd.
W każdej sterowni skonfigurowany jest oddzielny tunel dla każdego miejsca. Interfejs tunelu jest skonfigurowany w pliku / etc / network / interfaces. Narzędzie tunelu IP, zawarte w preinstalowanym zestawie iproute2, jest odpowiedzialne za samo utworzenie interfejsu. Polecenie tworzenia interfejsu jest zapisane w opcji wstępnej.

Przykładowa konfiguracja typowego interfejsu tunelowego:
witryna samochodowa 1
iface site1 inet statyczny
adres 192.168.1.4
255.255.255.254 netmask
wstępnie skonfigurowany tunel IP dodaj tryb site1 gre lokalny 10.111.21.3 zdalny 10.111.22.3 klucz hfLYEg^vCh6p

Uwaga! Należy zauważyć, że ustawienia interfejsów tunelu muszą znajdować się poza sekcją

###netifcfg-begin###
*****
###netifcfg-end###

W przeciwnym razie ustawienia te zostaną nadpisane podczas zmiany ustawień sieciowych interfejsów fizycznych za pomocą konsoli typu Cisco.

Routing dynamiczny

W S-Terra routing dynamiczny jest realizowany przy użyciu pakietu oprogramowania Quagga. Aby skonfigurować OSPF, musimy włączyć i skonfigurować demony zebra и ospfd. Demon zebra jest odpowiedzialny za komunikację pomiędzy demonami routingu a systemem operacyjnym. Za implementację protokołu OSPF odpowiada demon ospfd, jak sama nazwa wskazuje.
OSPF konfiguruje się albo poprzez konsolę demona, albo bezpośrednio poprzez plik konfiguracyjny /etc/quagga/ospfd.conf. Do pliku dodawane są wszystkie interfejsy fizyczne i tunelowe uczestniczące w routingu dynamicznym, a także deklarowane są sieci, które będą anonsowane i odbierane.

Przykład konfiguracji do której należy dodać ospfd.conf:
interfejs eth0
!
interfejs eth1
!
witryna interfejsu 1
!
witryna interfejsu 2
router OSPF
ospf router-id 192.168.2.21
sieć 192.168.1.4/31 obszar 0.0.0.0
sieć 192.168.1.16/31 obszar 0.0.0.0
sieć 192.168.2.4/30 obszar 0.0.0.0

W tym przypadku adresy 192.168.1.x/31 są zarezerwowane dla tunelowych sieci ptp pomiędzy lokacjami, adresy 192.168.2.x/30 są przydzielane dla sieci tranzytowych pomiędzy CS a routerami jądra.

Uwaga! Aby zmniejszyć tablicę routingu w dużych instalacjach, możesz filtrować ogłoszenia samych sieci tranzytowych za pomocą konstrukcji brak połączenia z redystrybucją lub redystrybuuj połączoną mapę tras.

Po skonfigurowaniu demonów należy zmienić status uruchamiania demonów w /etc/quagga/daemons. W opcjach zebra и ospfd bez zmiany na tak. Uruchom demona quagga i ustaw go na autorun po uruchomieniu komendy KS update-rc.d włącz quaggę.

Jeśli konfiguracja tuneli GRE i OSPF zostanie wykonana poprawnie, wówczas trasy w sieci innych lokalizacji powinny pojawić się na routerach KSh i rdzeniowych, a tym samym powstanie łączność sieciowa między sieciami lokalnymi.

Szyfrujemy przesyłany ruch

Jak już zostało napisane, zazwyczaj szyfrując pomiędzy witrynami, określamy zakresy adresów IP (ACL), pomiędzy którymi szyfrowany jest ruch: jeśli adres źródłowy i docelowy mieszczą się w tych zakresach, wówczas ruch pomiędzy nimi jest szyfrowany. Jednak w tym projekcie struktura jest dynamiczna i adresy mogą się zmieniać. Ponieważ skonfigurowaliśmy już tunelowanie GRE, możemy określić zewnętrzne adresy KS jako adresy źródłowe i docelowe dla szyfrowania ruchu - w końcu ruch, który jest już hermetyzowany protokołem GRE, przychodzi do szyfrowania. Innymi słowy, wszystko, co przedostaje się do CS z sieci lokalnej jednej witryny do sieci ogłoszonych przez inne witryny, jest szyfrowane. W ramach każdej z witryn można wykonać dowolne przekierowanie. Zatem jeśli nastąpi jakakolwiek zmiana w sieciach lokalnych, administrator musi jedynie zmodyfikować ogłoszenia płynące z jego sieci do sieci, a będą one dostępne dla innych witryn.

Szyfrowanie w S-Terra CS odbywa się przy użyciu protokołu IPSec. Używamy algorytmu „Grasshopper” zgodnie z GOST R 34.12-2015, a dla kompatybilności ze starszymi wersjami można zastosować GOST 28147-89. Technicznie rzecz biorąc, uwierzytelnianie można przeprowadzić zarówno na podstawie predefiniowanych kluczy (PSK), jak i certyfikatów. Jednak w działalności przemysłowej konieczne jest stosowanie certyfikatów wydanych zgodnie z GOST R 34.10-2012.

Praca z certyfikatami, kontenerami i listami CRL odbywa się za pomocą narzędzia certyfikat_mgr. Przede wszystkim za pomocą polecenia cert_mgr utwórz konieczne jest wygenerowanie kontenera klucza prywatnego oraz żądania certyfikatu, które zostanie przesłane do Centrum Zarządzania Certyfikatami. Po otrzymaniu certyfikatu należy go zaimportować wraz z certyfikatem głównego urzędu certyfikacji i listą CRL (jeśli jest używana) za pomocą polecenia import certyfikatu_mgr. Za pomocą polecenia możesz upewnić się, że wszystkie certyfikaty i listy CRL zostały zainstalowane pokaż_mgr certyfikatu.

Po pomyślnym zainstalowaniu certyfikatów przejdź do konsoli podobnej do Cisco, aby skonfigurować IPSec.
Tworzymy politykę IKE określającą pożądane algorytmy i parametry tworzonego bezpiecznego kanału, która zostanie zaoferowana partnerowi do akceptacji.

#crypto isakmp polityka 1000
#encr gost341215k
#hash gost341112-512-tc26
#znak uwierzytelnienia
#grupa vko2
#życie 3600

Tę zasadę stosuje się podczas tworzenia pierwszej fazy protokołu IPSec. Efektem pomyślnego zakończenia pierwszego etapu jest utworzenie SA (Stowarzyszenia Bezpieczeństwa).
Następnie musimy zdefiniować listę źródłowych i docelowych adresów IP (ACL) do szyfrowania, wygenerować zestaw transformacji, utworzyć mapę kryptograficzną (mapę kryptograficzną) i powiązać ją z zewnętrznym interfejsem CS.

Ustaw listę ACL:
#ip lista dostępu rozszerzona witryna 1
#pozwól gre hostowi 10.111.21.3 hostowi 10.111.22.3

Zbiór transformacji (tak samo jak w fazie pierwszej, stosujemy algorytm szyfrowania „Grasshopper” z wykorzystaniem trybu generowania wstawek symulacyjnych):

#crypto ipsec transform-set GOST esp-gost341215k-mac

Tworzymy mapę kryptograficzną, określamy listę ACL, zestaw transformacji i adres równorzędny:

#mapa kryptograficzna MAIN 100 ipsec-isakmp
#dopasuj adres do witryny1
#set transformacja-ustaw GOST
#ustaw peera 10.111.22.3

Podpinamy kartę kryptograficzną do zewnętrznego interfejsu kasy:

#interfejs GigabitEthernet0/0
#adres IP 10.111.21.3 255.255.255.0
#mapa kryptograficzna GŁÓWNA

Aby zaszyfrować kanały z innymi stronami, należy powtórzyć procedurę tworzenia listy ACL i karty kryptograficznej, zmieniając nazwę listy ACL, adresy IP i numer karty kryptograficznej.

Uwaga! Jeżeli nie jest stosowana weryfikacja certyfikatu przez listę CRL, należy to wyraźnie określić:

#crypto pki punkt zaufania s-terra_technological_trustpoint
#odwołanie-sprawdź brak

Na tym etapie konfigurację można uznać za zakończoną. Dane wyjściowe poleceń konsoli typu Cisco pokaż crypto isakmp sa и pokaż crypto ipsec sa Należy uwzględnić zbudowaną pierwszą i drugą fazę protokołu IPSec. Te same informacje można uzyskać za pomocą polecenia pokaz sa_mgr, wykonany z powłoki Debiana. W wynikach polecenia pokaż_mgr certyfikatu Powinny pojawić się certyfikaty lokalizacji zdalnej. Status takich certyfikatów będzie następujący zdalny. Jeśli tunele nie są budowane, musisz zajrzeć do dziennika usługi VPN, który jest przechowywany w pliku /var/log/cspvpngate.log. Pełna lista plików logów wraz z opisem ich zawartości dostępna jest w dokumentacji.

Monitorowanie „kondycji” systemu

S-Terra CC wykorzystuje do monitorowania standardowego demona snmpd. Oprócz typowych parametrów Linuksa, S-Terra od razu wspiera wydawanie danych o tunelach IPSec zgodnie z CISCO-IPSEC-FLOW-MONITOR-MIB, czyli tym, czego używamy podczas monitorowania stanu tuneli IPSec. Obsługiwana jest również funkcjonalność niestandardowych identyfikatorów OID, które wyświetlają wyniki wykonania skryptu jako wartości. Ta funkcja pozwala nam śledzić daty wygaśnięcia certyfikatów. Napisany skrypt analizuje dane wyjściowe polecenia pokaż_mgr certyfikatu i w rezultacie podaje liczbę dni do wygaśnięcia certyfikatów lokalnych i głównych. Technika ta jest niezbędna w przypadku podawania dużej liczby CABG.
Szyfrujemy zgodnie z GOST: przewodnik po konfigurowaniu dynamicznego routingu ruchu

Jaka jest korzyść z takiego szyfrowania?

Wszystkie funkcje opisane powyżej są obsługiwane od razu przez S-Terra KSh. Oznacza to, że nie było potrzeby instalowania żadnych dodatkowych modułów, które mogłyby mieć wpływ na certyfikację bramek kryptograficznych i certyfikację całego systemu informatycznego. Pomiędzy stronami mogą istnieć dowolne kanały, nawet przez Internet.

Dzięki temu, że w przypadku zmiany infrastruktury wewnętrznej nie ma konieczności rekonfiguracji bramek kryptograficznych, system działa jako usługa, co jest bardzo wygodne dla klienta: może on umieścić swoje usługi (klienta i serwer) pod dowolnym adresem, a wszelkie zmiany będą dynamicznie przesyłane pomiędzy urządzeniami szyfrującymi.

Oczywiście szyfrowanie ze względu na koszty ogólne (narzut) wpływa na prędkość przesyłania danych, ale tylko nieznacznie - przepustowość kanału może spaść maksymalnie o 5-10%. Jednocześnie technologia została przetestowana i wykazała dobre wyniki nawet w przypadku kanałów satelitarnych, które są dość niestabilne i mają niską przepustowość.

Igor Vinokhodov, inżynier drugiej linii administracji Rostelecom-Solar

Źródło: www.habr.com

Dodaj komentarz