English · Ελληνικά
Τα firewall φυλάνε την περίμετρο — αλλά οι περισσότερες πραγματικές επιθέσεις ξεκινούν από μια πρίζα στο λόμπι. Το port security, το DHCP snooping, το dynamic ARP inspection, και το BPDU guard μετατρέπουν χαζά access ports σε μια θωρακισμένη ακμή. Αυτή είναι η θωράκιση layer-2 που παραλείπουν τα περισσότερα δίκτυα.
Το Layer 2 εμπιστεύεται εκ σχεδιασμού. Ένα switch μαθαίνει διευθύνσεις MAC από όποιον τις στέλνει, δίνει DHCP σε όποιον ρωτήσει, και πιστεύει κάθε απάντηση ARP που ακούει. Κάθε μία από αυτές τις ευγένειες είναι μια επίθεση: MAC flooding για να ξεχειλίσει τον πίνακα CAM και να αναγκάσει το switch να κάνει broadcast ιδιωτική κίνηση, ένας ανεπίσημος DHCP server για να γίνει το default gateway όλων, ARP spoofing για man-in-the-middle σε ένα subnet, και ένα ανεπίσημο switch για να απαγάγει την τοπολογία spanning-tree. Καμία από αυτές δεν χρειάζεται διαπιστευτήρια — μόνο μια πρίζα ethernet.
Η άμυνα είναι ένα σετ τεσσάρων χαρακτηριστικών που έρχονται σε κάθε Catalyst και είναι κλειστά by default: port security, DHCP snooping, dynamic ARP inspection, και BPDU guard. Το καθένα ρυθμίζεται σε λίγα λεπτά. Μαζί σημαίνουν ότι μια εχθρική συσκευή στην πρίζα του λόμπι σου παίρνει μια νεκρή θύρα αντί για το VLAN της λογιστικής. Εδώ συναντιούνται τα ευρήματα των pentest μας με τη δικτυακή μηχανική μας — αυτά τα τέσσερα είναι οι διορθώσεις που καταλήγουμε να προτείνουμε πιο συχνά.
01
Περιόρισε κάθε access port σε γνωστό αριθμό διευθύνσεων MAC — συνήθως μία ή δύο — και αποφάσισε τι συμβαίνει όταν εμφανιστεί μία παραπάνω. Αυτό σκοτώνει το MAC flooding και τις πρόχειρες αλλαγές συσκευών με ένα χτύπημα.
SW1(config)# interface range GigabitEthernet0/2 - 24 SW1(config-if-range)# switchport mode access # απαιτείται — όχι σε trunk/dynamic SW1(config-if-range)# switchport port-security SW1(config-if-range)# switchport port-security maximum 2 # PC + τηλέφωνο IP SW1(config-if-range)# switchport port-security mac-address sticky SW1(config-if-range)# switchport port-security violation restrict SW1(config-if-range)# end # το "sticky" μαθαίνει τα πρώτα MAC που βλέπει και τα γράφει στο running-config — # αποθήκευσε με "wr" και παραμένουν. Καμία χειροκίνητη πληκτρολόγηση MAC. SW1# show port-security interface gi0/2 Port Security : Enabled Violation Mode : Restrict Maximum MAC Addresses : 2 Sticky MAC Addresses : 1 Security Violation Count : 0
| Mode | Σε παραβιαση |
|---|---|
| protect | Ρίχνει σιωπηλά τα frames από άγνωστα MAC. Κανένα log, κανένας μετρητής — δεν θα μάθεις ποτέ ότι συνέβη. Απόφευγέ το. |
| restrict | Ρίχνει, αυξάνει τον μετρητή παραβιάσεων, στέλνει syslog/SNMP trap. Ορατότητα χωρίς διακοπή. |
| shutdown (default) | Βάζει ολόκληρη τη θύρα σε err-disabled — τελείως down μέχρι να ανακάμψει. Μέγιστη ασφάλεια, μέγιστα τηλεφωνήματα στο help-desk. |
Με το default mode shutdown, μία παραβίαση σκοτώνει τη θύρα μέχρι κάποιος να τρέξει shutdown / no shutdown πάνω της. Ένα καθαρότερο pattern για πραγματικά γραφεία: χρησιμοποίησε restrict σε θύρες χρηστών, ή ενεργοποίησε αυτόματη ανάκαμψη ώστε μια παραβίαση να κοστίζει λεπτά αντί για επίσκεψη στο χώρο: errdisable recovery cause psecure-violation και errdisable recovery interval 300. Έλεγξε τι είναι νεκρό και γιατί με show interfaces status err-disabled.
02
Ένα laptop που τρέχει DHCP server — κακόβουλα, ή απλώς ένας βοηθητικός οικιακός router που έβαλε κάποιος — μπορεί να δίνει τον εαυτό του ως gateway σε όλους. Το DHCP snooping δηλώνει ποιες θύρες επιτρέπεται να απαντούν σε DHCP: το uplink. Οτιδήποτε άλλο μπορεί μόνο να ρωτάει.
# 1. Άναψε το snooping global ΚΑΙ ανά VLAN SW1(config)# ip dhcp snooping SW1(config)# ip dhcp snooping vlan 10,20 # 2. Σήμανε το uplink (προς τον πραγματικό DHCP server) ως trusted SW1(config)# interface GigabitEthernet0/1 SW1(config-if)# ip dhcp snooping trust SW1(config-if)# exit # 3. Βάλε rate-limit στα αιτήματα DHCP σε θύρες χρηστών (προστασία DoS) SW1(config)# interface range GigabitEthernet0/2 - 24 SW1(config-if-range)# ip dhcp snooping limit rate 10 SW1(config-if-range)# end # Τα OFFER του server που φτάνουν σε untrusted θύρες τώρα πέφτουν κρύα κρύα. # Μπόνους: το switch χτίζει έναν binding table — ποιος έχει ποιο IP σε ποια θύρα: SW1# show ip dhcp snooping binding MacAddress IpAddress Lease(sec) Type VLAN Interface 00:1A:2B:3C:4D:5E 192.168.10.21 43021 dhcp-snooping 10 Gi0/4
Ενεργοποίησε το snooping και ξέχασε το ip dhcp snooping trust στο uplink, και το switch ρίχνει και τα OFFER του νόμιμου server — ολόκληρο το VLAN σταματά να παίρνει διευθύνσεις και μοιάζει με διακοπή DHCP. Η σειρά έχει σημασία: εμπιστεύσου πρώτα το uplink, μετά ενεργοποίησε το snooping στα VLAN. Επίσης: αν το DHCP relay σου βρίσκεται πέρα από άλλο switch, κάθε inter-switch link στη διαδρομή προς τον server πρέπει να είναι trusted.
03
Το ARP spoofing — απαντώντας «ποιος έχει το IP της πύλης;» με το δικό σου MAC — είναι ακόμα το πιο εύκολο man-in-the-middle σε LAN. Το DAI ελέγχει κάθε πακέτο ARP σε untrusted θύρες έναντι του binding table του DHCP snooping και ρίχνει τα ψέματα.
# Απαιτεί DHCP snooping (ενότητα 02) — το DAI επικυρώνει έναντι των bindings του SW1(config)# ip arp inspection vlan 10,20 # Εμπιστεύσου τις ίδιες θύρες inter-switch/uplink όπως το snooping SW1(config)# interface GigabitEthernet0/1 SW1(config-if)# ip arp inspection trust SW1(config-if)# end # Δες το να δουλεύει: ένα πλαστό ARP σε untrusted θύρα πέφτει και καταγράφεται SW1# show ip arp inspection statistics vlan 10 Vlan Forwarded Dropped DHCP Drops ACL Drops ---- --------- ------- ---------- --------- 10 1420 12 12 0
Το DAI εμπιστεύεται τον πίνακα DHCP snooping — οπότε ένας host με static IP δεν έχει εγγραφή binding, και κάθε ARP που στέλνει μοιάζει με spoof και πέφτει. Βγαίνει από το δίκτυο τη στιγμή που το DAI ανάβει. Για εκτυπωτές, servers, και κάμερες με στατικές διευθύνσεις, είτε πρόσθεσε static bindings (ip source binding <mac> vlan <id> <ip> interface <port>) είτε μετέφερέ τα σε DHCP reservations — τα reservations είναι πιο καθαρά και αυτο-τεκμηριωμένα.
04
Τα access ports μιλάνε σε hosts, και οι hosts δεν μιλάνε spanning tree. Αν φτάσει ένα BPDU σε access port, κάποιος έβαλε ένα switch — τυχαίος βρόχος ή σκόπιμη απαγωγή τοπολογίας. Το BPDU guard σκοτώνει τη θύρα ακαριαία.
# Ανά interface: SW1(config)# interface range GigabitEthernet0/2 - 24 SW1(config-if-range)# spanning-tree portfast # παράλειψε listening/learning για hosts SW1(config-if-range)# spanning-tree bpduguard enable SW1(config-if-range)# exit # Ή η global συντόμευση — κάθε θύρα PortFast παίρνει BPDU guard αυτόματα: SW1(config)# spanning-tree portfast bpduguard default SW1(config)# end # Ένα BPDU που φτάνει στο Gi0/7 τώρα την κάνει err-disabled επιτόπου: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port Gi0/7 with BPDU Guard enabled. Disabling port.
Το PortFast και το BPDU guard είναι ένα φυσικό ζευγάρι: το PortFast κάνει τις θύρες hosts να σηκώνονται ακαριαία (όχι αναμονή 30 δευτερολέπτων spanning-tree για PC που πεινάνε για DHCP), και το BPDU guard είναι η ασφάλεια ότι κανείς δεν εκμεταλλεύεται μια θύρα PortFast για να εισάγει αλλαγές τοπολογίας. Το ίδιο το spanning tree — root bridges, και γιατί μια θύρα μπορεί να είναι blocking — είναι το επόμενο post σε αυτή τη σειρά.
05
Η φθηνότερη θωράκιση που υπάρχει: μια θύρα που δεν χρησιμοποιεί κανείς πρέπει να κλείνει και να παρκάρει σε ένα νεκρό VLAN. Ένας επιτιθέμενος δεν μπορεί να διαπραγματευτεί με ένα interface που είναι administratively down.
# Ένα VLAN που δεν δρομολογεί πουθενά και δεν επιτρέπεται σε κανένα trunk SW1(config)# vlan 999 SW1(config-vlan)# name PARKING SW1(config-vlan)# exit # Βρες τι είναι αχρησιμοποίητο (notconnect), μετά παρκάρισέ το SW1# show interfaces status | include notconnect SW1(config)# interface range GigabitEthernet0/13 - 24 SW1(config-if-range)# switchport mode access SW1(config-if-range)# switchport access vlan 999 SW1(config-if-range)# shutdown SW1(config-if-range)# end # Το να βάλεις μια θύρα σε λειτουργία αργότερα είναι σκόπιμη πράξη: όρισε το σωστό VLAN, # κάνε no shutdown, τεκμηρίωσέ το. Ακριβώς όπως πρέπει.
Σε εσωτερικά engagement, το πρώτο πράγμα που δοκιμάζεται στην πρίζα είναι, με τη σειρά: παίρνουμε DHCP lease (χωρίς snooping;), μπορούμε να κάνουμε ARP-spoof την πύλη (χωρίς DAI;), δέχεται η θύρα δεύτερο MAC (χωρίς port security;), και δέχεται τα BPDU μας (χωρίς BPDU guard;). Τα τέσσερα χαρακτηριστικά αυτού του post κλείνουν ακριβώς αυτή τη λίστα, και το VLAN παρκαρίσματος αφαιρεί το δωράκι «βρήκα ζωντανή πρίζα σε άδειο γραφείο». Αυτή είναι η λιγότερο εντυπωσιακή δουλειά ασφάλειας που υπάρχει, και μία από τις πιο αποτελεσματικές.
06
Έξι read-only εντολές ελέγχουν όλη τη στάση. Τρέξ' τες σε κάθε switch που κληρονομείς — τα κενά σου λένε τι λείπει.
| Εντολη | Δειχνει |
|---|---|
| show port-security | Κατάσταση ασφάλειας ανά θύρα, μετρητές MAC, μετρητές παραβιάσεων. |
| show port-security address | Ο πίνακας μαθημένων/sticky MAC. |
| show ip dhcp snooping | Κατάσταση snooping ανά VLAN, trusted θύρες, rate limits. |
| show ip dhcp snooping binding | Ο πίνακας αλήθειας IP↔MAC↔θύρα — ιδανικός και για παρακολούθηση συσκευών. |
| show ip arp inspection | Κατάσταση DAI και στατιστικά drop ανά VLAN. |
| show interfaces status err-disabled | Θύρες που σκότωσε ένα guard, και ποιο χαρακτηριστικό τις σκότωσε. |
| show spanning-tree summary | Επιβεβαιώνει ότι τα default PortFast/BPDU-guard είναι όντως ανοιχτά. |
07
Τα bridge του RouterOS ανέπτυξαν τις ίδιες προστασίες· τα ονόματα είναι απλώς λιγότερο τυποποιημένα. Αν τρέχεις μεικτά access layers, αυτή είναι η μετάφραση.
| MikroTik / RouterOS | Cisco IOS |
|---|---|
| bridge port learn=no + static hosts | Port security με static/sticky MAC |
| /interface bridge settings dhcp-snooping | ip dhcp snooping (+ trusted=yes ↔ trust) |
| bridge port trusted=yes | ip dhcp snooping trust |
| ARP mode reply-only + DHCP add-arp | Dynamic ARP inspection (επικυρωμένο έναντι των leases) |
| bridge port bpdu-guard=yes | spanning-tree bpduguard enable |
| Disabled port + isolated VLAN | shutdown + VLAN παρκαρίσματος 999 |
Συμπερασματα
spanning-tree portfast bpduguard default καλύπτει και μελλοντικές θύρες.shutdown, τέλος. Η επανενεργοποίηση γίνεται σκόπιμη, τεκμηριωμένη πράξη.show interfaces status err-disabled σου λέει ποιο· ρύθμισε errdisable recovery όπου μια αυτο-θεραπεία 5 λεπτών νικάει μια επίσκεψη στο χώρο.Οι έλεγχοι Layer-2 που τρέχω ως επιτιθέμενος σε ένα pentest είναι οι ίδιοι που εφαρμόζω ως άμυνες σε ένα audit θωράκισης — DHCP snooping, port security, BPDU guard, όλα — απλώς στραμμένα προς την άλλη κατεύθυνση.
Κλεισε μια Discovery Call →