> For the complete documentation index, see [llms.txt](https://docs.chamilo.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chamilo.org/3.x/el/odigos-diaxeirisis/admin-guide/faq/security-guide.md).

# Οδηγός ασφάλειας

Αυτός ο οδηγός καλύπτει τις βέλτιστες πρακτικές ασφαλείας για τη λειτουργία μιας πλατφόρμας Chamilo 3.0 σε παραγωγή. Η ασφάλεια αποτελεί κοινή ευθύνη μεταξύ του λογισμικού της πλατφόρμας, της διαμόρφωσης του διακομιστή σας και των συνεχών λειτουργικών πρακτικών.

Για τα ενσωματωμένα εργαλεία παρακολούθησης και ελέγχου που αναφέρονται σε όλον αυτόν τον οδηγό (αρχεία καταγραφής προσπαθειών σύνδεσης, ανίχνευση εισβολών, σαρώσεις ισχύος κωδικών πρόσβασης και έλεγχοι ακεραιότητας αρχείων), δείτε το κεφάλαιο [Ασφάλεια](/3.x/el/odigos-diaxeirisis/admin-guide/security.md).

## Διατηρήστε το Chamilo ενημερωμένο

Η σημαντικότερη πρακτική ασφαλείας είναι να διατηρείτε την εγκατάσταση του Chamilo ενημερωμένη.

* Εγγραφείτε στον λογαριασμό X ασφαλείας του Chamilo (@chamilosecurity) ή παρακολουθήστε το αποθετήριο GitHub για ανακοινώσεις εκδόσεων.
* Εφαρμόστε τις ενημερώσεις ασφαλείας άμεσα. Οι δευτερεύουσες ενημερώσεις εντός του κλάδου 3.0 έχουν σχεδιαστεί ώστε να εφαρμόζονται με ασφάλεια.
* Ακολουθήστε τη [διαδικασία αναβάθμισης](/3.x/el/odigos-diaxeirisis/admin-guide/installation/upgrading.md) για κάθε ενημέρωση.

## HTTPS

Να εξυπηρετείτε πάντα το Chamilo μέσω HTTPS σε παραγωγή.

* Αποκτήστε πιστοποιητικό SSL/TLS (το Let's Encrypt παρέχει δωρεάν πιστοποιητικά μέσω Certbot).
* Διαμορφώστε τον διακομιστή ιστού ώστε να ανακατευθύνει όλη την κίνηση HTTP σε HTTPS.
* Ενεργοποιήστε την κεφαλίδα HSTS (HTTP Strict Transport Security) για την αποτροπή επιθέσεων υποβάθμισης:

  ```
  Strict-Transport-Security: max-age=31536000; includeSubDomains
  ```

Χωρίς HTTPS, τα διαπιστευτήρια σύνδεσης, τα cookies συνεδρίας και όλα τα δεδομένα χρηστών μεταδίδονται σε απλό κείμενο και μπορούν να υποκλαπούν στο δίκτυο.

## Δικαιώματα αρχείων

Περιορίστε τα δικαιώματα αρχείων στο ελάχιστο απαραίτητο.

| Διαδρομή                           | Ιδιοκτήτης               | Δικαιώματα                    | Σημειώσεις                                                                                                                                                   |
| ---------------------------------- | ------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Αρχεία εφαρμογής (πηγαίος κώδικας) | root ή χρήστης ανάπτυξης | 755 (κατάλογοι), 644 (αρχεία) | Ο διακομιστής ιστού χρειάζεται πρόσβαση μόνο για ανάγνωση.                                                                                                   |
| `var/`                             | χρήστης διακομιστή ιστού | 775                           | Πρέπει να είναι εγγράψιμο για την κρυφή μνήμη Symfony, τα αρχεία καταγραφής και τις μεταφορτώσεις αρχείων                                                    |
| `.env`                             | root ή χρήστης ανάπτυξης | 640                           | Περιέχει μυστικά. Ο διακομιστής ιστού χρειάζεται πρόσβαση μόνο για ανάγνωση κατά την κανονική χρήση, αλλά χρειάζεται πρόσβαση εγγραφής κατά την εγκατάσταση. |
| `config/`                          | root ή χρήστης ανάπτυξης | 750                           | Περιέχει μυστικά. Ο διακομιστής ιστού χρειάζεται πρόσβαση μόνο για ανάγνωση κατά την κανονική χρήση, αλλά χρειάζεται πρόσβαση εγγραφής κατά την εγκατάσταση. |

Μην ορίζετε ποτέ δικαιώματα σε 777. Μην εκτελείτε ποτέ τον διακομιστή ιστού ως root.

## Πολιτικές κωδικών πρόσβασης

Διαμορφώστε αυστηρές απαιτήσεις κωδικών πρόσβασης στις [Ρυθμίσεις ασφαλείας](/3.x/el/odigos-diaxeirisis/admin-guide/platform-settings/security-settings.md):

* Ελάχιστο μήκος 8 χαρακτήρων (συνιστώνται 12+).
* Απαιτήστε μείγμα κεφαλαίων, πεζών, αριθμών και ειδικών χαρακτήρων.
* Εξετάστε την ενεργοποίηση λήξης κωδικών πρόσβασης για περιβάλλοντα που καθοδηγούνται από συμμόρφωση.
* Εκπαιδεύστε τους χρήστες στην επιλογή ισχυρών, μοναδικών κωδικών πρόσβασης.

## Περιορισμός ρυθμού και προστασία από επιθέσεις ωμής βίας

### Επίπεδο εφαρμογής

* Ορίστε τις **Μέγιστες προσπάθειες σύνδεσης πριν από τον αποκλεισμό λογαριασμού** (`login_max_attempt_before_blocking_account`) σε μικρή τιμή (για παράδειγμα 5).
* Ενεργοποιήστε το **CAPTCHA** στη σελίδα σύνδεσης. Το CAPTCHA είναι ενεργό/ανενεργό — δεν ενεργοποιείται αυτόματα μετά από N αποτυχημένες συνδέσεις. Συνδυάστε το με τα **Σφάλματα CAPTCHA πριν από τον αποκλεισμό** (`captcha_number_mistakes_to_block_account`) για να κλειδώσετε έναν λογαριασμό που συνεχίζει να αποτυγχάνει στο CAPTCHA.
* Ελέγχετε περιοδικά την αναφορά [Προσπάθειες σύνδεσης](/3.x/el/odigos-diaxeirisis/admin-guide/security/login-attempts.md) για να εντοπίζετε μοτίβα ωμής βίας, και την αναφορά [Simple IDS](/3.x/el/odigos-diaxeirisis/admin-guide/security/simple-ids.md) για άλλα επισημασμένα αιτήματα (προσπάθειες XSS, path traversal και παρόμοια).

### Επίπεδο διακομιστή

Χρησιμοποιήστε το **fail2ban** για την παρακολούθηση αποτυχιών σύνδεσης και τον αποκλεισμό των παραβατικών διευθύνσεων IP:

```ini
# /etc/fail2ban/jail.d/chamilo.conf
[chamilo]
enabled = true
port = http,https
filter = chamilo-auth
logpath = /path/to/chamilo/var/log/prod.log
maxretry = 5
bantime = 900
```

Δημιουργήστε ένα αντίστοιχο φίλτρο στο `/etc/fail2ban/filter.d/chamilo-auth.conf` ώστε να αντιστοιχεί στις καταχωρίσεις αρχείου καταγραφής αποτυχίας ταυτοποίησης.

## Διαχείριση συνεδριών

* Ορίστε εύλογη **διάρκεια ζωής συνεδρίας** (π.χ. 3600 δευτερόλεπτα / 1 ώρα) στις ρυθμίσεις ασφαλείας.
* Διαμορφώστε τις **σημαίες cookie συνεδρίας** στη διαμόρφωση Symfony:

  ```yaml
  # config/packages/framework.yaml
  framework:
      session:
          cookie_secure: true      # Only send over HTTPS
          cookie_httponly: true     # Not accessible via JavaScript
          cookie_samesite: lax     # CSRF protection
  ```
* Εξετάστε την απενεργοποίηση του «Remember me» σε πλατφόρμες με ευαίσθητο περιεχόμενο.

## Κεφαλίδες ασφαλείας HTTP

Διαμορφώστε τον διακομιστή ιστού ώστε να αποστέλλει κεφαλίδες ασφαλείας:

| Κεφαλίδα                  | Τιμή                              | Σκοπός                                                                                     |
| ------------------------- | --------------------------------- | ------------------------------------------------------------------------------------------ |
| `X-Content-Type-Options`  | `nosniff`                         | Αποτρέπει το sniffing τύπου MIME.                                                          |
| `X-Frame-Options`         | `SAMEORIGIN`                      | Αποτρέπει το clickjacking μέσω iframes.                                                    |
| `X-XSS-Protection`        | `1; mode=block`                   | Κληρονομημένη προστασία XSS για παλαιότερα προγράμματα περιήγησης.                         |
| `Referrer-Policy`         | `strict-origin-when-cross-origin` | Ελέγχει τη διαρροή πληροφοριών referrer.                                                   |
| `Content-Security-Policy` | Ποικίλλει                         | Ελέγχει ποιους πόρους επιτρέπεται να φορτωθούν. Απαιτεί προσεκτική ρύθμιση για το Chamilo. |

Παράδειγμα για Apache:

```apache
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
```

Παράδειγμα για Nginx:

```nginx
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
```

## Ασφάλεια μεταφόρτωσης αρχείων

* Αποκλείστε επεκτάσεις εκτελέσιμων αρχείων (exe, bat, sh, php, phtml, cgi) στις [Ρυθμίσεις ασφαλείας](/3.x/el/odigos-diaxeirisis/admin-guide/platform-settings/security-settings.md).
* Διαμορφώστε τον διακομιστή ιστού ώστε **να μην εκτελεί ποτέ μεταφορτωμένα αρχεία**. Για Apache, προσθέστε σε ολόκληρο τον κατάλογο var/:

  ```apache
  <Directory /path/to/chamilo/var>
      php_admin_flag engine off
      RemoveHandler .php .phtml .php3 .php5
  </Directory>
  ```
* Σαρώστε τα μεταφορτωμένα αρχεία με λογισμικό προστασίας από ιούς (ClamAV) εάν το απαιτεί το περιβάλλον σας.

## Ασφάλεια βάσης δεδομένων

* Χρησιμοποιήστε έναν **αποκλειστικό χρήστη βάσης δεδομένων** για το Chamilo με μόνο τα προνόμια που χρειάζεται (SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, INDEX στη βάση δεδομένων του Chamilo).
* Μην χρησιμοποιείτε τον λογαριασμό root της βάσης δεδομένων.
* Βεβαιωθείτε ότι η βάση δεδομένων δεν είναι προσβάσιμη από το δημόσιο διαδίκτυο. Δεσμεύστε την στο localhost ή σε ιδιωτικό δίκτυο.
* Ενεργοποιήστε την καταγραφή ελέγχου (audit logging) της βάσης δεδομένων για περιβάλλοντα με απαιτήσεις συμμόρφωσης.

## Αντίγραφα ασφαλείας

* Προγραμματίστε **ημερήσια αυτοματοποιημένα αντίγραφα ασφαλείας** τόσο της βάσης δεδομένων όσο και των μεταφορτωμένων αρχείων.
* Αποθηκεύστε τα αντίγραφα ασφαλείας σε ξεχωριστή τοποθεσία από τον διακομιστή (εκτός χώρου ή αποθήκευση στο cloud).
* Δοκιμάζετε περιοδικά την επαναφορά αντιγράφων ασφαλείας για να επαληθεύσετε ότι είναι αξιοποιήσιμα.
* Κρυπτογραφείτε τα αντίγραφα ασφαλείας εάν περιέχουν ευαίσθητα δεδομένα.

Δείτε τα [Αντίγραφα ασφαλείας](/3.x/el/odigos-diaxeirisis/admin-guide/maintenance/backups.md) για λεπτομερείς οδηγίες.

## Παρακολούθηση

* Παρακολουθήστε τα αρχεία καταγραφής του Chamilo στο `var/log/prod.log` για σφάλματα και ύποπτη δραστηριότητα.
* Ρυθμίστε παρακολούθηση διακομιστή (CPU, μνήμη, δίσκος) για την ανίχνευση εξάντλησης πόρων.
* Διαμορφώστε ειδοποιήσεις για επαναλαμβανόμενες αποτυχίες αυθεντικοποίησης.
* Ελέγχετε περιοδικά τους λογαριασμούς χρηστών για μη εξουσιοδοτημένους ή αδρανείς λογαριασμούς.
* Προγραμματίστε ελέγχους [Ακεραιότητας αρχείων](/3.x/el/odigos-diaxeirisis/admin-guide/security/file-integrity.md) (Chamilo 3.0+) στο cron ώστε να ειδοποιείστε όταν τα εγκατεστημένα αρχεία αλλάζουν απροσδόκητα, και εκτελείτε περιοδικά τον [Έλεγχο ισχύος κωδικών πρόσβασης](/3.x/el/odigos-diaxeirisis/admin-guide/security/password-strength-checker.md), ιδίως μετά από μαζικές εισαγωγές χρηστών.

## Λίστα ελέγχου

Χρησιμοποιήστε αυτή τη λίστα ελέγχου κατά την ανάπτυξη ή τον έλεγχο μιας εγκατάστασης Chamilo:

* [ ] HTTPS ενεργοποιημένο με έγκυρο πιστοποιητικό
* [ ] Ανακατεύθυνση HTTP προς HTTPS διαμορφωμένη
* [ ] `APP_ENV=prod` και `APP_DEBUG=0` στο `.env`
* [ ] Μοναδικό `APP_SECRET` δημιουργημένο
* [ ] Δικαιώματα αρχείων περιορισμένα (όχι 777)
* [ ] Πολιτική κωδικών πρόσβασης διαμορφωμένη
* [ ] Μέγιστες προσπάθειες σύνδεσης και CAPTCHA ενεργοποιημένα
* [ ] Επεκτάσεις εκτελέσιμων αρχείων αποκλεισμένες
* [ ] Κεφαλίδες ασφαλείας διαμορφωμένες στον διακομιστή ιστού
* [ ] Σημαίες cookie συνεδρίας ορισμένες (secure, httponly, samesite)
* [ ] Ο χρήστης βάσης δεδομένων έχει ελάχιστα προνόμια
* [ ] Αυτοματοποιημένα αντίγραφα ασφαλείας προγραμματισμένα και δοκιμασμένα
* [ ] Βασική γραμμή ακεραιότητας αρχείων καθιερωμένη και σάρωση προγραμματισμένη στο cron (Chamilo 3.0+)
* [ ] Παρακολούθηση αρχείων καταγραφής σε λειτουργία
* [ ] Η έκδοση του Chamilo είναι ενημερωμένη
