CLOUD CONCEPT
Νερατζιωτίσσης 15, Μαρούσι, Αθήνα, 15124, Αττική
+30 211 8005 401
info@c2.gr
Είναι γνωστό σε όλους ότι το wordpress εκτός από το δημοφιλέστερο CMS στο κόσμο, είναι και το πιο εκτεθειμένο σε επιθέσεις ακριβώς λόγω της δημοφιλίας του. Υπάρχουν Online αμέτρητοι οδηγοί και εγχειρίδια για το πως να ασφαλίσετε το wordpress σας αλλά ακόμα και να εφαρμόσετε αυτά που λένε, είναι στατιστικά σχεδόν βέβαιο ότι κάποια στιγμή θα βρεθείτε προ της δυσάρεστης εκπλήξεως το wordpress σας να έχει γίνει compromise. Αυτό λοιπόν το άρθρο δεν θα σας δείξει τα best practices που μπορείτε να βρείτε Online για να προστατέψετε το wordpress σας γιατί θεωρούμε ότι ήδη τα έχετε εφαρμόσει όπως χρήση ισχυρών passwords, χρήση SSL, τακτικά updates κ.α., αλλά μια έξυπνη στρατηγική που μπορείτε να εφαρμόσετε για να κοιμάστε αρκετά πιο ήσυχοι.
Πριν ξεκινήσουμε όμως να εξηγούμε πως θα προστατέψετε το wordpress σας, πρέπει πρώτα να σας εξηγήσουμε πως γίνεται η πλειοψηφία των defacements στα websites. Είναι κοινά αποδεκτό ότι το σημαντικότερο πράγμα για την ασφάλεια ενός wordpress είναι να είναι πάντα ενημερωμένος ο πυρήνας του (το ίδιο το wordpress) αλλά και όλα τα Plugins του. Είναι όμως επίσης αποδεκτό ότι η πλειοψηφία του κόσμου είναι αμελής στο θέμα των updates.
SQL Injection
Είναι ένας τύπος επίθεσης κατά τον οποίο, ο επιτιθέμενος εκμεταλλεύεται αδυναμία του κώδικα του site (του Core ή κάποιου Plugin) ώστε να τροποποιήσει τα δεδομένα της βάσης μας, συνήθως αλλάζοντας ή προσθέτοντας κάποιον χρήστη στο wordpress μας και στην συνέχεια πραγματοποιώντας Login στο διαχειριστικό του site. Από εκεί λοιπόν μπορεί πλέον να δράσει ανενόχλητος στο wordpress μας. Για την προστασία από τέτοιου είδους επιθέσεις το wordpress hosting πακέτο μας θα πρέπει να διαθέτει ένα σύστημα ασφαλείας που ονομάζεται WAF η αλλιώς web application firewall. Το web application firewall σε αντίθεση με το παραδοσιακό firewall λειτουργεί στο Layer 7 επίπεδο (http) και ελέγχει όλες τις κλήσεις που δέχεται το wordpress μας. Μόλις αντιληφθεί λοιπόν ότι ο επιτιθέμενος προσπαθεί να καλέσει ένα URL που προσπαθεί να πραγματοποιήσει SQL injection, το κόβει πριν καν φτάσει στο wordpress σας. Το WAF εκτός από τον hosting provider σας, μπορείτε να το βρείτε και στα CDNs όπως ή Cloudflare, συνήθως με επιπλέον χρέωση. Έτσι και ένα wordpress που έχουμε αμελήσει να ενημερώσουμε τον πυρήνα του και τα πρόσθετα του, προστατεύεται σε σημαντικό βαθμό αφού τα συστήματα αυτά δεν θα αφήσουν την κακόβουλη κίνηση να φτάσει ποτέ στο site σας και να του κάνει ζημιά.
Η αλήθεια είναι ότι τα τελευταία χρόνια οι επιθέσεις τύπου SQL injection έχουν περιοριστεί σημαντικά, κυρίως λόγω της χρησης frameworks που προστατεύουν σε σημαντικό βαθμό αλλά και λόγω της εξοικείωσης των ίδιων των προγραμματιστών με αυτό τον τρόπο επιθέσεων και η συγγραφή καλύτερου και πιο ασφαλούς κώδικα.
Backdoors
Ο με διαφορά πιο διαδεδομένος τρόπος όμως είναι το ανέβασμα backdoor στον server μας και συγκεκριμένα στο root του site μας. Πάμε να δούμε όμως πως ακριβώς γίνεται αυτή η επίθεση. Ο επιτιθέμενος εκμεταλλεύεται πάλι ευπάθεια ή του wordpress (σπανιότερα) ή κάποιου plugin (συντριπτική πλειοψηφία), και ανεβάζει στο site μας ένα αρχείο xxxxx.php το οποίο μπορεί να καλέσει στην συνέχεια εξωτερικά καλώντας το url από την ιστοσελίδα μας (πχ: https://www.mysite.com/xxxxx.php) Αυτό το backdoor αρχείο λοιπόν είναι πρακτικά μια mini εφαρμογή που δίνει δυνατότητα στον επιτιθέμενο να τρέξει shell στον server μας και να κάνει ενέργειες όπως να δει τα αρχεία μας, το config μας (αρα και τους κωδικούς μας) να τροποποιήσει αρχεία και δεδομένα της βάσης κ.α., κοινώς να πάρει τον πλήρη έλεγχο του wordpress μας.
Ώς γνωστό το wordpress για να μπορεί να λειτουργήσει σωστά, πρέπει ο webserver μας να έχει δικαίωμα να γράψει στο filesystem, ώστε να μπορεί να κάνει ενημερώσεις του πυρήνα και των Plugins, να δημιουργεί cache αρχεία αλλά και να μπορούν οι διαχειριστές να ανεβάζουν αρχεία οι ίδιοι όπως φωτογραφίες κ.α. Εκεί λοιπόν ξεκινάει και το “κακό” της υπόθεσης ότι δηλαδή εκτός από το vulnerability του wordpress ή του plugin, filesystem του επιτρέπει να ανεβάσει το κακόβουλο αρχείο. Όπως καταλαβαίνετε λοιπόν, αν το filesystem του site μας ήταν read-only δεν θα μπορούσε κάποιος, ακόμα και αν υπήρχε η δυνατότητα να εκμεταλλευτεί μια ευπάθεια του site μας, να ανεβάσει το backdoor αρα και να μας κάνει ζημιά.
Όλα καλά μέχρι εδώ, άλλα αν δεν μπορεί να γράψει κανείς στο filsystem, τότε δεν μπορούν και οι διαχειριστές του wordpress να ανεβάσουν υλικό. Ακούγεται λίγο σας εμπρός γκρεμός και πίσω ρέμα.
Πάμε να δούμε λοιπόν μια έξυπνη προσέγγιση στο θέμα αυτό που θα σας απαλλάξει από πολλούς μπελάδες. Έστω λοιπόν γυρνάμε το filesystem του wordpress μας σε read only.
Updates & Plugin Installation
Τα updates είναι μια λειτουργία που απαιτεί read-write access στο wordpress μας όπως και η εγκατάσταση plugins. Είναι όμως μια διαδικασία που δεν γίνεται διαρκώς αλλά την πραγματοποιούμε κατά κανόνα περιοδικά και χειροκίνητα. Οπότε θα μπορούσαμε να γυρίσουμε τα δικαιώματα του filesystem σε read-only, και να τα γυρνάμε σε read-write μόνο όταν κάνουμε update ή install κάποιο πρόσθετο και μόλις ολοκληρώσουμε να το ξαναγυρνάμε σε read-write. Έτσι με πολύ λίγο effort (ειδικά αν αυτοματοποιήσουμε την διαδικασία δικαιωμάτων σε ένα shell script) έχουμε ένα wordpress προστατευμένο διαρκώς και “εκτεθειμένο” για λίγα λεπτά που διαρκεί το update ή το Installation
Φωτογραφίες κλπ
Καλό το read only αλλά ένα wordpress χωρίς φωτογραφίες μάλλον θα ήταν άχρηστο. Η προσέγγιση λοιπόν εδώ είναι να δώσουμε όντως στους φακέλους που χρειάζονται read-right access όπως ο /wp-content/uploads/. Αυτό όμως είναι πολύ εύκολο να το μαντέψει και ο επιτιθέμενος και να ανεβάσει το php backdoor αρχείο του στο directory αυτό και να το καλέσει εξωτερικά με τα ίδια αποτελέσματα. Εδώ λοιπόν έρχεται το configuration του webserver μας.
Το backdoor που θα ανέβει πρέπει να μπορέσει να εκτελεστεί από τον web server. Οι φωτογραφίες και το στατικό περιεχόμενο του φακέλου uploads όμως όχι. Οπότε αυτό που κάνουμε είναι να τροποποιήσουμε το configuration του webserver μας κατάλληλα ώστε στο path αυτό να μην καλεί ποτέ τον php server μας και ως εκ τούτου χτυπώντας το url αυτό ο επιτιθέμενος να δει απλα τυπωμένο στον browser του το περιεχόμενο του αρχείου που ανέβασε σαν να ήταν ένα απλό txt.
Παρόμοια στρατηγική χρησιμοποιούμε και σε άλλα directories όπως πχ tmp directories, cache directories που πρέπει να είναι writable για να λειτουργεί το site μας. Αυτά κατά κανόνα είναι directories που δεν γίνονται access απευθείας από τον τελικό χρήστη άρα μπορείτε να ρυθμίστε τον web server σας να μην επιτρέπει την πρόσβαση σε αυτά όταν καλεστούν εξωτερικά.
Συμπέρασμα
Με σχεδόν μηδενική προσπάθεια, όλοι μπορούμε να έχουμε ένα ασφαλισμένο και πλήρως λειτουργικό wordpress που θα μπορεί να αποτρέψει ένα μεγάλο μέρος των επιθέσεων αφού το ίδιο το λειτουργικό του server μας θα το προστατεύει.
Μάθετε περισσότερα για τις υπηρεσίες μας εδώ.
Ακολουθήστε μας σε LinkedIn, Facebook & Instagram για να μένετε ενημερωμένοι!