<p>
<a href="">Wdrożenie zabezpieczeń portów - scenariusz</a><br />
<a href="">Wdrożenie zabezpieczeń portów - zadanie</a>
- </p>
+ </p>
+ <h2 id="2.11.2.limitvlanattacks">2.11.2. Ograniczanie ataków na sieci VLAN</h2>
+ <p>
+ Ataki na sieci VLAN omawiane była dwa: atak z przeskokiem, gdzie
+ atakującemu udawało się wynegocjować łącze <em>trunk</em> i uzyskać
+ dostęp do innych VLAN-ów, niż ten do którego należy jego gniazdo.
+ Drugim atakiem był atak podwójnego znakowania, gdzie atakujący tworzył
+ ramkę z podwójnym znacznikiem, pierwszy zawierał znacznik natywnej
+ sieci VLAN, a drugi sieci docelowej.
+ </p>
+ <p>
+ Metodą zabezpieczenia się przed tego typu działaniami są kolejno:
+ </p>
+ <ol>
+ <li>Wyłączenie negocjacji DTP na innych portach niż <em>trunk</em>,
+ przy użyciu polecenia
+ <code class="code-inline">switchport mode access</code></li>
+ <li>Nie używane porty należy umieść w innym VLAN-ie niż domyślny.</li>
+ <li>Na portach przeznaczonych jako <em>trunk</em>, tryb ten włączamy
+ ręcznie, przy użyciu polecenia
+ <code class="code-inline">switchport mode trunk</code></li>
+ <li>Wyłączamy autonegocjacje DTP na portach <em>trunk</em>, za pomocą
+ polecenia: <code class="code-inline">switchport nonegotiate</code>.</li>
+ <li>Zmieniamy natwyną sieć VLAN dla łączy <em>trunk</em>, przy użyciu
+ polecenia: <code class="code-inline">switchport trunk native vlan X</code>,
+ gdzie <code class="code-inline">X<code>, oznacza numer sieci VLAN.</li>
+ </ol>
+<pre class="code-block">
+S1(config)#vlan 1000
+S1(config-vlan)#name UNUSED_PORTS
+S1(config-vlan)#vlan 999
+S1(config-vlan)#name NATIVE
+S1(config-vlan)#exit
+S1(config)#
+S1(config)#int range fa0/3-12
+S1(config-if-range)#switchport mode acces
+S1(config-if-range)#exit
+S1(config)#int range fa0/13-20
+S1(config-if-range)#switchport mode access
+S1(config-if-range)#switchport access vlan 1000
+S1(config-if-range)#shutdown
+S1(config-if-range)#exit
+S1(config)#int fa0/21-24
+S1(config-if-range)#switchport mode trunk
+S1(config-if-range)#switchport nonegotiate
+S1(config-if-range)#switchport trunk native vlan 999
+S1(config-if-range)#end
+</pre>
+ <p>
+ Na powyższym przykładzie skonfigurowano wyżej wymienione
+ zabezpieczenia. Porty 3-12 są portami dostępowymi. Porty 13-20 nie są
+ obecnie używane. Ostatnie 4 porty są łączami <em>trunk</em>.
+ </p>
+ <h2 id="2.11.3.limitingdhcpattacks">2.11.3. Ograniczanie ataków na DHCP</h2>
+ <p>
+ Znamy dwa ataki wobec usługi DHPC, pierwsza z znich jest zagłodzenie -
+ tj. wyczerpanie puli przez atakującego. Ochroną przed tego typu
+ działaniem jest ustawienie limitu zapytań do DHCP na portach
+ niezaufanych (innych niż te, z których będzie przychodzić odpowiedź
+ od serwera). Drugim atakiem, jest fałszowanie - atakujący podstawia
+ swój serwer DHCP. Metodą ochrony przed takim działaniem jest
+ ustawienie portu zaufanego - z którego będą przychodzić komunikaty
+ serwera DHCP. Reszta portów będzie domyślnie ustawiana jako
+ niezaufane. Te metody oferuje mechanizm <em>DHCP Snooping</em>. Kroki
+ jakie
+ należy wykonać w celu skonfigurowania tej metody prezentują się
+ następująco:
+ </p>
+ <ol>
+ <li>Włączamy <em>DHCP Snooping</em> za pomocą polecenia
+ <code class="code-inline">ip dhcp snooping</code> w konfiguracji
+ globalnej</li>
+ <li>Porty z odpowiedzią DHCP uznajemy za zafane za pomocą polecenia:
+ <code class="code-inline">ip dhcp snooping trust</code>.</li>
+ <li>Na portach niezaufanych ustawiamy limit zapytań do DHCP - liczbę
+ odebranych komunikatów DHCP DISCOVER na sekundę. Dokonujemy tego
+ za pomocą polecenia:
+ <code class="code-inline">ip dhcp snooping limit rate X</code>, gdzie
+ <code class="code-inline">X</code> to liczba zapytań.</li>
+ <li><em>DHCP Snooping</em> możemy również włączyć dla określonej sieci
+ VLAN lub dla wielu sieci, wydając w konfiguracji globalnej polecenie:
+ <code class="code-inline">ip dhcp snooping Y</code>, gdzie
+ <code class="code-inline">Y</code> to numer/numery sieci VLAN lub ich
+ zakres.</li>
+ </ol>
+<pre class="code-block">
+S1#conf t
+S1(config)#ip dhcp snooping
+S1(config)#int g0/1
+S1(config-if)#ip dhcp snooping trust
+S1(config-if)#exit
+S1(config)#int range fa0/1-24
+S1(config-if-range)#ip dhcp snooping limit rate 6
+S1(config-if-range)#exit
+S1(config)#ip dhcp snooping vlan 1000
+</pre>
+ <p>
+ Na powyższym przykładzie skonfigurowano opcje zabepieczeń przed atakami
+ na DHCP. W IOS mamy możliwość wyświetlenia informacji o konfiguracji
+ <em>DHCP Snooping</em> za pomocą polecenia:
+ <code class="code-inline">show ip dhcp snooping</code>.
+ </p>
+<pre class="code-block">
+S1#show ip dhcp snooping
+Switch DHCP snooping is enabled
+DHCP snooping is configured on following VLANs:
+1000
+DHCP snooping is operational on following VLANs:
+1000
+DHCP snooping is configured on the following L3 Interfaces:
+
+Insertion of option 82 is enabled
+ circuit-id default format: vlan-mod-port
+ remote-id: ecc8.8212.b200 (MAC)
+Option 82 on untrusted port is not allowed
+Verification of hwaddr field is enabled
+Verification of giaddr field is enabled
+DHCP snooping trust/rate is configured on the following Interfaces:
+
+Interface Trusted Allow option Rate limit (pps)
+----------------------- ------- ------------ ----------------
+FastEthernet0/1 no no 6
+ Custom circuit-ids:
+FastEthernet0/2 no no 6
+ Custom circuit-ids:
+FastEthernet0/3 no no 6
+ Custom circuit-ids:
+FastEthernet0/4 no no 6
+ Custom circuit-ids:
+FastEthernet0/5 no no 6
+ Custom circuit-ids:
+...
+FastEthernet0/23 no no 6
+Interface Trusted Allow option Rate limit (pps)
+----------------------- ------- ------------ ----------------
+ Custom circuit-ids:
+FastEthernet0/24 no no 6
+ Custom circuit-ids:
+GigabitEthernet0/1 yes yes unlimited
+ Custom circuit-ids:
+</pre>
+ <h2 id="2.11.4.limitingarpattacks">2.11.4. Ograniczenie ataków na ARP.</h2>
+ <p>
+ Ataki ARP są do siebie bardzo podobne. Chodzi o manipulację tablicą
+ ARP na komputerze ofiary. Pierwszym atakiem jest zatrucie, przez które
+ ofiara całkowicie traci łączność, ponieważ atakujący odpowiada na jej
+ żądania losowowymi adresami fizycznymi. Drugim atakiem jest fałszowanie
+ ataków, przy użyciu pakietu gratisowego ARP. Użycie tego pakietu
+ wymusza na ofierze, aktualizację wpisu w tablicy ARP, którego dotyczy
+ ten pakiet. Chronić się przed działania tego typu możemy za pomocą
+ mechanizmu <em>Dynamic Arp Inspection - DAI</em>.
+ </p>
+ <p>
+ Dynamiczna inspekcja ARP (DAI) wymaga działania mechanizmu
+ <em>DHCP Snooping</em>, pomaga zapobiegać atakom poprzez:
+ </p>
+ <ul>
+ <li>Nie przykazywanie nieprawidłowych lub gratisowych odpowiedzi ARP
+ do innych portów w tej samej sieci VLAN.</li>
+ <li>Przechwytywanie wszystkichj żądań i odpowiedzi ARP na niezaufanych
+ portach.</li>
+ <li>Sprawdzenie każdego przechwyconego pakietu pod kątem prawidłowego
+ powiązania IP do MAC.</li>
+ <li>Odrzucanie i rejestrowanie odpowiedzi ARP, posiadające nie
+ nieprawdziwe informacje, aby zapobiec zatruciu ARP.</li>
+ <li>Przełączenie interfejsu w stan <em>error-disabled</em>, jeśli
+ skonfigurowana w DAI liczba pakietów ARP zostanie przekroczona.</li>
+ </ul>
+ <p>
+ W celu wykorzystania mechnizmu DAI, musimy podąrząć zgodnie z poniższymi
+ wskazówkami:
+ </p>
+ <ol>
+ <li>Włączamy globalnie <em>DHCP Snooping</em>.</li>
+ <li>Włączamy <em>DHCP Snooping</em> dla konkretnej sieci VLAN.</li>
+ <li>Włączamy DAI dla wybranej sieci VLAN.</li>
+ <li>Na koniec konfigurujemy zaufane interfejsy dla
+ <em>DHCP Snooping</em> i DAI.</li>
+ </ol>
+<pre class="code-block">
+S1#conf t
+Enter configuration commands, one per line. End with CNTL/Z.
+S1(config)#ip dhcp snooping
+S1(config)#ip dhcp snooping vlan 1000
+S1(config)#ip arp inspection vlan 1000
+S1(config)#interface fa0/24
+S1(config-if)#ip dhcp snooping trust
+S1(config-if)#ip arp inspection trust
+</pre>
+ <p>
+ Na powyższym urządzeniu włączyłem globalnie <em>DHCP Snooping</em>,
+ <code class="code-inline">S1(config)#ip dhcp snooping</code> następnie
+ skonfigurowałem <em>DHCP Snooping</em> oraz DAI dla VLAN-u 1000 -
+ <code class="code-inline">S1(config)#ip dhcp snooping vlan 1000</code>,
+ <code class="code-inline">S1(config)#ip arp inspection vlan 1000</code>.
+ Na koniec skonfigurowałem interfejs <code class="code-inline">fa0/24</code>
+ jako zaufany dla <em>DHCP Snooping</em>-u oraz inspekcji ARP.
+ </p>
+ <p>
+ Mechanim DAI może zostać również skonfigurowany w taki sposób aby
+ weryfikował adresy przekazywane we wiadomości ARP z adresami zawartymi
+ w nagłówku ramki <em>Ethernet</em>. Do wyboru mamy takie warunki jak
+ </p>
+ <ul>
+ <li><strong>Docelowy MAC</strong> - porównanie docelowego adresu MAC
+ w nagłówku ramki z tym we wiadomości ARP.</li>
+ <li><strong>Źródłowy MAC</strong> - porównianie źródłowego adresu MAC
+ w nagłówku ramki z tym we wiadomości ARP.</li>
+ <li><strong>Adres IP</strong> - sprawdza komunikat pod kątem nie
+ prawidłowych i nieoczekiwanych adresów IP, takich jak: 0.0.0.0,
+ 255.255.255.255 czy wszystkich adresów <em>multicastowych</em>.</li>
+ </ul>
+ <p>
+ Do ustawiania weryfikacji adresów w ARP służy polecenie:
+ <code class="code-inline">ip arp inspection validate</code> po czym
+ podajemy rodzaj sprawdzania adresów. Nic nie stoi na przeszkodzie, aby
+ ustawić je wszystkie.
+ </p>
+<pre class="code-block">
+S1#conf t
+Enter configuration commands, one per line. End with CNTL/Z.
+S1(config)#ip arp inspection validate src-mac dst-mac ip
+</pre>
+ <p>
+ Od teraz komunikaty ARP, bedą sprawdzane pod kątem poprawności adresów.
+ </p>
+ <h2 id="2.11.5.limitingstpattacks">2.11.5. Ograniczanie ataków STP</h2>
+ <p>
+ W przypadku ataków STP, atakujący może podłączyć swoje urządzenie i
+ wymusić zmianę topologi poprzez wysłanie BPDU z wysokim priorytetem w
+ BID. Ochroną przed tego typu działaniami jest użycie technologii
+ <strong>PortFast</strong> oraz <strong>BPDU Guard</strong>.
+ </p>
+ <p>
+ <em>PortFast</em> przyspiesza stan gotowości portu o przesyłania
+ danych. Port przenoszony jest natychmiast ze stanu blokowania w stan
+ przekaywania. <em>PortFast</em> jest przeznaczony dla użytkowników
+ końcowych i tylko dla nich powinien być stosowany. <em>BPDU Guard</em>
+ jest mechanizm zabezpieczającym przed pojawieniem się komunikatów BPDU
+ na niepożądanych portach. Jeśli taki komunikat się pojawi przy
+ skonfigurowanym <em>BPDU Guard</em>, taki port zostanie ustawiony w
+ stan <em>error-disabled.</em>.
+ </p>
+ <p>
+ Konfiguracji <em>PortFast</em>, możemy dokonać na dwa sposoby.
+ Konfigurować po kolei każdy z portów tak jak przedstawiono to na
+ poniższym przykładzie.
+ </p>
+<pre class="code-block">
+S1#conf t
+Enter configuration commands, one per line. End with CNTL/Z.
+S1(config)#int fa0/4
+S1(config-if)#switchport mode access
+S1(config-if)#spanning-tree portfast
+%Warning: portfast should only be enabled on ports connected to a single
+ host. Connecting hubs, concentrators, switches, bridges, etc... to this
+ interface when portfast is enabled, can cause temporary bridging loops.
+ Use with CAUTION
+
+%Portfast has been configured on FastEthernet0/4 but will only
+ have effect when the interface is in a non-trunking mode.
+</pre>
+ <p>
+ Możemy również skonfigurować <em>PortFast</em> domyślnie dla całego
+ przełącznika. Tak jak na przykładzie:
+ </p>
+<pre class="code-block">
+S1#conf t
+Enter configuration commands, one per line. End with CNTL/Z.
+S1(config)#spanning-tree portfast default
+%Warning: this command enables portfast by default on all interfaces. You
+ should now disable portfast explicitly on switched ports leading to hubs,
+ switches and bridges as they may create temporary bridging loops.
+</pre>
+ <p>
+ Aby sprawdzić konfigurację <em>PortFast</em> możemy użyci polecenia
+ <code class="code-inline">show spanning-tree summary</code>. Poniżej
+ znajduje się wynik jego działania:
+ </p>
+<pre class="code-block">
+S1#show spanning-tree summary
+Switch is in pvst mode
+Root bridge for: none
+Extended system ID is enabled
+Portfast Default is enabled
+PortFast BPDU Guard Default is disabled
+Portfast BPDU Filter Default is disabled
+Loopguard Default is disabled
+EtherChannel misconfig guard is enabled
+UplinkFast is disabled
+BackboneFast is disabled
+Configured Pathcost method used is short
+
+Name Blocking Listening Learning Forwarding STP Active
+---------------------- -------- --------- -------- ---------- ----------
+Total 0 0 0 0 0
+</pre>
+ <p>
+ Drguim mechanizm do skonfigurowania jest <em>BPDU Guard</em>. Metoda
+ jest taka sama jak w przypadku <em>PortFast</em>, różnią się tylko
+ polecenia.
+ </p>
+<pre class="code-block">
+S1#conf t
+Enter configuration commands, one per line. End with CNTL/Z.
+S1(config)#int fa0/4
+S1(config-if)#spanning-tree bpduguard enable
+S1(config-if)#exit
+S1(config)#spanning-tree portfast bpduguard default
+</pre>
+ <p>
+ Teraz możemy wyświetlić sobie jeszcze raz podsumowanie konfiguracji
+ STP.
+ </p>
+<pre class="code-block">
+S1#show spanning-tree summary
+Switch is in pvst mode
+Root bridge for: none
+Extended system ID is enabled
+Portfast Default is enabled
+PortFast BPDU Guard Default is enabled
+Portfast BPDU Filter Default is disabled
+Loopguard Default is disabled
+EtherChannel misconfig guard is enabled
+UplinkFast is disabled
+BackboneFast is disabled
+Configured Pathcost method used is short
+
+Name Blocking Listening Learning Forwarding STP Active
+---------------------- -------- --------- -------- ---------- ----------
+Total 0 0 0 0 0
+</pre>
+ <p>
+ Możemy skonfigurować przełącznik w taki sposób, aby automatycznie
+ odblokowywał porty w stanie <em>error-disabled</em>. W przypadku
+ naruszenia <em>BPDU Guard</em>, możemy uruchomić to poleceniem:
+ </p>
+<pre class="code-block">
+S1(config)#errdisable recovery cause psecure-violation
+</pre>
+ <p>
+ Domyślnym okresem karencji jest 300 sekund = 5 minut. Stan
+ automatycznego podnoszenia portu ze stanu <em>error-disabled</em>
+ możemy sprawdzić (w tym i okres karencji) za pomocą polecenia
+ <code class="code-inline">show errdisable recovery</code>
+ </p>
+<pre class="code-block">
+S1#show errdisable recovery
+ErrDisable Reason Timer Status
+----------------- --------------
+arp-inspection Disabled
+bpduguard Disabled
+channel-misconfig Disabled
+dhcp-rate-limit Disabled
+dtp-flap Disabled
+gbic-invalid Disabled
+inline-power Disabled
+link-flap Disabled
+mac-limit Disabled
+loopback Disabled
+pagp-flap Disabled
+port-mode-failure Disabled
+psecure-violation Disabled
+security-violation Disabled
+sfp-config-mismatch Disabled
+small-frame Disabled
+storm-control Disabled
+udld Disabled
+vmps Disabled
+
+Timer interval: 300 seconds
+</pre>
+ <h2 id="ch11summary">Podsumowanie</h2>
+ <p>
+ W tym rodziale dowiedzieliśmy się możemy skonfigurować Cisco IOS na
+ przełącznikach, aby zapobiec atakom z poznanym w 10 rozdziale.
+ Poznaliśmy zabezpieczenia portów oraz metody ochrony przez atakami na
+ sieci VLAN, DHCP, ARP oraz STP.
+ </p>
</div>
</body>
</html>