# Ανάλυση των logs του διακομιστή ιστού μετά από επίθεση: σωστή ανάγνωση του access log

> Ανάλυση access log μετά από επίθεση: διάσωση των logs πρώτα, εντοπισμός τυπικών ιχνών, εντολές για Apache και Nginx και ιδιαιτερότητες στο PHP2Shell.

Πηγή: https://phpsos.de/el/ratgeber/logfiles-auswerten/  
Ημερομηνία: 25/10/2026  
Πάροχος: PHP SOS, Επείγουσα βοήθεια PHP και ασφάλεια διακομιστών. Άμεση βοήθεια μέσω WhatsApp: https://wa.me/491736494914?text=%CE%93%CE%B5%CE%B9%CE%B1%20%CF%83%CE%B1%CF%82%2C%20PHP%20SOS%2C%20%CF%87%CF%81%CE%B5%CE%B9%CE%B1%CE%B6%CF%8C%CE%BC%CE%B1%CF%83%CF%84%CE%B5%20%CE%B2%CE%BF%CE%AE%CE%B8%CE%B5%CE%B9%CE%B1%20%CE%BC%CE%B5%20%CF%84%CE%BF%CE%BD%20%CE%B4%CE%B9%CE%B1%CE%BA%CE%BF%CE%BC%CE%B9%CF%83%CF%84%CE%AE%20PHP%20%CE%BC%CE%B1%CF%82.%20%CE%95%CF%84%CE%B1%CE%B9%CF%81%CE%B5%CE%AF%CE%B1%3A%20%E2%80%A6%20%CE%99%CF%83%CF%84%CF%8C%CF%84%CE%BF%CF%80%CE%BF%CF%82%3A%20%E2%80%A6

**Εν συντομία:** Όποιος θέλει να αναλύσει το access log μετά από μια επίθεση, διασώζει πρώτα τα logs αναλλοίωτα και εργάζεται στη συνέχεια μόνο με αντίγραφα. Αναζητούνται αιτήματα με κατάσταση 200 προς άγνωστα αρχεία PHP, ύποπτα αιτήματα POST, προσβάσεις σε καταλόγους upload και χρονικά μοτίβα. Για το PHP2Shell δεν υπάρχουν δημοσιευμένα, επιβεβαιωμένα Indicators of Compromise, γι' αυτό μετρά η συνολική εικόνα από πολλές πηγές logs.

## Πρώτα διάσωση, έπειτα ανάλυση

Τα αρχεία καταγραφής εναλλάσσονται αυτόματα στους περισσότερους διακομιστές και διαγράφονται μετά από σταθερό χρονικό διάστημα. Μετά από μια επίθεση το πρώτο βήμα είναι γι' αυτό να διασώσετε τα υπάρχοντα logs προτού εξαφανιστούν. Αυτό ισχύει και όταν δεν είστε ακόμη βέβαιοι αν συνέβη κάτι. Για το PHP2Shell ο ειδικός τύπος συνιστά τη διατήρηση των logs από τις 20.10.2026.

```bash
# Αντιγραφή των logs με χρονοσφραγίδες και καταγραφή αθροισμάτων ελέγχου
ZIEL=/root/sicherung-logs-$(date +%F)
mkdir -p "$ZIEL"
cp -a /var/log/nginx /var/log/apache2 /var/log/php* "$ZIEL"/ 2>/dev/null
cp -a /var/log/auth.log* /var/log/syslog* "$ZIEL"/ 2>/dev/null
find "$ZIEL" -type f -exec sha256sum {} + > "$ZIEL.sha256"
```

Αποθηκεύστε το αντίγραφο επιπλέον σε άλλο σύστημα. Ένας επιτιθέμενος με πρόσβαση στον διακομιστή θα μπορούσε αλλιώς να αλλάξει εκ των υστέρων τα logs. Τα αθροίσματα ελέγχου δείχνουν αργότερα ότι το αντίγραφο είναι αναλλοίωτο. Αν χρειάζεται διάσωση που να αντέχει σε δικαστήριο, π.χ. για μια καταγγελία ή την ασφάλιση, τη διάσωση πρέπει να αναλάβει μια [εγκληματολογική ανάλυση IT](https://phpsos.de/el/leistungen/it-forensik/).

> **Σημαντικό:**
> Ελέγξτε την εναλλαγή των logs (`/etc/logrotate.d/`) και παρατείνετε προσωρινά τη διατήρηση, ώστε κατά την ανάλυση να μη διαγραφούν περαιτέρω αρχεία.

## Πού βρίσκονται τα logs και πώς είναι δομημένη μια γραμμή

Οι θέσεις αποθήκευσης εξαρτώνται από τη διανομή και τη διεπαφή διαχείρισης. Τυπικές διαδρομές:

| Σύστημα | Access και error log |
|---|---|
| Debian, Ubuntu με Apache | `/var/log/apache2/` |
| RHEL, AlmaLinux, Rocky με Apache | `/var/log/httpd/` |
| Nginx | `/var/log/nginx/` |
| Plesk | `/var/www/vhosts/system/<domain>/logs/` |
| PHP-FPM | `/var/log/php*-fpm.log` ή στο journal |

Στη διαδεδομένη μορφή Combined, κάθε γραμμή περιέχει τη διεύθυνση του πελάτη, ημερομηνία και ώρα, μέθοδο και διαδρομή του αιτήματος, τον κωδικό κατάστασης, το μέγεθος της απάντησης σε bytes, τον referer και τον user agent. Προσέξτε τη ζώνη ώρας στη χρονοσφραγίδα, ιδίως όταν συγκρίνετε logs με μηνύματα σε UTC. Τα patches του PHP2Shell δημοσιεύθηκαν π.χ. στις 21.10.2026 στις 14:00 UTC, δηλαδή στις 16:00 ώρα Γερμανίας.

Αν ο ιστότοπός σας βρίσκεται πίσω από proxy, CDN ή load balancer, στο log μπορεί να υπάρχει μόνο η δική του διεύθυνση. Η πραγματική διεύθυνση του επισκέπτη βρίσκεται τότε σε ξεχωριστό πεδίο ή στα logs της υπηρεσίας που βρίσκεται μπροστά.

### Χωρίς γραμμή εντολών: logs στο πάνελ ή στον πάροχο

Δεν έχει κάθε διαχειριστής πρόσβαση shell. Στο shared hosting ή σε διακομιστές με διαχείριση οι διεπαφές διαχείρισης προσφέρουν συνήθως προβολή logs και λήψη των access και error logs. Κατεβάστε τα αρχεία για ολόκληρο το διαθέσιμο διάστημα και φυλάξτε τα με ασφάλεια. Ρωτήστε γραπτώς τον πάροχο πόσο διάστημα διατηρούνται τα logs και αν μπορούν να διασωθούν παλαιότερες καταστάσεις προτού λήξουν.

Προσέξτε εδώ την προστασία δεδομένων: τα logs περιέχουν διευθύνσεις IP και συχνά άλλα προσωπικά στοιχεία. Αποθηκεύστε τα αντίγραφα με προστασία πρόσβασης, διαβιβάστε τα μόνο σε πρόσωπα που τα χρειάζονται για τη διερεύνηση και ορίστε πότε θα διαγραφούν μετά την ολοκλήρωση του περιστατικού.

## Ανάλυση του access log: τα σημαντικότερα ερωτήματα

Οι παρακάτω εντολές μόνο διαβάζουν και ταιριάζουν για Nginx και Apache στη μορφή Combined. Αρχεία που έχουν εναλλαχθεί και συμπιεστεί τα διερευνάτε με `zgrep` ή `zcat`.

```bash
LOG=/root/sicherung-logs-2026-10-25/nginx/access.log

# Επιτυχή αιτήματα προς αρχεία PHP, κατά συχνότητα
awk '$9 == 200 && $7 ~ /\.php/ {split($7,p,"?"); print p[1]}' "$LOG" | sort | uniq -c | sort -rn | head -40

# Κλήσεις PHP σε καταλόγους upload, cache ή εικόνων
grep -E '"(GET|POST) /[^ ]*(uploads|cache|images|tmp)/[^ ]*\.php' "$LOG"

# Αιτήματα POST ανά προορισμό και διεύθυνση
awk '$6 == "\"POST" {print $1, $7}' "$LOG" | sort | uniq -c | sort -rn | head -40

# Σφάλματα 5xx ανά ώρα: οι συσσωρεύσεις μπορεί να δείχνουν διεργασίες PHP που καταρρέουν
awk '$9 ~ /^5/ {print substr($4, 2, 14)}' "$LOG" | sort | uniq -c

# Συμπερίληψη των logs που έχουν εναλλαχθεί
zgrep -h ' 200 ' /var/log/nginx/access.log.*.gz | grep -c '\.php'
```

Στο πρώτο ερώτημα ενδιαφέρουν ιδιαίτερα ονόματα αρχείων που δεν γνωρίζετε ή που δεν ανήκουν στην εφαρμογή. Συγκρίνετε τα ύποπτα αρχεία με το σύστημα αρχείων: Πότε δημιουργήθηκαν, σε ποιον ανήκουν, τι περιέχουν; Υποδείξεις δίνει ο οδηγός [Εντοπισμός και αφαίρεση webshell](https://phpsos.de/el/ratgeber/webshell-erkennen/).

## Ιδιαιτερότητες στο PHP2Shell

Στο PHP2Shell οι ευπάθειες βρίσκονται στην επεξεργασία αιτημάτων της ίδιας της PHP. Στο mod_php παρουσιάστηκε ένα exploit προτού εκτελεστεί καν κώδικας της εφαρμογής. Αυτό σημαίνει: ένα αίτημα προς μια εντελώς κανονική σελίδα μπορεί να αρκεί. Στο access log ένα τέτοιο αίτημα μπορεί να φαίνεται ασυνήθιστα αθώο, επειδή το περιεχόμενο του σώματος του αιτήματος δεν καταγράφεται εκεί.

Δεν υπάρχουν δημοσιευμένα, επιβεβαιωμένα Indicators of Compromise. Προσέξτε γι' αυτό τη συμπεριφορά και τις συσχετίσεις, π.χ. από τις 17.10.2026, την πρώτη παρατηρημένη απόπειρα επίθεσης σύμφωνα με δημοσιεύματα:

- Συσσωρεύσεις σφαλμάτων 500 ή διακεκομμένων απαντήσεων σε συνηθισμένες σελίδες.
- Μηνύματα για εξαντλημένη μνήμη ή τερματισμένους workers στο error log και στο log του PHP-FPM.
- Νέα αρχεία PHP ή τροποποιημένα αρχεία λίγο μετά από τέτοιες συσσωρεύσεις.
- Νέα cronjobs, διεργασίες ή εξερχόμενες συνδέσεις υπό τον χρήστη του διακομιστή ιστού.

Κανένα από αυτά τα σήματα δεν αποτελεί μόνο του απόδειξη. Μαζί με άλλα ίχνη δημιουργούν όμως μια εικόνα που απαντά στο ερώτημα μιας παραβίασης ή δικαιολογεί μια βαθύτερη διερεύνηση. Μια επισκόπηση των ενδείξεων θα βρείτε στη σελίδα [Έχω ήδη παραβιαστεί;](https://phpsos.de/el/php2shell/bin-ich-gehackt-anzeichen/).

## Περαιτέρω πηγές: error log, PHP-FPM και πρωτόκολλα συστήματος

Το access log δείχνει μόνο ένα μέρος. Για μια πλήρη εικόνα προσθέστε περαιτέρω πηγές:

```bash
# PHP-FPM και διακομιστής ιστού στο journal από μια ημερομηνία
journalctl -u 'php*-fpm*' --since "2026-10-17" --no-pager | tail -200

# Συνδέσεις στον διακομιστή
last -Fa | head -40
grep -E 'Accepted|Failed' /var/log/auth.log | tail -100

# Έλεγχος προγραμματισμένων εργασιών όλων των χρηστών
for u in $(cut -d: -f1 /etc/passwd); do crontab -l -u "$u" 2>/dev/null | sed "s/^/$u: /"; done
```

Τυπικά λάθη στην ανάλυση είναι να ερευνάται μόνο το τρέχον και όχι και τα logs που έχουν εναλλαχθεί, να παραβλέπεται η ζώνη ώρας και να θεωρούνται μεμονωμένα ευρήματα αυτοματοποιημένων σαρωτών επιτυχημένη επίθεση. Εξίσου επικίνδυνο είναι το αντίθετο: να θεωρείται ένα ασυνήθιστα καθαρό access log ένδειξη ότι όλα είναι εντάξει, παρόλο που το error log και το σύστημα αρχείων δεν έχουν ελεγχθεί.

Καταγράψτε κάθε εύρημα με ώρα, πηγή και παρατήρηση σε ένα χρονολόγιο. Αυτό το χρονολόγιο αποτελεί αργότερα τη βάση για αποφάσεις, για γνωστοποιήσεις σε αρχές ή ασφαλιστές και για την τελική έκθεση.

## Πώς βοηθά συγκεκριμένα η PHP SOS;

- Διασώζουμε logs και σχετικά αρχεία με τρόπο που να παραμένουν ανιχνεύσιμα για μεταγενέστερους ελέγχους.
- Αναλύουμε από κοινού τα logs access, error, PHP και συστήματος και δημιουργούμε ένα χρονολόγιο του περιστατικού.
- Σε ενδείξεις παραβίασης αναλαμβάνουμε την [αντιμετώπιση περιστατικών (Incident Response)](https://phpsos.de/el/leistungen/incident-response/) με περιορισμό και καθαρισμό.
- Στήνουμε την εναλλαγή και τη διατήρηση των logs ώστε στο επόμενο περιστατικό να υπάρχουν τα απαραίτητα δεδομένα.


## Συχνές ερωτήσεις

**Για πόσο διάστημα πρέπει να διατηρώ τα logs του διακομιστή ιστού;**  
Όσο το επιτρέπει η έννοια προστασίας δεδομένων σας και όσο έχει νόημα μια ανάλυση. Για το PHP2Shell ο ειδικός τύπος συνιστά τη διατήρηση των logs από τις 20.10.2026. Ελέγξτε την εναλλαγή των logs (logrotation), ώστε τα παλαιότερα αρχεία να μη διαγράφονται αυτόματα.

**Δείχνει το access log αν μια επίθεση ήταν επιτυχής;**  
Όχι μόνο του. Δείχνει αιτήματα, κωδικούς κατάστασης και μεγέθη απάντησης, όχι όμως ποιος κώδικας εκτελέστηκε στον διακομιστή. Μια αξιόπιστη εικόνα προκύπτει μόνο μαζί με το error log, το log του PHP-FPM, τις αλλαγές αρχείων και τα πρωτόκολλα συστήματος.

**Επιτρέπεται να διαβιβάσω διευθύνσεις IP από logs σε τρίτους;**  
Οι διευθύνσεις IP θεωρούνται κατά κανόνα προσωπικά δεδομένα. Για τη διερεύνηση ενός περιστατικού και για ποινικές μηνύσεις υπάρχουν μεν νομικές βάσεις, η διαβίβαση πρέπει όμως να συνεννοείται με τον υπεύθυνο προστασίας δεδομένων.

**Γιατί βλέπω στο log πολλές επιθέσεις, παρόλο που δεν συνέβη τίποτα;**  
Οι δημόσιοι διακομιστές σαρώνονται διαρκώς αυτόματα. Τα περισσότερα από αυτά τα αιτήματα πηγαίνουν στο κενό και καταλήγουν σε 404 ή 403. Ενδιαφέροντα είναι κυρίως αιτήματα με κατάσταση 200 προς άγνωστα αρχεία και μοτίβα που συμπίπτουν χρονικά με άλλα ίχνη.

## Πηγές

- [TechTarget: PHP2Shell, 22M exposed servers at risk](https://www.techtarget.com/cybersecurity/news/366652444/PHP2Shell-22M-exposed-servers-at-risk-as-emergency-patches-released)
- [php.net: Ανακοινώσεις ασφαλείας](https://www.php.net/)
- [BSI IT-Grundschutz (γερμανικό πρότυπο βασικής προστασίας IT)](https://www.bsi.bund.de/DE/Themen/Unternehmen-und-Organisationen/Standards-und-Zertifizierung/IT-Grundschutz/it-grundschutz_node.html)
