Cisco ASAv ja IP-verkon toiminta – käytännön opas EVE-NG-laboratoriomme pohjalta
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
- PCS lähettää TCP SYN -paketin.
- ASA tarkistaa, saako PCS avata yhteyden DMZ:ään.
- Jos saa, ASA luo yhteystiedon tilatauluunsa.
- DMZ-palvelin vastaa SYN-ACK-paketilla.
- 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: