Ενότητα 7 · 7.3
Σύνδεση: κωδικοί πρόσβασης, έλεγχος ταυτότητας δύο παραγόντων και brute force
Ενότητα 7: Ασφάλεια · Χρόνος ανάγνωσης: 9 λεπτά
Μαθησιακός στόχος: Μετά από αυτό το μάθημα θα μπορείτε να προστατεύσετε τη σύνδεση στον ιστότοπό σας με ισχυρούς κωδικούς πρόσβασης, έλεγχο ταυτότητας δύο παραγόντων και περιορισμό των προσπαθειών σύνδεσης, και θα γνωρίζετε τι είναι το xmlrpc.php.
Βασικές έννοιες: διαχειριστής κωδικών πρόσβασης, φράση πρόσβασης, μοναδικός κωδικός πρόσβασης, έλεγχος ταυτότητας δύο παραγόντων (2FA, TOTP), passkey, brute force, περιορισμός προσπαθειών σύνδεσης, wp-login.php με βάση τη διεύθυνση IP, xmlrpc.php, ονόματα χρήστη που διαρρέουν (REST, ?author=), κωδικοί πρόσβασης εφαρμογών
Ο κωδικός πρόσβασης: μακρύς και μοναδικός
Ένας καλός κωδικός πρόσβασης έχει δύο χαρακτηριστικά:
- Μακρύς: το μήκος μετράει περισσότερο από τους παράξενους χαρακτήρες. Μια φράση πρόσβασης από τέσσερις ή πέντε τυχαίες λέξεις (
κόσκινο-πιγκουίνος-οκτώβριος-φανάρι) είναι πιο ισχυρή και πιο εύκολη να θυμηθείτε από τοW8w00rd!. Η ολλανδική κυβερνητική εκστρατεία Veilig Internetten συνιστά έναν μοναδικό κωδικό πρόσβασης τουλάχιστον 12 χαρακτήρων, κατά προτίμηση μια φράση πρόσβασης. - Μοναδικός: να μη χρησιμοποιείται πουθενά αλλού. Το credential stuffing (μάθημα 7.1) λειτουργεί μόνο όταν επαναχρησιμοποιείτε έναν κωδικό πρόσβασης.
Κανείς δεν θυμάται δεκάδες μακρούς μοναδικούς κωδικούς πρόσβασης. Γι' αυτό χρησιμοποιήστε έναν διαχειριστή κωδικών πρόσβασης: ένα πρόγραμμα που τους δημιουργεί, τους αποθηκεύει και τους συμπληρώνει για εσάς. Έτσι χρειάζεται να θυμάστε μόνο έναν: αυτόν του ίδιου του διαχειριστή, τον οποίο προστατεύετε επίσης με έλεγχο ταυτότητας δύο παραγόντων.
Μπορείτε να ελέγξετε αν ένας κωδικός πρόσβασης εμφανίζεται σε γνωστή διαρροή δεδομένων στο haveibeenpwned.com. Αν η διεύθυνση email σας βρίσκεται σε μια διαρροή, αλλάξτε τον κωδικό πρόσβασης σε κάθε υπηρεσία όπου χρησιμοποιήσατε τον ίδιο κωδικό.
Έλεγχος ταυτότητας δύο παραγόντων
Με τον έλεγχο ταυτότητας δύο παραγόντων (2FA) χρειάζεστε κατά τη σύνδεση, εκτός από τον κωδικό πρόσβασης, κάτι επιπλέον: συνήθως έναν εξαψήφιο κωδικό από μια εφαρμογή στο τηλέφωνό σας (έναν authenticator, σύμφωνα με το πρότυπο TOTP). Ένας εισβολέας με τον κωδικό πρόσβασής σας δεν μπορεί τότε ακόμα να μπει.
Το WordPress δεν διαθέτει ενσωματωμένο έλεγχο ταυτότητας δύο παραγόντων. Τον προσθέτετε με ένα πρόσθετο. Υπάρχουν πολλά· ένα απλό είναι το Two Factor, που έχει δημιουργηθεί από συνεισφέροντες στο ίδιο το WordPress. Και τα πρόσθετα ασφαλείας το διαθέτουν συχνά. Κατά την επιλογή, προσέξτε:
- εφαρμογές TOTP και κωδικούς εφεδρείας (για την περίπτωση που χάσετε το τηλέφωνό σας)· οι κωδικοί μέσω email είναι πιο αδύναμοι, επειδή και το γραμματοκιβώτιό σας μπορεί να παραβιαστεί·
- δυνατότητα να γίνει υποχρεωτικό για διαχειριστές και συντάκτες·
- passkeys: σύνδεση με το δακτυλικό σας αποτύπωμα, το πρόσωπό σας ή ένα κλειδί ασφαλείας, χωρίς κωδικό πρόσβασης. Υπάρχουν και πρόσθετα γι' αυτό. Τα passkeys είναι ανθεκτικά στο phishing, επειδή λειτουργούν μόνο στον πραγματικό ιστότοπο.
Ενεργοποιήστε τον έλεγχο ταυτότητας δύο παραγόντων και σε όλα όσα βρίσκονται γύρω από τον ιστότοπό σας: το πάνελ φιλοξενίας σας, το email σας, τον καταχωρητή domain σας και τον διαχειριστή κωδικών πρόσβασής σας. Ένας εισβολέας που αναλαμβάνει το πάνελ φιλοξενίας σας δεν χρειάζεται τον κωδικό πρόσβασης του WordPress σας.
Brute force και περιορισμός προσπαθειών σύνδεσης
Ένας ανοιχτός ιστότοπος WordPress δέχεται όλη την ημέρα προσπάθειες σύνδεσης στο wp-login.php, συχνά με το όνομα χρήστη admin και λίστες συχνά χρησιμοποιούμενων κωδικών πρόσβασης. Με έναν μακρύ κωδικό πρόσβασης και 2FA δεν μπαίνουν μέσα, αλλά κάθε προσπάθεια κοστίζει υπολογιστική ισχύ στον server σας (μια πλήρη εκκίνηση του WordPress). Σε ένα μεγάλο κύμα, ο ιστότοπός σας γίνεται αργός.
Το ίδιο το WordPress δεν περιορίζει τον αριθμό των προσπαθειών. Αυτό που βοηθά, με σειρά «νωρίς σταματημένο»:
- Στον server: πολλοί πάροχοι φιλοξενίας μπλοκάρουν μια διεύθυνση IP που κάνει πολλές αποτυχημένες προσπάθειες σε σύντομο χρονικό διάστημα, ακόμα πριν ξεκινήσει το WordPress (με ένα firewall ή μια λειτουργία του webserver). Ρωτήστε τον πάροχο φιλοξενίας σας τι συμβαίνει.
- Το wp-login.php μόνο για τη δική σας διεύθυνση IP: με λίγες γραμμές στο
.htaccess(σε LiteSpeed και Apache):
<Files wp-login.php>
Require ip 192.0.2.10
</Files>Αυτό λειτουργεί καλά αν έχετε σταθερή διεύθυνση IP. Αν δεν έχετε (από το σπίτι, από το τηλέφωνό σας), τότε αποκλείετε τον εαυτό σας όταν αλλάζει η διεύθυνσή σας. Μια εναλλακτική είναι ένας επιπλέον κωδικός πρόσβασης στη σελίδα σύνδεσης (ένας «προστατευμένος φάκελος», basic authentication) με διαφορετικό κωδικό πρόσβασης από τον κωδικό πρόσβασης του WordPress σας.
- Ένα πρόσθετο που περιορίζει τις προσπάθειες: μετά από πέντε αποτυχημένες προσπάθειες, η διεύθυνση IP μπλοκάρεται για κάποιο διάστημα. Λειτουργεί, αλλά μόνο αφού το WordPress έχει ήδη ξεκινήσει, οπότε η υπολογιστική επιβάρυνση παραμένει.
Η απόκρυψη ή η μετονομασία της σελίδας σύνδεσης (για παράδειγμα /mijn-login αντί για /wp-login.php) μειώνει τον θόρυβο στο αρχείο καταγραφής σας. Δεν αποτελεί πραγματική ασφάλεια, και ορισμένα πρόσθετα και θέματα εμφάνισης αναμένουν την προεπιλεγμένη διεύθυνση. Εντάξει ως επιπλέον μέτρο, ποτέ αντί για έναν καλό κωδικό πρόσβασης και 2FA.
xmlrpc.php
Το xmlrpc.php είναι μια παλιά σύνδεση από την εποχή πριν από το REST API, μέσω της οποίας εφαρμογές και άλλοι ιστότοποι επικοινωνούν με το WordPress. Χρησιμοποιείται ακόμα από ορισμένες εφαρμογές, από το Jetpack και από μερικές συνδέσεις. Για τους περισσότερους ιστότοπους είναι περιττό.
Οι εισβολείς αγαπούν το xmlrpc.php, επειδή μπορείτε να δοκιμάσετε εκατοντάδες κωδικούς πρόσβασης ταυτόχρονα σε ένα μόνο αίτημα (με τη συνάρτηση system.multicall), και επειδή μπορεί να χρησιμοποιηθεί καταχρηστικά για επιθέσεις σε άλλους ιστότοπους (pingbacks). Τι κάνετε:
- Δεν τον χρησιμοποιείτε: μπλοκάρετέ τον. Ορισμένοι πάροχοι φιλοξενίας, μεταξύ αυτών και το WebOké, μπλοκάρουν το xmlrpc.php εξ ορισμού στον server. Διαφορετικά, με μια γραμμή στο
.htaccessή με ένα πρόσθετο ασφαλείας. - Τον χρησιμοποιείτε (για παράδειγμα για μια εφαρμογή που τον χρειάζεται): αφήστε τον ανοιχτό, αλλά φροντίστε για ισχυρούς κωδικούς πρόσβασης, 2FA και περιορισμό προσπαθειών. Οι σύγχρονες εφαρμογές χρησιμοποιούν συνήθως το REST API με κωδικό πρόσβασης εφαρμογής (μάθημα 3.3).
Ονόματα χρήστη που διαρρέουν
Στο μάθημα 3.3 είδατε ότι το WordPress εμφανίζει μια παράγωγη μορφή των ονομάτων χρήστη:
- το
https://example.com/?author=1ανακατευθύνει στο/author/<naam>/· - το
https://example.com/wp-json/wp/v2/usersεμφανίζει μια λίστα με τα slugs όλων όσων έχουν δημοσιεύσει κάτι.
Είναι σοβαρό αυτό; Ένα όνομα χρήστη δεν είναι κωδικός πρόσβασης. Με έναν μακρύ μοναδικό κωδικό πρόσβασης και 2FA, δεν έχει μεγάλη σημασία. Όμως δίνει σε έναν εισβολέα τα μισά στοιχεία σύνδεσης και διευκολύνει το στοχευμένο phishing. Λογικά μέτρα:
- δώστε στους διαχειριστές ένα όνομα χρήστη που δεν είναι το δημόσιο όνομά τους, και μη δημοσιεύετε με λογαριασμό διαχειριστή (μάθημα 3.3)·
- περιορίστε τη λίστα χρηστών στο REST API με ένα πρόσθετο ασφαλείας ή λίγες γραμμές κώδικα, αν δεν τη χρειάζεστε. Μην κλείνετε εντελώς το REST API: ο επεξεργαστής μπλοκ και πολλά πρόσθετα το χρειάζονται.
Κωδικοί πρόσβασης εφαρμογών
Οι κωδικοί πρόσβασης εφαρμογών (μάθημα 3.3) αποτελούν έναν ασφαλή τρόπο για να δώσετε πρόσβαση σε μια εφαρμογή ή σύστημα, όμως παρακάμπτουν τον έλεγχο ταυτότητας δύο παραγόντων σας: μια εφαρμογή με κωδικό πρόσβασης εφαρμογής δεν χρειάζεται κωδικό. Δημιουργήστε τους μόνο όταν είναι απαραίτητο, σε λογαριασμό με χαμηλό ρόλο, και ανακαλέστε τους όταν δεν χρησιμοποιείτε πλέον τη σύνδεση.
Σύνοψη
- Χρησιμοποιείτε μακρούς, μοναδικούς κωδικούς πρόσβασης (φράσεις πρόσβασης) σε έναν διαχειριστή κωδικών πρόσβασης.
- Ενεργοποιήστε τον έλεγχο ταυτότητας δύο παραγόντων, με ένα πρόσθετο στο WordPress και επίσης στο πάνελ φιλοξενίας σας, στο email σας και στον καταχωρητή domain σας.
- Σταματήστε τις προσπάθειες σύνδεσης όσο το δυνατόν νωρίτερα: στον server, με έναν κανόνα IP ή επιπλέον κωδικό πρόσβασης, ή με ένα πρόσθετο.
- Μπλοκάρετε το xmlrpc.php αν δεν το χρησιμοποιείτε.
- Τα ονόματα χρήστη που διαρρέουν δεν είναι καταστροφή, αλλά είναι μια ένδειξη: μη δημοσιεύετε ως διαχειριστής και περιορίστε τη λίστα χρηστών του REST αν δεν τη χρειάζεστε.
Κουίζ
Άσκηση
Άσκηση A7.3: Τι αποκαλύπτει ο ιστότοπός σας κατά τη σύνδεση; Συμπληρώστε τη διεύθυνση του ιστότοπού σας και αποδείξτε ότι είναι δικός σας (με τον κωδικό της άσκησης, ως εγγραφή TXT ή ως αρχείο). Το πρόγραμμα ελέγχει τρία πράγματα: αν το xmlrpc.php επιστρέφει μια λίστα συναρτήσεων (ανοιχτό) ή είναι μπλοκαρισμένο, αν το /wp-json/wp/v2/users εμφανίζει ονόματα χρήστη (slugs), και πού ανακατευθύνει το /?author=1. Συμπληρώστε αν χρειάζεστε το xmlrpc.php· αν όχι, τότε ένα ανοιχτό xmlrpc.php εμφανίζεται κόκκινο. Τα slugs που διαρρέουν εμφανίζονται πορτοκαλί με επεξήγηση.
Άσκηση D7.3: Ενεργοποίηση ελέγχου ταυτότητας δύο παραγόντων. Ενεργοποιήστε τον έλεγχο ταυτότητας δύο παραγόντων για όλους τους διαχειριστές του ιστότοπού σας WordPress, καθώς και στο πάνελ φιλοξενίας σας και στο email σας. Αποθηκεύστε τους κωδικούς εφεδρείας στον διαχειριστή κωδικών πρόσβασής σας. Σημειώστε για κάθε στοιχείο ότι είναι ενεργοποιημένο και καταγράψτε ποια μέθοδο χρησιμοποιείτε (εφαρμογή, passkey, email) και πού βρίσκονται οι κωδικοί εφεδρείας. Καταγράψτε επίσης πώς προστατεύετε επιπλέον το wp-login.php και γιατί επιλέγετε αυτόν τον τρόπο.
Άσκηση D7.3: Ενεργοποίηση ελέγχου ταυτότητας δύο παραγόντων
Αυτή την άσκηση την κάνετε μόνοι σας: κανείς δεν την ελέγχει. Σημειώστε τι έχετε κάνει και επισημάνετε την άσκηση ως ολοκληρωμένη.
Για τους διαχειριστές χρησιμοποιήστε κατά προτίμηση μια εφαρμογή ή passkey αντί μόνο email. Μια σταθερή διεύθυνση IP μπορείτε να την επιτρέψετε στο wp-login.php· με μεταβαλλόμενες διευθύνσεις ταιριάζει καλύτερα ο περιορισμός των προσπαθειών σύνδεσης.
Τα τικ και οι σημειώσεις σας παραμένουν μόνο σε αυτό το πρόγραμμα περιήγησης· δεν τα στέλνουμε πουθενά. Αν έχετε εγγραφεί, αποθηκεύουμε στο Τα μαθήματά μου μόνο ότι έχετε ολοκληρώσει την άσκηση.
Περαιτέρω ανάγνωση
Αυτά τα άρθρα περιγράφουν τα βήματα στα πάνελ του WebOké· σε άλλα πάνελ λειτουργούν με παρόμοιο τρόπο.
- Εγχειρίδιο DirectAdmin 3.7: Ασφαλείς κωδικοί πρόσβασης και τι κάνετε όταν διαρρεύσει ένας κωδικός πρόσβασης
- Επαλήθευση δύο βημάτων στο Το WebOké μου και ρύθμιση μιας εφαρμογής authenticator
- WordPress: δεν λειτουργεί η πρόσβαση στο xmlrpc.php
- Προστασία του wp-login.php στο WordPress
- Εγχειρίδιο DirectAdmin 15.9: Με κωδικό πρόσβασης προστατευμένοι φάκελοι
- Veilig inloggen (Veilig Internetten, ολλανδική κυβέρνηση): https://veiliginternetten.nl/veilig-inloggen/
- Brute force-aanvallen (developer.wordpress.org, Αγγλικά): https://developer.wordpress.org/advanced-administration/security/brute-force/
- Ρύθμιση επαλήθευσης δύο βημάτων για το WordPress
