> 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/security/file-integrity.md).

# Ακεραιότητα αρχείων

*Νέο στο Chamilo 3.0.*

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

## Πρόσβαση στην Ακεραιότητα αρχείων

Από τον πίνακα διαχείρισης, κάντε κλικ στο **Ασφάλεια > Ακεραιότητα αρχείων**.

## Τι εμφανίζει

* **Τελευταία σάρωση** — Πότε εκτελέστηκε η πιο πρόσφατη σάρωση και πόσα αρχεία έλεγξε
* **Προσθήκη / Τροποποίηση / Διαγραφή** — Αρχεία που διαφέρουν από τη γραμμή βάσης, τα οποία εντοπίζονται με σύγκριση αθροισμάτων ελέγχου SHA-256 (κάθε λίστα περιορίζεται σε 500 διαδρομές, με σημείωση αν η πλήρης λίστα είναι μεγαλύτερη — δείτε το αρχείο καταγραφής CEF παρακάτω για την πλήρη λίστα)
* **Αλλαγμένα δικαιώματα** — Αρχεία των οποίων τα δικαιώματα διαφέρουν από τη γραμμή βάσης. Στο Linux, συγκρίνονται απευθείας τα bits λειτουργίας POSIX (για παράδειγμα, επισημαίνεται ένα αρχείο που γίνεται εγγράψιμο από όλους)· στα Windows παρακολουθείται μόνο το χαρακτηριστικό μόνο για ανάγνωση, καθώς η `fileperms()` δεν αντικατοπτρίζει τα πραγματικά ACL του NTFS
* **Ιστορικό ειδοποιήσεων** — Ένα ανθεκτικό, μόνο-προσθήκης αρχείο καταγραφής κάθε σάρωσης που εντόπισε κάτι (έως τις τελευταίες 50). Σε αντίθεση με την αναφορά παραπάνω, αυτή η λίστα δεν εκκαθαρίζεται ποτέ από μια καθαρή σάρωση ή μια νέα γραμμή βάσης, ώστε οι παλαιές ειδοποιήσεις να παραμένουν ορατές ακόμη και αφού έχει επιλυθεί η απόκλιση που επισήμαναν

Ο έλεγχος διατρέχει ολόκληρο το εγκατεστημένο δέντρο αρχείων εκτός από τους καταλόγους `var/` και `.git/` — με μία εξαίρεση: το `.git/config` εξακολουθεί να παρακολουθείται μεμονωμένα, ειδικά για να εντοπιστεί ένα απομακρυσμένο Git που επαναπροσανατολίζεται σιωπηλά σε έναν εχθρικό διακομιστή. Οι συμβολικοί σύνδεσμοι δεν ακολουθούνται ποτέ, ώστε να αποφεύγονται βρόχοι διάσχισης ή έξοδος από τον κατάλογο εγκατάστασης.

Επειδή μια πλήρης σάρωση μιας μεγάλης εγκατάστασης μπορεί να διαρκέσει αρκετά λεπτά, η διάσχιση γίνεται σε τμήματα (ένας κατάλογος κορυφαίου επιπέδου κάθε φορά) και η πρόοδός της παρακολουθείται σε ένα αρχείο κλειδώματος — ώστε η σελίδα να μπορεί να ανανεωθεί με ασφάλεια για έλεγχο προόδου, και μια σάρωση που κατέρρευσε ή τερματίστηκε να μην εκλαμβάνεται ποτέ ως ακόμη σε εξέλιξη.

## Ενέργειες

* **Εκτέλεση σάρωσης τώρα** — Συγκρίνει αμέσως το τρέχον δέντρο αρχείων με τη γραμμή βάσης
* **Παύση για 1 ώρα** — Αναστέλλει προσωρινά τις ειδοποιήσεις (για παράδειγμα, ενώ αναπτύσσετε μια ενημέρωση). Απαιτεί εκ νέου εισαγωγή του δικού σας κωδικού πρόσβασης. Κατά την παύση, μια σάρωση υιοθετεί σιωπηρά το τρέχον δέντρο ως νέα γραμμή βάσης αντί να ειδοποιεί, ώστε το παράθυρο παύσης να κλείνει χωρίς εναπομείνασες ειδοποιήσεις. Η μέγιστη παύση είναι 24 ώρες
* **Καθιέρωση νέας γραμμής βάσης** — Υιοθετεί το τρέχον δέντρο αρχείων ως τη νέα αξιόπιστη αναφορά. Απαιτεί εκ νέου εισαγωγή του δικού σας κωδικού πρόσβασης

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

## Εκτέλεση από Cron

Οι ίδιοι έλεγχοι είναι διαθέσιμοι ως εντολές κονσόλας, προορισμένες να προγραμματίζονται με cron αντί να εκτελούνται από τη σελίδα διαχείρισης βάσει χρονοδιαγράμματος:

```bash
# Scan for drift and alert admins if anything changed
0 3 * * * cd /var/www/chamilo/master && php bin/console app:file-integrity:scan

# Generate or regenerate the baseline (run once after install, or after a manual update)
php bin/console app:file-integrity:baseline

# Pause alerting from the command line (prompts for a global administrator's username and password)
php bin/console app:file-integrity:snooze
```

Αν είναι ενεργή μια παύση, η `app:file-integrity:scan` επανακαθορίζει σιωπηρά τη γραμμή βάσης αντί να ειδοποιεί, ακολουθώντας τη συμπεριφορά μιας σάρωσης που ενεργοποιείται από τη σελίδα διαχείρισης.

## Ρυθμίσεις

Μία σχετική ρύθμιση βρίσκεται στις **Ρυθμίσεις διαμόρφωσης > Ασφάλεια**:

* **`file_integrity_check_notify_admins`** — Μια λίστα διευθύνσεων ηλεκτρονικού ταχυδρομείου για ειδοποίηση όταν εντοπίζεται απόκλιση· αν μείνει κενή, ειδοποιείται κάθε Καθολικός Διαχειριστής

## Ενσωμάτωση SIEM

Κάθε σάρωση γράφει επίσης γραμμές καταγραφής CEF (Common Event Format) στο `var/logs/security/file_integrity.log`, κατάλληλες για εισαγωγή από SIEM (Wazuh, Splunk, QRadar, ArcSight, Elastic/Filebeat και παρόμοια εργαλεία). Κάθε γραμμή επισημαίνεται με ένα αναγνωριστικό υπογραφής που προσδιορίζει το είδος της αλλαγής:

| Υπογραφή        | Σημασία                                                                                           |
| --------------- | ------------------------------------------------------------------------------------------------- |
| `FIM-ADDED`     | Εμφανίστηκε ένα νέο αρχείο                                                                        |
| `FIM-MODIFIED`  | Άλλαξε το περιεχόμενο ενός αρχείου                                                                |
| `FIM-DELETED`   | Ένα αρχείο εξαφανίστηκε                                                                           |
| `FIM-GITCONFIG` | Άλλαξε το `.git/config` (πιθανό υφαρπαγμένο απομακρυσμένο)                                        |
| `FIM-PERMS`     | Άλλαξαν τα δικαιώματα ενός αρχείου                                                                |
| `FIM-TRUNCATED` | Η αναφορά για μια κατηγορία περιορίστηκε· συμβουλευτείτε το αρχείο καταγραφής για την πλήρη λίστα |

## Συνιστώμενη χρήση

1. Καθορίστε μια γραμμή βάσης αμέσως μετά την εγκατάσταση και ξανά μετά από κάθε χειροκίνητη ενημέρωση ή ανάπτυξη
2. Προγραμματίστε το `app:file-integrity:scan` στο cron (για παράδειγμα, κάθε βράδυ)
3. Πριν από ένα προγραμματισμένο παράθυρο συντήρησης που θα αλλάξει αρχεία (μια ενημέρωση, μια μετεγκατάσταση), χρησιμοποιήστε **Παύση για 1 ώρα** αντί να αφαιρέσετε εντελώς την εργασία cron
4. Διοχετεύστε το `var/logs/security/file_integrity.log` στο υπάρχον σύστημα παρακολούθησης αρχείων καταγραφής ή στο SIEM, εφόσον διαθέτετε ένα
