English · Ελληνικά
Η ίδια η συσκευή είναι στόχος — το login της, τα πρωτόκολλα διαχείρισής της, το control plane της. Αυτή είναι η ενοποιημένη λίστα ελέγχου που τρέχουμε σε κάθε συσκευή Cisco που αναλαμβάνουμε: τι να απενεργοποιήσεις, τι να κρυπτογραφήσεις, τι να περιορίσεις, και πώς να το επαληθεύσεις. Δεκαπέντε λεπτά που μετατρέπουν έναν εύκολο στόχο σε δύσκολο.
Σε όλη αυτή τη σειρά θωρακίσαμε την κίνηση μέσα από τη συσκευή — ACL, firewalls, αμυνες L2. Αυτό το post θωρακίζει την ίδια τη συσκευή: το management plane (πώς συνδέεσαι και την παρακολουθείς) και το control plane (το CPU που τρέχει τη δρομολόγηση και απαντάει σε ARP). Και τα δύο είναι επιφάνεια επίθεσης, και έρχονται και τα δύο μαλακά by default — default υπηρεσίες ανοιχτές, αδύναμο ή ανύπαρκτο auth, διαχείριση προσβάσιμη από παντού.
Σε εσωτερικά pentest, το management plane είναι εκεί που ένα foothold γίνεται πλήρης κατοχή: μια default κοινότητα SNMP ξεχύνει όλο το config, μια θύρα Telnet κλέβει έναν κωδικό, μια απεριόριστη γραμμή VTY προσκαλεί brute-force. Οπότε αυτό είναι σκόπιμα μια λίστα ελέγχου, όχι αφήγημα — οι ακριβείς εντολές που εφαρμόζουμε σε κάθε συσκευή που διαχειριζόμαστε, ομαδοποιημένες ανά τομέα, με το «γιατί» και την επαλήθευση για κάθε μία. Τρέξ' την από πάνω ως κάτω σε κάθε συσκευή που κληρονομείς και μετατρέπεται από εύκολο σε δύσκολο στόχο σε περίπου δεκαπέντε λεπτά.
01
Ισχυρά, hashed διαπιστευτήρια· κανένας μη κρυπτογραφημένος κωδικός στο config· ένα banner login· και throttling brute-force στο ίδιο το login.
# Σύγχρονο hashing: enable secret + username με type-8/9 (scrypt/PBKDF2) R1(config)# enable algorithm-type scrypt secret S0meStr0ng!Pass R1(config)# username admin privilege 15 algorithm-type scrypt secret Adm1n!Str0ng R1(config)# service password-encryption # κρύψε τυχόν υπολείμματα type-7 # Throttle το brute force: μετά από 3 αποτυχίες σε 60δ, μπλόκαρε τα login για 60δ R1(config)# login block-for 60 attempts 3 within 60 R1(config)# login on-failure log R1(config)# login on-success log # Ένα νομικό banner (όχι "welcome" — αυτό έχει βοηθήσει επιτιθέμενους στο δικαστήριο) R1(config)# banner login ^Authorised access only. Activity is logged.^
Το service password-encryption εφαρμόζει την κωδικοποίηση "type 7" της Cisco, που είναι τετριμμένα αναστρέψιμη — decoders είναι μια αναζήτηση web μακριά. Σταματάει το shoulder-surfing, τίποτα παραπάνω. Ποτέ μην αντιμετωπίζεις ένα string type-7 σαν μυστικό, και ποτέ μην ανεβάζεις δημόσια ένα config με ένα τέτοιο νομίζοντας ότι είναι ασφαλές. Πραγματική προστασία είναι τα one-way hashes: type 8 (scrypt) ή type 9 για enable secret και username … secret. Έλεγξε μια κληρονομημένη συσκευή με show run | include secret|password — κάθε γυμνό password (type 0) ή διαπιστευτήριο type-7 που φυλάει πραγματική πρόσβαση είναι finding.
02
Μόνο SSH, μόνο από το management subnet, με idle timeouts. Αυτό είναι το ένα block με τη μεγαλύτερη αξία — έτσι φτάνουν οι επιτιθέμενοι τη συσκευή μέσω δικτύου.
# Ποιος μπορεί καν να ΔΟΚΙΜΑΣΕΙ να συνδεθεί (από το post των ACL) R1(config)# ip access-list standard MGMT-ONLY R1(config-std-nacl)# permit 192.168.99.0 0.0.0.255 R1(config-std-nacl)# deny any log R1(config-std-nacl)# exit R1(config)# line vty 0 4 R1(config-line)# transport input ssh # ΚΑΘΟΛΟΥ telnet, ποτέ R1(config-line)# access-class MGMT-ONLY in # μόνο από το mgmt subnet R1(config-line)# login local # ή AAA R1(config-line)# exec-timeout 10 0 # auto-logout αδρανών sessions R1(config-line)# exit # Θωράκισε το ίδιο το SSH: μόνο v2, ισχυρά keys, μικρή χάρη, λιγότερες προσπάθειες R1(config)# ip ssh version 2 R1(config)# ip ssh time-out 60 R1(config)# ip ssh authentication-retries 3 R1(config)# crypto key generate rsa modulus 4096 # 2048 ελάχιστο, 4096 καλύτερο
03
Το legacy IOS έρχεται με έναν σωρό υπηρεσίες που είναι επιφάνεια επίθεσης και τίποτα άλλο. Απενεργοποίησέ τες. Αυτό το block είναι καθαρή μείωση κινδύνου με μηδενικό μειονέκτημα σε ένα σύγχρονο δίκτυο.
R1(config)# no ip http server # web mgmt σε καθαρό κείμενο R1(config)# no ip http secure-server # αν δεν το χρησιμοποιείς R1(config)# no service pad R1(config)# no ip finger R1(config)# no ip bootp server R1(config)# no service config R1(config)# no cdp run # ή τουλάχιστον απενεργοποίησέ το σε θύρες WAN/edge # Ανά interface, σε ό,τι βλέπει χρήστες/μη έμπιστα: R1(config)# interface GigabitEthernet0/0 R1(config-if)# no ip redirects R1(config-if)# no ip unreachables R1(config-if)# no ip proxy-arp R1(config-if)# no lldp transmit
Το CDP και το LLDP κάνουν broadcast το μοντέλο, την έκδοση IOS, και το management IP της συσκευής σε κάθε γείτονα — χρυσός για έναν επιτιθέμενο που χαρτογραφεί το δίκτυο, και κάτι που ένας pentester αρπάζει σε δευτερόλεπτα από μια ζωντανή θύρα. Είναι γνήσια χρήσιμα εσωτερικά (χαρτογράφηση rack, discovery τηλεφώνων), οπότε η ισορροπία είναι: κράτα τα ανοιχτά σε έμπιστα links switch-προς-switch και switch-προς-τηλέφωνο, και κλείσ' τα σε θύρες edge/WAN και θύρες που βλέπουν χρήστες (no cdp enable / no lldp transmit ανά interface). Ποτέ μην τρέχεις CDP προς το internet. Είναι κλασικό finding ακριβώς επειδή είναι ανοιχτό by default και σπάνια ελέγχεται.
04
Δύο υπηρεσίες που, αν είναι λάθος ρυθμισμένες, παραδίδουν τη συσκευή. SNMP μόνο σε v3· AAA με τοπικό fallback ώστε μια διακοπή RADIUS να μη σε κλειδώσει έξω. Και τα δύο χτίστηκαν νωρίτερα σε αυτή τη σειρά — εδώ είναι η θωρακισμένη μορφή.
# SNMP: v3 auth+priv, περιορισμένο στο NMS με ACL. ΚΑΘΟΛΟΥ κοινότητες v2c. R1(config)# no snmp-server community public # αφαίρεσε πρώτα τυχόν defaults R1(config)# no snmp-server community private R1(config)# snmp-server group MON v3 priv read MON-VIEW R1(config)# snmp-server user nms MON v3 auth sha AuthPass123 priv aes 128 PrivPass123 # AAA για admin logins, με ΤΟΠΙΚΟ fallback (μην κολλήσεις τον εαυτό σου έξω) R1(config)# aaa new-model R1(config)# aaa authentication login default group radius local R1(config)# aaa authorization exec default group radius local R1(config)# aaa accounting commands 15 default start-stop group radius # command accounting = ένα audit trail κάθε privileged εντολής που πληκτρολογήθηκε.
05
Το control plane είναι το CPU που τρέχει τη δρομολόγηση, απαντάει σε ARP, και τερματίζει το SSH. Πλημμύρισέ το — μια σάρωση, ένα DoS, ένα broadcast storm — και ο εγκέφαλος της συσκευής κολλάει ακόμα κι αν το data plane είναι μια χαρά. Το CoPP βάζει rate-limit στην κίνηση που πηγαίνει στο CPU.
# Κατηγοριοποίησε την κίνηση "punt to CPU" που θέλεις να περιορίσεις (management + ICMP) R1(config)# ip access-list extended CPP-MGMT R1(config-ext-nacl)# permit tcp 192.168.99.0 0.0.0.255 any eq 22 R1(config-ext-nacl)# exit R1(config)# class-map CPP-MGMT R1(config-cmap)# match access-group name CPP-MGMT R1(config-cmap)# exit R1(config)# policy-map CONTROL-PLANE-POLICY R1(config-pmap)# class CPP-MGMT R1(config-pmap-c)# police 64000 conform-action transmit exceed-action drop R1(config-pmap-c)# exit # Πρόσδεσέ το στο ίδιο το control plane R1(config)# control-plane R1(config-cp)# service-policy input CONTROL-PLANE-POLICY R1(config-cp)# end
Το CoPP είναι το ένα στοιχείο αυτής της λίστας που πρέπει να το πλησιάσεις προσεκτικά: ένας πολύ σφιχτός policer, ή κλάσεις που κατά λάθος ταιριάζουν τα hellos του πρωτοκόλλου δρομολόγησης / SSH / ARP, μπορούν να σπάσουν την ικανότητα της συσκευής να δρομολογεί ή να διαχειρίζεται — το ισοδύναμο του control-plane με το να πυροβολήσεις τον πιλότο. Ξεκίνα επιτρεπτικά: κάνε police μόνο ξεκάθαρα καταχρηστικές κλάσεις, άφησε γενναιόδωρο το class class-default, και παρακολούθησε τους μετρητές show policy-map control-plane για λίγο πριν σφίξεις. Σε χαμηλότερου επιπέδου εξοπλισμό SMB μπορεί να μη χρειάζεται καθόλου· το ίδιο το hardware punt-limiting της πλατφόρμας συχνά αρκεί. Βάλ' το σε ένα audit, αλλά συντόνισέ το, μην το κάνεις paste.
06
Για να ελέγξεις μια συσκευή που δεν έχτισες εσύ, δεν διαβάζεις όλο το config — κάνεις grep για τα σημάδια κινδύνου. Αυτά τα πέντε reads βγάζουν στην επιφάνεια σχεδόν κάθε αδυναμία management-plane.
| Εντολη | Ψαξε για |
|---|---|
| show run | include transport|telnet | Οποιοδήποτε transport input telnet — θα έπρεπε να είναι μόνο ssh. |
| show run | include snmp-server community | Οποιαδήποτε κοινότητα v2c, ειδικά public/private. |
| show run | include password|secret | Διαπιστευτήρια type-0/type-7 που φυλάνε πραγματική πρόσβαση. |
| show run | section line vty | Λείπει access-class, λείπει timeout, επιτρέπεται telnet. |
| show ip http server status | HTTP server ενεργό ενώ δεν θα έπρεπε. |
| show run | include http server|cdp run|proxy-arp | Αχρείαστες υπηρεσίες ακόμα ανοιχτές. |
Αυτό το post είναι η ραχοκοκαλιά ασφάλειας όλης της σειράς μαζεμένη σε ένα runbook: SSH από το First Contact, VTY access-class από τα ACL, SNMPv3 από το Observability, η self-zone από το ZBF, και οι έλεγχοι L2 από την Ασφάλεια Switch. Κράτα το ως template config με τα κομμάτια που αλλάζουν ανά site (mgmt subnet, IP RADIUS, keys) ως κενά προς συμπλήρωση, και κάθε νέα συσκευή παίρνει την ίδια θωρακισμένη βάση σε λίγα λεπτά. Η συνέπεια είναι από μόνη της ένας έλεγχος ασφάλειας — η συσκευή που κάποιος ρύθμισε «γρήγορα, μόνο αυτή τη φορά» είναι αυτή που πέφτει.
Συμπερασματα
login block-for, και ποτέ μην εμπιστεύεσαι ένα string type-7.access-class στο mgmt subnet, idle timeouts, ισχυρά SSH keys. Έτσι φτάνει το δίκτυο τη συσκευή.show run | include βγάζουν στην επιφάνεια σχεδόν κάθε αδυναμία· ένα συνεπές θωρακισμένο template τις αποτρέπει.Αυτή είναι η ακριβής λίστα ελέγχου που τρέχω ως επί πληρωμή audit θωράκισης, μαζί με τους ελέγχους Layer-2 και traffic-plane από τον υπόλοιπο της σειράς. Παίρνεις μια αναφορά ευρημάτων ταξινομημένη με βάση το τι έχει πραγματικά σημασία, όχι ένα PDF 40 σελίδων που δεν διαβάζει κανείς.
Κλεισε μια Discovery Call →