Ασφάλεια

Η ασφάλεια του CodeHero.

Τρία επίπεδα βημάτων: Dev, Production και Fortress. Κάθε επίπεδο περιέχει το προηγούμενο. Είναι βήματα για εσάς, όχι διακόπτες στο panel: το CodeHero δίνει τις ίδιες προστασίες σε κάθε επίπεδο. Τα επίπεδα διαφέρουν σε όσα κάνετε εσείς — ποιος φτάνει στον server, ποια δεδομένα βάζετε σε αυτόν και πώς ξαναμπαίνετε.

Για το CodeHero 5.7.0.

Πριν από κάθε βήμα που κλείνει μια θύρα, ανοίγει το 2FA ή αλλάζει το SSH, διαβάστε το Μην κλειδωθείτε έξω.

Ισχύουν σε κάθε επίπεδο

  • Ένας ιδιοκτήτης ανά εγκατάσταση. Μη μοιράζεστε ποτέ τη σύνδεση στο panel.
  • Το panel μπορεί να κάνει τα πάντα στον server. Τρέχει ως χρήστης claude, με sudo χωρίς κωδικό, επειδή διαχειρίζεται τον server. Να φυλάτε τον κωδικό και το 2FA του panel όπως τον κωδικό root του server.
  • Το CodeHero δεν εγκαθιστά firewall και δεν αλλάζει ποτέ κανένα. Το επιλέγετε εσείς: η απλή λύση είναι το firewall του cloud σας ή του router σας.
  • Το CodeHero δεν αλλάζει ποτέ το SSH. Το SSH είναι δική σας απόφαση. Ορισμένα cloud δεν έχουν κονσόλα στον browser για να ξαναμπείτε.
  • Χρησιμοποιήστε δύο ονόματα domain: ένα για το panel (π.χ. panel.example.com) και ένα για τις προεπισκοπήσεις (π.χ. apps.example.com). Ο browser στέλνει τα cookies ενός site σε κάθε θύρα του ίδιου ονόματος· με δύο ονόματα, μια σελίδα project δεν λαμβάνει ποτέ τη σύνδεσή σας στο panel. Ορίστε και τα δύο στο Settings → Domains.
  • Οι κανόνες του firewall σας να ισχύουν και για IPv4 και για IPv6, αν ο server σας έχει IPv6.
  • Το προφίλ Production στο Settings → Performance ρυθμίζει ταχύτητα και μνήμη. Δεν είναι επίπεδο ασφάλειας.
ΕπίπεδοΓιαΔεδομέναΤο panel από το internet
DevΑνάπτυξη και δοκιμέςΜόνο δοκιμαστικάΜόνο από τις δικές σας IP
ProductionΤις ζωντανές εφαρμογές των πελατών σας, μια κυβερνητική εφαρμογήΠραγματικάΜόνο μέσα από το VPN του CodeHero
FortressΤην ελάχιστη έκθεσηΠραγματικάΜόνο μέσα από το VPN του CodeHero· και οι προεπισκοπήσεις

Επίπεδο 1 — Dev

Για ανάπτυξη και δοκιμές, με δοκιμαστικά δεδομένα. Μη βάζετε πραγματικά δεδομένα πελατών ή πραγματικούς κωδικούς παραγωγής σε server Dev.

Τι κάνετε

#ΒήμαΠούΓιατί
1Αποθηκεύστε στον password manager σας τους κωδικούς που έδειξε ο installer στο τέλος.Στο τέλος της εγκατάστασης. Αργότερα: /etc/codehero/credentials.conf (μόνο root).Τους χρειάζεστε και έξω από τον server.
2Αν ο server ήρθε από έκδοση πριν την 5.7.0 και μπαίνετε ακόμη με admin123, ορίστε δικό σας κωδικό.Η σελίδα «Set your password» ανοίγει μόνη της μετά από αυτή τη σύνδεση. Ζητά τον κωδικό ρύθμισης μιας χρήσης που έδειξε η αναβάθμιση σε ένα πλαίσιο (κονσόλα: sudo cat /etc/codehero/panel-setup-code).Οι παλαιότερες εκδόσεις δημοσίευαν αυτόν τον κωδικό. Ο κωδικός ρύθμισης δείχνει ότι είστε εσείς.
3Ορίστε το όνομα του panel και το όνομα των προεπισκοπήσεων.Settings → DomainsΗ σύνδεση του panel δεν φτάνει ποτέ σε σελίδα project.
4Πάρτε πραγματικό πιστοποιητικό και για τα δύο ονόματα.Settings → Certificates → Import Let's EncryptΟ browser ελέγχει ότι μιλά με τον δικό σας server.
5Διαβάστε το Μην κλειδωθείτε έξω. Μετά ανοίξτε το 2FA.Settings → Security → Enable 2FAΈνας κλεμμένος κωδικός μόνος του δεν ανοίγει το panel.
6Επιτρέψτε τις 9453 και 9454 μόνο από τις δικές σας IP.Το firewall του cloud σας ή ο router σαςΟι άγνωστοι δεν φτάνουν στη σελίδα σύνδεσης.
7Δώστε σε κάθε project ένα container.Project → Container Isolation (LXC) → Create ContainerΟ κώδικας του project τρέχει στο δικό του, θωρακισμένο container.
8Πατήστε Apply security σε κάθε container που φτιάχτηκε πριν την 5.7.0.Project → καρτέλα ContainerΗ αναβάθμιση δεν θωρακίζει τα παλιά containers.
9Χρησιμοποιείτε δοκιμαστικά δεδομένα σε tickets, προεπισκοπήσεις και στιγμιότυπα.Τα tickets σαςΤο κείμενο, ο κώδικας και τα στιγμιότυπα ενός ticket πηγαίνουν στον πάροχο AI του ticket.
10Βάζετε κωδικούς και κλειδιά στο Secrets του project.Project → 🔐 SecretsΠοτέ στο κείμενο ενός ticket ή στο chat.
11Εγκαθιστάτε τις ενημερώσεις.Updates (ο server, τα containers του, τα εργαλεία AI) · Settings → 📦 Manual Update (το CodeHero)Διορθώνονται γνωστά σφάλματα.
12Κάντε backup και κατεβάστε το σε άλλο μηχάνημα.Project → Backup & Restore → Backup History → DownloadΈνα αντίγραφο στον ίδιο server χάνεται μαζί του.

Τι κάνει ήδη το CodeHero

ΠροστασίαΑπό
Κάθε νέα εγκατάσταση παράγει τους κωδικούς του panel και των βάσεων. Δεν υπάρχει προεπιλεγμένος κωδικός.5.7.0
Η αναβάθμιση αντικαθιστά τους παλιούς δημοσιευμένους κωδικούς των βάσεων με νέους τυχαίους, μόνο όπου χρησιμοποιούνται ακόμη. Έναν κωδικό που διαλέξατε εσείς δεν τον αλλάζει ποτέ.5.7.0
Μια σύνδεση με τον παλιό κωδικό του panel admin123 ανοίγει μόνο το «Set your password». Ζητά έναν κωδικό ρύθμισης μιας χρήσης, που τον δείχνουν μόνο η έξοδος της αναβάθμισης και ο root του server (δεν ζητείται μετά από 2FA).5.7.0
Ένας νέος κωδικός του panel τερματίζει κάθε άλλη σύνδεση, τα ανοιχτά τερματικά της και το «Remember this device». Η αναβάθμιση στην 5.7.0 τερματίζει κάθε σύνδεση από πριν.5.7.0
Λάθος κωδικοί: 5 για έναν λογαριασμό από μία διεύθυνση κλειδώνουν αυτόν τον λογαριασμό από αυτή τη διεύθυνση για 30 λεπτά. 20 από μία διεύθυνση κλειδώνουν τη διεύθυνση. Οι άλλες διευθύνσεις δεν κλειδώνουν.5.7.0
2FA με εφαρμογή authenticator (TOTP). 5 λάθος κωδικοί κλειδώνουν. Η σελίδα του κωδικού ισχύει 5 λεπτά.2FA πριν την 5.7.0· τα όρια 5.7.0
Το panel απαντά μόνο μέσω HTTPS. Με domain και πραγματικό πιστοποιητικό ο browser μένει στο HTTPS (HSTS).5.7.0
Το nginx αφαιρεί το cookie σύνδεσης του panel από κάθε αίτημα προς ένα project. Μια αλλαγή (POST, PUT, DELETE) γίνεται δεκτή μόνο από τις σελίδες του ίδιου του panel.5.7.0
Το phpMyAdmin ανοίγει μόνο από συνδεδεμένο panel.πριν την 5.7.0
Η MySQL του server απαντά μόνο στον ίδιο τον server και στα containers του. Ένας αναβαθμισμένος server το πήρε, εκτός αν κάποιος λογαριασμός βάσης χρειαζόταν άλλο host· τότε το panel δείχνει ειδοποίηση και αποφασίζετε εσείς.πριν την 5.7.0
Μια προεπισκόπηση θέλει το κλειδί προεπισκόπησης του project της, σε κάθε αίτημα — και στα αιτήματα του ίδιου του server. Το nginx το ελέγχει για τη διαδρομή που πραγματικά σερβίρει. Τα εργαλεία ενός ticket στέλνουν μόνο το κλειδί του δικού τους project.5.7.0
Τα νέα containers είναι θωρακισμένα: AppArmor χωρίς nesting, φίλτρο seccomp, χωρίς τα επικίνδυνα capabilities, /proc/sys και /sys μόνο για ανάγνωση, καμία συσκευή του server.5.7.0
Το AI διαβάζει αρχεία μόνο μέσα στο project του. Οι εντολές του ελέγχονται κομμάτι προς κομμάτι. Αναζήτηση, αντιγραφή ή αρχειοθέτηση όλου του server ή του φακέλου όλων των projects απορρίπτεται.5.7.0
Ο browser και τα εργαλεία web ενός ticket φτάνουν μόνο στην προεπισκόπηση και στο container του δικού του project, με έλεγχο σε κάθε ανακατεύθυνση. Ο browser εμπιστεύεται μόνο το πιστοποιητικό προεπισκόπησης αυτού του server· κάθε άλλο πιστοποιητικό ελέγχεται κανονικά.5.7.0
Τα containers διαφορετικών projects δεν φτάνουν το ένα στο άλλο, εκτός αν ένα project επιτρέψει ένα άλλο στην καρτέλα Container («Allow access from»). Κάθε container χρησιμοποιεί μόνο τη δική του διεύθυνση: δεν μπορεί να παριστάνει άλλο container ή τον server.5.7.0
Το διαγνωστικό ZIP του μενού Logs κρύβει κάθε μυστική τιμή και κάθε μορφή κλειδιού που γνωρίζει ([hidden]). Αν δεν μπόρεσε να διαβαστεί ένα αρχείο μυστικών, το manifest.json του γράφει "sanitized": "partial" και ονομάζει το αρχείο.5.7.0
Τα δηλωμένα secrets σας μένουν έξω από όσα βλέπει το AI. Ένα ticket δεν διαβάζει τα κλειδιά παρόχων της πλατφόρμας.πριν την 5.7.0
Κάθε έκδοση του CodeHero είναι υπογεγραμμένη. Το 📦 Manual Update εγκαθιστά μόνο υπογεγραμμένη έκδοση, και ποτέ παλαιότερη.5.7.0
ZIP backups, snapshots και εικόνες containers. Αντίγραφο ασφαλείας πριν από κάθε επαναφορά.πριν την 5.7.0

Όρια

  • Το φίλτρο των secrets δεν βλέπει τιμή μικρότερη από 8 χαρακτήρες, ούτε τιμή μέσα σε στιγμιότυπο.
  • Η θύρα των προεπισκοπήσεων (9867) είναι ανοιχτή σε όποιον αφήνει το firewall σας. Κάθε project το προστατεύει το κλειδί προεπισκόπησης.
Τι θα ρωτήσει ακόμη ένας ελεγκτής
Μπορείτε να συνδεθείτε αν χαθεί το κινητό με τον authenticator;
Δεν υπάρχουν backup codes. Κρατήστε τον «Manual entry code» του 2FA εκτός σύνδεσης ή βάλτε τον και σε δεύτερο authenticator. Η τελευταία λύση είναι η κονσόλα (δείτε 2FA).
Υπάρχει αντίγραφο έξω από τον server;
Μόνο όσα κατεβάζετε εσείς. Backups σε εξωτερικό χώρο (S3, SFTP) είναι στα σχέδια, δεν έχουν φτιαχτεί.
Ποιος φτάνει στο panel;
Όποιον αφήνει το firewall σας. Το CodeHero δεν φιλτράρει το internet για εσάς.
Μπορεί ένα project να βλάψει άλλο;
Τα containers είναι θωρακισμένα, και τα containers διαφορετικών projects δεν φτάνουν το ένα στο άλλο, εκτός αν το επιτρέψετε. Μοιράζονται όμως τον πυρήνα του server. Δεν υπάρχουν ακόμη όρια μνήμης ή CPU ανά container. Ένα project χωρίς container τρέχει τις εντολές του AI ως claude στον server.

Επίπεδο 2 — Production

Για τις ζωντανές εφαρμογές των πελατών σας και για μια κυβερνητική εφαρμογή. Μια κυβερνητική εφαρμογή χρειάζεται επιπλέον τη δική του απόφαση κινδύνου και αποδοχή του φορέα· αυτή η λίστα μόνη της δεν τη δίνει.

Τι κάνετε

Όλα όσα του Dev, και:

#ΒήμαΠούΓιατί
1Γράψτε ποια δεδομένα έχει κάθε project και ποιοι πάροχοι AI μπορούν να τα δουν.Τα δικά σας αρχείαΞέρετε τι φεύγει από τον server. Ένα τοπικό LLM στη δική σας συσκευή κρατά το κείμενο στο δίκτυό σας.
2Προσθέστε δύο συσκευές VPN: το laptop σας και έναν εφεδρικό υπολογιστή.Devices → + Device → σύνδεση CodeHero VPNΈνα χαμένο laptop δεν είναι ο μόνος σας δρόμος.
3Αφήστε το «What it reaches» στο «The server only» για κάθε συσκευή.Devices → η συσκευή → ManageΜια συσκευή που παραβιάζεται φτάνει μόνο στον ίδιο τον server.
4Κλείστε τις 9453 και 9454 προς το internet, με τη σωστή σειρά.Devices → Use the VPN to close your ports, μετά το firewall του cloud σαςΜόνο οι συσκευές του VPN σας φτάνουν στο panel και στο phpMyAdmin.
5Αποφασίστε ποιος πρέπει να βλέπει τις προεπισκοπήσεις (9867).Το firewall του cloud σαςΕπιτρέψτε τις IP των πελατών σας όπου γίνεται. Αλλιώς δείχνετε μόνο δοκιμαστικά δεδομένα στις προεπισκοπήσεις.
6Ελέγξτε κάθε container: «Applied», χωρίς nesting εκτός αν το project τρέχει Docker, μόνο τα port forwards που χρειάζεστε, και στο «Allow access from» τσεκαρισμένο μόνο ένα project που πρέπει να φτάνει σε αυτό.Project → καρτέλα ContainerΤο nesting, οι ανοιχτές θύρες και οι επιτρεπτοί γείτονες αδυνατίζουν τον διαχωρισμό.
7Φτιάχνετε σε ένα αντίγραφο staging με δοκιμαστικά δεδομένα. Το ζωντανό project αλλάζει μόνο μετά από έλεγχο.Ένα δεύτερο projectΗ ζωντανή εφαρμογή δεν είναι πάγκος δοκιμών του AI.
8Βάλτε Supervised ως προεπιλεγμένο τρόπο εκτέλεσης του ζωντανού project.Projects → επεξεργασία του project → Default Execution ModeΤο AI σας ρωτά πριν από κάθε εγγραφή.
9Κρατάτε κρυπτογραφημένα αντίγραφα των backups εκτός server. Δοκιμάστε μια επαναφορά ως νέο project.Backup History → Download · Projects → 📦 ImportΞέρετε ότι η επαναφορά δουλεύει και πόσο διαρκεί.
10Ανοίξτε τις αυτόματες ενημερώσεις ασφαλείας και τις ειδοποιήσεις.Updates → Automatic updates → Critical + security · Settings → TelegramΟι διορθώσεις έρχονται χωρίς να σας περιμένουν.
11Εγκαταστήστε το WAF. Ξεκινήστε με Log only και μετά διαλέξτε Block.Packages → WAF Security Setup · Settings → SecurityΣυνηθισμένες επιθέσεις στο panel και στις προεπισκοπήσεις απορρίπτονται.
12Κρατάτε αρχείο αλλαγών, επαναφορών και περιστατικών έξω από τον server.Τα δικά σας αρχείαΈνας ελεγκτής ζητά αποδείξεις.

Το Supervised βοηθά στην έγκριση. Δεν είναι η λειτουργία project ούτε το κλείδωμα που έρχονται στην 5.7.1.

Τι κάνει ήδη το CodeHero

Όλα όσα του Dev, και:

ΠροστασίαΑπό
Το VPN του CodeHero: ένα κλειδί ανά συσκευή. Το Revoke σταματά μια συσκευή αμέσως.5.5.0
«What it reaches» ανά συσκευή VPN, με τους κανόνες VPN του ίδιου του server. Προεπιλογή το «The server only», και για τις υπάρχουσες συσκευές.5.7.0
Το Use the VPN to close your ports δείχνει τα βήματα και τη γραμμή hosts. Δεν αλλάζει κανένα firewall.5.7.0
Το Apply security θωρακίζει ένα παλιό container: αντίγραφο των ρυθμίσεών του, επανεκκίνηση, έλεγχοι, και επιστροφή στις παλιές ρυθμίσεις σε κάθε αποτυχία (και σε λήξη χρόνου ή επανεκκίνηση του panel). Το Remove security γίνεται μόνο από το panel, και σε σταματημένο container. Ένα ticket του AI δεν αλλάζει τις ρυθμίσεις LXC ενός container.5.7.0
«Allow access from»: οι δικοί κανόνες του CodeHero στη γέφυρα των containers. Ένα τικ αφήνει το container ενός project να ανοίγει συνδέσεις προς το container ενός άλλου· χωρίς τικ = απομονωμένο.5.7.0
Ο root της MySQL / MariaDB ενός container συνδέεται μόνο μέσα από το container και από το panel.5.7.0
Η σελίδα Updates διαβάζει τις ειδοποιήσεις ασφαλείας του Ubuntu και εγκαθιστά κατά σημασία, με το χέρι ή κάθε μέρα.5.4.0
Οι ενημερώσεις αρνούνται όσο υπάρχει σε container παλιά, ανυπόγραφη λίστα αποθετηρίου του CodeHero. Το Apply security την υπογράφει.5.7.0
Το WAF (ModSecurity με το OWASP Core Rule Set), αν το εγκαταστήσετε.5.4.0
Εισαγωγές και backups: ελέγχονται τα ονόματα, οι σύνδεσμοι, οι ιδιοκτήτες και τα δικαιώματα από το αρχείο.5.7.0
Ένα Approve σε ticket επιτρέπει μόνο αυτή την ακριβή κλήση. Ένα ticket δεν δίνει στον εαυτό του εργαλεία συσκευών ή υπηρεσιών. Το «confirmed» ενός ticket σε μια συσκευή μετράει μόνο μετά το δικό σας Approve αυτής της κλήσης.5.7.0
Οι κωδικοί των βάσεων δεν εμφανίζονται ποτέ στη λίστα διεργασιών του server σε εγκαταστάσεις, επισκευές, backups και επαναφορές.5.7.0
Τα συμβάντα των συσκευών (ποιος έκανε τι, ποτέ το περιεχόμενο), το ιστορικό των tickets, το ιστορικό των ενημερώσεων.πριν την 5.7.0
Τι θα ρωτήσει ακόμη ένας ελεγκτής
Μπορεί το AI να αλλάξει τη ζωντανή εφαρμογή χωρίς την έγκρισή σας;
Στην 5.7.0: το Supervised ρωτά πριν από κάθε εγγραφή· το Semi-Autonomous ρωτά για τα επικίνδυνα βήματα. Μια λειτουργία όπου το AI μόνο διαβάζει, και το κλείδωμα project, έρχονται στην 5.7.1.
Επιβάλλει ο server τι φτάνει μια συσκευή VPN;
Ναι. Το αποφασίζουν οι κανόνες VPN του ίδιου του server. Οι ρυθμίσεις WireGuard της συσκευής δεν το διευρύνουν.
Υπάρχει ίχνος ελέγχου που δεν αλλάζει ο ιδιοκτήτης;
Όχι. Τα συμβάντα, τα ιστορικά και τα logs είναι στον server και ο ιδιοκτήτης μπορεί να τα αλλάξει. Στείλτε τα logs σε εξωτερική υπηρεσία αν το χρειάζεστε.
Αντέχουν τα backups μια παραβίαση του server;
Μόνο τα αντίγραφα που κρατάτε αλλού, με άλλα διαπιστευτήρια.
Ελέγχθηκε η εφαρμογή του πελάτη για ασφάλεια;
Ένα πλάνο μπορεί να έχει tickets [SECURITY]. Αυτό δεν είναι ανεξάρτητη αξιολόγηση.
Ποιος εγκρίνει μια αλλαγή;
Μόνο ο ιδιοκτήτης. Δεν υπάρχει δεύτερος που εγκρίνει.
Πού πηγαίνουν τα δεδομένα;
Το κείμενο, ο κώδικας και τα στιγμιότυπα ενός ticket πηγαίνουν στον πάροχο AI του ticket. Τους παρόχους τους διαλέγετε ανά project. Ένα τοπικό LLM κρατά το κείμενο στη συσκευή σας.
Φτάνει ένα container σε άλλο;
Μόνο όταν το επιτρέπει το project που το δέχεται («Allow access from»). Το επιβάλλουν οι δικοί κανόνες του CodeHero στη γέφυρα των containers. Μια θύρα που προωθείτε σε container φτάνεται από παντού όπου είναι ανοιχτή, και από άλλα containers. Σε πυρήνα που δεν παρακολουθεί τις απαντήσεις στη γέφυρα, ένα επιτρεπτό ζευγάρι μιλά και προς τις δύο κατευθύνσεις. Ένα container δεν μπορεί να χρησιμοποιήσει τη διεύθυνση άλλου container ή του server.

Επίπεδο 3 — Fortress

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

Τι δεν μπορεί να δώσει το Fortress

  • Χωριστούς διαχειριστές, ή δεύτερο άνθρωπο που πρέπει να εγκρίνει μια αλλαγή.
  • Χωριστό πυρήνα ανά project. Τα containers μοιράζονται τον πυρήνα του server.
  • Λειτουργία όταν ο server χαθεί. Υπάρχει ένας server· η ανάκαμψη είναι επαναφορά σε νέο server.
  • Πιστοποίηση (ISO 27001, SOC 2) ή έγκριση δημόσιου φορέα. Αυτές τις δίνει ένας ελεγκτής.

Αν ένας ελεγκτής απαιτεί κάτι από αυτά, αυτή η εγκατάσταση μόνη της δεν το καλύπτει. Χρησιμοποιήστε χωριστά μηχανήματα, για παράδειγμα έναν server ανάπτυξης και έναν server παραγωγής.

Τι κάνετε

Όλα όσα του Production, και:

#ΒήμαΠούΓιατί
1Ένας υπολογιστής διαχείρισης για το panel: κρυπτογράφηση δίσκου, δικό του προφίλ browser, ενημερώσεις ανοιχτές.Ο υπολογιστής σαςΤο panel είναι τόσο ασφαλές όσο ο υπολογιστής που το ανοίγει.
2Ισχυρό 2FA στον λογαριασμό του cloud, του DNS και του email σας.Αυτοί οι πάροχοιΑυτοί οι λογαριασμοί μπορούν να παρακάμψουν το panel.
3Κλείστε τις 9453, 9454 και 9867 προς το internet. Οι πελάτες βλέπουν τις προεπισκοπήσεις μέσα από το VPN ή σε άλλο server.Το firewall του cloud σαςΣτο internet βλέπουν μόνο το VPN και τα δημοσιευμένα sites σας.
4Αφαιρέστε τις συσκευές που δεν χρησιμοποιείτε. Το «The whole VPN» μόνο για συσκευή που το χρειάζεται.Devices → η συσκευή → Manage → Remove…Μια παραβιασμένη συσκευή φτάνει όσο λιγότερο γίνεται.
5Μη χρησιμοποιείτε ποτέ τον υπολογιστή διαχείρισης ως συσκευή ανάπτυξης.DevicesΈνα ticket μπορεί να τρέξει εντολές στη συσκευή του.
6Όταν έρθει η 5.7.1: το ζωντανό project σε λειτουργία production, και κλειδωμένο.Η σελίδα του project (5.7.1)Κάθε αλλαγή γίνεται συνειδητά.
7Κρατάτε αντίγραφα εκεί που ο server δεν μπορεί να τα σβήσει: άλλα διαπιστευτήρια, εκδόσεις αρχείων ή εκτός σύνδεσης. Κάντε πρόβα ανακατασκευής σε νέο server.Ο δικός σας χώρος αποθήκευσηςΜια παραβίαση δεν σβήνει όλα τα αντίγραφα.
8Παρακολουθείτε απ’ έξω: τα sites σας, τη λήξη των πιστοποιητικών και ότι το panel δεν απαντά από το internet.Μια εξωτερική υπηρεσία παρακολούθησηςΟ συναγερμός έρχεται ακόμη κι όταν ο server είναι κάτω.
9Ελέγξτε το Ubuntu με το CIS benchmark, πρώτα σε αντίγραφο του server.Ένας κλώνος του serverΜια αυστηρότερη ρύθμιση μπορεί να χαλάσει το LXC, το sudo ή το VPN.
10Παραγγείλτε ανεξάρτητη αξιολόγηση ασφαλείας. Κρατήστε τα ευρήματα και τις διορθώσεις έξω από τον server.Ένας εξωτερικός αξιολογητήςΑπόδειξη για έναν ελεγκτή.

Τι κάνει ήδη το CodeHero

Όλα όσα του Dev και του Production. Δεν υπάρχει επιπλέον «λειτουργία Fortress» στο panel.

Τι θα ρωτήσει ακόμη ένας ελεγκτής
Είναι το κέντρο ελέγχου χωριστά από τον κώδικα που γράφει το AI;
Όχι. Ένας server· το panel έχει sudo· τα containers μοιράζονται τον πυρήνα. Χρησιμοποιήστε χωριστά μηχανήματα αν αυτό απαιτείται.
Αντέχει η σύνδεση στο phishing (κλειδιά υλικού);
Όχι. Το panel έχει κωδικό και TOTP· το VPN προσθέτει κλειδί συσκευής. Το WebAuthn / FIDO2 δεν έχει φτιαχτεί.
Είναι τα logs και τα backups αμετάβλητα;
Όχι από το CodeHero. Χρησιμοποιήστε εξωτερικό χώρο με δική του διατήρηση.
Ανακαλείται το κλειδί των εκδόσεων;
Το panel εμπιστεύεται ένα δημόσιο κλειδί ενσωματωμένο στο CodeHero. Δεν υπάρχει λίστα ανάκλησης. Μια έκδοση με νέο κλειδί εγκαθίσταται από την κονσόλα.
Ελέγχονται τα πακέτα τρίτων;
Η υπογραφή της έκδοσης καλύπτει τα αρχεία του ίδιου του CodeHero. Τα πακέτα Ubuntu, PHP, Node.js και MySQL έρχονται από τα δικά τους υπογεγραμμένα αποθετήρια. Τα εργαλεία AI έρχονται από τους installers των κατασκευαστών τους.
Υπάρχει υψηλή διαθεσιμότητα;
Όχι. Ένας server.

Μην κλειδωθείτε έξω

Πριν κλείσετε μια θύρα, ανοίξετε το 2FA ή αλλάξετε το SSH, κρατήστε έναν δρόμο που δεν χρειάζεται το panel. Οι εντολές αυτής της ενότητας είναι η τελευταία λύση: τρέχουν στην κονσόλα του server.

Κρατήστε έναν δρόμο που δεν χρειάζεται το panel

  1. Βρείτε πώς φτάνετε σήμερα στην κονσόλα του server: SSH από την IP σας ή η κονσόλα του cloud σας στον browser.
  2. Αν το cloud σας δεν έχει κονσόλα στον browser, αφήστε το SSH ανοιχτό για τη δική σας IP. Είναι ο μόνος δρόμος επιστροφής.
  3. Δοκιμάστε αυτόν τον δρόμο πριν από κάθε αλλαγή παρακάτω.

Το web terminal του panel είναι πίσω από τη σύνδεση του panel. Δεν βοηθά όταν έχετε κλειδωθεί έξω από το panel.

Κλείστε τις θύρες του panel πίσω από το VPN — η σωστή σειρά

  1. Κρατήστε τους τωρινούς κανόνες του firewall του cloud σας. Ένα στιγμιότυπο αρκεί.
  2. Ορίστε τα δύο ονόματα και πραγματικά πιστοποιητικά: Settings → Domains, Settings → Certificates.
  3. Δώστε στο VPN δική του δημόσια διεύθυνση: vpn.example.com ή την IP του server. Ποτέ το όνομα του panel: η γραμμή hosts στέλνει το όνομα του panel μέσα στο VPN, ενώ το ίδιο το VPN πρέπει να φαίνεται απ’ έξω.
  4. Ανοίξτε την 51820/udp στο firewall του cloud σας. Στο Devices, στην κάρτα του VPN: Install VPN, τσεκάρετε VPN on, Save.
  5. Προσθέστε το laptop σας: + Device → σύνδεση CodeHero VPN → Get the command (ή Config file / QR). Αφήστε το «What it reaches: The server only».
  6. Προσθέστε με τον ίδιο τρόπο έναν εφεδρικό υπολογιστή, ως χωριστή συσκευή.
  7. Πατήστε Use the VPN to close your ports. Αντιγράψτε τη γραμμή hosts που δείχνει στο αρχείο hosts καθενός από αυτούς τους υπολογιστές — Windows: C:\Windows\System32\drivers\etc\hosts (το Notepad ως διαχειριστής)· macOS και Linux: /etc/hosts (με sudo). Παράδειγμα με το προεπιλεγμένο δίκτυο VPN: 10.77.0.1 panel.example.com apps.example.com.
  8. Με ανοιχτό το VPN, ανοίξτε το https://panel.example.com:9453. Συνδεθείτε ξανά με κωδικό και 2FA. Ο browser δεν πρέπει να δείχνει προειδοποίηση πιστοποιητικού. Ανοίξτε και το phpMyAdmin.
  9. Κάντε το βήμα 8 στον εφεδρικό υπολογιστή, από άλλο δίκτυο (π.χ. το hotspot ενός κινητού).
  10. Μόνο τώρα κλείστε τις 9453 και 9454 στο firewall του cloud σας. Την 9867 μόνο αν κανείς έξω από το VPN δεν χρειάζεται τις προεπισκοπήσεις. Ένα port forward μόνο αν το χρησιμοποιούν μόνο συσκευές του VPN.
  11. Αφήστε ανοιχτή την 51820/udp. Αφήστε ανοιχτές τις 80 και 443 αν δημοσιεύετε sites ή χρησιμοποιείτε Let's Encrypt.
  12. Δοκιμάστε απ’ έξω με κλειστό το VPN: το panel δεν πρέπει να ανοίγει. Ανοίξτε το VPN: το panel πρέπει να ανοίγει.
  13. Αν κάτι αποτύχει, βάλτε πίσω τους κανόνες που κρατήσατε στο firewall του cloud σας.

Όσο η 9453 είναι κλειστή, μια νέα συσκευή δεν μπαίνει με το Get the command: η εντολή χρειάζεται το panel πριν από το VPN. Δώστε της Config file / QR, ή ανοίξτε την 9453 για την IP της όσο μπαίνει.

Η γραμμή hosts

  • Κάνει το όνομα του panel να οδηγεί στη διεύθυνση VPN του server (10.77.0.1 με το προεπιλεγμένο δίκτυο). Το πιστοποιητικό ταιριάζει ακόμη με το όνομα.
  • Αν βγάλετε τη γραμμή, ο υπολογιστής χρησιμοποιεί ξανά τη δημόσια διεύθυνση. Αυτό δουλεύει μόνο όσο η θύρα είναι ανοιχτή.
  • Αν αλλάξετε το δίκτυο του VPN ή μεταφέρετε το CodeHero σε άλλο server, αλλάξτε τη γραμμή σε κάθε υπολογιστή.
  • Το όνομα του panel δουλεύει μόνο με HTTPS (HSTS). Μέσα από τη γραμμή μένει HTTPS.

2FA

  • Δεν υπάρχουν backup codes.
  • Όταν ανοίγετε το 2FA, το panel δείχνει έναν κωδικό QR και έναν «Manual entry code». Κρατήστε αυτόν τον κωδικό εκτός σύνδεσης — σε password manager σε άλλη συσκευή ή σε χαρτί σε ασφαλές μέρος — ή σαρώστε το QR και με δεύτερο authenticator την ίδια ώρα.
  • Δοκιμάστε μια νέα σύνδεση σε ιδιωτικό παράθυρο του browser πριν κλείσετε την παλιά.
  • Οι λάθος κωδικοί κλειδώνουν αυτόν τον λογαριασμό από αυτή τη διεύθυνση για 30 λεπτά. Περιμένετε ή συνδεθείτε από άλλη διεύθυνση.
  • Χαμένο κινητό, τελευταία λύση, στην κονσόλα: sudo /opt/codehero/scripts/manage-2fa.sh disable, σύνδεση με τον κωδικό σας, και μετά Settings → Security → Enable 2FA (νέος κωδικός QR).
  • Κλείδωμα, τελευταία λύση: sudo /opt/codehero/scripts/manage-2fa.sh unlock. Καθαρίζει και τα κλειδώματα του panel που τρέχει.

Κωδικοί

  • Το /etc/codehero/credentials.conf έχει τους κωδικούς που παρήχθησαν. Το διαβάζει μόνο ο root.
  • Αλλάζετε τον κωδικό του panel στο Settings → Security → Change Admin Password.
  • Ένας νέος κωδικός του panel αποσυνδέει κάθε άλλον browser και κάθε άλλη συσκευή, και τερματίζει το «Remember this device». Ο browser που τον άλλαξε μένει συνδεδεμένος.
  • Χαμένος κωδικός του panel, τελευταία λύση: sudo /opt/codehero/scripts/change-passwords.sh. Δέχεται μόνο 8 έως 128 χαρακτήρες: γράμματα, ψηφία και . _ @ % + = : , / ! ^ * - (χωρίς κενά ή εισαγωγικά). Ο κωδικός του panel έχει το πολύ 72 χαρακτήρες.
  • Ο κωδικός ρύθμισης του «Set your password» (σε αναβαθμισμένο server που είχε ακόμη admin123): τον δείχνει η αναβάθμιση σε ένα πλαίσιο. Τον χάσατε: sudo cat /etc/codehero/panel-setup-code. Δουλεύει μία φορά. Με ανοιχτό 2FA δεν ζητείται.
  • Αν μια αναβάθμιση σταμάτησε στη μέση ενώ άλλαζε τους κωδικούς των βάσεων, το /etc/codehero/db-rotation.journal (μόνο root) κρατά και τους δύο κωδικούς. Τρέξτε ξανά την ίδια αναβάθμιση: ολοκληρώνει ή αναιρεί την αλλαγή. Δεν χρειάζεται τίποτα με το χέρι.
  • Κρατήστε αντίγραφο των κωδικών σας έξω από τον server.

Το κλειδί των εκδόσεων

  • Το CodeHero υπογράφει κάθε έκδοση με το δικό του ιδιωτικό κλειδί. Εσείς δεν κρατάτε κλειδί: το panel ελέγχει την υπογραφή με ένα δημόσιο κλειδί ενσωματωμένο στο CodeHero.
  • Αν το 📦 Manual Update αρνηθεί ένα ZIP, μην το πιέσετε. Κατεβάστε το ξανά και συγκρίνετε το SHA-256 του με τις σημειώσεις της έκδοσης.
  • Το 📦 Manual Update δεν εγκαθιστά ποτέ παλαιότερη έκδοση. Επιστροφή σε παλαιότερη γίνεται μόνο από την κονσόλα: sudo ./upgrade.sh --allow-downgrade. Μην πάτε ποτέ κάτω από την 5.7.0 με θωρακισμένα containers: χρειάζονται τα αρχεία ρυθμίσεών της για να ξεκινήσουν.
  • Αν το CodeHero ανακοινώσει ποτέ νέο κλειδί υπογραφής, εκείνη η έκδοση εγκαθίσταται από την κονσόλα, αφού ελέγξετε το SHA-256 της.

DNS και πιστοποιητικά

  • Το Let's Encrypt ανανεώνει μέσω της θύρας 80. Αν κλείσετε την 80, τα πιστοποιητικά σταματούν να ανανεώνονται.
  • HSTS: αφού ένας browser ανοίξει το όνομα του panel με πραγματικό πιστοποιητικό, για ένα χρόνο χρησιμοποιεί μόνο HTTPS για αυτό το όνομα, σε κάθε θύρα. Μια υπηρεσία container που προωθείται με απλό HTTP σε αυτό το όνομα δεν ανοίγει σε εκείνον τον browser: προωθήστε την με TLS ή δώστε της άλλο όνομα.
  • Αν το πιστοποιητικό λήξει ή δεν ταιριάζει, ο browser αρνείται αυτό το όνομα. Ανανεώστε το πιστοποιητικό· στο μεταξύ ανοίξτε το panel με διεύθυνση IP (https://<η IP του server>:9453, ή μέσα από το VPN https://10.77.0.1:9453). Ο browser προειδοποιεί για το πιστοποιητικό· το HSTS δεν ισχύει για διεύθυνση IP.
  • Προσέχετε τον λογαριασμό DNS σας: όποιος ελέγχει το DNS σας μπορεί να στείλει τα ονόματά σας σε άλλο server.

Το SSH είναι δική σας απόφαση

  • Το CodeHero δεν αλλάζει ποτέ το SSH και δεν προσθέτει ποτέ κανόνα firewall.
  • Αν το cloud σας δεν έχει κονσόλα στον browser και κλείσετε το SSH προς το internet, ένα σταματημένο VPN σας αφήνει χωρίς δρόμο. Αφήστε επιτρεπτή τη δική σας IP.
  • Αν αλλάξετε μόνοι σας το SSH (νέα θύρα, μόνο κλειδιά), κρατήστε ανοιχτή την παλιά σύνδεση, δοκιμάστε νέα σύνδεση από δεύτερο παράθυρο, και μόνο μετά κλείστε τον παλιό δρόμο.

Άλλες παγίδες

ΠαγίδαΗ σωστή σειρά
Ανάκληση ή αφαίρεση της μόνης συσκευής VPNΔοκιμάστε πρώτα την εφεδρική συσκευή.
Νέο κλειδί VPN για μια συσκευήΗ νέα ρύθμιση αντικαθιστά αμέσως την παλιά. Έχετε έτοιμη την εφεδρική συσκευή.
Μεταφορά του VPN σε άλλο serverΠρώτα Devices → Export / Import· κρατήστε τη φράση πρόσβασης αλλού. Δοκιμάστε τη νέα διεύθυνση πριν κλείσετε τον παλιό δρόμο.
Apply security σε ένα containerΚάντε backup. Πατήστε το όταν σας βολεύει ένα λεπτό χωρίς εκείνο το site, όχι όσο τρέχει κάποιο ticket του. Γυρίζει πίσω μόνο του αν το container δεν ξεκινήσει ή μια υπηρεσία δεν επανέλθει.
Ένα container που δεν ξεκινά με τη θωράκισηΤο Remove security δουλεύει στο σταματημένο container. Αν δεν ξεκινά ούτε χωρίς τη θωράκιση, η θωράκιση επιστρέφει: ψάξτε άλλη αιτία.
Δύο projects που μοιράζονται μια υπηρεσία container (μια βάση, μια cache)Μετά την αναβάθμιση στην 5.7.0 τα containers είναι απομονωμένα. Τσεκάρετε το project-πελάτη στο «Allow access from» της καρτέλας Container του project που εξυπηρετεί.
Ένα script ή cron job που καλεί μια προεπισκόπηση σε αυτόν τον serverΑπό την 5.7.0 θέλει το κλειδί προεπισκόπησης του project: την κεφαλίδα X-CodeHero-Preview-Key ή το ?key=. Ή καλέστε το production domain. Δοκιμάστε το μετά την αναβάθμιση.
Όταν δίνετε το διαγνωστικό ZIP του μενού LogsΑν το manifest.json του γράφει "sanitized": "partial", ελέγξτε πρώτα το ZIP: οι τιμές του αρχείου που ονομάζει μπορεί να μην έχουν κρυφτεί.
Ένα backup χωρίς τα secretsΤα ZIP backups αφήνουν έξω το .secrets/ από προεπιλογή. Φυλάξτε τα secrets μόνοι σας ή τσεκάρετε Include the secrets για μια μεταφορά.
Κρυπτογράφηση δίσκου με κωδικό στην εκκίνησηΈνας server χωρίς κονσόλα δεν ξεκλειδώνεται από μακριά. Ελέγξτε πρώτα τι προσφέρει το cloud σας.

Θύρες ανά επίπεδο

ΘύραΤι είναιDevProductionFortress
22/tcpSSHΟι IP σαςΟι IP σας. Το VPN μόνο αφού δοκιμαστεί και έχετε κονσόλα.Δική σας απόφαση, με δοκιμασμένο δρόμο επιστροφής
9453/tcpΤο panel του CodeHeroΟι IP σαςΜόνο μέσα από το VPNΜόνο μέσα από το VPN
9454/tcpΤο phpMyAdmin, πίσω από τη σύνδεση του panelΟι IP σαςΜόνο μέσα από το VPNΜόνο μέσα από το VPN
9867/tcpΟι προεπισκοπήσεις των projectsΌποιος πρέπει να τις βλέπειΟι IP των πελατών σας όπου γίνεται· αλλιώς μόνο δοκιμαστικά δεδομέναΜόνο μέσα από το VPN
80/tcp, 443/tcpΤα δημοσιευμένα sites σας και το Let's EncryptΜόνο αν δημοσιεύετε sitesΑνοιχτές αν δημοσιεύετε sitesΑνοιχτές αν δημοσιεύετε sites
51820/udpΤο VPN του CodeHeroΜόνο αν το VPN είναι ανοιχτόΑνοιχτήΑνοιχτή
Μια θύρα που προωθείτε σε containerΗ υπηρεσία εκείνου του containerΌπως χρειάζεται η υπηρεσίαΜόνο ό,τι χρειάζεται η υπηρεσία· μέσα από το VPN αν τη χρησιμοποιούν μόνο συσκευέςΜέσα από το VPN, ή κλειστή
Κάθε άλλη θύραMySQL 3306, η εφαρμογή του panel 5000, τα containers, οι βάσεις της καρτέλας Services …ΚλειστήΚλειστήΚλειστή
  • Η MySQL και η εφαρμογή του panel ακούνε ήδη μόνο στον ίδιο τον server. Το κλείσιμό τους είναι δεύτερο επίπεδο.
  • Μια συσκευή VPN φτάνει πάντα στις θύρες του ίδιου του server (9453, 9454, 9867, τις προωθημένες θύρες, το SSH), ό,τι κι αν λέει το «What it reaches».
  • Μια θύρα που προωθείτε σε container φτάνεται από όπου αφήνει το firewall σας, και από άλλα containers. Το «Allow access from» αποφασίζει μόνο την κίνηση ανάμεσα στα containers στη γέφυρα.
  • Πριν κλείσετε μια θύρα, κρατήστε έναν δρόμο εισόδου (παραπάνω).

Ο πλήρης οδηγός

Ο πλήρης οδηγός «Securing CodeHero» έχει κάθε βήμα αυτής της σελίδας και τα αναγνωρισμένα πρότυπα αναφοράς (CIS, OWASP ASVS, NIST) ανά επίπεδο. Συνοδεύει το CodeHero ως docs/SECURITY_GUIDE.md (στα αγγλικά).

Ο πλήρης οδηγός (στα αγγλικά)

Περισσότερα στον οδηγό χρήσης: §28 Ασφάλεια · §29 Ενημερώσεις · §31 Containers · §33 Συσκευές και VPN · §34 Θύρες

Ερωτήσεις που μας κάνουν

Όλα τα άρθρα
Αλλάζει το CodeHero το firewall ή το SSH μου;

Όχι. Το CodeHero δεν εγκαθιστά firewall, δεν προσθέτει ποτέ κανόνα firewall και δεν αλλάζει ποτέ το SSH. Το firewall το επιλέγετε εσείς — η απλή λύση είναι του cloud ή του router σας — και το SSH είναι δική σας απόφαση.

Μπορώ να συνδεθώ αν χάσω το κινητό με τον authenticator;

Δεν υπάρχουν backup codes. Κρατήστε τον «Manual entry code» του 2FA εκτός σύνδεσης ή βάλτε τον σε δεύτερο authenticator όταν ανοίγετε το 2FA. Η τελευταία λύση είναι μια εντολή στην κονσόλα του server.

Φτάνουν οι κωδικοί και τα κλειδιά μου στην εταιρεία AI;

Όχι όσα αποθηκεύετε ως μυστικά (οκτώ χαρακτήρες και πάνω): τα χρησιμοποιεί η εφαρμογή σας, αλλά οι τιμές τους δεν στέλνονται στην υπηρεσία AI. Έναν κωδικό γραμμένο σε μήνυμα ή ορατό σε screenshot δεν μπορεί να τον αναγνωρίσει — αποθηκεύετε κάθε κωδικό ως μυστικό. Διαβάστε το άρθρο

Τι γίνεται η γνώση για το έργο μου;

Χτίζεται και κρατιέται μέσα στη δική σας εγκατάσταση: αποφάσεις, κανόνες, αλλαγές και οι αιτίες τους, δίπλα στον κώδικα. Ένας νέος άνθρωπος ή ένα νέο AI συνεχίζει από εκεί — η γνώση δεν φεύγει μαζί τους. Διαβάστε το άρθρο

Γιατί το CodeHero φιλοξενεί και τις εφαρμογές;

Γιατί η κατασκευή και η λειτουργία πάνε μαζί. Η εφαρμογή τρέχει εκεί όπου φτιάχτηκε, με το domain, την ασφαλή σύνδεση, τα backups και την επαναφορά της — και κάθε επόμενη αλλαγή επιστρέφει στο ίδιο εργοστάσιο. Κανένα ξεχωριστό πάνελ φιλοξενίας να μάθετε. Διαβάστε το άρθρο