Cisco ASAv ja IP-verkon toiminta – käytännön opas EVE-NG-laboratoriomme pohjalta

Ethernet, IP-osoitteet, reititys, Cisco ASA, ICMP inspection, ACL, NAT, VLAN ja vianetsintä EVE-NG-laboratoriossa.

Cisco ASAv ja IP-verkon toiminta – käytännön opas EVE-NG-laboratoriomme pohjalta

Olemme rakentaneet pienen mutta hyvin havainnollisen verkkoympäristön. Sen avulla voidaan ymmärtää, miten Ethernet, IP-osoitteet, aliverkot, reititys, palomuurisäännöt, yhteyksien tilan seuranta ja NAT liittyvät toisiinsa.

Käydään nämä läpi siten, että ymmärrät paitsi käyttämämme komennot myös sen, mitä paketille oikeasti tapahtuu, kun se kulkee verkon läpi.

1. Laboratoriomme rakenne

 PCS / Alpine Linux           Cisco ASAv                 DMZ-SRV / Alpine Linux
 10.10.10.10             Gi0/0        Gi0/1              172.16.10.10
       ───────────── 10.10.10.1    172.16.10.1 ─────────────
                       inside        DMZ
                       100           50
    10.10.10.0/24                               172.16.10.0/24

Kummassakin verkossa on yksi Alpine Linux -kone. ASAv yhdistää verkot, mutta samalla päättää, mitä liikennettä niiden välillä sallitaan.

Laite IP-osoite Aliverkko Oletusyhdyskäytävä
PCS 10.10.10.10 /24 10.10.10.1
ASAv inside 10.10.10.1 /24 —
ASAv DMZ 172.16.10.1 /24 —
DMZ-palvelin 172.16.10.10 /24 172.16.10.1

2. IP-osoite ja aliverkko – mistä kone tietää, minne lähettää?

PCS-koneella on osoite 10.10.10.10/24.

Merkintä /24 tarkoittaa aliverkon peitettä 255.255.255.0. Käytännössä PCS pitää osoitteita 10.10.10.1–10.10.10.254 saman paikallisen aliverkon laitteina.

Kun PCS lähettää paketin, se tekee ensin reitityspäätöksen.

Tapaus A: PCS lähettää paketin osoitteeseen 10.10.10.1.

Kohde kuuluu samaan aliverkkoon. PCS selvittää ARP-protokollalla yhdyskäytävän MAC-osoitteen ja lähettää Ethernet-kehyksen suoraan sille.

Tapaus B: PCS lähettää paketin osoitteeseen 172.16.10.10.

Kohde on eri aliverkossa. PCS etsii reititystaulustaan sopivan reitin ja käyttää oletusyhdyskäytävää 10.10.10.1.

Tässä on olennainen ero:

  • IP-paketin kohdeosoite pysyy 172.16.10.10:ssä.
  • Ethernet-kehyksen kohde-MAC on ensimmäisellä osuudella ASAv:n inside-rajapinnan MAC-osoite.

ASA vastaanottaa kehyksen, tekee oman reititys- ja palomuuripäätöksensä ja muodostaa uuden Ethernet-kehyksen DMZ-verkkoon.

3. Reititystaulu – verkon liikenneopasteet

PCS-koneella näimme:

default via 10.10.10.1 dev eth0
10.10.10.0/24 dev eth0 proto kernel scope link src 10.10.10.10

Ensimmäinen rivi tarkoittaa: käytä yhdyskäytävää 10.10.10.1, kun tarkempaa reittiä ei löydy.

Toinen rivi tarkoittaa: 10.10.10.0/24 on suoraan verkkokorttiin eth0 liitetty verkko.

ASA:n reititystaulussa puolestaan oli:

C 10.10.10.0 255.255.255.0 is directly connected, inside
L 10.10.10.1 255.255.255.255 is directly connected, inside
C 172.16.10.0 255.255.255.0 is directly connected, DMZ
L 172.16.10.1 255.255.255.255 is directly connected, DMZ

C tarkoittaa suoraan kytkettyä verkkoa (Connected) ja L ASA:n oman rajapinnan IP-osoitetta (Local).

Tämän vuoksi ASA ei tarvitse erillistä staattista reittiä näiden kahden aliverkon välille.

Reititys vastaa kuitenkin vain kysymykseen minne paketti pitäisi lähettää. Palomuuri vastaa eri kysymykseen: saako paketin lähettää sinne?

4. Mikä ASA:n security-level on?

ASA:n rajapinnoille määritettiin:

interface GigabitEthernet0/0
 nameif inside
 security-level 100

interface GigabitEthernet0/1
 nameif DMZ
 security-level 50

Security-level on ASA:n oma luottamustasoa kuvaava luku välillä 0–100. Se ei ole VLAN-numero, IP-osoite eikä erillinen suojausmekanismi, vaan vaikuttaa oletusarvoiseen liikenteen sallimiseen.

Liikennesuunta Ilman erillistä ACL:ää
Inside 100 → DMZ 50 Uudet yhteydet sallitaan
DMZ 50 → Inside 100 Uudet yhteydet estetään
Sama security-level → sama security-level Oletusarvoisesti estetään eri rajapintojen välillä

Nämä ovat oletussääntöjä. Rajapintaan liitetty ACL voi muuttaa niitä, ja samaa turvatasoa koskevalle liikenteelle on myös erillisiä ASA-asetuksia.

Tämä selittää ensimmäisen kokeemme: PCS sai lähettää ping-pyynnön DMZ:ään, mutta DMZ:stä aloitettu ping PCS:lle estettiin.

5. Tilallinen palomuuri – mitä stateful tarkoittaa?

Tämä on ehkä ASA:n tärkein toimintaperiaate.

Tavallinen IP-reititin välittää paketteja reititystaulunsa perusteella. ASA puolestaan seuraa myös yhteyksiä ja voi tunnistaa, kuuluuko saapuva paketti jo sallittuun yhteyteen.

Esimerkiksi PCS avaa TCP-yhteyden DMZ-palvelimen porttiin 443:

PCS                           ASA                           DMZ
 |                             |                             |
 | -------- TCP SYN ---------->|---------- TCP SYN --------->|
 |                             |                             |
 |<------- TCP SYN-ACK --------|<------- TCP SYN-ACK ---------|
 |                             |                             |
 | -------- TCP ACK ---------->|---------- TCP ACK --------->|
 |                             |                             |
                  ASA seuraa TCP-yhteyden tilaa
  1. PCS lähettää TCP SYN -paketin.
  2. ASA tarkistaa, saako PCS avata yhteyden DMZ:ään.
  3. Jos saa, ASA luo yhteystiedon tilatauluunsa.
  4. DMZ-palvelin vastaa SYN-ACK-paketilla.
  5. ASA tunnistaa vastauksen kuuluvan sallittuun yhteyteen ja päästää sen läpi.

DMZ-palvelimen vastausta varten ei siis tarvita erillistä ACL-sääntöä, joka sallisi kaikki uudet yhteydet DMZ:stä PCS:lle.

ASA:n yhteystaulua voi tarkastella:

show conn

Tässä on myös ero palomuurin yhteyden aloittamisen ja paluuliikenteen välillä. Paluuliikenteen salliminen ei tarkoita, että DMZ-palvelin saisi aloittaa täysin uuden yhteyden PCS:lle.

6. Miksi ping ei aluksi toiminut?

Ping käyttää ICMP-protokollaa, ei TCP:tä.

ICMP Echo Request on pyyntö ja Echo Reply on vastaus. ICMP:ssä ei kuitenkaan ole samanlaista SYN/SYN-ACK/ACK-kättelyä kuin TCP:ssä.

Ensimmäisessä kokeessa:

  • PCS → DMZ Echo Request sallittiin.
  • DMZ → PCS Echo Reply ei päässyt takaisin.
  • Ping epäonnistui, vaikka ASA:n reititys oli oikein.

Lisäsimme:

policy-map global_policy
 class inspection_default
  inspect icmp

Ja varmistimme käytännön käyttöönoton:

service-policy global_policy global

Tämän jälkeen ping onnistui 3/3 kertaa.

inspect icmp antaa ASA:lle mahdollisuuden seurata ICMP-pyyntöjä ja sallia niihin kuuluvat vastaukset. Se ei kuitenkaan automaattisesti anna DMZ-koneelle oikeutta aloittaa uutta ping-yhteyttä inside-verkkoon.

Tärkeä ero on myös pingissä ASA:n omaan IP-osoitteeseen ja pingissä ASA:n läpi. Ne ovat eri tilanteita, joihin sovelletaan osittain eri sääntöjä.

7. ACL – tarkka liikenteen salliminen ja estäminen

Loimme seuraavan säännön:

access-list DMZ_IN extended permit tcp host 172.16.10.10 host 10.10.10.10 eq 8080

Puretaan se osiin.

Osa Merkitys
access-list DMZ_IN ACL-listan nimi
extended Sääntö voi tarkistaa protokollan, IP:t ja portit
permit Salli
tcp TCP-protokolla
host 172.16.10.10 Lähdeosoite
host 10.10.10.10 Kohdeosoite
eq 8080 Kohteen TCP-portti 8080

Pelkkä ACL:n luominen ei vielä riitä. Liitimme sen DMZ-rajapinnan sisääntulevaan liikenteeseen:

access-group DMZ_IN in interface DMZ

Tässä in tarkoittaa ASA:n rajapintaan sisään tulevaa liikennettä, ei sisäverkkoa. Kun DMZ-palvelin lähettää paketin kohti PCS:ää, paketti tulee ASA:lle sisään DMZ-rajapinnasta.

ACL-säännöt käydään läpi järjestyksessä. Ensimmäinen täsmäävä sääntö ratkaisee, sallitaanko vai estetäänkö uusi liikenne. ACL:n lopussa on implisiittinen esto.

Siksi testimme antoi:

Testattu liikenne Tulos
DMZ → PCS, TCP 8080 ALLOW
DMZ → PCS, TCP 22 DROP
DMZ → PCS, ICMP Echo DROP

Kun ACL liitetään rajapintaan, se ohjaa kyseisen rajapinnan sisääntulevaa uutta liikennettä myös silloin, kun liikenne olisi muuten security-level-arvojen perusteella sallittu.

8. Mitä packet-tracer oikeastaan tekee?

Käytimme esimerkiksi:

packet-tracer input DMZ tcp 172.16.10.10 12345 10.10.10.10 8080

Komennon osat:

  • input DMZ: paketti tulee ASA:lle DMZ-rajapinnasta.
  • tcp: protokolla.
  • 172.16.10.10: lähde-IP.
  • 12345: lähdeportti.
  • 10.10.10.10: kohde-IP.
  • 8080: kohdeportti.

ASA simuloi paketin käsittelyn eri vaiheita, esimerkiksi ACL-tarkistuksen, NAT-käsittelyn ja reitityksen.

Action: allow tarkoittaa, että ASA:n tarkistama konfiguraatio sallisi kyseisen paketin. Se ei todista, että kohdekoneella on palvelu kuuntelemassa portissa tai että sovellusyhteys todella onnistuu.

Siksi oikea nc- tai HTTP-yhteystesti on tärkeä jatko.

9. NAT – mitä osoitteenmuunnos tekee?

Tähän asti laboratoriossamme ei ole tarvittu NAT:ia. ASA pystyy reitittämään suoraan verkkojen 10.10.10.0/24 ja 172.16.10.0/24 välillä.

NAT (Network Address Translation) muuttaa paketin lähde- tai kohdeosoitetta, joskus myös TCP/UDP-porttia.

Esimerkiksi toimistoverkosta halutaan ottaa yhteys DMZ-palvelimeen, jonka oikeaa osoitetta ei haluta käyttää toimistoverkossa.

Office-PC                  ASAv (Static NAT + ACL)              DMZ-SRV
192.168.100.10  ────────── 192.168.100.50 → 172.16.10.10 ─── 172.16.10.10

Esimerkin staattisessa NAT-muunnoksessa toimistokone lähettää paketin osoitteeseen 192.168.100.50, mutta ASA muuntaa kohdeosoitteeksi 172.16.10.10.

NAT ei itsessään ole liikenteen sallimissääntö. NAT ja ACL ratkaisevat eri asioita: NAT muuntaa osoitteita, ACL päättää, sallitaanko yhteys.

ASA 9.x:n ACL-säännöissä käytetään tyypillisesti kohteen todellista IP-osoitetta, vaikka asiakas muodostaisi yhteyden NAT-osoitteeseen.

Kolme keskeistä NAT-tyyppiä ovat:

NAT-tyyppi Tarkoitus
Static NAT Kiinteä osoitemuunnos
Dynamic NAT Osoite valitaan määritetystä osoitejoukosta
PAT Useita sisäisiä yhteyksiä käyttää samaa ulkoista IP:tä eri porttien avulla

NAT:ia tarvitaan esimerkiksi päällekkäisten IP-verkkojen yhteensovittamiseen, palveluiden julkaisemiseen tai internet-yhteyksissä. Kahden erillisen, normaalisti reitittyvän OT-aliverkon välillä sitä ei välttämättä tarvita lainkaan.

10. VLAN, kytkin ja reititin – miten ne eroavat toisistaan?

Kun laajennamme laboratoriota vastaamaan Valmet DNA -verkkoa, nämä kolme asiaa ovat erityisen tärkeitä.

Käsite OSI-taso Tehtävä
Ethernet-kytkin L2 Välittää kehyksiä MAC-osoitteiden perusteella
VLAN L2 Jakaa kytkentäverkon erillisiin loogisiin alueisiin
Reititin L3 Välittää IP-paketteja eri IP-verkkojen välillä
ASA-palomuuri L3–L7 Reitittää ja tarkistaa liikennettä sääntöjen ja yhteystilojen perusteella

VLAN ei automaattisesti ole sama asia kuin IP-aliverkko, mutta käytännössä yksi VLAN vastaa usein yhtä IP-aliverkkoa.

Esimerkiksi Cisco-kytkimellä:

vlan 10
 name PCS

vlan 20
 name DMZ

Kytkimen access-portti voidaan sijoittaa VLANiin 10:

interface GigabitEthernet0/1
 switchport mode access
 switchport access vlan 10

Jos useita VLANeja pitää kuljettaa samaa fyysistä kaapelia pitkin, käytetään yleensä 802.1Q-trunk-yhteyttä.

Oleellinen periaate: eri VLANeissa olevat laitteet eivät keskustele keskenään pelkän tavallisen L2-kytkimen avulla. Niiden välille tarvitaan L3-reititys, esimerkiksi reititin, L3-kytkin tai ASA.

Tämä liittyy suoraan oikean DNA-verkon Cisco IE5000 -kytkimiin ja niiden VLAN- ja uplink-määrityksiin.

11. Vianetsinnän järjestys

Kun yhteys ei toimi, ei kannata aloittaa muuttamalla palomuurisääntöjä. Tarkista verkko kerros kerrokselta.

Tarkistettava asia Linux-komento ASA-komento
Rajapinnan tila ip link show interface ip brief
IP-osoitteet ip addr show interface ip brief
Reititystaulu ip route show route
ARP/MAC-naapurit ip neigh show arp
Yhteystesti ping ping
ACL-säännöt — show access-list
Simuloitu paketti — packet-tracer input ...
Aktiiviset yhteydet ss -tun show conn
NAT-muunnokset — show nat, show xlate
Todelliset paketit tcpdump capture, show capture
Pakettien pudotukset — show asp drop

Erityisen hyödyllinen Linux-komento on:

ip route get 172.16.10.10

Se näyttää, mitä reittiä Linux käyttäisi kyseiseen kohteeseen ja mitä lähdeosoitetta se käyttäisi.

ASA:ssa vastaavaan kysymykseen tarvitaan usein sekä show route että packet-tracer, koska reitityksen lisäksi liikenteeseen vaikuttavat palomuurisäännöt ja NAT.

12. Mitä olemme oikeasti todentaneet?

Asia Tilanne
ASAv käynnistyy EVE-NG:ssä Toimii
ASAv:n rajapinnat Up/up
PCS:n ja DMZ:n IP-määritykset Toimivat
Yhteydet omiin yhdyskäytäviin Toimivat
ASA:n reititys kahden aliverkon välillä Toimii
PCS → DMZ ICMP inspectionin kanssa Toimii
DMZ → PCS ping ilman sallivaa ACL:ää Estyy
TCP 8080 ACL-simulointi ALLOW
TCP 22 ACL-simulointi DROP
Oikea TCP 8080 -sovellusyhteys Ei vielä vahvistettu
NAT Ei vielä testattu
Internet-yhteys Ei käytössä

Lisenssittömyys ei siis ole estänyt tähänastisia testejä, mutta tämä ei vielä osoita kaikkien ASAv:n ominaisuuksien tai kapasiteetin olevan käytettävissä.

13. Komennot, jotka kannattaa osata ulkoa

ASA:n tärkeimmät tarkistuskomennot:

show interface ip brief
show route
show running-config interface
show access-list
show running-config access-group
show running-config policy-map
show running-config service-policy
show conn
show nat
show xlate
show asp drop
show version
write memory

Miten jatkaisin opiskelua?

Seuraava järkevä vaihe ei ole vielä lisätä kymmentä uutta laitetta EVE-NG:hen, vaan täydentää nykyinen harjoitus kolmella asialla: oikea TCP-yhteys porttiin 8080, yhden ACL-säännön muuttaminen ja sen vaikutusten tarkastelu sekä kolmannen Office-verkon lisääminen NAT-harjoitusta varten.

Sen jälkeen siirtyisin Cisco IOSvL2 -kytkimiin, VLANeihin, trunk-portteihin ja L3-reititykseen. Lopuksi voimme yhdistää nämä osa-alueet oikeasta DNA-verkostasi tunnettuihin Cisco IE5000-, Moxa- ja ASA-rakenteisiin.

Näin pystyt myöhemmin lukemaan tuotantoverkon konfiguraatioita ja päättelemään niiden perusteella, mistä liikenne kulkee, miksi se kulkee juuri sitä reittiä ja mikä laite tai sääntö voi estää sen.

Ciscon alkuperäiset ASA 9.18 -oppaat täydentävät tätä käytännön ohjetta: