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

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 είναι πάντα καλοδεχούμενα.

NetBeans Day Athens 2016

Στις 26 Αυγούστου θα πραγματοποιηθεί στην Αθήνα ημερίδα σχετικά με το NetBeans.

Για όσους δε γνωρίζουν, το NetBeans είναι ένα φανταστικό IDE, αρχικά για Java, αλλά αργότερα έγινε εξαιρετική επιλογή και για Web Development – είναι ένα πολύ δυνατό εργαλείο για προγραμματισμό σε PHP, αλλά και javascript, html5 κλπ.  Υποστηρίζει όλες τις σύγχρονες βιβλιοθήκες, έχει ένα μεγάλο οικοσύστημα με plugins για συνεργασία με εξωτερικά εργαλεία (Bug trackers, version control systems, continuous integration systems κλπ) και φυσικά είναι open source.

Προφανώς θα είμαι εκεί, είναι μια ευκαιρία μεταξύ των άλλων για γνωριμία με ανθρώπους που μιλάμε εδώ και κάποια χρόνια στην κοινότητα του Netbeans (εδώ και κάποια χρόνια συμμετέχω σταθερά στην ομάδα NetCat που κάνει όλο το testing του NetBeans).

Παραθέτω την ανακοίνωση. Για περισσότερες πληροφορίες και δήλωση συμμετοχής κάντε κλικ εδώ.

Οι ημερίδες NetBeans λαμβάνουν χώρα σε διάφορες χώρες ανά τον κόσμο, από το JavaOne2014, όπου συνελήφθη η ιδέα. Πρόκειται για θέματα που αφορούν το NetBeans IDE και την πλατφόρμα NetBeans Rich Client, καθώς και τη γλώσσα προγραμματισμού Java (αλλά και άλλες γλώσσες που υποστηρίζονται από το NetBeans).

Η Κοινότητα του NetBeans σε συνεργασία με τον Κόμβο Καινοτομίας και Επιχειρηματικότητας της Τεχνόπολης Δήμου Αθηναίων, σας προσκαλούν στις 26 Αυγούστου σε μια ελεύθερη εκδήλωση σχετικά με το NetBeans IDE και την πλατφόρμα NetBeans Rich Client. Θα έχετε την ευκαιρία να ενημερωθείτε για τις τελευταίες εξελίξεις σχετικά με το NetBeans IDE και την πλατφόρμα NetBeans από ειδικούς του χώρου.

Ημερήσια διάταξη:

9:00-9:30: Εγγραφές, καφές

9:30-10:00: Welcome and NetBeans roadmap (Geertjan Wielenga: NetBeans Product Manager, Oracle)

10:00-11:30: Oracle JET – workshop (Geertjan Wielenga: NetBeans Product Manager, Oracle)

11:30-12:00: NetBeans and Java 9 support (Geertjan Wielenga)

12:00-13:00: Μεσημεριανό διάλειμμα

13:00-14:30: Developing mixed Java/Groovy projects with Gradle using Netbeans – workshop (Κώστας Σαϊδής: Niovity)

14:30-15:15: WildFly and Openshift plugins for NetBeans – workshop (Emmanuel Hugonnet: RedHat)

15:15-15:30: Διάλειμμα

15:30-16:15: Othelo game using NetBeans, Swing and Artificial Intelligence (ΔημήτριοςΜενδρινός)

16:15-17:00: Converting a Swing application to JavaFX and Dukescript – workshop (ΓιάννηςΚωστάρας)

16:45-17:30: NetBeans for PHP developers; real world examples (Αλέξης Διακογιάννης)

PHP Tips – Freestuff Tutorial

FreeStuff.grΣε όλα τα site για προγραμματιστές είναι δημοφιλή τα άρθρα του τύπου “10 συμβουλές για να κάνετε τον κώδικα σας πιο γρήγορο / πιο ασφαλή” κ.λ.π. Σκέφτηκα να κάνω κάτι τέτοιο για το freestuff.gr, με απλά tips που μπορεί να φανούν χρήσιμα σε κάποιους. Έτσι μάζεψα μερικές συμβουλές που έρχονται κυρίως από προσωπική εμπειρία, πιθανόν σε κάποια από αυτά να υπάρχει και αντίλογος, αλλά ακόμα και έτσι μπορεί να γίνουν αφορμή για συζήτηση.

Διαβάστε το βοήθημα στο  Freestuff.gr: PHP Tips.

Netbeans Netcat 7.1

Εδώ και κάποια χρόνια χρησιμοποιώ ως βασικό εργαλείο για τη δουλειά μου το Netbeans. Είναι εξαιρετικά ελαφρύ, τρέχει σε όλα τα λειτουργικά με τον ίδιο τρόπο και γενικά με έχει βολέψει πάρα πολύ.

Ανά διαστήματα, αντί για το κανονικό release χρησιμοποιούσα κάποια beta ή release candidate, ώστε να δώσω και εγώ το feedback μου στους προγραμματιστές. Μου αρέσει η λογική του να προσπαθώ να βοηθήσω στη βελτίωση του προϊόντος που χρησιμοποιώ. Άλλωστε είναι και open source, πράγμα που με κάνει να θέλω να το στηρίξω παραπάνω.

Τελευταία ήθελα να ασχοληθώ λίγο πιο ενεργά με την κοινότητα πίσω από το Netbeans. Έτσι ως πρώτο βήμα, μπήκα στην ομάδα Netcat 7.1, δηλαδή NetBeans Community Acceptance Testing program. Είναι ομάδα εθελοντών που δοκιμάζουν τις nightly builds του Netbeans σε πραγματικά projects και δίνουν feedback στην ομάδα των προγραμματιστών, είτε βρίσκοντας bugs, είτε κάνοντας συγκεκριμένες δοκιμές που έχουν ζητηθεί και ψηφίζοντας για κάποια features ώστε να μπουν στις release candidate.

Θεωρώ ότι αυτός είναι ο πιο απλός τρόπος συμμετοχής σε ένα open source project, καθώς το μόνο που χρειάζεται να κάνεις είναι να δοκιμάζεις το project σε πραγματικές συνθήκες, και να “ξοδεύεις” λίγο παραπάνω χρόνο στα reports που δίνεις.

Έτσι, πλέον δουλεύω σε όλα μου τα project, με τις nightly build του netbeans, βλέποντας και τα feature που θα μπουν στην έκδοση 7.1.

Καθώς γνωρίζω καλύτερα το project και τους ανθρώπους πίσω από αυτό, ίσως κάποια στιγμή να βρω έναν τρόπο να ασχοληθώ και πιο ενεργά (π.χ. με μεταφράσεις ή documentation, αφού προγραμματιστικά δεν μπορώ να βοηθήσω). Μέχρι τότε όμως νοιώθω ωραία που κάνω κάτι χρήσιμο.

Όποιος έχει λίγο χρόνο και διάθεση για πειραματισμό και θέλει να βοηθήσει, μπορεί να μπει στην ομάδα και να βάλει ένα χεράκι στις δοκιμές, από εδώ: http://wiki.netbeans.org/NetCAT.

PHP Tutorial: Αυτόματες αλλαγές του σχήματος της βάσης δεδομένων

Είχα πολύ καιρό να γράψω tutorial για το Freestuff, βρήκα όμως επιτέλους λίγο χρόνο το Σ/Κ που πέρασε και ετοίμασα μερικά. Ανέβασα ήδη το ένα από αυτά. Πρόκειται για έναν απλό τρόπο ενημέρωσης αλλαγών στη βάση δεδομένων κάθε φορά που κάνουμε upgrade της εφαρμογής μας, περίπου στη λογική του wordpress.

Μπορείτε να το διαβάσετε από εδώ: Freestuff.gr – Αυτόματες αλλαγές του σχήματος της βάσης δεδομένων.

Open Flash Chart

Τις τελευταίες μέρες για τις ανάγκες ενός project που ετοιμάζω για έναν πελάτη έπρεπε να δημιουργήσω κάποια γραφήματα. Αρχική μου σκέψη για να γλιτώσω χρόνο από το development ήταν να χρησιμοποιήσω το Google Chart API, το οποίο δίνει με πολύ εύκολο τρόπο τη δυνατότητα να ενσωματώσει κάποιος στη σελίδα του μια σειρά από γραφήματα.
Μέχρι ένα βαθμό με κάλυπτε, δέχεται αρκετά μεγάλη παραμετροποίηση, είναι πολύ εύχρηστο και φυσικά έχει πολύ καλό design.
Όμως σκέφτηκα να ψάξω μήπως βρω κάποιο καλύτερο framework – το οποίο να ενσωματώνεται στο project μου και όχι να κάνω κλήσεις σε τρίτα site.
Τελικά έπεσα πάνω στο Open Flash Chart, ένα open source project, το οποίο δημιουργεί γραφήματα σε flash, ενώ παρέχει βιβλιοθήκες για τον χειρισμό τους σε όλες τις δημιφιλείς scripting γλώσσες, όπως την PHP που χρησιμοποιώ.
Κυκλοφορούν μάλιστα δύο εκδόσεις του, η δεύτερη πολύ πιο βελτιωμένη, αλλά παράλληλα συντηρείται η πρώτη που είναι πιο απλή στο χειρισμό.
Τελικά χρησιμοποιώ αυτό. Όποιος χρειάζεται κάποιο εντυπωσιακό framework για να δημιουργεί charts, ας ρίξει μια ματιά.