Skip to main content
  • »
  • KUBERNETES »
  • Whitelisting adresów IP dla OpenStack Load Balancer przy użyciu Horizon i CLI w NSIS
  • NSIS Cloud

Whitelisting adresów 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 load balancerem OpenStack przy użyciu Horizon i poleceń CLI. Ta konfiguracja ograniczy dostęp do klastra za pośrednictwem load balancera.

Co zostanie omówione?

  • Przygotowanie środowiska

  • Whitelista load balancera za pośrednictwem interfejsu CLI

Wymagania wstępne

Nr 1 Konto

Jest wymagane konto hostingowe NSIS z dostępem do interfejsu Horizon: https://horizon.cloudferro.com.

Nr 2 Lista adresów IP / zakresów adresów, które mają być umieszczone na białej liście

Jest to lista adresów IP, które mają być nasłuchiwane przez load balancera.

W tym artykule użyjemy następujących dwóch adresów, które zostaną umieszczone 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 klient Python Octavia (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

Ewentualnie, 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.

Horizon:

Aby znaleźć id load balancera, przejdź do sekcji Project >> Network >> Load Balancers i znajdź load balancer, który jest powiązany z twoim klastrem (jego nazwa będzie miała jako prefiks nazwę twojego klastra).

../_images/whitelisting_again-11.png

Kliknij nazwę load balancera (w tym przypadku lb-testing-ih347dstxyl2-api_lb_fixed-w2im3obvdv2p-loadbalancer_with_flavor-ykcmf6vvphld), a następnie przejdź do panelu Listeners. Tam znajdziesz listenera powiązanego z tym load balancerem.

../_images/whitelisting_again-21.png

CLI

Aby użyć interfejsu CLI do wyszukania listenera, musisz znać następujące dwa parametry klastra:

  • Stack ID

  • Cluster ID

Można je znaleźć za pomocą poleceń Horizon Container Infra –> Clusters, a następnie kliknąć nazwę klastra:

../_images/whitelisting-loadbalancer-41.png

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

../_images/whitelisting-loadbalancer-51.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>

Znajdywanie 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. Polecenie, które skonfiguruje białą listę jest następujące:

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-31.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 weryfikacyjne

Różne narzędzia mogą zapewnić, że zabezpieczenie jest zainstalowane i działa:

livez

Punkt końcowy monitorowania Kubernetes.

nmap

(bezpłatny): Narzędzie do skanowania portów i weryfikacji dostępu.

curl

(bezpłatny): Narzędzie do potwierdzanie kontroli dostępu z określonych adresów IP.

Wireshark

(bezpłatny): Narzędzie do analizy na poziomie pakietów.

Testowanie przy użyciu curl i livez

Test można wykonać za pomocą polecenia

curl -k https://<KUBE_API_IP>:6443/livez?verbose

To polecenie zakłada, że masz:

curl

który jest zainstalowany i działa

<KUBE_API_IP>

który można zobaczyć za pomocą poleceń Horizon API Access –> View Credentials.

livez

oprogramowanie, które pokaże, co dzieje się z load balancerem.

Typowa odpowiedź przed zmianami byłaby następująca:

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

Typowa odpowiedź po zmianach byłaby jak poniżej:

curl -k https://<KUBE_API_IP>:6443/livez?verbose -m 5
curl: (28) Connection timed out after 5000 milliseconds

Bała lista blokuje ruch ze wszystkich adresów IP poza tymi, które są dozwolone przez --allowed-cidr.

Testowanie za pomocą nmap

Aby wykonać test za pomocą nmap, wykonaj polecenie:

nmap -p <PORT> <LOAD_BALANCER_IP>

Testowanie bezpośrednio za pomocą curl

Aby wykonać test za pomocą curl, wykonaj polecenie:

curl http://<LOAD_BALANCER_IP>

Co można zrobić dalej?

Procedurę tę można wykonać za pomocą Terraform i zastosować do większej liczby load balancerów. Zobacz artykuł Konfiguracja białej listy adresów IP dla OpenStack Load Balancer przy użyciu Terraform na NSIS.

Dla porównania zobacz również artykuł Wdrażanie whitelistingu listy adresów IP dla load balancerów z grupami zabezpieczeń w NSIS Cloud