Τρέχουσα κατάσταση: PHP2Shell. Δύο κρίσιμες ευπάθειες της PHP (CVSS 9.2) επιτρέπουν κακόβουλο κώδικα χωρίς σύνδεση. Patches από τις 21/10/2026.Τι πρέπει να γίνει τώρα →

Έλεγχος των εξερχόμενων συνδέσεων ενός διακομιστή

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

Ημερομηνία 5 λεπτά ανάγνωσηςΕντοπισμός και ψηφιακή εγκληματολογία

Εν ολίγοις: Τις εξερχόμενες συνδέσεις ενός διακομιστή τις ελέγχετε με ss -tunap ή lsof -i, που αντιστοιχίζουν κάθε σύνδεση σε μια διεργασία. Φυσιολογικές είναι οι συνδέσεις προς βάση δεδομένων, διακομιστή αλληλογραφίας, διακομιστές ενημερώσεων και γνωστές διεπαφές. Συνδέσεις διεργασιών PHP ή διακομιστή ιστού προς άγνωστους προορισμούς, ασυνήθιστες θύρες και μόνιμες συνδέσεις χωρίς αφορμή είναι προειδοποιητικά σημάδια απομακρυσμένου ελέγχου ή διαρροής δεδομένων. Μόνιμα βοηθά ένα φιλτράρισμα εξόδου που επιτρέπει μόνο τους απαραίτητους προορισμούς.

Γιατί η ματιά προς τα έξω αποκαλύπτει τόσα πολλά

Στην αναζήτηση μιας εισβολής οι περισσότεροι κοιτάζουν αρχεία. Ένας επιτιθέμενος όμως θέλει να κάνει κάτι με την πρόσβασή του: να κατεβάσει εργαλεία, να λάβει εντολές, να βγάλει δεδομένα ή να χρησιμοποιήσει τον διακομιστή για spam ή επιθέσεις σε άλλους. Όλα αυτά χρειάζονται συνδέσεις προς τα έξω.

Ένας διακομιστής ιστού ανοίγει από μόνος του λίγες συνδέσεις και οι περισσότερες είναι προβλέψιμες: ρωτά τη βάση δεδομένων, παραδίδει email, καλεί διεπαφές πληρωμών ή αποστολών και παίρνει ενημερώσεις. Γι' αυτό οι ξένες συνδέσεις ξεχωρίζουν εδώ ιδιαίτερα. Σύμφωνα με τις αναφορές που διαθέτουμε, οι εξερχόμενες συνδέσεις συγκαταλέγονται στα γενικά προειδοποιητικά σημάδια μετά από εισβολή· επιβεβαιωμένοι Indicators of Compromise ειδικά για το PHP2Shell δεν υπάρχουν. Περαιτέρω ενδείξεις συνοψίζει το Έχω ήδη παραβιαστεί;.

Καταγραφή των εξερχόμενων συνδέσεων και αντιστοίχιση σε διεργασίες

Οι παρακάτω εντολές απλώς διαβάζουν. Εκτελέστε τις ως root, αλλιώς λείπουν τα στοιχεία διεργασιών.

# Όλες οι εδραιωμένες συνδέσεις TCP με διεργασία
ss -tnp state established

# TCP και UDP συμπεριλαμβανομένων των υπηρεσιών που ακούν
ss -tunap

# Συνδέσεις ανά πρόγραμμα και χρήστη, χωρίς ανάλυση ονομάτων
lsof -i -n -P | grep -v LISTEN

# Μόνο συνδέσεις διεργασιών των χρηστών διακομιστή ιστού
lsof -i -n -P -u www-data 2>/dev/null

Προσέξτε στην έξοδο τρεις στήλες: τη διεργασία, τη διεύθυνση προορισμού με θύρα και τον χρήστη. Μια σύνδεση του php-fpm προς τη βάση δεδομένων στη θύρα 3306 είναι φυσιολογική. Μια σύνδεση ενός προγράμματος με άγνωστο όνομα από το /tmp προς ξένη διεύθυνση σε ασυνήθιστη θύρα δεν είναι. Κάτω από ποιον χρήστη τρέχει η PHP, εξαρτάται από τη διανομή και το πάνελ.

Φυσιολογικό ή ύποπτο; Μια κατάταξη

Παρατήρηση Μάλλον φυσιολογικό Μάλλον ύποπτο
Προορισμός δική σας βάση δεδομένων, διακομιστής αλληλογραφίας, γνωστά APIs, διακομιστές ενημερώσεων άγνωστες διευθύνσεις χωρίς σχέση με την εφαρμογή
Διεργασία php-fpm, διακομιστής ιστού, υπηρεσίες αλληλογραφίας και ενημερώσεων άγνωστα προγράμματα, διεργασίες από /tmp ή /dev/shm
Θύρα 443, 3306, 5432, 587 ασυνήθιστα υψηλές θύρες, θύρες τυπικές του IRC
Διάρκεια σύντομη, ανάλογη με τα αιτήματα μόνιμα ανοιχτή, και τη νύχτα χωρίς επισκέπτες
Όγκος μικρός και ομοιόμορφος ξαφνικές κορυφώσεις στον εξερχόμενο όγκο δεδομένων
Κίνηση αλληλογραφίας αποστολή μέσω του προβλεπόμενου διακομιστή αλληλογραφίας πολλές άμεσες συνδέσεις στη θύρα 25

Πολλές συνδέσεις στη θύρα 25 δείχνουν αποστολή spam· γι' αυτό υπάρχει ξεχωριστό άρθρο, Ο διακομιστής στέλνει spam.

Αξιολόγηση ενός άγνωστου προορισμού

Μια ξένη διεύθυνση στη λίστα δεν είναι ακόμη απόδειξη. Πριν αποφασίσετε, διευκρινίστε πού οδηγεί η σύνδεση και ποιος την άνοιξε. Και αυτά τα βήματα δεν αλλάζουν τίποτα:

  1. Προσδιορισμός διεργασίας: Πάρτε το PID από το ss και ελέγξτε με ls -l /proc/PID/exe και τη γραμμή εντολών ποιο πρόγραμμα βρίσκεται πίσω.
  2. Αναζήτηση προορισμού: Με dig -x <IP> βρείτε το όνομα και με whois <IP> τον φορέα δικτύου.
  3. Αντιπαραβολή με την εφαρμογή: Ρωτήστε τον προγραμματιστή ή τον πάροχο υπηρεσιών αν η εφαρμογή σας χρησιμοποιεί αυτή την υπηρεσία.
  4. Έλεγχος ιστορικού: Τα πρωτόκολλα firewall και δικτύου δείχνουν από πότε υπάρχει η σύνδεση και πόσα δεδομένα έρρευσαν.
  5. Διασφάλιση αποτελεσμάτων: Αποθηκεύστε τις εξόδους με ώρα πριν τερματίσετε ή αποκλείσετε οτιδήποτε.

Υπολογίστε ότι τα αποτελέσματα θα είναι αμφίσημα. Πολλές θεμιτές υπηρεσίες τρέχουν σε μεγάλους παρόχους cloud και CDN, των οποίων οι διευθύνσεις δεν επιτρέπουν συμπέρασμα για τον πελάτη. Αντίστροφα, και οι επιτιθέμενοι χρησιμοποιούν ενοικιασμένους διακομιστές cloud. Ένας γνωστός φορέας δικτύου δεν είναι επομένως ούτε άφεση ούτε απόδειξη· καθοριστικό είναι αν η διεργασία και ο σκοπός ταιριάζουν στην εφαρμογή σας.

Ένα στιγμιότυπο με ss δείχνει μόνο ό,τι είναι ανοιχτό αυτή τη στιγμή. Σύντομες συνδέσεις που ανοίγουν ανά λεπτό τις βλέπετε μόνο σε πρωτόκολλα. Γι' αυτό τα πρωτόκολλα firewall ή flow είναι συχνά πιο σημαντικά από τη ματιά στον ίδιο τον διακομιστή όταν τίθεται το ερώτημα μιας διαρροής δεδομένων.

Σημαντικό

Αν δεδομένα ενδέχεται να έχουν εγκαταλείψει τον διακομιστή σας και θίγονται δεδομένα προσωπικού χαρακτήρα, μπορεί να υπάρχει υποχρέωση γνωστοποίησης σύμφωνα με τον ΓΚΠΔ, κατά κανόνα εντός 72 ωρών. Διευκρινίστε το νωρίς με τον υπεύθυνο προστασίας δεδομένων· το υπόβαθρο στο Υποχρέωση γνωστοποίησης ΓΚΠΔ σε 72 ώρες. Αυτό δεν αποτελεί νομική συμβουλή.

Μην ξεχνάτε το DNS και τα containers

Δεν χρειάζεται κάθε διαρροή δεδομένων μια ορατή σύνδεση προς ξένη διεύθυνση. Οι αναλύσεις ονομάτων μέσω DNS πηγαίνουν στον resolver του κέντρου δεδομένων σας και σχεδόν δεν ξεχωρίζουν στη λίστα του ss. Οι επιτιθέμενοι μπορούν να πακετάρουν δεδομένα σε μακριά, φαινομενικά τυχαία subdomains και να τα βγάλουν έτσι μέσω αιτημάτων DNS. Ενδείξεις γι' αυτό δίνουν τα πρωτόκολλα του resolver: ασυνήθιστα πολλά αιτήματα προς το ίδιο ξένο domain, πολύ μακριά ονόματα ή αιτήματα σε ώρες που κανείς δεν χρησιμοποιεί τον ιστότοπο.

Αν οι εφαρμογές σας τρέχουν σε containers, ο host βλέπει τις συνδέσεις των containers συχνά μόνο ως κίνηση του δικτύου container. Ελέγξτε τότε κάθε container χωριστά, εφόσον υπάρχουν εκεί τα εργαλεία, ή αξιολογήστε τις συνδέσεις σε επίπεδο host και firewall.

# Συνδέσεις μέσα σε ένα container (εφόσον το ss περιέχεται στην εικόνα)
docker exec <container> ss -tnp 2>/dev/null

# Στον host: συνδέσεις που παρακολουθεί ο πυρήνας, αν είναι εγκατεστημένο το conntrack
sudo conntrack -L 2>/dev/null | head -50

Μόνιμος περιορισμός της εξερχόμενης κίνησης

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

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

Πώς βοηθά συγκεκριμένα η PHP SOS;

  • Έλεγχος συνδέσεων: Αντιστοιχίζουμε όλες τις ενεργές συνδέσεις σε διεργασίες και σκοπούς και αξιολογούμε άγνωστους προορισμούς.
  • Εκτίμηση της διαρροής δεδομένων: Αξιολογούμε πρωτόκολλα firewall και δικτύου και διευκρινίζουμε αν και πότε μεταφέρθηκαν δεδομένα.
  • Περιορισμός της εξόδου: Καταρτίζουμε μαζί σας μια λίστα επιτρεπόμενων προορισμών και ρυθμίζουμε σταδιακά το φιλτράρισμα εξόδου.
  • Μόνιμη παρακολούθηση: Με την παρακολούθηση ασφαλείας (Security-Monitoring) αναφέρουμε νέες ή ασυνήθιστες συνδέσεις.

Συχνές ερωτήσεις

Ποιες εξερχόμενες συνδέσεις είναι φυσιολογικές σε διακομιστή ιστού;

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

Πώς βλέπω ποια διεργασία άνοιξε μια σύνδεση;

Με το ss -tunap ή το lsof -i -n -P ως root. Και τα δύο δείχνουν για κάθε σύνδεση το αναγνωριστικό διεργασίας και το όνομα του προγράμματος. Έτσι βλέπετε αν η σύνδεση προέρχεται από την PHP, τον διακομιστή ιστού ή ένα ξένο πρόγραμμα.

Σημαίνει μια άγνωστη σύνδεση ότι διέρρευσαν δεδομένα;

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

Πρέπει ένας διακομιστής ιστού να επιτρέπεται καν να κάνει εξερχόμενες συνδέσεις;

Μόνο προς τους προορισμούς που χρειάζεται. Ένα φιλτράρισμα εξόδου που αποκλείει όλα τα υπόλοιπα δυσκολεύει σημαντικά τους επιτιθέμενους να κατεβάσουν εργαλεία και να διοχετεύσουν δεδομένα. Πρέπει όμως να δοκιμαστεί προσεκτικά.

Πηγές

Άμεση επικοινωνία

Κάθε ώρα μετράει. Γράψτε μας τώρα.

Περιγράψτε σύντομα το σύστημα, την έκδοση PHP και ό,τι παρατηρείτε. Θα επικοινωνήσουμε μαζί σας, θα διευκρινίσουμε την κατάσταση και θα εργαστούμε εξ αποστάσεως μέχρι το περιστατικό να κλείσει και να τεκμηριωθεί.

Άμεση βοήθεια