Skip to main content
  • »
  • KUBERNETES »
  • Konfigurowanie białej listy IP dla OpenStack Load Balancer przy użyciu Horizon i CLI w NSIS

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).

../_images/whitelisting_again-1.png

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.

../_images/whitelisting_again-2.png

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:

../_images/whitelisting-loadbalancer-4.png

W dolnej części okna znajdź identyfikator stosu:

../_images/whitelisting-loadbalancer-5.png

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>
../_images/whitelisting_again-3.png

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