Ποιες υπηρεσίες ακούν στο VPS σας και τι είναι προσβάσιμο από έξω;
Κάθε πρόγραμμα που δέχεται συνδέσεις ακούει σε μια θύρα: το SSH στη 22, ένας web server στις 80 και 443, η MariaDB στη 3306. Κάθε θύρα που είναι προσβάσιμη από έξω είναι μια πόρτα προς τον server σας. Ένας ιστότοπος συνήθως χρειάζεται από έξω μόνο τις 22, 80 και 443. Εδώ θα δείτε πώς να ελέγξετε τι ακούει, σε ποια διεύθυνση, και πώς να επιβεβαιώσετε τι βλέπει το υπόλοιπο internet.
Έλεγχος του τι ακούει
Εκτελέστε στο VPS σας:
sudo ss -tulpn
Οι επιλογές σημαίνουν: TCP (-t), UDP (-u), μόνο όσα ακούνε (-l), ποιο πρόγραμμα (-p) και αριθμοί αντί για ονόματα (-n). Ένα παράδειγμα:
tcp LISTEN 0.0.0.0:22 users:(("sshd",...))
tcp LISTEN 0.0.0.0:443 users:(("nginx",...))
tcp LISTEN 127.0.0.1:3306 users:(("mariadbd",...))
tcp LISTEN 0.0.0.0:6379 users:(("redis-server",...))
tcp LISTEN [::]:22 users:(("sshd",...))
Σημαντική είναι η στήλη Local Address, η διεύθυνση στην οποία ακούει το πρόγραμμα:
| Διεύθυνση | Σημασία |
|---|---|
0.0.0.0 | Όλες οι διευθύνσεις IPv4, άρα και η δημόσια διεύθυνσή σας: προσβάσιμη από έξω, εκτός αν τη μπλοκάρει ένα firewall |
[::] | Όλες οι διευθύνσεις IPv6: το ίδιο για το IPv6 |
127.0.0.1 ή [::1] | Μόνο ο ίδιος ο server (loopback): ποτέ προσβάσιμη από έξω |
127.0.0.53 ή 127.0.0.54 | Επίσης loopback: η τοπική βοήθεια DNS του systemd-resolved |
Στο παράδειγμα η MariaDB είναι εντάξει: μόνο προγράμματα στον ίδιο τον server έχουν πρόσβαση σε αυτήν. Το Redis ακούει σε όλες τις διευθύνσεις, και αυτό ακριβώς είναι το λάθος που μας ενδιαφέρει.
Κλείσιμο μέσα στην ίδια την υπηρεσία
Μια βάση δεδομένων, ένα cache ή μια οθόνη διαχείρισης σχεδόν ποτέ δεν πρέπει να είναι προσβάσιμα από έξω. Το καλύτερο πρώτο βήμα είναι η υπηρεσία να ακούει μόνο σε loopback. Σε Debian και Ubuntu:
| Πρόγραμμα | Ρύθμιση | Αρχείο |
|---|---|---|
| MariaDB ή MySQL | bind-address = 127.0.0.1 | /etc/mysql/mariadb.conf.d/50-server.cnf |
| PostgreSQL | listen_addresses = 'localhost' | /etc/postgresql/<έκδοση>/main/postgresql.conf |
| Redis | bind 127.0.0.1 -::1 και protected-mode yes | /etc/redis/redis.conf |
Στη συνέχεια επανεκκινήστε την υπηρεσία (δείτε Διαχείριση υπηρεσιών με systemctl στο VPS σας) και ελέγξτε ξανά με ss -tulpn. Αν θέλετε να συνδέεστε στη βάση δεδομένων από τον φορητό σας υπολογιστή, χρησιμοποιήστε ένα SSH tunnel αντί για μια ανοιχτή θύρα, δείτε Ένα SSH config: σύνδεση με ένα σύντομο όνομα.
Το firewall ως δεύτερο επίπεδο
Ένα firewall μπλοκάρει ό,τι ακούει κατά λάθος σε όλες τις διευθύνσεις. Πώς ρυθμίζετε το ufw, θα το βρείτε στο Ένα firewall με ufw (ή nftables). Μη βασίζεστε σε ένα μόνο επίπεδο: ένα firewall μπορεί να είναι απενεργοποιημένο ή ένας κανόνας μπορεί να είναι υπερβολικά ευρύς.
ports:) παρακάμπτουν το ufw. Μια βάση δεδομένων με "3306:3306" είναι τότε προσβάσιμη από έξω, ακόμη κι αν το ufw δείχνει ότι η θύρα είναι κλειστή. Προσθέστε μπροστά 127.0.0.1: ή μη δημοσιεύετε τη θύρα. Δείτε Docker και firewall: ασφαλής δημοσίευση θυρών.Έλεγχος από έξω
Το ss δείχνει τι ακούει στον server, αλλά όχι τι αφήνει να περάσει το firewall σας. Τον πραγματικό έλεγχο τον κάνετε από έναν άλλο υπολογιστή, όχι από τον ίδιο τον server. Με το nc (netcat) σε Mac ή Linux:
nc -vz -w 3 203.0.113.10 6379 nc -6 -vz -w 3 2001:db8::10 6379
Στα Windows το PowerShell κάνει το ίδιο με Test-NetConnection 203.0.113.10 -Port 6379. Συμπληρώστε τη δική σας διεύθυνση IPv4 και IPv6, τις οποίες θα βρείτε στην οθόνη του VPS. Το αποτέλεσμα το διαβάζετε ως εξής:
- Ανοιχτή (succeeded): κάτι ακούει και είναι προσβάσιμο από έξω.
- Κλειστή (Connection refused): τίποτα δεν ακούει ή το firewall απορρίπτει ενεργά τη σύνδεση.
- Φιλτραρισμένη (time-out): ένα firewall απορρίπτει σιωπηλά την κίνηση.
Για μια βάση δεδομένων, τόσο το «κλειστή» όσο και το «φιλτραρισμένη» είναι καλά αποτελέσματα. Ελέγξτε και το IPv6: ένα συνηθισμένο λάθος είναι ένα firewall με κανόνες μόνο για IPv4, ενώ η υπηρεσία ακούει και σε [::]. Ένας port scanner όπως το nmap ελέγχει περισσότερες θύρες ταυτόχρονα. Χρησιμοποιήστε έναν τέτοιο scanner μόνο στον δικό σας server.
Το VPS σας είναι πλήρως αυτοδιαχειριζόμενο: ποιες υπηρεσίες ακούνε και πώς είναι ρυθμισμένο το firewall σας, τα ρυθμίζετε εσείς. Εμείς σας βοηθάμε με το κομμάτι του WebOké, όπως η οθόνη του VPS, το δίκτυο και τα snapshots.
Θέλετε να μάθετε περισσότερα; Παρακολουθήστε το δωρεάν μάθημα Διαχείριση VPS και διακομιστών Linux, ενότητα 5.1 Θύρες και υπηρεσίες σε αναμονή σύνδεσης ή ενότητα 5.2 Ένα firewall με ufw και nftables.
