Επίπεδο 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.