Ένας εύκολος τρόπος για να προστατέψετε το Mikrotik σας από επιθέσεις

Θέλω να μοιραστώ με την κοινότητα έναν απλό και λειτουργικό τρόπο χρήσης του Mikrotik για να προστατεύσετε το δίκτυό σας και τις υπηρεσίες που «κοιτάζονται» από πίσω του από εξωτερικές επιθέσεις. Δηλαδή, μόνο τρεις κανόνες για να οργανώσετε ένα honeypot στο Mikrotik.

Ας φανταστούμε, λοιπόν, ότι έχουμε ένα μικρό γραφείο, με μια εξωτερική IP πίσω από την οποία υπάρχει ένας διακομιστής RDP για να εργάζονται οι εργαζόμενοι εξ αποστάσεως. Ο πρώτος κανόνας είναι, φυσικά, να αλλάξετε τη θύρα 3389 στην εξωτερική διεπαφή σε μια άλλη. Αλλά αυτό δεν θα διαρκέσει πολύ· μετά από μερικές ημέρες, το αρχείο καταγραφής ελέγχου διακομιστή τερματικού θα αρχίσει να εμφανίζει αρκετές αποτυχημένες εξουσιοδοτήσεις ανά δευτερόλεπτο από άγνωστους πελάτες.

Μια άλλη περίπτωση, έχετε κρυμμένο αστερίσκο πίσω από το Mikrotik, φυσικά όχι στη θύρα 5060 udp, και μετά από μερικές μέρες ξεκινά και η αναζήτηση κωδικού πρόσβασης... ναι, ναι, το ξέρω, το fail2ban είναι το παν, αλλά πρέπει ακόμα να δουλέψτε το... για παράδειγμα, το εγκατέστησα πρόσφατα στο ubuntu 18.04 και με έκπληξη ανακάλυψα ότι το out of the box fail2ban δεν περιέχει τρέχουσες ρυθμίσεις για αστερίσκο από το ίδιο πλαίσιο της ίδιας διανομής του ubuntu... και γρήγορες ρυθμίσεις στο google για τις έτοιμες "συνταγές" δεν λειτουργεί πλέον, οι αριθμοί για τις εκδόσεις αυξάνονται με τα χρόνια και τα άρθρα με "συνταγές" για παλιές εκδόσεις δεν λειτουργούν πλέον και καινούργια δεν εμφανίζονται σχεδόν ποτέ... Αλλά παρεκκλίνω...

Λοιπόν, τι είναι ένα honeypot με λίγα λόγια - είναι ένα honeypot, στην περίπτωσή μας, οποιαδήποτε δημοφιλής θύρα σε μια εξωτερική IP, οποιοδήποτε αίτημα σε αυτήν τη θύρα από έναν εξωτερικό πελάτη στέλνει τη διεύθυνση src στη μαύρη λίστα. Ολα.

/ip firewall filter
add action=add-src-to-address-list address-list="Honeypot Hacker" 
    address-list-timeout=30d0h0m chain=input comment="block honeypot ssh rdp winbox" 
    connection-state=new dst-port=22,3389,8291 in-interface=
    ether4-wan protocol=tcp
add action=add-src-to-address-list address-list="Honeypot Hacker" 
    address-list-timeout=30d0h0m chain=input comment=
    "block honeypot asterisk" connection-state=new dst-port=5060 
    in-interface=ether4-wan protocol=udp 
/ip firewall raw
add action=drop chain=prerouting in-interface=ether4-wan src-address-list=
    "Honeypot Hacker"

Ο πρώτος κανόνας για τις δημοφιλείς θύρες TCP 22, 3389, 8291 της εξωτερικής διεπαφής ether4-wan στέλνει την IP "επισκέπτη" στη λίστα "Honeypot Hacker" (οι θύρες για ssh, rdp και winbox είναι απενεργοποιημένες εκ των προτέρων ή έχουν αλλάξει σε άλλες). Το δεύτερο κάνει το ίδιο στο δημοφιλές UDP 5060.

Ο τρίτος κανόνας στο στάδιο πριν τη δρομολόγηση απορρίπτει πακέτα από "επισκέπτες" των οποίων η διεύθυνση srs περιλαμβάνεται στο "Honeypot Hacker".

Μετά από δύο εβδομάδες εργασίας με το σπίτι μου Mikrotik, η λίστα «Honeypot Hacker» περιελάμβανε περίπου μιάμιση χιλιάδες διευθύνσεις IP όσων τους αρέσει να «κρατούν τον μαστό» των πόρων του δικτύου μου (στο σπίτι, τη δική μου τηλεφωνία, mail, nextcloud , rdp). Οι επιθέσεις ωμής βίας σταμάτησαν, ήρθε η ευτυχία.

Στη δουλειά, δεν αποδείχθηκαν όλα τόσο απλά, εκεί συνεχίζουν να σπάζουν τον διακομιστή rdp με ωμούς κωδικούς πρόσβασης.

Προφανώς, ο αριθμός θύρας καθορίστηκε από τον σαρωτή πολύ πριν ενεργοποιηθεί το honeypot και κατά τη διάρκεια της καραντίνας δεν είναι τόσο εύκολο να ρυθμίσετε ξανά περισσότερους από 100 χρήστες, εκ των οποίων το 20% είναι άνω των 65 ετών. Στην περίπτωση που η θύρα δεν μπορεί να αλλάξει, υπάρχει μια μικρή συνταγή εργασίας. Έχω δει κάτι παρόμοιο στο Διαδίκτυο, αλλά υπάρχει κάποια πρόσθετη προσθήκη και τελειοποίηση:

Κανόνες για τη διαμόρφωση του Port Knocking

 /ip firewall filter
add action=add-src-to-address-list address-list=rdp_blacklist 
    address-list-timeout=15m chain=forward comment=rdp_to_blacklist 
    connection-state=new dst-port=3389 protocol=tcp src-address-list=
    rdp_stage12
add action=add-src-to-address-list address-list=rdp_stage12 
    address-list-timeout=4m chain=forward connection-state=new dst-port=3389 
    protocol=tcp src-address-list=rdp_stage11
add action=add-src-to-address-list address-list=rdp_stage11 
    address-list-timeout=4m chain=forward connection-state=new dst-port=3389 
    protocol=tcp src-address-list=rdp_stage10
add action=add-src-to-address-list address-list=rdp_stage10 
    address-list-timeout=4m chain=forward connection-state=new dst-port=3389 
    protocol=tcp src-address-list=rdp_stage9
add action=add-src-to-address-list address-list=rdp_stage9 
    address-list-timeout=4m chain=forward connection-state=new dst-port=3389 
    protocol=tcp src-address-list=rdp_stage8
add action=add-src-to-address-list address-list=rdp_stage8 
    address-list-timeout=4m chain=forward connection-state=new dst-port=3389 
    protocol=tcp src-address-list=rdp_stage4
add action=add-src-to-address-list address-list=rdp_stage7 
    address-list-timeout=4m chain=forward connection-state=new dst-port=3389 
    protocol=tcp src-address-list=rdp_stage6
add action=add-src-to-address-list address-list=rdp_stage6 
    address-list-timeout=4m chain=forward connection-state=new dst-port=3389 
    protocol=tcp src-address-list=rdp_stage5
add action=add-src-to-address-list address-list=rdp_stage5 
    address-list-timeout=4m chain=forward connection-state=new dst-port=
    3389 protocol=tcp src-address-list=rdp_stage4
add action=add-src-to-address-list address-list=rdp_stage4 
    address-list-timeout=4m chain=forward connection-state=new dst-port=
    3389 protocol=tcp src-address-list=rdp_stage3
add action=add-src-to-address-list address-list=rdp_stage3 
    address-list-timeout=4m chain=forward connection-state=new dst-port=3389 
    protocol=tcp src-address-list=rdp_stage2
add action=add-src-to-address-list address-list=rdp_stage2 
    address-list-timeout=4m chain=forward connection-state=new dst-port=3389 
    protocol=tcp src-address-list=rdp_stage1
add action=add-src-to-address-list address-list=rdp_stage1 
    address-list-timeout=4m chain=forward connection-state=new dst-port=3389 
    protocol=tcp 
/ip firewall raw
add action=drop chain=prerouting in-interface=ether4-wan src-address-list=
rdp_blacklist

Σε 4 λεπτά, ο απομακρυσμένος πελάτης επιτρέπεται να κάνει μόνο 12 νέα «αιτήματα» στον διακομιστή RDP. Μία προσπάθεια σύνδεσης είναι από 1 έως 4 «αιτήματα». Στο 12ο "αίτημα" - αποκλεισμός για 15 λεπτά. Στην περίπτωσή μου, οι εισβολείς δεν σταμάτησαν να χακάρουν τον διακομιστή, προσαρμόστηκαν στα χρονόμετρα και τώρα το κάνουν πολύ αργά, μια τέτοια ταχύτητα επιλογής μειώνει την αποτελεσματικότητα της επίθεσης στο μηδέν. Οι εργαζόμενοι της εταιρείας δεν αντιμετωπίζουν ουσιαστικά καμία ταλαιπωρία στην εργασία από τα μέτρα που ελήφθησαν.

Άλλο ένα μικρό κόλπο
Αυτός ο κανόνας ενεργοποιείται σύμφωνα με ένα πρόγραμμα στη 5 π.μ. και σβήνει στις XNUMX π.μ., όταν οι πραγματικοί άνθρωποι σίγουρα κοιμούνται και οι αυτοματοποιημένοι επιλογείς συνεχίζουν να είναι ξύπνιοι.

/ip firewall filter 
add action=add-src-to-address-list address-list=rdp_blacklist 
    address-list-timeout=1w0d0h0m chain=forward comment=
    "night_rdp_blacklist" connection-state=new disabled=
    yes dst-port=3389 protocol=tcp src-address-list=rdp_stage8

Ήδη στην 8η σύνδεση, η IP του εισβολέα βρίσκεται στη μαύρη λίστα για μια εβδομάδα. Ομορφιά!

Λοιπόν, εκτός από τα παραπάνω, θα προσθέσω έναν σύνδεσμο σε ένα άρθρο του Wiki με μια λειτουργική ρύθμιση για την προστασία του Mikrotik από σαρωτές δικτύου. wiki.mikrotik.com/wiki/Drop_port_scanners

Στις συσκευές μου, αυτή η ρύθμιση λειτουργεί μαζί με τους κανόνες honeypot που περιγράφονται παραπάνω, συμπληρώνοντάς τους καλά.

UPD: Όπως προτείνεται στα σχόλια, ο κανόνας απόθεσης πακέτων έχει μεταφερθεί σε RAW για να μειωθεί το φορτίο στο δρομολογητή.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο