Tip: Start typing to get instant search results.
Τα αρχεία .htaccess (Hypertext Access) αποτελούν αρχεία ρυθμίσεων που χρησιμοποιούνται για να δίνουν οδηγίες στον web server σχετικά με τον τρόπο λειτουργίας του.
Σε όλους τους dedicated servers μας επιλέγουμε τη χρήση του NGINX web server. Ωστόσο, στα πλάνα managed hosting που διαθέτουν hosting panel, όπως το shared hosting και το semi-dedicated hosting, λειτουργεί παράλληλα με τον NGINX και Apache web server με LiteSpeed PHP API module, γεγονός που καθιστά εφικτή τη χρήση των αρχείων .htaccess για δική σας ευκολία.
Παρακάτω εστιάζουμε στη ισχυροποίηση της ασφάλειας και παρουσιάζουμε σημαντικούς κανόνες που μπορείτε να προσθέσετε στο .htaccess ειδικά για την ενίσχυση της ασφάλειας των WordPress website σας.
Προστασία κρίσιμων αρχείων
Ορισμένα αρχεία στο WordPress περιέχουν κρίσιμες πληροφορίες και δεν πρέπει να είναι προσβάσιμα από το διαδίκτυο.
Αρχείο wp-config.php
Ένα τέτοιο αρχείο είναι το wp-config.php το οποίο περιέχει για παράδειγμα τα στοιχεία σύνδεσης στη βάση δεδομένων. Προσθέτοντας το παρακάτω μπλοκ στο αρχείο .htaccess μπορούμε να περιορίσουμε την δημόσια πρόσβαση στο αρχείο wp-config.php
<Files wp-config.php>
Order allow,deny
Deny from all
</Files>
Κρυφά αρχεία
Τα κρυφά αρχεία είναι επίσης αρχεία τα οποία είναι καλό να μην είναι προσβάσιμα από το διαδίκτυο, όπως είναι και το ίδιο το .htaccess, το .git, το .user.ini και άλλα. Προσθέτοντας το παρακάτω μπλοκ στο αρχείο .htaccess μπορούμε να περιορίσουμε την δημόσια πρόσβαση σε όλα τα κρυφά αρχεία.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule (^|/)\. - [F]
</IfModule>
Άλλα ευαίσθητα αρχεία
Επίσης, μπορούμε να μπλοκάρουμε την πρόσβαση σε ένα σύνολο ευαίσθητων αρχείων με το παρακάτω μπλοκ.
<FilesMatch "^(readme\.html|license\.txt|wp-config\.php|wp-config-sample\.php|xmlrpc\.php|\.env|composer\.json|composer\.lock|package\.json|package-lock\.json)$">
Order allow,deny
Deny from all
</FilesMatch>
Προστασία φακέλου wp-includes
Ο φάκελος wp-includes περιέχει αρχεία του πυρήνα του WordPress όπως βιβλιοθήκες, functions και κλάσεις που χρησιμοποιεί εσωτερικά το σύστημα. Μπορούμε να προστατεύουμε την πρόσβαση στο συγκεκριμένο φάκελο. Ένας τρόπος να το κάνουμε αυτό είναι ο εξής:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>Σημείωση: Αυτοί οι κανόνες δεν επηρεάζουν τη λειτουργία του WordPress, καθώς το ίδιο το σύστημα φορτώνει τα αρχεία του wp-includes φακέλου εσωτερικά και όχι μέσω απευθείας HTTP αιτήματος.
Περιορισμός πρόσβασης στο WordPress Backend
Σε περίπτωση που διαθέτουμε στατική IP μπορούμε να εφαρμόσουμε έναν αποτελεσματικό κανόνα ασφαλείας για το WordPress περιορίζοντας την πρόσβαση στη σελίδα σύνδεσης του backend αποκλειστικά στη δική μας IP διεύθυνση.
Έτσι ένας επιτιθέμενος δεν θα μπορεί να φτάσει στη φόρμα του wp-login.php καθώς ο server θα του επιστρέφει απευθείας 403 Forbiddenαφού θα προσπαθεί να συνδεθεί από διαφορετική IP από την επιτρεπόμενη.
<Files wp-login.php>
Order deny,allow
Deny from all
Allow from 1.2.3.4
</Files>
Προστασία από SQL Injection & XSS
Οι επιθέσεις SQL Injection και XSS (Cross-Site Scripting) είναι από τις πιο συνηθισμένες μεθόδους επίθεσης σε web εφαρμογές.
Με την εισαγωγή του παρακάτω μπλοκ στο αρχείο .htaccess, ελέγχεται το query string κάθε αιτήματος για ύποπτο σχετικό περιεχόμενο και αν εντοπιστεί χαρακτηριστικό μοτίβο επίθεσης, μπλοκάρεται.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ - [F,L]
</IfModule>Σημαντικό: Ο κανόνας αυτός αποτελεί ένα επιπλέον επίπεδο άμυνας και δεν υποκαθιστά τη σωστή κωδικοποίηση και το sanitization των δεδομένων σε επίπεδο WordPress. Προτείνουμε να συνδυάζεται με plugins ασφαλείας (π.χ. Wordfence).
Απενεργοποίηση του XML-RPC
Το XML-RPC είναι ένα πρωτόκολλο επικοινωνίας που επιτρέπει σε εξωτερικές εφαρμογές να αλληλεπιδρούν με το WordPress. Παλαιότερα ήταν χρήσιμο, σήμερα όμως έχει αντικατασταθεί σε μεγάλο βαθμό από το REST API και για τους περισσότερους ιστότοπους δεν είναι απαραίτητο. Πολλές φορές παραμένει ενεργό από προεπιλογή και αποτελεί έναν από τους πιο συχνά εκμεταλλευόμενους φορείς επίθεσης στο WordPress.
Προσθέτοντας το παρακάτω μπλοκ περιορίζουμε την πρόσβαση στο αρχείο.
<Files xmlrpc.php>
Order allow,deny
Deny from all
</Files>
Προσοχή: Πριν απενεργοποιήσετε το XML-RPC, βεβαιωθείτε ότι δεν το χρησιμοποιεί κάποιο plugin ή υπηρεσία που έχετε εγκατεστημένη.
Περιορισμός HTTP μεθόδων
Ένα WordPress website χρειάζεται μόνο τρεις μεθόδους: GET για την ανάκτηση σελίδων, POST για την υποβολή φορμών, και HEAD για τεχνικούς ελέγχους από bots και browsers.
Προτείνουμε να αποτρέπετε μεθόδους όπως PUT, DELETE, TRACE και CONNECT ώστε να μην είναι εφικτή εκμετάλλευσή τους σε προσπάθεια επίθεσης στο website, ως εξής:
<LimitExcept GET POST HEAD>
Order allow,deny
Deny from all
</LimitExcept>Για περισσότερες πληροφορίες σχετικά με τρόπους χρήσης του αρχείου .htaccess μπορείτε να δείτε στο άρθρο μας.