Konfigurowanie białej listy IP dla OpenStack Load Balancer przy użyciu Horizon i CLI w NSIS
W tym przewodniku wyjaśniono, jak skonfigurować białą listę adresów IP (allowed_cidrs) na istniejącym OpenStack Load Balancer przy użyciu Horizon i poleceń CLI. Konfiguracja ograniczy dostęp do klastra za pośrednictwem load balancera.
Co będziemy omawiać
Przygotowanie środowiska
Biała lista load balancera za pośrednictwem interfejsu CLI
Wymagania wstępne
Nr 1 Konto
Potrzebne jest konto hostingowe NSIS z dostępem do interfejsu Horyzont: https://horizon.cloudferro.com.
Nr 2 Lista adresów IP/zakresów do umieszczenia na białej liście
Jest to lista adresów IP, które mają być nasłuchiwane przez load balancer.
W tym artykule użyjemy następujących dwóch adresów do umieszczenia na białej liście:
10.0.0.0.0/8
10.95.255.0/24
Nr 3 Klient Python Octavia
Do obsługi Load Balancerów za pomocą CLI wymagany jest Python Octavia Client (python-octaviaclient). Jest to klient wiersza poleceń dla usługi równoważenia obciążenia OpenStack. Zainstaluj wtyczkę Load Balancer (Octavia) za pomocą następującego polecenia z okna Terminala, na Ubuntu 22.04:
pip install python-octaviaclient
Lub, jeśli masz zainstalowany virtualenvwrapper:
mkvirtualenv python-octaviaclient
pip install python-octaviaclient
Przygotowanie środowiska
Przede wszystkim należy znaleźć id load balancera i jego listenera.
Horyzont:
Aby znaleźć id load balancera, przejdź do Project >> Network >> Load Balancers i znajdź ten, który jest powiązany z twoim klastrem (jego nazwa będzie z prefiksem nazwy twojego klastra).
Click on load balancer name (in this case lb-testing-ih347dstxyl2-api_lb_fixed-w2im3obvdv2p-loadbalancer_with_flavor-ykcmf6vvphld) then go to Listeners pane. There you will have a listener associated with that load balancer.
CLI
Aby użyć CLI do znalezienia listenera, musisz znać następujące dwa parametry klastra:
Stack ID
identyfikator klastra
Można je znaleźć za pomocą poleceń Horizon Container Infra –> Clusters, a następnie kliknąć nazwę klastra:
W dolnej części okna znajdź identyfikator stosu:
Teraz wykonaj polecenia:
openstack coe cluster show <your_cluster_id> \
-f value -c stack_id \
<stack_id for example 12345678-1234-1234-1234-123456789011>
Aby znaleźć LB_ID
openstack stack resource list <your_stack_id> \
-n 5 -c resource_name -c physical_resource_id \
| grep loadbalancer_with_flavor \
| loadbalancer_with_flavor \
| <flavor_id for example 12345678-1234-1234-1234-123456789011>
Mając te informacje, możemy teraz sprawdzić nasz listener_id; to właśnie do tego komponentu dołączymy białą listę:
openstack loadbalancer \
show 2d6b335f-fb05-4496-8593-887f7e2c49cf \
-c listeners \
-f value \
<listener_id for example 12345678-1234-1234-1234-123456789011>
Biała lista load balancera za pośrednictwem interfejsu CLI
Mamy teraz listener i adresy IP, które zostaną umieszczone na białej liście. To jest polecenie, które skonfiguruje białą listę:
openstack loadbalancer listener set \
--allowed-cidr 10.0.0.0/8 \
--allowed-cidr 10.95.255.0/24 \
<listener_id for example 12345678-1234-1234-1234-123456789011>
Stan bezpieczeństwa: Przed i po
Przed wdrożeniem białej listy adresów IP load balancer akceptuje ruch ze wszystkich źródeł. Po zakończeniu procedury:
Tylko określone adresy IP mogą uzyskać dostęp do load balancera.
Nieautoryzowane próby dostępu są odrzucane.
Narzędzia weryfikacji
Różne narzędzia mogą zapewnić, że ochrona jest zainstalowana i aktywna:
- livez
Punkt końcowy monitorowania Kubernetes.
- nmap
(bezpłatny): Do skanowania portów i weryfikacji dostępu.
- zwijać się
(bezpłatny): Potwierdzenie kontroli dostępu z określonych adresów IP.
- Wireshark
(bezpłatny): Do analizy na poziomie pakietów.
Testowanie przy użyciu zwijać się i livez
Oto jak moglibyśmy to przetestować:
curl -k https://<KUBE_API_IP>:6443/livez?verbose
To polecenie zakłada, że masz
- zwijać się
zainstalowany i działający
- <KUBE_API_IP>
które można zobaczyć za pomocą poleceń Horizon API Access –> View Credentials.
- livez
który jest oprogramowaniem pokazującym, co dzieje się z load balancerem.
Byłaby to typowa reakcja przed zmianami:
curl -k https://<KUBE_API_IP>:6443/livez?verbose
[+]ping ok
[+]log ok
[+]etcd ok
[+]poststarthook/start-kube-apiserver-admission-initializer ok
[+]poststarthook/generic-apiserver-start-informers ok
[+]poststarthook/priority-and-fairness-config-consumer ok
[+]poststarthook/priority-and-fairness-filter ok
[+]poststarthook/storage-object-count-tracker-hook ok
[+]poststarthook/start-apiextensions-informers ok
[+]poststarthook/start-apiextensions-controllers ok
[+]poststarthook/crd-informer-synced ok
[+]poststarthook/start-system-namespaces-controller ok
[+]poststarthook/bootstrap-controller ok
[+]poststarthook/rbac/bootstrap-roles ok
[+]poststarthook/scheduling/bootstrap-system-priority-classes ok
[+]poststarthook/priority-and-fairness-config-producer ok
[+]poststarthook/start-cluster-authentication-info-controller ok
[+]poststarthook/start-kube-apiserver-identity-lease-controller ok
[+]poststarthook/start-deprecated-kube-apiserver-identity-lease-garbage-collector ok
[+]poststarthook/start-kube-apiserver-identity-lease-garbage-collector ok
[+]poststarthook/start-legacy-token-tracking-controller ok
[+]poststarthook/aggregator-reload-proxy-client-cert ok
[+]poststarthook/start-kube-aggregator-informers ok
[+]poststarthook/apiservice-registration-controller ok
[+]poststarthook/apiservice-status-available-controller ok
[+]poststarthook/kube-apiserver-autoregistration ok
[+]autoregister-completion ok
[+]poststarthook/apiservice-openapi-controller ok
[+]poststarthook/apiservice-openapiv3-controller ok
[+]poststarthook/apiservice-discovery-controller ok
livez check passed
I byłaby to typowa reakcja po zmianach:
curl -k https://<KUBE_API_IP>:6443/livez?verbose -m 5
curl: (28) Connection timed out after 5000 milliseconds
Whitelisting zapobiega ruchowi ze wszystkich adresów IP poza tymi, które są dozwolone przez --allowed-cidr.
Testowanie za pomocą nmap
Aby przetestować z nmap:
nmap -p <PORT> <LOAD_BALANCER_IP>
Testowanie bezpośrednio za pomocą zwijać się
Aby przetestować z zwijać się:
curl http://<LOAD_BALANCER_IP>
Co robić dalej
Procedurę tę można wykonać za pomocą Terraform i zastosować do większej liczby load balancerów. Zobacz Konfiguracja białej listy IP dla OpenStack Load Balancer przy użyciu Terraform na NSIS.
Porównaj również z Wdrażanie białej listy adresów IP dla Load Balancerów z grupami zabezpieczeń w NSIS