Kurz CCNA Security

5 – ACL (IPv4 a IPv6)

Chyby v cvičení nahlasujte na ondrej.kainz@cnl.sk.

Pozn.: V závislosti na zariadení na ktorom pracujete môže byť LAN rozhranie buď gi0/0 alebo fa0/0, podobne se0/0/0 alebo se1/0/0. Dostupné rozhrania zistite cez show ip interface brief. Následne tomu prispôsobujete aj topológiu.

A. Konfigurácia zariadení:

  1. Nakonfigurujte smerovače R1 a R2 podľa topológie vyššie. Konfigurácia pozostáva z nastavenia hostname, konfigurácie rozhraní s IPv4 a IPv6 adresou podľa topológie.
  2. Nastavte statickú IP adresy na PC.
  3. Link-local adresu konfigurujete na všetkých rozhraniach smerovača (aj loopback).

 

B. Nakonfigurujte dynamický smerovací protokol OSPF (IPv4):

  1. Použitím príkazu ip ospf 1 area 0 zaveďte priamo pripojené siete do smerovacieho protokolu na rozhraniach (aj loopback):

    (config-if)# ip ospf 1 area 0

Pri loopback rozhraniach zadajte aj príkaz:

(config-if)# ip ospf network point-to-point

  1. Rozhrania smerujúce do LAN nastavte ako pasívne:

    R1(config-router)# passive-interface fa0/0
    R2(config-router)# passive-interface fa0/0

  2. Overenie vytvorenia OSPF susedstva:

# show ip ospf neighbor

  1. Overenie naučených nových smerov cez OSPF (príznak v smerovacej tabuľke O):

# show ip route

Overenie konektivity: Realizujte ping z PC A na PC B a naopak. Ak nefunguje pokúste sa realizovať ping na lokálnu bránu suseda.

C. Nakonfigurujte dynamický smerovací protokol OSPFv3 (IPv6)

  1. Ako prvé aktivujeme na smerovači IPv6 smerovanie:

    (config)# ipv6 unicast-routing

  2. Použitím príkazu ipv6 ospf 1 area 0 zaveďte priamo pripojené siete do smerovacieho protokolu na rozhraniach (aj loopback):

    (config-if)# ipv6 ospf 1 area 0

Pri loopback rozhraniach zadajte aj príkaz:

(config-if)# ipv6 ospf network point-to-point

  1. Rozhrania smerujúce do LAN nastavte ako pasívne:

    (config)# ipv6 router ospf 1
    (config-router)# passive-interface fa0/0

  2. Overenie vytvorenia OSPF susedstva:

# show ipv6 ospf neighbor

  1. Overenie naučených nových smerov cez OSPF (príznak v smerovacej tabuľke O):

# show ipv6 route

Overenie konektivity: Realizujte ping z PC A na PC B a naopak. Ak nefunguje pokúste sa realizovať ping na lokálnu bránu suseda.

D. Konfigurácia SSH na oboch smerovačoch

  1. Nastavenie doménového mena, príkazom:

(config)# ip domain-name securitylab.sk

  1. Nastavenie používateľa s najvyššími oprávneniami (pozn. nasledujúce je len na vybraných reálnych zariadeniach alebo v GNS3 s použitím c7200-adventerprisek9-mz.155-2.XB.bin):

    (config)# username admin privilege 15 algorithm-type scrypt secret hesloadmin

    Ak príkaz nefunguje zadáva sa len:

    (config)# username admin privilege 15 secret hesloadmin

  2. Nastavenie VTY (SSH):

    (config)# line vty 0 4
    (config-line)# privilege level 15
    (config-line)# login local
    (config-line)# transport input ssh
    (config-line)# exit

  1. Vymazanie existujúcich RSA kľúčov: Ak na zariadení existujú, tak ich zmažeme, príkazom:

    (config)# crypto key zeroize rsa

  2. Vytvorenie RSA kľúčov pre smerovač. Kľúče sa používajú pre autentifikáciu a šifrovanie SSH komunikácie:

(config)# crypto key generate rsa general-keys modulus 1024

Pozn.: Hodnota 1024 hovorí dĺžke kľúčov, predvolené je 512, odporúčané 2048.

  1. Nastavenie SSH na verziu 2:

    (config)# ip ssh version 2

  2. Overenie SSH konfigurácie:

    # show ip ssh

E. Konfigurácia štandardných ACL

ACL (angl. Access Control List) je séria IOS príkazov, ktoré sú použité na filtrovanie paketov na základe informácii v ich hlavičke. Štandardne smerovače nemajú nakonfigurovaný žiadny ACL. Avšak ak sa na rozhranie smerovača použije ACL, smerovač vyhodnotí všetky pakety pri ich prechode, aby zistil či je možné pakety poslať ďalej.

ACL sa delia na:

  • Štandardné (angl. standard):
    • Filtruje pakety iba na základe zdrojovej IPv4 adresy.
    • Umiestnenie je odporúčané čím bližšie k cieľovej sieti (cieľ komunikácie).
    • Môžu byť pomenované aj číslované 1 až 99 a 1300 až 1999.
  • Rozšírené (angl. extended):
    • zdrojovej IPv4 adresy,
    • cieľovej IPv4 adresy,
    • TCP/UDP zdrojového portu,
    • TCP/UDP cieľového portu,
    • protokolu.
    • Umiestnenie je odporúčané čím bližšie k zdrojovej sieti (zdroj komunikácie).
    • Môžu byť pomenované aj číslované 100 až 199 a 2000 až 2699.

Prístup na SSH (IPv4)

Otestujte prístup na SSH na smerovač suseda.

Úlohou je zabrániť prístupu na SSH z len hosta (teda PC) vášho suseda. Pre R2 ide o PC A a pre R1 ide o PC B.

Vytvoríme číslovaný štandardný ACL s číslom 9:

R1(config)# access-list 9 deny host 147.232.49.129
R1(config)# access-list 9 permit any

R2(config)# access-list 9 deny host 147.232.49.1
R2(config)# access-list 9 permit any

Aplikujeme ho na line VTY:

(config)# line vty 0 4
(config-line)# access-class 9 in

Opäť otestujte prístup na SSH na smerovač suseda. Pripojenie by nemalo byť funkčné.

Zmeňte IP na PC A z .1 na .2 a na PC B z .129 na .130. Funguje pripojenie na SSH? Ak áno, prečo? Zabezpečte, aby pripojenie na SSH smerovača bolo dostupné len z lokálnej siete.

Je potrebné zrušiť pôvodný ACL:

(config)# no access-list 9

A vytvoriť ho nanovo s tým, že logika bude obrátená, povolená bude len LAN, tzn:

R1(config)# access-list 9 permit 147.232.49.0 0.0.0.127

R2(config)# access-list 9 permit 147.232.49.128 0.0.0.127

Opätovne sa pokúste pripojiť na SSH suseda. Pripojenie by nemalo byť funkčné ani po zmene IP, keďže jediná povolená sieť je lokálna LAN.

F. Konfigurácia rozšírených ACL

Zákaz ping na smerovač okrem lokálnej siete (IPv4)

Realizujte ping na vybrané rozhranie susedného smerovača (okrem loopback). Cieľom je zakázať ping na smerovač z iných sietí, celá komunikácia voči LAN by mala byť aj naďalej funkčná.

Prv je potrebné pozrieť sa kde sa ACL umiestni, keďže ide o ochranu voči iným sieťam ako LAN, tak sa ACL umiestni na rozhranie serial0/0/0. Následne je treba zohľadniť, či bude aplikovaný na vstupe (in) alebo výstupe (out). Na výstupe by ACL nemal zmysel, keďže by išlo o komunikáciu, ktorá už prešla smerovacou tabuľkou. Aplikovaný bude teda na vstup, ešte pred spracovaním.

Vytvoríme pomenovaný ACL s názvom ping:

R1(config)# ip access-list extended ping
R1(config-ext-nacl)# deny icmp any host 147.232.50.133
R1(config-ext-nacl)# deny icmp any host 147.232.49.126
R1(config-ext-nacl)# permit ip any any

R2(config)# ip access-list extended ping

R2(config-ext-nacl)# deny icmp any host 147.232.50.134
R2(config-ext-nacl)# deny icmp any host 147.232.49.254
R2(config-ext-nacl)# permit ip any any

Prečo boli zadané dve IP? Následne ACL aplikujeme na rozhranie:

(config)# int se0/0/0

(config)# ip access-group ping in

Pokúste sa realizovať ping na susedný smerovač a následne na susedný PC (pozor na možnú zmenenú IP) a svoj smerovač. Aký je výsledok?

Zákaz ping na smerovač okrem lokálnej siete (IPv6)

Realizujte IPv6 ping na vybrané rozhranie susedného smerovača (okrem loopback). Cieľom je zakázať ping na smerovač z iných sietí, celá komunikácia voči LAN by mala byť aj naďalej funkčná.

Vytvoríme pomenovaný ACL s názvom pingipv6:

R1(config)# ipv6 access-list pingipv6

R1(config-ipv6-acl)# deny icmp any host 2001:A::A

R1(config-ipv6-acl)# permit ip any any

R2(config)# ipv6 access-list pingipv6

R2(config-ipv6-acl)# deny icmp any host 2001:B::B

R2(config-ipv6-acl)# permit ip any any

Prečo bola zadaná len jedna IP? Následne ACL aplikujeme na rozhranie:

(config)# int se0/0/0

(config-if)# ipv6 traffic-filter pingipv6 in

Pokúste sa realizovať IPv6 ping na susedný smerovač a následne na susedný PC a svoj smerovač. Aký je výsledok?

Zákaz prístupu na vybraný loopback (IPv4)

Realizujte ping na tri loopback rozhrania suseda zo smerovača. Ping zo smerovač fungovať nebude, keďže máme aktívny už vytvorený ACL. Ping realizujte ako rozšírený, príklad z R1 z Loopback1 na Loopback4 na R2 s IP 147.232.4.1:

R1# ping
Protocol [ip]:
Target IP address: 147.232.4.1
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: loopback1
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 147.232.4.1, timeout is 2 seconds:
Packet sent with a source address of 147.232.1.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 9/9/11 ms

Čo chceme dosiahnuť?

Pre R1: Zákaz prístupu z  vlastného loopback 1 na loopback 4 suseda. Zákaz prístupu z loopback 2 na všetky loobpack suseda.

Pre R2: Zákaz prístupu z  vlastného loopback 4 na loopback 1 suseda. Zákaz prístupu z loopback 5 na všetky loobpack suseda.

Vytvoríme nový rozšírený ACL s číslom 101. Avšak, keďže existuje pravidlo, jeden ACL na protokol, na rozhranie a smer, musíme nový ACL spojiť s predtým vytvoreným ACL (ping):

R1(config)# ip access-list extended 101
R1(config-ext-nacl)# deny icmp any host 147.232.50.133
R1(config-ext-nacl)# deny icmp any host 147.232.49.126

R2(config)# ip access-list extended 101
R2(config-ext-nacl)# deny icmp any host 147.232.50.134
R2(config-ext-nacl)# deny icmp any host 147.232.49.254

Prečo sme vynechali príkaz permit ip any any?

Pre R1 ďalej zakážeme veci z aktuálnej úlohy, prv pre loopback 1 a potom pre loopback 2:

R1(config-ext-nacl)# deny ip 147.232.4.0 0.0.0.255 147.232.1.0 0.0.0.255
R1(config-ext-nacl)# deny ip 147.232.4.0 0.0.3.255 147.232.2.0 0.0.0.255
R1(config-ext-nacl)# permit ip any any

Pre R2 ďalej zakážeme veci z aktuálnej úlohy, prv pre loopback 4 a potom pre loopback 5:

R2(config-ext-nacl)# deny ip 147.232.1.0 0.0.0.255 147.232.4.0 0.0.0.255
R2(config-ext-nacl)# deny ip 147.232.0.0 0.0.3.255 147.232.5.0 0.0.0.255
R2(config-ext-nacl)# permit ip any any

Prečo sa v druhom príkaze nachádza IP 147.232.4.0 a 147.232.0.0 s maskou podsiete 255.255.252.0? Lebo ide pre zjednodušenie o sumarizáciu adries 147.232.4.06.0147.232.1.03.0. V opačnom prípade by bolo potrebné zadať dva ďalšie príkazy. ACL aplikujeme na rozhranie, aplikovaním na rovnaké rozhranie v rovnakom smere a za použitím rovnakého protokolu dôjde k prepínaniu pôvodného ACL z ping na 101:

(config)# int se0/0/0

(config-if)# ip access-group 101 in

Overenie:

Pre R1: Ping z loopback 1 na 4 funkčný nebude, rovnako ani z loopback 2 na loopback 4,5,6. Loopback 3 by mal byť dostupný pre ping z loopback 4 a 6. Ping na bránu suseda by mal byť aj naďalej nefunkčný.

Pre R2: Ping z loopback 4 na 1 funkčný nebude, rovnako ani z loopback 5 na loopback 1,2,3. Loopback 6 by mal byť dostupný pre ping z loopback 1 a 3. Ping na bránu suseda by mal byť aj naďalej nefunkčný.

Zákaz prístupu na vybraný loopback (IPv6)

Realizujte IPv6 ping na tri loopback rozhrania suseda zo smerovača. Ping zo smerovač fungovať nebude, keďže máme aktívny už vytvorený ACL. Ping realizujte ako rozšírený, príklad z R1 z Loopback1 s IPv6 2001:1::1 na Loopback4 na R2 s IPv6 2001:4::1. Pozor, pri zdrojovej adrese je potrebné zadať IP a nie rozhranie.:

R1# ping
Protocol [ip]:
Target IP address: 2001:4::1
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 2001:1::1
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:4::1, timeout is 2 seconds:
Packet sent with a source address of 2001:1::1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 9/10/14 ms

Čo chceme dosiahnuť?

To čo aj pre IPv4.

Pre R1: Zákaz prístupu z  vlastného loopback 1 na loopback 4 suseda. Zákaz prístupu z loopback 2 na všetky loobpack suseda.

Pre R2: Zákaz prístupu z  vlastného loopback 4 na loopback 1 suseda. Zákaz prístupu z loopback 5 na všetky loobpack suseda.

Vytvoríme nový rozšírený IPv4 ACL s menom wanin. Avšak, keďže existuje pravidlo, jeden ACL na protokol, na rozhranie a smer, musíme nový ACL spojiť s predtým vytvoreným ACL (pingipv6):

R1(config)# ipv6 access-list wanin
R1(config-ipv6-acl)# deny icmp any host 2001:A::A

R2(config)# ipv6 access-list wanin
R2(config-ipv6-acl)# deny icmp any host 2001:B::B

Opäť sme vynechali príkaz permit ip any any, prečo?

Pre R1 ďalej zakážeme veci z aktuálnej úlohy, prv pre loopback 1 a potom pre loopback 2:

R1(config-ipv6-acl)# deny ipv6 2001:4::/64 2001:1::/64
R1(config-ipv6-acl)# deny ipv6 2001:4::/64 2001:2::/64
R1(config-ipv6-acl)# deny ipv6 2001:5::/64 2001:2::/64
R1(config-ipv6-acl)# deny ipv6 2001:6::/64 2001:2::/64
R1(config-ipv6-acl)# permit ip any any

Pre R2 ďalej zakážeme veci z aktuálnej úlohy, prv pre loopback 4 a potom pre loopback 5:

R2(config-ipv6-acl)# deny ipv6 2001:1::/64 2001:4::/64
R2(config-ipv6-acl)#
deny ipv6 2001:1::/64 2001:5::/64
R2(config-ipv6-acl)#
deny ipv6 2001:2::/64 2001:5::/64
R2(config-ipv6-acl)#
deny ipv6 2001:3::/64 2001:5::/64
R2(config-ipv6-acl)# permit ipv6 any any

V tomto prípade sme IPv6 nesumarizovali, keďže v Cisco PT nefunguje a pre prehľadnosť je lepšie ich zapísať týmto spôsobom. ACL aplikujeme na rozhranie, aplikovaním na rovnaké rozhranie v rovnakom smere a za použitím rovnakého protokolu dôjde k prepínaniu pôvodného ACL z pingipv6 na wanin:

R1(config)# int se0/0/0
R1(config-if)# ipv6 traffic-filter wanin in

Overenie:

Pre R1: Ping z loopback 1 na 4 funkčný nebude, rovnako ani z loopback 2 na loopback 4,5,6. Loopback 3 by mal byť dostupný pre ping z loopback 4 a 6. Ping na bránu suseda by mal byť aj naďalej nefunkčný.

Pre R2: Ping z loopback 4 na 1 funkčný nebude, rovnako ani z loopback 5 na loopback 1,2,3. Loopback 6 by mal byť dostupný pre ping z loopback 1 a 3. Ping na bránu suseda by mal byť aj naďalej nefunkčný.