Vmware NSX mikrosegmentacja wprowadzenie

W poprzednich wpisach mówiłem w wdrożeniu samego NSX i jego funkcjonalności, ale przyszedł czas na słynną mikrosegmentacja.

Co to jest mikrosegmentacja?

Zacznijmy od podstaw, na chwilę obecną mikrosgmentację realizujemy przez tworzenie wielu vlanów per app czy funkcja a ruch pomiędzy vlanami filtrujemy za pomocą ACL’ek czy reguł FW, takim przypadku jest ciężko blokować ruch  w tym samym vlanie tzw. ruch wschód-zachód. W środowisku czysto fizycznym mogliśmy kombinować np. private vlan.

Dziś mamy coraz częściej wyłącznie środowisko wirtualne. Tutaj przychodzi z pomocą nam rozwiązanie NSX. Sam NSX pozwala na stworzenie reguł firewall które pozwolą na bardzo szczegółowe filtrowanie ruchu nawet w tym samym segmencie sieciowym (ten sam vlan lub vxlan). Reguły te są “przypisywane” do karty sieciowej wirtualnej maszyny, reguły wędrują za nią podczas wykonywania vmontion.

Sam NSX daje nam firewalla warstwy 4, jeżeli chcemy filtrować w warstwie 7 musimy sięgnąć po rozwiązania firm trzecich które integrują się z NSX’em, są to min.:

  • PaloAlto
  • Fortinet
  • Trend Micro

Tyle torii teraz trochę praktyki.

Będziemy pracować na architekturze z wpisu o load balncerze

gdzie zadaniem będzie blokowanie ruchu pomiędzy dwoma hostami w tym samej sieci VNI10001.

Tworzenie reguł pokaże na dwa sposoby:

  • Budowanie ręczne polityk – dzisiejszy wpis będzie poświęcony temu.
  • użycie funkcji Service Composer

Sprawdzenie komunikacji przed wdrożenie polityk

Poniżej przedstawiam testy, przed implementacją reguł firewall.

połączenie SSH

z hosta 172.16.11.11 na 172.16.11.12

root@photon01 [ ~ ]# ssh 172.16.11.12
The authenticity of host '172.16.11.12 (172.16.11.12)' can't be established.
ECDSA key fingerprint is SHA256:bvjT0a9h9BWitRgP4MQvAP5XkqGscFWq6ps5adg98gE.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.11.12' (ECDSA) to the list of known hosts.
Password: 
Last login: Tue Aug  8 06:40:02 2017 from 192.168.0.250
root@photon02 [ ~ ]# 
root@photon02 [ ~ ]# ifconfig
docker0   Link encap:Ethernet  HWaddr 02:42:83:a8:92:8b  
          inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:83ff:fea8:928b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2214 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2727 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:654128 (654.1 KB)  TX bytes:161342 (161.3 KB)

eth0      Link encap:Ethernet  HWaddr 00:50:56:82:67:0e  
          inet addr:172.16.11.12  Bcast:172.16.11.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fe82:670e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21142 errors:0 dropped:4 overruns:0 frame:0
          TX packets:12236 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1565016 (1.5 MB)  TX bytes:1500317 (1.5 MB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:170 errors:0 dropped:0 overruns:0 frame:0
          TX packets:170 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:13289 (13.2 KB)  TX bytes:13289 (13.2 KB)

veth3710e3e Link encap:Ethernet  HWaddr 26:24:33:eb:e4:43  
          inet6 addr: fe80::2424:33ff:feeb:e443/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2214 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2740 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:685124 (685.1 KB)  TX bytes:162487 (162.4 KB)

root@photon02 [ ~ ]# exit
logout
Connection to 172.16.11.12 closed.
root@photon01 [ ~ ]#

z hosta 172.16.11.12 na 172.16.11.11

root@photon02 [ ~ ]# ssh 172.16.11.11
Password: 
Last login: Tue Aug  8 07:12:43 2017 from 172.16.11.12
root@photon01 [ ~ ]# 
root@photon01 [ ~ ]# 
root@photon01 [ ~ ]# 
root@photon01 [ ~ ]# 
root@photon01 [ ~ ]# ifconfig 
docker0   Link encap:Ethernet  HWaddr 02:42:e3:7c:91:2a  
          inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:e3ff:fe7c:912a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2032 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2614 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:616703 (616.7 KB)  TX bytes:154989 (154.9 KB)

eth0      Link encap:Ethernet  HWaddr 00:50:56:bb:c6:7f  
          inet addr:172.16.11.11  Bcast:172.16.11.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:febb:c67f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17703 errors:0 dropped:2 overruns:0 frame:0
          TX packets:13137 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1326908 (1.3 MB)  TX bytes:1505389 (1.5 MB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:231 errors:0 dropped:0 overruns:0 frame:0
          TX packets:231 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:18644 (18.6 KB)  TX bytes:18644 (18.6 KB)

vethb200b37 Link encap:Ethernet  HWaddr be:23:8a:54:b7:e9  
          inet6 addr: fe80::bc23:8aff:fe54:b7e9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2032 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2627 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:645151 (645.1 KB)  TX bytes:156131 (156.1 KB)

root@photon01 [ ~ ]# exit
logout
Connection to 172.16.11.11 closed.
Ping
root@photon01 [ ~ ]# ping 172.16.11.12
PING 172.16.11.12 (172.16.11.12) 56(84) bytes of data.
64 bytes from 172.16.11.12: icmp_seq=1 ttl=64 time=0.580 ms
64 bytes from 172.16.11.12: icmp_seq=2 ttl=64 time=0.575 ms
^C
--- 172.16.11.12 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.575/0.577/0.580/0.024 ms
root@photon01 [ ~ ]#

 

root@photon02 [ ~ ]# ping 172.16.11.11
PING 172.16.11.11 (172.16.11.11) 56(84) bytes of data.
64 bytes from 172.16.11.11: icmp_seq=1 ttl=64 time=0.679 ms
64 bytes from 172.16.11.11: icmp_seq=2 ttl=64 time=0.730 ms
64 bytes from 172.16.11.11: icmp_seq=3 ttl=64 time=0.624 ms
^C
--- 172.16.11.11 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.624/0.677/0.730/0.052 ms
root@photon02 [ ~ ]#
NETCAT
root@photon01 [ ~ ]# netcat -z -v 172.16.11.12 80
172.16.11.12 80 (http) open
root@photon01 [ ~ ]# 
root@photon02 [ ~ ]# netcat -z -v 172.16.11.11 80
172.16.11.11 80 (http) open
root@photon02 [ ~ ]#

 

Ręcznie tworzenie polityk

Logujemy się do naszego vcenter i przechodzimy do Networking & Security

następnie do sekcji Firewall

tutaj tworzymy nową sekcję klikając na katalog z zielonym plusem. Jest to pomocne do utrzymania porządku w regułach.

w nowym oknie nadajemy nazwę sekcji

następnie dodajemy regułę w tej sekcji przez kliknięcie zielonego plusa. Pojawi się nowa reguła w której uzupełnimy ją o obiekty oraz ustawienia.

do tworzenia reguł możemy korzystać z wielu możliwości:

  • IP
  • Virtual Machine
  • IP SET
  • Cluster
  • Datacenter
  • vNIC
  • i jeszcze kilka możliwości

wybieramy co będzie Source – w naszym przypadku będą to wirtualne maszyny, wybieram obiekty z vCenter

podobnie jak wyżej w polu Destination wybieramy też nasze maszyny

w polu Service zostawiamy ANT, a w polu Action dajemy zgodnie:

ważne aby dać logowanie aby było można zobaczyć logi w syslogu, warto również o tagować te wpisy dla łatwiejszego wyszukiwania.

po zakończeniu tworzenie reguły publikujemy ją klikając Publish Changes

Weryfikacja

Sprawdzamy połączenia SSH
root@photon01[ ~ ]# ssh 172.16.11.12
ssh: connect to host 172.16.11.12 port 22: Connection timed out
root@photon01[ ~ ]#
root@photon02[ ~ ]# ssh 172.16.11.11
ssh: connect to host 172.16.11.11 port 22: Connection timed out
root@photon02[ ~ ]#
Ping
root@photon01[ ~ ]# ping 172.16.11.12
PING 172.16.11.12 (172.16.11.12) 56(84) bytes of data.
^C
--- 172.16.11.12 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2015ms
root@photon01[ ~ ]#
root@photon02[ ~ ]# ping 172.16.11.11
PING 172.16.11.11 (172.16.11.11) 56(84) bytes of data.
^C
--- 172.16.11.11 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4032ms
Logi

Sprawdzamy logi wykorzystując Vmware log insight który opisałem w tym wpisie o integracji z NSX’em

filtrujemy po id reguły którą stworzyliśmy

lub po wcześniej ustawionym tagu

w kolejnym wpisie poruszę temat Service Composer.

Pasjonat komputerowy od zawsze oraz maniak w zakresie sieci, wirtualizacji oraz bezpieczeństwa IT. Kompetentny inżynier z dużym doświadczeniem w realizacji projektów informatycznych i telekomunikacyjnych. Wieloletni administrator IT, który utrzymuje systemy informatyczne dostosowując je do wymogów biznesowych z zapewnieniem dostępności 24/7/365.
Posts created 126

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top