> 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/2.x/el/odigos-diaxeirisis/admin-guide/faq/security-guide.md).

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

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

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

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

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

## HTTPS

Πάντα να παρέχετε την Chamilo μέσω HTTPS σε παραγωγικό περιβάλλον.

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

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

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

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

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

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

Ποτέ μην ορίζετε δικαιώματα σε 777. Ποτέ μην εκτελείτε τον web server ως root.

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

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

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

## Περιορισμός Ρυθμού και Προστασία Brute-Force

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

* Ορίστε **Μέγιστες προσπάθειες σύνδεσης πριν τον αποκλεισμό λογαριασμού** (`login_max_attempt_before_blocking_account`) σε μικρή τιμή (π.χ. 5).
* Ενεργοποιήστε **CAPTCHA** στη σελίδα σύνδεσης. Το CAPTCHA είναι ενεργο/ανενεργό — δεν ενεργοποιείται αυτόματα μετά από N αποτυχημένες συνδέσεις. Συνδυάστε το με **CAPTCHA λάθη πριν τον αποκλεισμό** (`captcha_number_mistakes_to_block_account`) για να κλειδώσετε έναν λογαριασμό που αποτυγχάνει συνεχώς στο CAPTCHA.

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

Χρησιμοποιήστε το **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

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

| Κεφαλίδα                  | Τιμή                              | Σκοπός                                                                              |
| ------------------------- | --------------------------------- | ----------------------------------------------------------------------------------- |
| `X-Content-Type-Options`  | `nosniff`                         | Αποτρέπει την ανίχνευση τύπου MIME.                                                 |
| `X-Frame-Options`         | `SAMEORIGIN`                      | Αποτρέπει το clickjacking μέσω iframes.                                             |
| `X-XSS-Protection`        | `1; mode=block`                   | Αρχαία προστασία XSS για παλαιότερους browsers.                                     |
| `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) στις [Ρυθμίσεις Ασφαλείας](/2.x/el/odigos-diaxeirisis/admin-guide/platform-settings/security-settings.md).
* Ρυθμίστε τον web server σας ώστε να **μην εκτελεί ποτέ ανεβασμένα αρχεία**. Για Apache, προσθέστε για ολόκληρο τον κατάλογο var/:

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

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

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

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

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

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

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

* Παρακολουθείτε τα logs του Chamilo στο `var/log/prod.log` για σφάλματα και ύποπτη δραστηριότητα.
* Ρυθμίστε παρακολούθηση server (CPU, μνήμη, δίσκος) για ανίχνευση εξάντλησης πόρων.
* Ρυθμίστε ειδοποιήσεις για επαναλαμβανόμενες αποτυχίες πιστοποίησης.
* Ελέγχετε περιοδικά λογαριασμούς χρηστών για μη εξουσιοδοτημένους ή ανενεργούς λογαριασμούς.

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

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

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