Αρχείο ετικέτας server

OpenXS: ένα open-source exploit scanner για τους servers μου

Το 2025 η Way to the Web Ltd έκλεισε, και μαζί της σταμάτησε να υποστηρίζεται και το cxs (ConfigServer eXploit Scanner) – ένα εργαλείο που χρησιμοποιούσα χρόνια στους servers που διαχειρίζομαι. Το cxs συνδύαζε heuristic ανίχνευση exploits, virus scanning μέσω ClamAV, και ένα hook στο CSF firewall που έμπαζε αυτόματο ban σε IPs πίσω από κακόβουλα uploads. Ήταν proprietary και obfuscated, και πλέον χωρίς καν το licensing server του να λειτουργεί.

Αντί να ψάξω για κάποιον commercial αντικαταστάτη, αποφάσισα να φτιάξω κάτι δικό μου, ανοιχτού κώδικα. Έτσι ξεκίνησε το OpenXS.

Τι είναι

Η βασική ιδέα του OpenXS δεν είναι να φτιάξει από το μηδέν έναν ακόμα scanner, αλλά να λειτουργήσει σαν ένα harness γύρω από ήδη υπάρχοντα, ενεργά συντηρούμενα open-source projects – YARA (μέσω ενός fork του php-malware-finder), ClamAV, maldet, CSF – δίνοντάς τους ένα κοινό UX, ενιαίο reporting, quarantine και management, αντί να ζει το καθένα ξεχωριστά με το δικό του interface. Ένα Python daemon κρατάει compiled στη μνήμη το YARA ruleset και απαντάει σε scan requests μέσω ενός Unix socket, ώστε ένα upload να μην πληρώνει το κόστος αναμεταγλώττισης σε κάθε request.

Τι κάνει

  • YARA-based ανίχνευση obfuscated PHP, webshells και known exploit patterns
  • ClamAV και maldet (Linux Malware Detect) σαν επιπλέον, ανεξάρτητοι detectors
  • version checks (WordPress core, Composer packages, pending apt security updates)
  • file integrity monitoring με SHA-256 baseline σε configurable λίστα σημαντικών αρχείων
  • ανίχνευση “unknown core file” – ένα αρχείο κάτω από wp-admin/wp-includes που δεν ανήκει καθόλου στην επίσημη διανομή της εγκατεστημένης WordPress έκδοσης, ξεχωρίζοντας ένα απλό leftover από ένα upgrade που δεν ολοκληρώθηκε καθαρά από κάτι πραγματικά απροσδόκητο
  • “repair” ενέργεια που αντικαθιστά ένα modified γνωστό αρχείο (WordPress core/plugin, Composer package, Drupal core) με το official pristine περιεχόμενό του, με backup πρώτα στο quarantine
  • database content scan – σαρώνει το ίδιο το περιεχόμενο της βάσης (WordPress, Joomla/Mambo, Drupal 7) με το ίδιο YARA ruleset, για compromises που ζουν εξ ολοκλήρου μέσα στη βάση χωρίς να αγγίζουν ποτέ ένα αρχείο
  • real-time upload blocking μέσω mod_security, πριν καν αποδεχτεί ο web server το αρχείο
  • αυτόματο CSF ban σε IPs πίσω από confirmed κακόβουλα uploads
  • Webmin module για dashboard, scan history, quarantine management και εγκατάσταση με ένα κλικ

Που βρίσκεται τώρα

Το project είναι ακόμα σε πρώιμο στάδιο, αλλά τρέχει ήδη σε παραγωγή σε αρκετούς από τους servers που διαχειρίζομαι. Ο κώδικας είναι MIT licensed και δημόσιος στο GitHub:

https://github.com/mrpc/OpenXS

Αν διαχειρίζεστε κι εσείς Linux web hosting servers και ψάχνατε αντικαταστάτη για το cxs (ή απλά σας ενδιαφέρει το θέμα), ρίξτε μια ματιά – issues, feedback και pull requests είναι πάντα καλοδεχούμενα.

Μικρό downtime χθες

Χθες το βράδυ λίγο πριν τα μεσάνυχτα είχαμε ένα μικρό downtime του server με αποτέλεσμα να μην εμφανίζεται το blog μου ή κάποια από τα site μου (όπως το Pramnos.net).

Ο server δεν είχε πέσει, όμως για κάποιο λόγο κάποια διεργασία είχε πάρει φωτιά στον server καταναλώνοντας σχεδόν όλους τους πόρους του.

Ευτυχώς ένα μικρό restart επανάφερε την κατάσταση στο φυσιολογικό.

Χριστουγεννιάτικες ατυχίες

Τις τελευταίες μέρες η γκαντεμιά μου δε με άφησε να χαρώ τις γιορτές των Χριστουγέννων. Γενικά τα πάντα μου πήγαν στραβά!
Το αποκορύφωμα ήταν η πτώση του server μου από μια αστοχία στο hardware την παραμονή των Χριστουγέννων.
Ο server ήταν εκτώς λειτουργίας για όλη τη μέρα.
Το βράδυ όμως που επανήλθε, δεν δούλευε όπως θα έπρεπε… Είχε σκάσει όλη η mysql και τα site που έχω πάνω δε δούλευαν…
Το πρόβλημα βρίκα πολύ γρήγορα τι ήταν. Το partition που είχε τα δεδομένα της mysql είχε γεμίσει, με αποτέλεσμα η mysql να μη δουλεύει σωστά.
Το πρόβλημα διορθώθηκε τελικά κάποια στιγμή χθες το βράδυ.
Αμέσως στείλαμε newsletter στα μέλη του site για ενημέρωση.
Σήμερα ξύπνησα το πρωί ήρεμος, πιστεύοντας πως όλα πήγαν καλά. Σιγά όμως μην πηγαίνανε…
Είδα ότι τα περισσότερα μέλη δεν μπορούσαν να δουν κάποιες ενότητες στο forum.
Το πρόβλημα διορθώθηκε βέβαια, αλλά ήταν ότι χειρότερο μετά την αποστολή του newsletter.
Αν συμπεριλάβουμε τώρα σε όλα αυτά το ότι τις μέρες των Χριστουγέννων η κοπέλα μου δούλευε βράδυ (μαγείρισα) και δε βγήκαμε, μπορώ να πω ότι ήταν τα χειρότερα Χριστούγεννα που έχω κάνει μέχρι τώρα 🙁
Δεν πειράζει, ελπίζω ότι θα μου πάει καλά η πρωτοχρονιά…

Χρόνια πολλά σε όλους!!!