English · Ελληνικά
Το RouterOS είναι ισχυρό και, εργοστασιακά, φλύαρο — μισή ντουζίνα υπηρεσίες management ακούνε, το MAC-Winbox απαντά σε κάθε port, το neighbour discovery κάνει broadcast το μοντέλο σε όποιον είναι στο καλώδιο. Αυτό είναι το πέρασμα θωράκισης management-plane που τρέχω σε κάθε MikroTik πριν πάει live, το ακριβές αντίστοιχο του post θωράκισης της Cisco, και η λίστα διορθώσεων στην οποία συνεχώς δείχνει πίσω ο επιθετικός σύντροφός του.
Οι περισσότεροι συμβιβασμοί MikroTik δεν είναι έξυπνοι — είναι ένα port Winbox αφημένο εκτεθειμένο στο internet και μια παλιά έκδοση RouterOS, ή μια υπηρεσία management που κανείς δεν έκλεισε. Η συσκευή υπερασπίζεται καλά το δίκτυο by default αλλά δεν υπερασπίζεται τον εαυτό της εκτός αν της το πεις. Αυτό το post κλείνει το management plane: κλάδεψε τις υπηρεσίες που ακούνε, χτίσε ένα firewall input-chain που προστατεύει τον router (όχι μόνο την κίνηση που περνά μέσα του), κλείδωσε χρήστες και SSH, και βούλωσε τις επιφάνειες discovery/MAC-server που δίνουν σε έναν επιτιθέμενο δωρεάν χάρτη.
Η οργανωτική ιδέα είναι η ίδια με το Cisco IOS: Θωρακιση Management-Plane: το control plane — το πώς φτάνεις και διαχειρίζεσαι το box — είναι ξεχωριστός, υψηλότερης αξίας στόχος από το data plane, και αξίζει τη δική του στάση deny-by-default. Κάθε ενότητα εδώ αντιστοιχεί σε μια τεχνική στο Επιθεσεις σε MikroTik Εξοπλισμο.
01
Το RouterOS ξεκινά αρκετές υπηρεσίες management by default — Telnet, FTP, το HTTP UI, το API — τις περισσότερες από τις οποίες δεν θα χρησιμοποιήσεις ποτέ και η καθεμία είναι επιφάνεια επίθεσης. Κλείσε τα πάντα εκτός από SSH και WinBox, και μετακίνησε το SSH από το 22.
> /ip service print # Σκότωσε εντελώς τα cleartext και αχρησιμοποίητα πρωτόκολλα management: > /ip service disable telnet,ftp,www,www-ssl,api,api-ssl # Κράτα SSH (μετακινημένο από το 22) και Winbox, και δέσε τα δύο μόνο στο subnet mgmt: > /ip service set ssh port=2200 address=10.10.99.0/24 > /ip service set winbox address=10.10.99.0/24
Τα api και api-ssl φαίνονται αβλαβή αλλά είναι πλήρη interfaces config — ό,τι μπορείς να κάνεις στο terminal, μπορεί να το κάνει το API. Αν δεν τρέχεις εργαλείο αυτοματισμού ή dashboard πάνω σε αυτό το box, απενεργοποίησε και τα δύο. Αν το κάνεις (δες Διαχειριση ενος Fleet), χρησιμοποίησε μόνο api-ssl, δεμένο στη διεύθυνση του host αυτοματισμού — ποτέ το απλό api, που στέλνει credentials σε μορφή τετριμμένα ανακτήσιμη.
02
Η chain forward φιλτράρει κίνηση που περνά μέσα· η chain input φιλτράρει κίνηση με προορισμό τον router. Αυτή είναι που σταματά το internet από το να μιλάει με τα management ports σου. Χτίσ' την deny-by-default.
# 1. Fast-path ό,τι επιτρέπεται ήδη· ρίξε προφανώς κακό state. > /ip firewall filter add chain=input connection-state=established,related action=accept add chain=input connection-state=invalid action=drop # 2. Επίτρεψε management ΜΟΝΟ από την έμπιστη source λίστα, και ICMP. add chain=input src-address-list=MGMT action=accept comment="mgmt in" add chain=input protocol=icmp action=accept # 3. Ό,τι άλλο προς τον router ρίχνεται — ακόμα και από το WAN. add chain=input action=drop comment="default deny to router" # Όρισε ποιος είναι έμπιστος (το jump host / subnet admin σου): > /ip firewall address-list add list=MGMT address=10.10.99.0/24
Με μια default-drop input chain, δεν έχει πια σημασία ότι ακούει το Winbox — το internet δεν μπορεί να το φτάσει. Οι περιορισμοί address= επιπέδου-υπηρεσίας από το §01 είναι defence-in-depth από πάνω. Αν κάνεις μόνο ένα πράγμα από αυτό το post, κάνε αυτό: ένας router χωρίς αυθόρμητο inbound προς τον εαυτό του είναι δραματικά πιο δύσκολο να δεχτεί επίθεση, τελεία.
03
Ονομαστικοί λογαριασμοί, ομάδες ελάχιστου προνομίου, SSH βασισμένο σε κλειδιά, και ισχυροί ciphers. Ο default admin θα έπρεπε να έχει ήδη φύγει από το First Contact· εδώ τελειώνουμε τη δουλειά.
# Μια read-only ομάδα για logins monitoring/NOC: > /user group add name=readonly policy=read,winbox,test,!write,!policy > /user add name=noc group=readonly password="..." # Κλειδιά SSH αντί για passwords για τον admin, μετά απαίτησέ τα: > /user ssh-keys import user=netadmin public-key-file=id_ed25519.pub > /ip ssh set strong-crypto=yes always-allow-password-login=no
04
Δύο ευκολίες του RouterOS λειτουργούν και ως δωρεάν recon και ως δρόμος backdoor: το neighbour discovery (MNDP/CDP/LLDP) διαφημίζει το box, και ο MAC-server απαντά WinBox/telnet μέσω Layer 2 σε κάθε interface — μαζί με μη έμπιστα.
# Κάνε discover/advertise μόνο σε μια interface list που ελέγχεις: > /interface list add name=MGMT-IF > /interface list member add list=MGMT-IF interface=bridge > /ip neighbor discovery-settings set discover-interface-list=MGMT-IF # MAC-telnet και MAC-Winbox: περιόρισέ τα στην interface list mgmt. > /tool mac-server set allowed-interface-list=MGMT-IF > /tool mac-server mac-winbox set allowed-interface-list=MGMT-IF > /tool mac-server ping set enabled=no # Απενεργοποίησε τον bandwidth-test server (μαγνήτης κατάχρησης και DoS): > /tool bandwidth-server set enabled=no # Και το RoMON, εκτός αν το τρέχεις σκόπιμα σε έμπιστο segment: > /tool romon set enabled=no
05
Κάθε μαζικός συμβιβασμός MikroTik στην πράξη ανάγεται σε ένα management port εκτεθειμένο στο internet σε unpatched box. Πες το δυνατά: το Winbox (8291), το SSH, και το API ποτέ δεν κοιτάζουν το WAN.
Το διαβόητο bug directory-traversal του Winbox (CVE-2018-14847) άφηνε τους επιτιθέμενους να διαβάζουν credentials από εκτεθειμένο port χωρίς auth, και τροφοδότησε τα botnets VPNFilter και Meris. Έχει μπει patch από καιρό — αλλά το μάθημα δεν είναι «κάνε patch», είναι «μην εκθέτεις καθόλου το management plane». Νέα bugs θα έρθουν· ένα port Winbox που δεν φτάνει το internet είναι άτρωτο σε αυτά που δεν έχουν γραφτεί ακόμα. Κράτα το RouterOS ενημερωμένο (αναβαθμίσεις) και κράτα το 8291/2200/API εκτός WAN με την input chain του §02. Φτάσ' τα μέσω VPN — WireGuard — αντί για αυτό.
Βασικα Συμπερασματα
input chain είναι όλο το παιχνίδι — προστατεύει τον router ανεξάρτητα από το τι ακούει. Χτίσ' την πρώτη.Θωρακίζω και κάνω audit estates RouterOS και Cisco — lockdown management-plane, review firewall, έλεγχοι έκθεσης — και σου δείχνω ακριβώς τι ήταν προσβάσιμο από το internet πριν το audit, όχι μόνο τι διόρθωσα μετά.
Κλεισε μια Discovery Call →