CZ 
18.09.2024 Kryštof VÍTEJTE V MÉM SVĚTĚ

Cisco IOS 24 - zabezpečení komunikace na portech

Upraveno 09.11.2016 16:05 | vytvořeno | Petr Bouška - Samuraj |
Stručný přehled konfigurace některých bezpečnostních funkcí, které zabezpečují komunikaci na portech přepínače. Začneme zmínkou o Traffic Storm Control, krátce se podíváme na DHCP Snooping a pak se budeme věnovat funkcím, které tuto vlastnost využívají. Více se ale zaměříme na situace, kdy se nepoužívá DHCP, ale statické IP adresy. Zmíníme si Port Security, IP Source Guard (IPSG) a Dynamic ARP Inspection (DAI).
zobrazeno: 18 481x | Komentáře [2]

Pozn.: Když jsem již dříve studoval tyto bezpečnostní funkce, tak jsem nabyl dvou mylných dojmů. Zaprvé, že pro využití  Dynamic ARP Inspection musíme mít zapnutý DHCP Snooping. Ten musí být zapnutý pouze pro IP Source Guard. DAI funguje i bez něj, samozřejmě pouze pro statické (a zadané) adresy. Zadruhé, že pro vytváření statických záznamů (přiřazení IP adresy a MAC adresy) je vždy jiná metoda (pro DHCP Snooping, IP Source Guard a DAI). To také není třeba, můžeme vytvořit statické záznamy do DHCP Snoopingu a ty se použijí i pro IP Source Guard nebo Dynamic ARP Inspection.

Traffic Storm Control

Stručná zmínka o metodě, která má zabránit zahlcení sítě nadměrným broadcast, multicast nebo neznámým unicast provozem (traffic storm), které by vedlo k degradaci síťového výkonu. Na portu můžeme nastavit určitou hranici, pokud je překročena, tak je daný druh provozu zahazován, případně se rovnou vypne port.

Odkaz do jedné z oficiálních dokumentací Catalyst 2960 - Configuring Port-Based Traffic Control - Storm Control.

Nastavujeme buď na interface nebo Portchannel (v tom případě se nastavuje opravdu na port-channel a ne na jednotlivé porty). Nastavit můžeme procenta z celkového pásma interface (na některých přepínačích můžeme nastavovat i jinak).

SWITCH(config-if)#storm-control broadcast level 10
SWITCH(config-if)#storm-control multicast level 10
SWITCH(config-if)#storm-control unicast level 10

Zobrazení údajů o nastavení Storm Control.

SWITCH#show storm-control
Interface  Filter State   Upper        Lower        Current
---------  -------------  -----------  -----------  ----------
Gi1/0/1    Forwarding       10.00%       10.00%        0.00%

Patrně novější verze IOSu přináší lepší zobrazení informací.

SWITCH#show storm-control
Key: U - Unicast, B -  Broadcast, M - Multicast
Interface  Filter State    Upper        Lower        Current     Action      Type
---------  -------------   -----------  -----------  ----------   ---------  ----
Gi1/0/1    Forwarding          10.00%       10.00%       0.00%   None       U
Gi1/0/1    Forwarding          10.00%       10.00%       0.00%   None       B
Gi1/0/1    Forwarding          10.00%       10.00%       0.00%   None       M

Logování

Tuto situaci jsem si nenasimuloval, jak by měla vypadat zalogovaná zpráva, jsem našel v dokumentaci.

%STORM_CONTROL-3-FILTERED: A Broadcast storm detected on Gi1/0/1. A packet filter action has been applied on the interface.

Port Security

Port Security  je rozšířená metoda pro zabezpečení portu a ochraně proti MAC Address Spoofing (podvržení MAC adresy) a MAC Address Flooding (zahlcení MAC adresami). Funguje tak, že kontroluje MAC adresu v příchozích rámcích a pokud se tam nachází jiná než povolená, tak může daný rámec zahodit nebo vypnout port. Pokud tedy útočník zkusí vyměnit připojené zařízení za svoje (a nezmění MAC adresu), tak se zabrání jeho komunikaci. Tuto ochranu jde samozřejmě obejít, ale je jednoduchá na použití a poskytne určitou obranu.

Více jsem popisoval v Cisco IOS 3 - nastavení interface/portu - access, trunk, port security. Odkaz do jedné z oficiálních dokumentací Catalyst 2960 - Configuring Port-Based Traffic Control - Port Security.

Konfigurace se provádí per port (samozřejmě můžeme využít range). Nastavujeme, kolik MAC adres může komunikovat (defaultně 1, maximum záleží na maximu dostupných adres, které systém zvládá), buď se používají adresy dynamicky, ale lepší je zadat ručně nebo nechat naučit při prvním připojení (sticky).

SWITCH(config-if)#switchport port-security mac-address sticky

Můžeme určit reakci na nepovolenou adresu, buď vypnutí portu (shutdown, defaultní chování), zahazování nechtěného provozu (protect) nebo zahazování a odeslání SNMP trapu a syslog zprávy (restrict).

SWITCH(config-if)#switchport port-security violation shutdown

Zapnutí Port Security provedeme na portu.                                                    

SWITCH(config-if)#switchport port-security

Pokud se port přepne do error-disabled stavu (reakce na shutdown), tak jej zpět zapneme pomocí příkazů shutdown a no shutdown. Případně můžeme využít automatické zapnutí po určité době příkazem errdisable recovery cause psecure-violation.

Jednoduše si můžeme vypsat, na kterých portech je Port Security nastaveno, kolik povoluje adres a jaká je reakce na porušení.

SWITCH#show port-security
Secure Port  MaxSecureAddr  CurrentAddr  SecurityViolation  Security Action
                 (Count)       (Count)          (Count)
---------------------------------------------------------------------------
 Gi1/0/1              1            0                  0         Shutdown

Logování

Když nastavíme nějaké bezpečnostní opatření, tak je cílem, aby zabránilo nechtěné komunikaci. Patrně nás ale také bude zajímat, že k takové situaci došlo. Proto je dobré si posílat logy na Syslog server (jde o jednu z možností) a určité zprávy zpracovávat. Potřebujeme tedy vědět, co se v jaké situaci loguje, a případně logování zapnout.

U Port Security, pokud máme nastaveno violation na protect, tak se neloguje nic. Pokud máme restrict nebo shutdown, tak se zaloguje detekce nepovolené MAC adresy.

Oct 23 11:33:23: %PORT_SECURITY-2-PSECURE_VIOLATION: Security violation occurred, caused by MAC address 801a.0275.442a on
 port GigabitEthernet1/0/1.

V případě, že máme nastavenu reakci shutdown, tak následuje vypnutí portu a o tom se vytvoří dva záznamy.

Oct 23 11:33:22: %LINK-3-UPDOWN: Interface GigabitEthernet1/0/1, changed state to down
Oct 23 11:33:23: %PM-4-ERR_DISABLE: psecure-violation error detected on Gi1/0/1, putting Gi1/0/1 in err-disable state

Pokud si pak vypíšeme stav portu, vidíme, že je v Error disabled stavu.

SWITCH#show interfaces Gi1/0/1 status
Port      Name              Status        Vlan       Duplex  Speed Type
Gi1/0/1   1.10A             err-disabled  100          auto   auto 10/100/1000BaseT

DHCP Snooping

Aby nám někdo v síti neprovozoval nechtěný DHCP server, tak můžeme využít ochranou funkci DHCP Snooping. Po zapnutí, pro určité VLANy, bere všechny porty jako nedůvěryhodné a my nastavíme některé jako důvěryhodné (tam, kde je připojen DHCP server nebo trunk port k dalším switchům, kde mohou přicházet přidělení adres). Přidělení adres (obecně zprávy DHCPOFFER, DHCPACK, DHCPNAK a DHCPLEASEQUERY a některé další situace) z DHCP pak může přijít pouze z důvěryhodných portů jinak je zahozeno na switchi.

Více jsem popisoval v Cisco IOS 13 - DHCP služby na switchi. Odkaz do jedné z oficiálních dokumentací Catalyst 2960 - Configuring DHCP Features and IP Source Guard.

Pozn.: Pro některé situace je potřeba využívat DHCP option-82. To zde nyní neřešíme.

DHCP Snooping globálně zapneme a určíme pro jaké VLANy se má uplatnit.

SWITCH(config)#ip dhcp snooping    
SWITCH(config)#ip dhcp snooping vlan 1-4094

Některé porty nastavíme jako důvěryhodné.

SWITCH(config-if)#ip dhcp snooping trust

Můžeme si zobrazit informace o konfiguraci.

SWITCH#show ip dhcp snooping
Switch DHCP snooping is enabled
DHCP snooping is configured on following VLANs:
1-4094
DHCP snooping is operational on following VLANs:
1,100
DHCP snooping is configured on the following L3 Interfaces:

Nebo statistiky DHCP Snoopingu.

SWITCH#show ip dhcp snooping statistics

Logování

Pokud zapneme DHCP Snooping, tak zahazuje (drop) nedůvěryhodné zprávy. Také o tom loguje informaci, která může vypadat následovně (logy jsou ze dvou různých situací).

Jan 22 07:42:03: %DHCP_SNOOPING-5-DHCP_SNOOPING_MATCH_MAC_FAIL: DHCP_SNOOPING drop message because the chaddr doesn't match
 source mac, message type: DHCPDISCOVER, chaddr: e006.e7ca.99fb, MAC sa: 3c97.0571.0af8
Jan 22 07:55:01: %DHCP_SNOOPING-5-DHCP_SNOOPING_UNTRUSTED_PORT: DHCP_SNOOPING drop message on untrusted port, message type:
 DHCPACK, MAC sa: 001c.a43b.041

DHCP Snooping Binding Database

Mimo této užitečné ochrany, může DHCP Snooping, díky tomu, že zpracovává všechny DHCP zprávy, vytvářet DHCP Snooping Binding Database. Ta obsahuje přiřazení MAC adres, IP adres, VLAN a interface, spolu s dobou pronájmu. DB může obsahovat maximálně 8192 záznamů. Tuto databázi pak využívají další bezpečnostní funkce. A pokud se využívá DHCP, tak je jejich použití velmi jednoduché. V článku se na tyto funkce podíváme spíše v případě, kdy používáme statické adresy, takže je konfigurace složitější.

Záznamy (bindings) se uchovávají v paměti, čili se ztratí při restartu switche. Můžeme použít agenta, který zajišťuje jejich uložení do souboru, a při restartu se záznamy načtou. Zapnutí DHCP Snooping Binding Database Agent provedeme tak, že určíme, kde se má databáze vytvářet/používat. Může to být lokálně na switchi (flash) nebo někde na síti.

SWITCH(config)#ip dhcp snooping database flash:/dhcpbind.txt
SWITCH(config)#ip dhcp snooping database scp://10.0.0.50/dhcpbind.txt

Záznamy vznikají dynamicky analýzou DHCP zpráv, ale můžeme je vytvářet i ručně (a pokud používáme statické adresy, tak je to nutné). Mezi údaji zadáváme čas exspirace, kdy maximální hodnota 4294967295 znamená neomezeně (infinite).

SWITCH#ip dhcp snooping binding 1234.abcd.1234 vlan 100 192.168.100.10 interface Gi1/0/1 expiry 4294967295

Pozn.: Narazil jsem na problém, že pro jednu MAC adresu může existovat pouze jeden záznam. Pokud chceme přidat druhý záznam s jinou IP adresou (server má na jednom interfacu více IP adres) nebo stejnou kombinaci MAC a IP na jiný port (virtuál, který může cestovat v clusteru), tak nám to přepíše původní záznam pro danou MAC adresu.

Můžeme si vypsat záznamy v databázi (jsou zde dynamické i staticky zadané).

SWITCH#show ip dhcp snooping binding
MacAddress           IpAddress        Lease(sec)  Type            VLAN  Interface
------------------   ---------------  ----------  -------------   ----  --------------------
12:34:ab:cd:12:34    192.168.100.10   infinite    dhcp-snooping   100   GigabitEthernet1/0/1
Total number of binding: 1

Nebo údaje a statistiky.

SWITCH#show ip dhcp snooping database
Agent URL : flash:/dhcpbind.txt
Write delay Timer : 300 seconds
Abort Timer : 300 seconds
Agent Running : No
Delay Timer Expiry : Not Running
Abort Timer Expiry : Not Running
Last Succeded Time : 09:30:11 CEST Fri Sep 30 2016
Last Failed Time : None
Last Failed Reason : No failure recorded.
Total Attempts       :        8    Startup Failures :        0
Successful Transfers :        8    Failed Transfers :        0
Successful Reads     :        1    Failed Reads     :        0
Successful Writes    :        7    Failed Writes    :        0
Media Failures       :        0

IP Source Guard

Jednou z bezpečnostních funkcí, která využívá DHCP Snooping Binding Database je IP Source Guard. Tato funkce opravdu vyžaduje, aby byl zapnutý DHCP Snooping pro VLAN na daném interface, jinak se neuplatní, i když budeme mít staticky definované záznamy (výpis zobrazí inactive-no-snooping-vlan). Na L2 portu (není podporován PortChannel), kde tuto funkci nastavíme, se automaticky aplikuje ACL, které filtruje provoz a povolí pouze pakety, kde je zdrojová IP adresa (nebo i MAC adresa) z Binding DB pro tento port. Zabráníme tak útočníkovi použít jinou IP adresu.

Odkaz do jedné z oficiálních dokumentací Catalyst 2960 - Configuring DHCP Features and IP Source Guard.

Konfigurace se provádí per port (obdobně jako Port Security). Pokud využíváme DHCP, tak se tato funkce používá jednoduše. Pouze ji zapneme a tím se nastaví kontrola zdrojových IP adres.

SWITCH(config-if)#ip verify source

Můžeme ji také nastavit, aby se zároveň kontrolovaly zdrojové MAC adresy. Úplně mi pak není jasný rozdíl oproti Port Security, které stejně musí být na daný port nastavené, jinak jsou povoleny všechny MAC adresy (výpis ukazuje permit-all). Ale hodnota MAC adresy se nebere z Port Security, ale ze záznamu v databázi.

SWITCH(config-if)#ip verify source port-security 

Pokud používáme statické adresy, tak musíme záznamy zadat manuálně. IP Source Guard bere hodnoty z  DHCP Snooping Binding Database, je jedno jestli jde o dynamickou hodnotu nebo ručně zadanou (takže statické záznamy můžeme vložit do této DB). K dispozici máme ještě speciální příkaz, který přidá statický záznam IP Source Bindings.

SWITCH(config)#ip source binding 1234.abcd.1235 vlan 100 192.168.100.20 interface Gi1/0/2

Z dokumentace (kde je uvedeno, že statický záznam se zadává příkazem výše) mi to nikdy nebylo příliš jasné, a až praktické testy mi pomohly s pochopením, jaký je mezi ip dhcp snooping binding a ip source binding. IP Source Guard používá záznamy z IP Source Bindings, jejich základem je DHCP Snooping Binding Database (kde jsou dynamické a statické záznamy vždy identifikované jako dhcp-snooping). A můžeme přidat další statické záznamy příkazem výše, ty se nevloží do  DHCP Snooping Binding Database (a identifikují se jako static).

Zajímavý rozdíl je, že DHCP Snooping Binding zadáváme v EXEC módu a hodnoty se uloží do paměti/souboru, kdežto IP Source Binding zadáváme v Config módu a uloží se do running config. Je vidět i vazba mezi těmito metodami, protože stejný záznam nemůžeme vytvořit oběma způsoby najednou (asi proto, že se hodnoty z DHCP Snooping Binding přenáší do IP Source Binding).

Stejně, jako si můžeme vypsat obsah DHCP Snooping Binding DB příkazem show ip dhcp snooping binding, máme příkaz pro vypsání IP Source Binding.

SWITCH#show ip source binding
MacAddress          IpAddress        Lease(sec)  Type            VLAN  Interface
------------------  ---------------  ----------   -------------  ----  --------------------
12:34:ab:cd:12:34   192.168.100.10   infinite     dhcp-snooping   100   GigabitEthernet1/0/1
12:34:ab:cd:12:35   192.168.100.20   infinite     static          100   GigabitEthernet1/0/2
Total number of bindings: 2

Další možnost je zobrazit seznam portů, kde je IP Source Guard nastaven, a hlavní údaje. Ukážeme si několik příkladů. Nejprve máme IPSG nastaven na jednom portu, ale pro danou VLAN není zapnut DHCP Snooping.

SWITCH#show ip verify source
Interface  Filter-type   Filter-mode  IP-address       Mac-address        Vlan
---------  -----------   -----------  ---------------  -----------------  ----
Gi1/0/1    ip-mac        inactive-no-snooping-vlan

DHCP Snooping nastavíme, ale neexistuje žádný záznam v Bindings a není zapnuto Port Security (klient nemůže komunikovat).

SWITCH#show ip verify source
Interface  Filter-type   Filter-mode  IP-address       Mac-address        Vlan
---------  -----------   -----------  ---------------  -----------------  ----
Gi1/0/1    ip-mac        active       deny-all         permit-all         100

Ve chvíli, kdy na portu zapneme Port Security, dojde ke změně ve filtraci MAC adres.

SWITCH#show ip verify source
Interface  Filter-type   Filter-mode  IP-address       Mac-address        Vlan
---------  -----------   -----------  ---------------  -----------------  ----
Gi1/0/1    ip-mac        active       deny-all         deny-all           100

Poslední ukázka je ve chvíli, kdy vytvoříme statický záznam (je jedno, zda do DHCP Snooping nebo IP Source).

SWITCH#show ip verify source
Interface  Filter-type   Filter-mode  IP-address       Mac-address        Vlan
---------  -----------   -----------  ---------------  -----------------  ----
Gi1/0/1    ip-mac        active       192.168.100.10   12:34:ab:cd:12:34  100

Logování

Pro IP Source Guard se bohužel (standardně) žádné logování neprovádí.

IP Source Guard for Static Hosts

Pokud používáme staticky definované adresy (a ne DHCP), tak má Cisco rozšíření IP Source Guard for Static Hosts. Má fungovat tak, že se dynamicky učí adresy, které povolí, až do nastaveného maxima (dokud nemá naučeno, tak vše blokuje). V praxi se mi tato metoda neosvědčila (možná jsem ji špatně pochopil), není zde nic jako funkce Sticky u Port Security, takže se adresy učí pořád dokola. Když klient krátkou dobu nekomunikuje, tak se jeho záznam smaže, když komunikovat začne, tak jsou první pakety zahozeny, tudíž dochází k výpadkům. Takže to vidím pro praxi jako nepoužitelné, přesto je zde zmínka o konfiguraci. Cisco uvádí, že se tato metoda nemá používat na trunk portech.

Nejprve se musí globálně povolit tracking.

SWITCH(config)#ip device tracking

Pak již nastavíme na určité porty. Provádí se obdobně jako normální IPSG a můžeme kontrolovat pouze IP adresy, nebo i MAC adresy.

SWITCH(config-if)#ip verify source tracking 
SWITCH(config-if)#ip verify source tracking port-security

Povinně musíme také nastavit povolený počet adres na port (default je 0 a vše blokuje). Dokumentace uvádí jako maximum 10, ale minimálně v konfiguraci jde zadat vyšší hodnota.

SWITCH(config-if)#ip device tracking maximum 1 

Opět si můžeme vypsat údaje nebo naučené adresy.

SWITCH#show ip verify source 
Interface  Filter-type   Filter-mode  IP-address       Mac-address        Vlan
---------  -----------   -----------  ---------------  -----------------  ----
Gi1/0/1    ip-mac trk    active       192.168.100.10   12:34:ab:cd:12:34  100 

SWITCH#show ip device tracking all
Global IP Device Tracking for clients = Enabled
Global IP Device Tracking Probe Count = 3
Global IP Device Tracking Probe Interval = 30
Global IP Device Tracking Probe Delay Interval = 0
-----------------------------------------------------------------------------------------------
IP Address      MAC Address   Vlan   Interface           Probe-Timeout      State     Source
-----------------------------------------------------------------------------------------------
192.168.100.10  1234.abcd.1234 100 GigabitEthernet1/0/1    30               ACTIVE    ARP
Total number interfaces enabled: 1
Enabled interfaces:
Gi1/0/1

Dynamic ARP Inspection (DAI)

Pro kontrolu ARP (Address Resolution Protocol) a ochranu proti ARP Poisoning, ARP Spoofing (přiřazení špatné MAC adresy k IP adrese) se využívá technika Dynamic ARP Inspection. Jedná se o další metodu, která používá DHCP Snooping Binding Database. DAI monitoruje ARP provoz a kontroluje, zda jsou ARP rámce validní oproti odpovídajícím záznamům v Binding DB. Ty nevalidní zahazuje. Pro použití DAI nemusí být zapnutý DHCP Snooping a praxe mi ukázala, že hodnoty bere jak z DHCP Snooping Binding, tak z IP Source Binding.

Ochrana tedy pomůže, když se někdo snaží podvrhnout svoji MAC adresu k cizí IP adrese (třeba pro útok Man-in-the-middle). Opět můžeme některé porty nastavit jako důvěryhodné (trusted), kde se kontrola neprovádí, všechny ostatní porty jsou brány jako nedůvěryhodné (untrusted). DAI zároveň provádí ochranu proti DoS útoku, kdy omezuje počet ARP rámců za vteřinu na interface (Rate Limiting), defaultně na 15.

O DAI jsem již psal v článku Běžné útoky na switche, Cisco Dynamic ARP Inspection a více popsal teorii. Odkaz do jedné z oficiálních dokumentací Catalyst 2960 - Configuring Dynamic ARP Inspection.

DAI se zapíná globálně per VLAN (a per switch) a je podporována na Access portech, Trunk portech a Portchannel.

SWITCH(config)#ip arp inspection vlan 100,200

Porty, kde nechceme DAI provádět, nastavíme jako trusted. Například uplinky k jiným switchům, protože jinak bychom museli znát všechny bindings ze sousedních switchů (nebudeme zde rozebírat, kdy tak může vzniknout bezpečnostní mezera).

SWITCH(config-if)#ip arp inspection trust

To je vše, co je pro základní konfiguraci potřeba. Pokud používáme DHCP, tak se berou hodnoty z DHCP Binding DB. Pokud máme i statické adresy, tak je můžeme ručně zadat do stejné DB, ale použijí se i statické záznamy v IP Source Binding DB.

Pro DAI máme ještě jednu novou metodu, jak definovat statické záznamy (nemusíme pak vůbec používat DHCP Snooping). Můžeme vytvořit ARP ACL, kde se uvedou požadované kombinace IP adres a MAC adres (nemusíme zde řešit o jaký jde port). A toto ACL pak aplikujeme pro DAI. Při vyhodnocování se nejprve zpracovává ARP ACL a teprve pak se případně může použít Binding DB. Příklad vytvoření ARP ACL.

SWITCH(config)#arp access-list ARPtest
SWITCH(config-arp-acl)#permit ip host 192.168.100.10 mac host 1234.abcd.1234

Aplikace ARP ACL v rámci DAI pro určitou VLAN.

SWITCH(config)#ip arp inspection filter ARPtest vlan 100

Aplikaci ACL můžeme zadat na konci s klíčovým slovem static, pak se nepoužijí DHCP bindings, ale pouze záznamy z ACL (vyhodnocení končí zpracováním ACL).

SWITCH(config)#ip arp inspection filter ARPtest vlan 100 static

Volitelně můžeme zapnout ještě dodatečné kontroly příchozích ARP paketů, kde se kontroluje zdrojová MAC (src-mac), cílová MAC (dst-mac) nebo zdrojová a cílová IP (ip). Porovnává se adresa v Ethernet/IP hlavičce a ARP těle.

SWITCH(config)#ip arp inspection validate src-mac

Pokud používáme DAI na trunk portu, tak bychom měli dobře zvážit vlastnost Rate Limiting, která standardně omezuje ARP zprávy na 15 za vteřinu. Případně můžeme tuto ochranu vypnout.

SWITCH(config-if)#ip arp inspection limit none

Hlavní přehled o nastavení a statistikách DAI si zobrazíme.

SWITCH#show ip arp inspection 
Source Mac Validation      : Disabled
Destination Mac Validation : Disabled
IP Address Validation      : Disabled

Vlan     Configuration    Operation   ACL Match          Static ACL
----     -------------    ---------   ---------          ----------
 100     Enabled          Active

Vlan     ACL Logging      DHCP Logging      Probe Logging
----     -----------      ------------      -------------
 100     Deny             Deny              Off

Vlan     Forwarded        Dropped     DHCP Drops      ACL Drops
----     ---------        -------     ----------      ---------
 100           227             33             33              0

Vlan     DHCP  Permits   ACL Permits  Probe Permits   Source MAC Failures
----     -------------   -----------  -------------   -------------------
 100               227             0              0                     0

Vlan    Dest MAC Failures   IP Validation Failures   Invalid Protocol Data
----    -----------------   ----------------------   ---------------------
 100                    0                        0                       0

Další možnosti pro kontrolu nastavení DAI a zobrazení statistik.

SWITCH#show ip arp inspection interfaces
Interface Trust State Rate (pps) Burst Interval --------------- ----------- ---------- -------------- Gi1/0/1 Trusted None N/A Gi1/0/2 Untrusted 15 1 SWITCH#show ip arp inspection vlan 100 Source Mac Validation : Disabled Destination Mac Validation : Disabled IP Address Validation : Disabled Vlan Configuration Operation ACL Match Static ACL ---- ------------- --------- --------- ---------- 100 Enabled Active Vlan ACL Logging DHCP Logging Probe Logging ---- ----------- ------------ ------------- 100 Deny Deny Permit SWITCH#show ip arp inspection statistics vlan 100 Vlan Forwarded Dropped DHCP Drops ACL Drops ---- --------- ------- ---------- --------- 100 7671 359 310 49 Vlan DHCP Permits ACL Permits Probe Permits Source MAC Failures ---- ------------ ----------- ------------- ------------------- 100 3399 4257 15 0 Vlan Dest MAC Failures IP Validation Failures Invalid Protocol Data ---- ----------------- ---------------------- --------------------- 100 0 0 0

Logování

U DAI je logování propracováno mnohem více a řadu věcí můžeme nastavit. Když switch zahodí (drop) paket, tak si uloží záznam do logovacího bufferu a pak, podle konfigurovaných hodnot (můžeme nastavovat velikost bufferu a počet zpráv za vteřinu), provede záznam do systémového logu (jedná se o ochranu proti zahlcení) a zprávu odstraní z bufferu. Běžný záznam může vypadat následně.

Oct 25 09:04:00: %SW_DAI-4-DHCP_SNOOPING_DENY: 1 Invalid ARPs (Req) on Gi1/0/1, vlan 100.([1234.abcd.1234/192.168.100.10/
0000.0000.0000/10.0.0.50/09:03:59 CEST Tue Oct 25 2016])

Pokud používáme ARP ACL, tak hláška vypadá trochu jinak.

Oct 25 12:42:03: %SW_DAI-4-ACL_DENY: 1 Invalid ARPs (Req) on Gi1/0/1, vlan 100.([ 1234.abcd.1234/192.168.100.10/0000.0000.
0000/10.0.0.50/12:42:02 CEST Tue Oct 25 2016])

Pro logovací buffer můžeme nastavit jeho velikost, tedy kolik zpráv může pojmout (default 32).

SWITCH(config)#ip arp inspection log-buffer entries 100

A také nastavit kolik zpráv (0 znamená, že se systémová zpráva nevytváří) za jakou dobu (při 0 se rovnou ukládá do systémového logu) vygeneruje systémovou zprávu (default 5 zpráv za 1 vteřinu).

SWITCH(config)#ip arp inspection log-buffer logs 10 interval 5

Obsah logovacího bufferu (včetně jeho nastavení) si můžeme vypsat (i když se standardně velice rychle vyprazdňuje).

SWITCH#show ip arp inspection log
Total Log Buffer Size : 32
Syslog rate : 5 entries per 1 seconds.

Interface   Vlan  Sender MAC      Sender IP        Num Pkts   Reason        Time
----------  ----  --------------  ---------------  ---------  ------------  ----
Gi1/0/1     100   1234.abcd.1234  0.0.0.0                  1  Probe Permit  15:19:54 CET Wed Nov 2 2016

Defaultně se logují všechny odmítnuté/zahozené (denied/dropped) pakety, ale můžeme nastavit další logování pro každou VLANu, kde je DAI nastaveno. Logování ARP Probe paketů, kde je zdrojová IP adresa nulová.

SWITCH(config)#ip arp inspection vlan 100 logging arp-probe

Logování všech paketů, které odpovídají DHCP bindings (all) nebo povolených dle DHCP bindings (permit).

SWITCH(config)#ip arp inspection vlan 100 logging dhcp-bindings all

Pokud používáme ARP ACL, tak můžeme zapnout logování dle nastavení v tomto ACL (podle klíčového slova log v pravidlech).

SWITCH(config)#ip arp inspection vlan 100 logging acl-match matchlog

Pokud zapneme některé z rozšířených logování, tak se ve výpisu show ip arp inspection zobrazí stav u položek ACL Logging, DHCP Logging nebo Probe Logging.

Komplexní příklad nastavení

Když se již rozhodneme bezpečnostní mechanismy používat, tak je můžeme zapnout všechny. Takže ukázka globálních nastavení.

SWITCH(config)#ip dhcp snooping vlan 1-4094
SWITCH(config)#ip dhcp snooping database flash:/dhcpbind.txt
SWITCH(config)#ip dhcp snooping    
SWITCH#ip dhcp snooping binding 1234.abcd.1234 vlan 100 192.168.100.10 interface Gi1/0/1 expiry 4294967295
SWITCH(config)#ip arp inspection vlan 100

Konfigurace acccess portu, kde je připojen klient.

SWITCH(config)#interface GigabitEthernet1/0/1
SWITCH(config-if)#description Klient
SWITCH(config-if)#switchport access vlan 100
SWITCH(config-if)#switchport mode access
SWITCH(config-if)#switchport port-security mac-address sticky 
SWITCH(config-if)#switchport port-security 
SWITCH(config-if)#storm-control broadcast level 10
SWITCH(config-if)#storm-control multicast level 10
SWITCH(config-if)#spanning-tree portfast
SWITCH(config-if)#ip verify source port-security 

Konfigurace trunk portu, který je jako uplink do centrálního switche.

SWITCH(config)#interface GigabitEthernet1/0/45
SWITCH(config-if)#description Uplink
SWITCH(config-if)#switchport trunk allowed vlan 100,200
SWITCH(config-if)#switchport trunk encapsulation dot1q
SWITCH(config-if)#switchport mode trunk
SWITCH(config-if)#switchport nonegotiate
SWITCH(config-if)#storm-control broadcast level 10
SWITCH(config-if)#storm-control multicast level 10
SWITCH(config-if)#ip dhcp snooping trust
SWITCH(config-if)#ip arp inspection trust

Související články:

Cisco IOS

Velký seriál o operačním systému aktivních prvků firmy Cisco. Obsahuje jedny z nejčtenějších článků na tomto webu. Články popisují konfiguraci switchů a routerů, primárně s Cisco IOS. Věci ohledně portů, VLAN, STP, ACL, QoS, apod.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře
  1. [1] Ondřej Doležal

    Opět vynikající článek. Díky za něj.

    Měl bych dotaz: fungovalo vám v praxi IPSG nastaveno příkazem "ip verify source port-security" společně s Port security (switchport port-security, bez sticky, restrict)? Já jsem vždy skončil s tím, že "show ip verify source" ukázalo na daném portu denny-all pro IP i MAC, takže klient samozřejmě nemohl komunikovat. Při delším googlení jsem narazil, na vysvětlení [1,2], že Port security a IPSG používají jinou metodu učení zdrojové MAC a dále, že je potřeba si "pohrát" s nastavením DHCP Option 82 v globálním nastavení switche. Žádný hodnotný závěr jsem z toho ale nevyvodil.

    Dodávám, že DAI i DHCP Snooping bylo zapnuto a nepoužíváme statické IP.

    [1] http://blog.brokennetwork.ca/2011/09/dhcp-based-security-part-2-ip-source.html

    [2] https://bdwyertech.net/2016/03/02/switch-security-dhcp-snooping-ip-source-guard-and-dynamic-arp-inspection-2/

    Čtvrtek, 08.12.2016 13:18 | odpovědět
  2. [2] Samuraj

    odpověď na [1]Ondřej Doležal: Já jsem celé toto zabezpečení používal pouze pro statické adresy (bez DHCP), takže jsem nemusel řešit DHCP Option 82. A IPSG jsem použil pouze s Port Security Sticky. Takže takové zkušenosti nemám.

    Čtvrtek, 08.12.2016 16:38 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách