Κεφάλαιο 3 · 3.4
Firewall με ufw (ή nftables)
Στο δίκτυο της WebOké όλη η εισερχόμενη κίνηση προς το VPS σας είναι ανοιχτή. Τι θα εισέρχεται το καθορίζετε εσείς με ένα firewall στον server σας. Έτσι επιτρέπετε μόνο ό,τι χρειάζεται, όπως το SSH και την ιστοσελίδα σας.
Προσοχή: Ανοίξτε το SSH πριν ενεργοποιήσετε το firewall. Αν δεν το κάνετε, θα κλειδώσετε τον εαυτό σας έξω. Αν συμβεί κάτι τέτοιο, απενεργοποιήστε το firewall μέσω της κονσόλας (δείτε Κλειδωμένοι έξω: δεν μπορείτε πλέον να συνδεθείτε στον server σας).
ufw σε Debian και Ubuntu
Το ufw είναι ένα απλό επίπεδο πάνω από το firewall του Linux. Στο Ubuntu είναι ήδη εγκατεστημένο, ενώ στο Debian το εγκαθιστάτε ως εξής:
anna@web1:~$ sudo apt install ufw
anna@web1:~$ sudo ufw allow OpenSSH
anna@web1:~$ sudo ufw allow 80,443/tcp
anna@web1:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
anna@web1:~$ sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing), disabled (routed)
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere
80,443/tcp ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
80,443/tcp (v6) ALLOW IN Anywhere (v6)
Ό,τι δεν επιτρέπετε απορρίπτεται. Οι κανόνες ισχύουν αυτόματα και για το IPv6. Τις θύρες 80 και 443 τις χρειάζεστε μόνο για μια ιστοσελίδα (κεφάλαιο 5). Αν χρησιμοποιείτε Caddy με HTTP/3, ανοίξτε επίσης τη sudo ufw allow 443/udp.
Χρήσιμες εντολές του ufw
| Εντολή | Τι κάνει; |
|---|---|
sudo ufw status numbered | Εμφανίζει τους κανόνες με αριθμό |
sudo ufw delete 3 | Διαγράφει τον κανόνα 3 |
sudo ufw allow from 198.51.100.7 to any port 22 proto tcp | Ανοίγει μια θύρα μόνο για μία διεύθυνση IP |
sudo ufw limit OpenSSH | Απορρίπτει προσωρινά μια διεύθυνση που ξεκινά 6 ή περισσότερες συνδέσεις μέσα σε 30 δευτερόλεπτα |
sudo ufw disable | Απενεργοποιεί το firewall (για παράδειγμα μέσω της κονσόλας, αν έχετε κλειδωθεί έξω) |
Χωρίς ufw: nftables
Στο Debian το nftables είναι το firewall που λειτουργεί στο παρασκήνιο. Αν δεν θέλετε το ufw, γράφετε μόνοι σας τους κανόνες στο /etc/nftables.conf. Μια μικρή βάση για IPv4 και IPv6 μαζί:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
ct state established,related accept
iif "lo" accept
meta l4proto { icmp, ipv6-icmp } accept
tcp dport { 22, 80, 443 } accept
}
}
anna@web1:~$ sudo nft -c -f /etc/nftables.conf
anna@web1:~$ sudo systemctl enable --now nftables
Με την εντολή nft -c ελέγχετε πρώτα το αρχείο. Χρησιμοποιήστε είτε ufw είτε nftables, όχι και τα δύο ταυτόχρονα.
Σε AlmaLinux και Rocky Linux το firewalld είναι ήδη εγκατεστημένο: sudo firewall-cmd --permanent --add-service=http --add-service=https και sudo firewall-cmd --reload. Εκεί το SSH είναι ανοιχτό από προεπιλογή.
Συμβουλή: Χρησιμοποιείτε Docker; Οι θύρες που δημοσιεύετε με το Docker παρακάμπτουν το ufw. Γι' αυτό διαβάστε το Docker και firewall: ασφαλής δημοσίευση θυρών.
