Εισαγωγή
Αν διαχειρίζεστε Linux servers, ξέρετε ήδη ότι το SSH (Secure Shell) είναι κυριολεκτικά η ραχοκοκαλιά της δουλειάς σας. Απομακρυσμένη διαχείριση, αυτοματοποιημένα scripts, μεταφορές αρχείων με SCP/SFTP, ασφαλή tunnels — τα πάντα περνάνε από εκεί. Το πρόβλημα; Το 2026, οι παραδοσιακές ρυθμίσεις SSH απλά δεν κόβουν πια.
Και οι αριθμοί μιλάνε μόνοι τους: το 22% των παραβιάσεων ασφαλείας περιλαμβάνει κλεμμένα credentials, πάνω από 16 δισεκατομμύρια credentials έχουν διαρρεύσει σε data breaches, και — ειλικρινά, αυτό είναι τρομακτικό — το 94% των χρηστών επαναχρησιμοποιεί κωδικούς μεταξύ υπηρεσιών. Οι brute-force επιθέσεις στη θύρα 22 ξεκινάνε δευτερόλεπτα αφού συνδέσετε έναν νέο server στο internet. Δεν υπερβάλλω — δοκιμάστε να σηκώσετε ένα VPS και ελέγξτε τα logs μετά από μία ώρα.
Σε αυτόν τον οδηγό θα καλύψουμε κάθε πτυχή της θωράκισης SSH, από τις νέες δυνατότητες του OpenSSH 10.0 μέχρι τη μετα-κβαντική κρυπτογραφία, την αυθεντικοποίηση FIDO2 και τα σύγχρονα εργαλεία προστασίας. Κάθε ενότητα έχει πρακτικά παραδείγματα και κώδικα που μπορείτε να αντιγράψετε κατευθείαν.
Λοιπόν, ας ξεκινήσουμε από το πιο σημαντικό: το OpenSSH 10.0, που κυκλοφόρησε τον Απρίλιο του 2025, φέρνει μερικές πραγματικά σημαντικές αλλαγές — νέα αρχιτεκτονική, μετα-κβαντική ανταλλαγή κλειδιών ως προεπιλογή, πλήρη αφαίρεση του DSA, και υποχρεωτικό privilege separation.
OpenSSH 10.0 — Τι Αλλάζει και Γιατί Μας Ενδιαφέρει
Νέος Διαχωρισμός Δυαδικών Αρχείων
Η μεγαλύτερη αρχιτεκτονική αλλαγή στο OpenSSH 10.0 είναι ο διαχωρισμός του sshd σε δύο ξεχωριστά δυαδικά αρχεία: το sshd-auth για την αυθεντικοποίηση και το sshd-session για τη διαχείριση συνεδριών. Τα δύο εκτελέσιμα τρέχουν σε εντελώς διαφορετικούς χώρους μνήμης, κάτι που πρακτικά σημαίνει ότι ακόμα κι αν κάποιος εκμεταλλευτεί μια ευπάθεια στη φάση αυθεντικοποίησης, δεν μπορεί να αγγίξει τη μνήμη της ενεργής συνεδρίας. Πολύ έξυπνη σχεδίαση, αν με ρωτάτε.
Υποχρεωτικό Privilege Separation
Θυμάστε εκείνο το UsePrivilegeSeparation no που μερικοί (λανθασμένα) χρησιμοποιούσαν; Στο OpenSSH 10.0 δεν υπάρχει πλέον αυτή η επιλογή. Το privilege separation είναι υποχρεωτικό, τελεία και παύλα. Η διαδικασία αυθεντικοποίησης εκτελείται πάντα με μειωμένα δικαιώματα.
Τέλος Εποχής για το DSA
Ο αλγόριθμος DSA αφαιρέθηκε πλήρως. Αν χρησιμοποιείτε ακόμα κλειδιά DSA — σταματήστε ό,τι κάνετε και αντικαταστήστε τα τώρα με Ed25519 ή ECDSA. Τα 1024-bit κλειδιά DSA θεωρούνται ανασφαλή εδώ και χρόνια.
Μετα-Κβαντική Ανταλλαγή Κλειδιών ως Προεπιλογή
Αυτή είναι ίσως η πιο σημαντική αλλαγή μακροπρόθεσμα: ο αλγόριθμος mlkem768x25519-sha256 είναι πλέον ο προεπιλεγμένος αλγόριθμος ανταλλαγής κλειδιών. Είναι υβριδικός — συνδυάζει μετα-κβαντική κρυπτογραφία (ML-KEM) με κλασική (X25519). Και στο OpenSSH 10.1 θα εμφανίζεται προειδοποίηση αν χρησιμοποιείτε μη μετα-κβαντική ανταλλαγή κλειδιών. Το μήνυμα είναι ξεκάθαρο.
Έλεγχος Έκδοσης και Αναβάθμιση
Πριν κάνετε οτιδήποτε, ελέγξτε τι τρέχετε:
# Έλεγχος εγκατεστημένης έκδοσης OpenSSH
ssh -V
# Αναμενόμενη έξοδος για OpenSSH 10.0
# OpenSSH_10.0p1, OpenSSL 3.4.1 11 Feb 2025
# Αναβάθμιση σε Debian/Ubuntu
sudo apt update && sudo apt upgrade openssh-server openssh-client
# Αναβάθμιση σε RHEL/Fedora
sudo dnf update openssh-server openssh-clients
# Αναβάθμιση σε Arch Linux
sudo pacman -Syu openssh
# Επαλήθευση των νέων δυαδικών αρχείων
ls -la /usr/sbin/sshd-auth /usr/sbin/sshd-session
which sshd-auth sshd-session
# Επανεκκίνηση υπηρεσίας μετά την αναβάθμιση
sudo systemctl restart sshd
sudo systemctl status sshd
Μετα-Κβαντική Κρυπτογραφία στο SSH — Γιατί Είναι Κρίσιμη Τώρα
Τι Είναι το ML-KEM
Το ML-KEM (Module Lattice-based Key Encapsulation Mechanism) — παλιότερα γνωστό ως CRYSTALS-Kyber — είναι ένας αλγόριθμος κρυπτογραφίας βασισμένος σε μαθηματικά πλέγματα (lattices) που θεωρείται ανθεκτικός σε κβαντικές επιθέσεις. Ο NIST τον επέλεξε ως πρότυπο για μετα-κβαντική ανταλλαγή κλειδιών. Σε αντίθεση με τους RSA και Diffie-Hellman που μπορούν (θεωρητικά) να σπάσουν από τον αλγόριθμο του Shor σε κβαντικό υπολογιστή, τα προβλήματα πλεγμάτων παραμένουν δύσκολα ακόμα και για κβαντικούς υπολογιστές.
Η Υβριδική Προσέγγιση — Το Καλύτερο και των Δύο Κόσμων
Ο mlkem768x25519-sha256 δουλεύει υβριδικά: συνδυάζει ML-KEM-768 (μετα-κβαντικό) με X25519 (κλασικό elliptic curve). Γιατί αυτό είναι σημαντικό; Αν το ML-KEM αποδειχθεί ευάλωτο κάποια μέρα, το X25519 σας καλύπτει. Κι αν εμφανιστούν κβαντικοί υπολογιστές ικανοί να σπάσουν το X25519, τότε το ML-KEM αναλαμβάνει. Ουσιαστικά, κερδίζετε σε κάθε σενάριο.
Διαμόρφωση Μετα-Κβαντικής Ανταλλαγής Κλειδιών
Για ρητή διαμόρφωση στον server σας:
# Αρχείο: /etc/ssh/sshd_config.d/post-quantum.conf
# Ρύθμιση μετα-κβαντικών αλγόριθμων ανταλλαγής κλειδιών
# Προτεραιότητα στον υβριδικό μετα-κβαντικό αλγόριθμο
KexAlgorithms mlkem768x25519-sha256,[email protected],curve25519-sha256,[email protected]
# Αποδεκτοί αλγόριθμοι κλειδιών διακομιστή
HostKeyAlgorithms ssh-ed25519,[email protected],rsa-sha2-512,rsa-sha2-256
Και στον client:
# Αρχείο: ~/.ssh/config
# Ρύθμιση μετα-κβαντικής ανταλλαγής κλειδιών στον client
Host *
KexAlgorithms mlkem768x25519-sha256,[email protected],curve25519-sha256
HostKeyAlgorithms [email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256
Πώς Επαληθεύετε ότι Δουλεύει
# Σύνδεση με αναλυτική έξοδο για επαλήθευση αλγόριθμου
ssh -vv user@server 2>&1 | grep "kex:"
# Αναμενόμενη έξοδος:
# debug1: kex: algorithm: mlkem768x25519-sha256
# Εναλλακτικά, χρήση ssh-audit για πλήρη ανάλυση
ssh-audit server.example.com
# Έλεγχος υποστηριζόμενων αλγόριθμων του διακομιστή
nmap --script ssh2-enum-algos -p 22 server.example.com
Θωράκιση sshd_config — Η Πλήρης Διαμόρφωση
Εδώ μπαίνουμε στο ψητό. Ακολουθεί ένα πλήρως σχολιασμένο sshd_config για μέγιστη ασφάλεια. Πάρτε χρόνο να διαβάσετε κάθε οδηγία — κάθε μία εξηγείται αναλυτικά:
# =============================================================
# /etc/ssh/sshd_config - Θωρακισμένη Διαμόρφωση OpenSSH 10.0
# Τελευταία ενημέρωση: 2026
# =============================================================
# --- Βασικές Ρυθμίσεις Δικτύου ---
# Θύρα ακρόασης - αλλαγή από την προεπιλεγμένη 22
# Δεν αποτελεί μέτρο ασφαλείας από μόνο του, αλλά μειώνει
# τον θόρυβο από αυτοματοποιημένα bots
Port 2222
# Ακρόαση μόνο σε συγκεκριμένη διεύθυνση IP
# Χρήσιμο σε διακομιστές με πολλαπλές διεπαφές δικτύου
ListenAddress 0.0.0.0
# Χρήση μόνο του πρωτοκόλλου SSH v2
# (το v1 δεν υποστηρίζεται πλέον στο OpenSSH 10.0)
Protocol 2
# --- Κλειδιά Διακομιστή ---
# Χρήση μόνο κλειδιών Ed25519 και RSA (4096-bit ελάχιστο)
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key
# --- Αλγόριθμοι Κρυπτογράφησης ---
# Μετα-κβαντική ανταλλαγή κλειδιών ως προτεραιότητα
KexAlgorithms mlkem768x25519-sha256,[email protected],curve25519-sha256,diffie-hellman-group16-sha512
# Μόνο ισχυροί αλγόριθμοι κρυπτογράφησης
Ciphers [email protected],[email protected],[email protected]
# Κωδικοί αυθεντικοποίησης μηνυμάτων (MACs)
MACs [email protected],[email protected]
# --- Αυθεντικοποίηση ---
# Απενεργοποίηση αυθεντικοποίησης με κωδικό πρόσβασης
# ΚΡΙΣΙΜΟ: Βεβαιωθείτε ότι έχετε ρυθμίσει κλειδιά SSH πρώτα!
PasswordAuthentication no
# Απενεργοποίηση κενών κωδικών
PermitEmptyPasswords no
# Ενεργοποίηση αυθεντικοποίησης με δημόσιο κλειδί
PubkeyAuthentication yes
# Αποδεκτοί τύποι κλειδιών - μόνο Ed25519 και FIDO2
PubkeyAcceptedAlgorithms ssh-ed25519,[email protected],[email protected],[email protected]
# Απενεργοποίηση αυθεντικοποίησης challenge-response
KbdInteractiveAuthentication no
# Απενεργοποίηση αυθεντικοποίησης βασισμένης σε host
HostbasedAuthentication no
# Αγνόηση αρχείων .rhosts
IgnoreRhosts yes
# --- Περιορισμοί Πρόσβασης ---
# Μόνο συγκεκριμένοι χρήστες μπορούν να συνδεθούν
AllowUsers admin deployer
# Εναλλακτικά, περιορισμός μέσω ομάδων
AllowGroups ssh-users ssh-admins
# Απαγόρευση σύνδεσης ως root
PermitRootLogin no
# --- Περιορισμοί Αυθεντικοποίησης ---
# Μέγιστες αποτυχημένες προσπάθειες πριν τον αποκλεισμό
MaxAuthTries 3
# Χρόνος αναμονής για αυθεντικοποίηση (30 δευτερόλεπτα)
LoginGraceTime 30
# Μέγιστος αριθμός ταυτόχρονων συνεδριών ανά σύνδεση
MaxSessions 2
# Μέγιστος αριθμός ταυτόχρονων μη αυθεντικοποιημένων συνδέσεων
MaxStartups 3:50:10
# --- Έλεγχος Συνεδρίας ---
# Έλεγχος ζωντανής σύνδεσης κάθε 300 δευτερόλεπτα
ClientAliveInterval 300
# Αποσύνδεση μετά από 2 αποτυχημένα μηνύματα keepalive
# (μέγιστος αδράνεια = 300 * 2 = 600 δευτερόλεπτα = 10 λεπτά)
ClientAliveCountMax 2
# --- Απενεργοποίηση Μη Αναγκαίων Λειτουργιών ---
# Απενεργοποίηση X11 forwarding (κίνδυνος ασφαλείας)
X11Forwarding no
# Απενεργοποίηση agent forwarding (αποτροπή κλοπής κλειδιών)
AllowAgentForwarding no
# Απενεργοποίηση TCP forwarding εκτός αν χρειάζεται
AllowTcpForwarding no
# Απενεργοποίηση tunneling
PermitTunnel no
# Αποτροπή δημιουργίας gateway ports
GatewayPorts no
# --- Καταγραφή ---
# Αναλυτική καταγραφή για ανίχνευση επιθέσεων
LogLevel VERBOSE
# Χρήση syslog facility AUTH
SyslogFacility AUTH
# --- Περιβάλλον ---
# Απενεργοποίηση μεταφοράς μεταβλητών περιβάλλοντος
PermitUserEnvironment no
# Απενεργοποίηση εμφάνισης MOTD (χρήση Banner αντ' αυτού)
PrintMotd no
# Νομική προειδοποίηση πριν τη σύνδεση
Banner /etc/ssh/banner.txt
# Εμφάνιση τελευταίας σύνδεσης
PrintLastLog yes
# Χρήση strict modes για έλεγχο δικαιωμάτων αρχείων
StrictModes yes
# --- SFTP ---
# Ρύθμιση υποσυστήματος SFTP με chroot
Subsystem sftp internal-sftp
# --- Ειδικές Ρυθμίσεις ανά Χρήστη/Ομάδα ---
# Ομάδα SFTP-only χρηστών με περιορισμένη πρόσβαση
Match Group sftp-users
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PermitTunnel no
# Ειδική ρύθμιση για λογαριασμό deployment
Match User deployer
AllowTcpForwarding yes
PermitOpen localhost:8080 localhost:3000
MaxSessions 5
Μετά τις αλλαγές, πάντα ελέγξτε τη σύνταξη πριν κάνετε restart — αλλιώς μπορεί να μείνετε απ' έξω:
# Έλεγχος σύνταξης αρχείου ρυθμίσεων
sudo sshd -t
# Αν δεν υπάρχουν σφάλματα, επανεκκίνηση
sudo systemctl restart sshd
# Δημιουργία αρχείου νομικής προειδοποίησης
sudo tee /etc/ssh/banner.txt <<'EOF'
*********************************************************************
ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Μη εξουσιοδοτημένη πρόσβαση απαγορεύεται.
Όλες οι συνδέσεις καταγράφονται και παρακολουθούνται.
Η χρήση αυτού του συστήματος υποδηλώνει αποδοχή της πολιτικής ασφαλείας.
*********************************************************************
EOF
Κρίσιμο tip: Πριν κλείσετε την τρέχουσα συνεδρία SSH, ανοίξτε μια δεύτερη σύνδεση σε άλλο τερματικό για να σιγουρευτείτε ότι μπορείτε ακόμα να μπείτε. Προσωπικά, κάποτε κλειδώθηκα έξω από production server λόγω ενός typo στο config — μάθημα ζωής.
Αυθεντικοποίηση FIDO2 — Φυσική Ασφάλεια στο SSH
Τι Είναι το FIDO2/WebAuthn στο SSH
Το FIDO2 χρησιμοποιεί κλειδιά ασφαλείας υλικού — σκεφτείτε YubiKey, Google Titan, SoloKeys — για αυθεντικοποίηση. Στο SSH υποστηρίζονται δύο τύποι:
- ed25519-sk: Βασισμένο σε Ed25519 με security key (το προτεινόμενο)
- ecdsa-sk: Βασισμένο σε ECDSA-P256 με security key
Η ομορφιά του FIDO2 είναι ότι προσθέτει ένα φυσικό επίπεδο ασφαλείας: ακόμα κι αν κάποιος κλέψει το ιδιωτικό κλειδί SSH, δεν μπορεί να κάνει τίποτα χωρίς φυσική πρόσβαση στο hardware key και χωρίς φυσικό touch ή PIN.
Δημιουργία Κλειδιών FIDO2
# Δημιουργία κλειδιού Ed25519-SK (απαιτεί φυσικό άγγιγμα)
ssh-keygen -t ed25519-sk -C "admin@server - YubiKey 2026"
# Δημιουργία κλειδιού με υποχρεωτικό PIN και επαλήθευση χρήστη
ssh-keygen -t ed25519-sk -O verify-required -C "admin@server - PIN required"
# Δημιουργία resident key (αποθηκευμένο στο κλειδί ασφαλείας)
# Ιδανικό για χρήση σε πολλούς υπολογιστές χωρίς μεταφορά αρχείων
ssh-keygen -t ed25519-sk -O resident -O verify-required -C "admin - resident key"
# Εξαγωγή resident keys από το κλειδί ασφαλείας σε νέο μηχάνημα
ssh-keygen -K
# Δημιουργία κλειδιού ECDSA-SK (εναλλακτικό)
ssh-keygen -t ecdsa-sk -C "admin@server - ECDSA FIDO2"
Διαμόρφωση Διακομιστή για FIDO2
# Προσθήκη στο /etc/ssh/sshd_config.d/fido2.conf
# Ενεργοποίηση αυθεντικοποίησης με δημόσιο κλειδί (απαιτείται για FIDO2)
PubkeyAuthentication yes
# Αποδεκτοί αλγόριθμοι - συμπεριλαμβάνει τύπους -sk
PubkeyAcceptedAlgorithms ssh-ed25519,[email protected],[email protected]
Πρακτικό Παράδειγμα με YubiKey
Ας δούμε βήμα-βήμα πώς ρυθμίζεται στην πράξη:
# Βήμα 1: Εισάγετε το YubiKey και βεβαιωθείτε ότι αναγνωρίζεται
lsusb | grep -i yubi
# Αναμενόμενο: Bus 001 Device 003: ID 1050:0407 Yubico.com YubiKey
# Βήμα 2: Εγκατάσταση απαιτούμενων βιβλιοθηκών
sudo apt install libfido2-dev libfido2-1 fido2-tools
# Βήμα 3: Δημιουργία κλειδιού με PIN και αποθήκευση στο token
ssh-keygen -t ed25519-sk -O resident -O verify-required \
-f ~/.ssh/id_ed25519_sk_yubikey \
-C "$(whoami)@$(hostname) - YubiKey $(date +%Y)"
# Βήμα 4: Αντιγραφή δημόσιου κλειδιού στον διακομιστή
ssh-copy-id -i ~/.ssh/id_ed25519_sk_yubikey.pub user@server
# Βήμα 5: Δοκιμή σύνδεσης (θα ζητήσει PIN και φυσικό άγγιγμα)
ssh -i ~/.ssh/id_ed25519_sk_yubikey user@server
# Βήμα 6: Ρύθμιση SSH config για αυτόματη χρήση
cat >> ~/.ssh/config <<'EOF'
Host production
HostName server.example.com
User admin
IdentityFile ~/.ssh/id_ed25519_sk_yubikey
IdentitiesOnly yes
EOF
Πιστοποιητικά SSH — Η Επαγγελματική Λύση για Οργανισμούς
Γιατί τα Πιστοποιητικά Κερδίζουν τα Απλά Κλειδιά
Αν διαχειρίζεστε 5-10 servers, τα κλασικά authorized_keys δουλεύουν μια χαρά. Αν όμως μιλάμε για δεκάδες ή εκατοντάδες μηχανήματα, τα πράγματα γίνονται γρήγορα χαοτικά. Εδώ μπαίνουν τα πιστοποιητικά SSH: δημιουργείτε μια Αρχή Πιστοποίησης (CA) που υπογράφει τα κλειδιά χρηστών, και οι servers εμπιστεύονται αυτόματα κάθε υπογεγραμμένο κλειδί.
Τα πλεονεκτήματα είναι σημαντικά:
- Αυτόματη λήξη: Τα πιστοποιητικά λήγουν — δεν μένουν αιώνια στα authorized_keys
- Κεντρική ανάκληση: Ανακαλείτε πρόσβαση χωρίς να πειράζετε κάθε server ξεχωριστά
- Principals: Ορίζετε ρητά ποιοι χρήστες μπορούν να χρησιμοποιήσουν κάθε πιστοποιητικό
- Κλιμάκωση: Δουλεύει το ίδιο καλά σε 10 ή 10.000 servers
Δημιουργία Αρχής Πιστοποίησης (CA)
# Βήμα 1: Δημιουργία κλειδιού CA για χρήστες
# ΠΡΟΣΟΧΗ: Φυλάξτε αυτό το κλειδί σε ασφαλή τοποθεσία (offline, hardware token)
ssh-keygen -t ed25519 -f /etc/ssh/ca/user_ca -C "SSH User CA 2026"
# Βήμα 2: Δημιουργία κλειδιού CA για hosts
ssh-keygen -t ed25519 -f /etc/ssh/ca/host_ca -C "SSH Host CA 2026"
# Βήμα 3: Ασφαλή δικαιώματα αρχείων
chmod 600 /etc/ssh/ca/user_ca /etc/ssh/ca/host_ca
chmod 644 /etc/ssh/ca/user_ca.pub /etc/ssh/ca/host_ca.pub
Υπογραφή Κλειδιών Χρηστών
# Υπογραφή κλειδιού χρήστη με λήξη 8 ωρών
# -s: κλειδί CA, -I: αναγνωριστικό, -n: principals (επιτρεπόμενα usernames)
# -V: χρονική εγκυρότητα
ssh-keygen -s /etc/ssh/ca/user_ca \
-I "giorgos-admin-cert-2026" \
-n admin,deployer \
-V +8h \
/home/giorgos/.ssh/id_ed25519.pub
# Το αρχείο πιστοποιητικού δημιουργείται ως:
# /home/giorgos/.ssh/id_ed25519-cert.pub
# Επαλήθευση πιστοποιητικού
ssh-keygen -L -f /home/giorgos/.ssh/id_ed25519-cert.pub
# Υπογραφή κλειδιού με πιο αυστηρές επιλογές
ssh-keygen -s /etc/ssh/ca/user_ca \
-I "maria-dev-cert-2026" \
-n deployer \
-V +2h \
-O source-address=192.168.1.0/24,10.0.0.0/8 \
-O no-agent-forwarding \
-O no-port-forwarding \
/home/maria/.ssh/id_ed25519.pub
Υπογραφή Κλειδιών Διακομιστών (Host Certificates)
# Υπογραφή κλειδιού host για αυθεντικοποίηση διακομιστή
ssh-keygen -s /etc/ssh/ca/host_ca \
-I "webserver01.example.com" \
-h \
-n webserver01.example.com,192.168.1.10 \
-V +52w \
/etc/ssh/ssh_host_ed25519_key.pub
# Προσθήκη στο sshd_config του διακομιστή
# HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub
Διαμόρφωση Εμπιστοσύνης CA
# Προσθήκη στο /etc/ssh/sshd_config
# Εμπιστοσύνη του CA για αυθεντικοποίηση χρηστών
TrustedUserCAKeys /etc/ssh/ca/user_ca.pub
# Αρχείο ανάκλησης πιστοποιητικών (KRL)
RevokedKeys /etc/ssh/ca/revoked_keys
# Χρήση πιστοποιητικού host
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub
# Αρχείο principals - ορίζει ποιοι principals αντιστοιχούν σε ποιους χρήστες
AuthorizedPrincipalsFile /etc/ssh/auth_principals/%u
# Δημιουργία αρχείου principals για τον χρήστη admin
sudo mkdir -p /etc/ssh/auth_principals
echo -e "admin\nroot-everywhere" | sudo tee /etc/ssh/auth_principals/admin
# Δημιουργία αρχικού KRL (Key Revocation List)
ssh-keygen -k -f /etc/ssh/ca/revoked_keys -s /etc/ssh/ca/user_ca /dev/null
# Ανάκληση συγκεκριμένου πιστοποιητικού
ssh-keygen -k -f /etc/ssh/ca/revoked_keys -s /etc/ssh/ca/user_ca \
-u /path/to/compromised_cert.pub
# Διαμόρφωση client να εμπιστεύεται το host CA
# Προσθήκη στο ~/.ssh/known_hosts
echo "@cert-authority *.example.com $(cat /etc/ssh/ca/host_ca.pub)" \
>> ~/.ssh/known_hosts
CrowdSec vs Fail2Ban — Ποιο Χρειάζεστε (Spoiler: Και τα Δύο)
Fail2Ban: Ο Αξιόπιστος Βετεράνος
Το Fail2Ban είναι ο κλασικός τρόπος: παρακολουθεί τα logs, βρίσκει αποτυχημένες προσπάθειες σύνδεσης, και αποκλείει αυτόματα τις IPs μέσω iptables/nftables. Δουλεύει αντιδραστικά — δηλαδή αποκλείει κάποιον αφού ήδη αποτύχει να συνδεθεί αρκετές φορές.
# Εγκατάσταση Fail2Ban
sudo apt install fail2ban
# Δημιουργία τοπικής ρύθμισης (ποτέ μην τροποποιείτε το jail.conf)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# Αρχείο: /etc/fail2ban/jail.local
# Ρύθμιση Fail2Ban για SSH
[DEFAULT]
# Διάρκεια αποκλεισμού: 1 ώρα
bantime = 3600
# Παράθυρο αναζήτησης: 10 λεπτά
findtime = 600
# Μέγιστες αποτυχημένες προσπάθειες
maxretry = 3
# Ειδοποίηση μέσω email
destemail = [email protected]
action = %(action_mwl)s
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
# Πιο αυστηρές ρυθμίσεις για SSH
maxretry = 3
bantime = 86400
findtime = 3600
# Αυξανόμενος χρόνος αποκλεισμού για επαναλαμβανόμενους παραβάτες
[sshd-progressive]
enabled = true
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
bantime = 604800
findtime = 86400
# Εκκίνηση και ενεργοποίηση Fail2Ban
sudo systemctl enable --now fail2ban
# Έλεγχος κατάστασης
sudo fail2ban-client status sshd
# Χειροκίνητος αποκλεισμός IP
sudo fail2ban-client set sshd banip 203.0.113.100
# Άρση αποκλεισμού IP
sudo fail2ban-client set sshd unbanip 203.0.113.100
# Προβολή αποκλεισμένων IP
sudo fail2ban-client get sshd banned
CrowdSec: Η Νέα Γενιά με Συλλογική Νοημοσύνη
Εδώ τα πράγματα γίνονται πραγματικά ενδιαφέροντα. Το CrowdSec χρησιμοποιεί συλλογική νοημοσύνη από εκατομμύρια χρήστες που μοιράζονται δεδομένα απειλών σε πραγματικό χρόνο. Επεξεργάζεται πάνω από 1 εκατομμύριο IPs ημερησίως και μπορεί να αποκλείσει γνωστούς επιτιθέμενους προληπτικά — δηλαδή πριν καν προσπαθήσουν να συνδεθούν στον δικό σας server. Κατά τις αναφορές, μπορεί να μειώσει τον θόρυβο επιθέσεων SSH κατά 99%. Ναι, διαβάσατε σωστά.
# Εγκατάσταση CrowdSec σε Debian/Ubuntu
curl -s https://install.crowdsec.net | sudo sh
sudo apt install crowdsec crowdsec-firewall-bouncer-iptables
# Εγκατάσταση σε RHEL/Fedora
curl -s https://install.crowdsec.net | sudo sh
sudo dnf install crowdsec crowdsec-firewall-bouncer-iptables
# Εγκατάσταση collection για SSH
sudo cscli collections install crowdsecurity/sshd
# Εγκατάσταση bouncer για iptables/nftables
sudo cscli bouncers add firewall-bouncer
# Έλεγχος ότι τα σενάρια SSH είναι ενεργά
sudo cscli scenarios list | grep ssh
# Εγγραφή στην κονσόλα CrowdSec (δωρεάν)
sudo cscli console enroll YOUR_ENROLLMENT_KEY
# Αρχείο: /etc/crowdsec/acquis.yaml
# Ρύθμιση πηγών δεδομένων
---
filenames:
- /var/log/auth.log
- /var/log/syslog
labels:
type: syslog
---
source: journalctl
journalctl_filter:
- "_SYSTEMD_UNIT=sshd.service"
labels:
type: syslog
# Προβολή τρεχουσών αποφάσεων αποκλεισμού
sudo cscli decisions list
# Προβολή ειδοποιήσεων
sudo cscli alerts list
# Χειροκίνητος αποκλεισμός
sudo cscli decisions add --ip 203.0.113.100 --duration 24h --reason "Χειροκίνητος αποκλεισμός"
# Στατιστικά
sudo cscli metrics
# Ενημέρωση hub (σενάρια, parsers, κτλ.)
sudo cscli hub update && sudo cscli hub upgrade
Η Σύστασή μας: Χρησιμοποιήστε και τα Δύο
Ειλικρινά, η βέλτιστη προσέγγιση για το 2026 είναι να τρέχετε και τα δύο μαζί:
- CrowdSec ως κύρια γραμμή άμυνας: προληπτική προστασία μέσω της κοινοτικής βάσης γνωστών επιτιθέμενων, κατανεμημένη νοημοσύνη, σύγχρονη αρχιτεκτονική
- Fail2Ban ως δεύτερη γραμμή: αντιδραστική προστασία για επιτιθέμενους που δεν βρίσκονται ακόμα στη βάση του CrowdSec, δοκιμασμένη αξιοπιστία, απλή τοπική ρύθμιση
Η αλληλοσυμπλήρωση τους δίνει μια πολύ ισχυρή αμυντική γραμμή.
Προηγμένες Τεχνικές Ασφαλείας
Port Knocking με knockd
Το port knocking είναι μια τεχνική που κρύβει εντελώς τη θύρα SSH μέχρι ο χρήστης να "χτυπήσει" μια σειρά θυρών με τη σωστή σειρά. Ουσιαστικά, η θύρα SSH γίνεται αόρατη σε port scanners. Δεν είναι bullet-proof μέτρο ασφαλείας από μόνο του, αλλά ως πρόσθετο επίπεδο κάνει τη ζωή των bots πολύ δύσκολη.
# Εγκατάσταση knockd
sudo apt install knockd
# Αρχείο: /etc/knockd.conf
[options]
UseSyslog
Interface = eth0
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /usr/sbin/nft add rule inet filter input ip saddr %IP% tcp dport 2222 accept
tcpflags = syn
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 5
command = /usr/sbin/nft delete rule inet filter input handle $(nft -a list chain inet filter input | grep %IP% | grep 2222 | awk '{print $NF}')
tcpflags = syn
# Ενεργοποίηση knockd
sudo systemctl enable --now knockd
# Χρήση από τον client (απαιτεί εγκατάσταση knock client)
knock server.example.com 7000 8000 9000
ssh -p 2222 [email protected]
knock server.example.com 9000 8000 7000
SSH μέσω Tor για Ανωνυμία
# Εγκατάσταση Tor
sudo apt install tor torsocks
# Σύνδεση SSH μέσω δικτύου Tor
torsocks ssh [email protected]
# Ρύθμιση SSH config για χρήση Tor ως proxy
# Αρχείο: ~/.ssh/config
Host hidden-server
HostName abcdefghijklmnop.onion
User admin
ProxyCommand nc -x localhost:9050 -X 5 %h %p
# Δημιουργία Tor hidden service για SSH στον διακομιστή
# Αρχείο: /etc/tor/torrc
HiddenServiceDir /var/lib/tor/ssh/
HiddenServicePort 22 127.0.0.1:2222
SSH Bastion Hosts και ProxyJump
Οι bastion hosts (ή jump servers) είναι κάτι που κάθε σοβαρό production περιβάλλον πρέπει να έχει. Πρόκειται για κεντρικά σημεία πρόσβασης που ελέγχουν και καταγράφουν κάθε SSH σύνδεση στο εσωτερικό δίκτυο:
# Ρύθμιση ProxyJump στο ~/.ssh/config
# Bastion host (μοναδικό σημείο εισόδου)
Host bastion
HostName bastion.example.com
User admin
Port 2222
IdentityFile ~/.ssh/id_ed25519_sk_yubikey
IdentitiesOnly yes
# Εσωτερικοί διακομιστές μέσω bastion
Host internal-web
HostName 10.0.1.10
User deployer
ProxyJump bastion
Host internal-db
HostName 10.0.1.20
User dbadmin
ProxyJump bastion
# Σύνδεση σε εσωτερικό διακομιστή μέσω πολλαπλών jump hosts
Host deep-internal
HostName 172.16.0.50
User admin
ProxyJump bastion,internal-web
# Γρήγορη σύνδεση - αυτόματα περνάει μέσω bastion
ssh internal-web
# Εναλλακτικά, από τη γραμμή εντολών
ssh -J admin@bastion:2222 [email protected]
Έλεγχος Ασφαλείας με ssh-audit
Ένα εργαλείο που πραγματικά αξίζει τον χρόνο σας:
# Εγκατάσταση ssh-audit
pip3 install ssh-audit
# Ή μέσω πακέτου διανομής
sudo apt install ssh-audit
# Πλήρης έλεγχος ασφαλείας διακομιστή
ssh-audit server.example.com
# Έλεγχος συγκεκριμένης θύρας
ssh-audit -p 2222 server.example.com
# Έλεγχος πολιτικής ασφαλείας (hardening audit)
ssh-audit --level warn server.example.com
# Εξαγωγή αναφοράς σε JSON
ssh-audit -j server.example.com > ssh_audit_report.json
# Έλεγχος client
ssh-audit -c
Αυτοματοποίηση Θωράκισης με Ansible
Αν διαχειρίζεστε πολλούς servers (και πιθανότατα ναι, αν διαβάζετε αυτό), η χειροκίνητη εφαρμογή ρυθμίσεων δεν κλιμακώνει. Ένα Ansible playbook λύνει το πρόβλημα:
# Αρχείο: ssh_hardening.yml
# Ansible Playbook για αυτοματοποιημένη θωράκιση SSH
---
- name: Θωράκιση OpenSSH σε όλους τους διακομιστές
hosts: all
become: yes
vars:
ssh_port: 2222
allowed_users: "admin deployer"
tasks:
- name: Εγκατάσταση τελευταίας έκδοσης OpenSSH
apt:
name:
- openssh-server
- openssh-client
state: latest
update_cache: yes
when: ansible_os_family == "Debian"
- name: Δημιουργία αντιγράφου ασφαλείας τρέχουσας ρύθμισης
copy:
src: /etc/ssh/sshd_config
dest: /etc/ssh/sshd_config.backup.{{ ansible_date_time.iso8601 }}
remote_src: yes
- name: Αντιγραφή θωρακισμένου sshd_config
template:
src: templates/sshd_config.j2
dest: /etc/ssh/sshd_config
owner: root
group: root
mode: '0600'
validate: '/usr/sbin/sshd -t -f %s'
notify: Επανεκκίνηση SSH
- name: Δημιουργία κλειδιού Ed25519 διακομιστή αν δεν υπάρχει
command: ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
args:
creates: /etc/ssh/ssh_host_ed25519_key
- name: Αφαίρεση αδύναμων κλειδιών host
file:
path: "{{ item }}"
state: absent
loop:
- /etc/ssh/ssh_host_dsa_key
- /etc/ssh/ssh_host_dsa_key.pub
- /etc/ssh/ssh_host_ecdsa_key
- /etc/ssh/ssh_host_ecdsa_key.pub
- name: Εγκατάσταση CrowdSec
shell: curl -s https://install.crowdsec.net | sh
args:
creates: /usr/bin/cscli
- name: Εγκατάσταση SSH collection για CrowdSec
command: cscli collections install crowdsecurity/sshd
changed_when: false
handlers:
- name: Επανεκκίνηση SSH
systemd:
name: sshd
state: restarted
# Εκτέλεση του playbook
ansible-playbook -i inventory.ini ssh_hardening.yml --check # Dry run
ansible-playbook -i inventory.ini ssh_hardening.yml # Εφαρμογή
Παρακολούθηση και Καταγραφή — Τα Μάτια σας στο SSH
Αναλυτική Καταγραφή
Δεν αρκεί να θωρακίσετε — πρέπει και να βλέπετε τι γίνεται. Η σωστή καταγραφή είναι κρίσιμη τόσο για ανίχνευση επιθέσεων σε πραγματικό χρόνο όσο και για forensics μετά από κάποιο περιστατικό.
# Στο sshd_config - ενεργοποίηση αναλυτικής καταγραφής
LogLevel VERBOSE
SyslogFacility AUTH
# Για ακόμα πιο αναλυτική καταγραφή (μόνο για debugging)
# LogLevel DEBUG3
# Προβολή σύνδεσεων SSH σε πραγματικό χρόνο
sudo journalctl -u sshd -f
# Αναζήτηση αποτυχημένων προσπαθειών
sudo journalctl -u sshd | grep "Failed password"
sudo journalctl -u sshd | grep "Invalid user"
# Εμφάνιση επιτυχών συνδέσεων
sudo journalctl -u sshd | grep "Accepted"
# Σύνοψη αποτυχημένων προσπαθειών ανά IP
sudo journalctl -u sshd | grep "Failed" | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -20
Ξεχωριστό Αρχείο Καταγραφής με Rsyslog
# Αρχείο: /etc/rsyslog.d/ssh.conf
# Ξεχωριστό αρχείο καταγραφής αποκλειστικά για SSH
# Αποθήκευση SSH logs σε ξεχωριστό αρχείο
if $programname == 'sshd' then /var/log/ssh.log
& stop
# Εναλλακτικά, με πιο λεπτομερή φιλτράρισμα
:programname, isequal, "sshd" /var/log/ssh.log
# Επανεκκίνηση rsyslog
sudo systemctl restart rsyslog
# Ρύθμιση logrotate για τα SSH logs
# Αρχείο: /etc/logrotate.d/ssh
/var/log/ssh.log {
daily
rotate 90
compress
delaycompress
missingok
notifempty
create 0640 root adm
postrotate
systemctl reload rsyslog > /dev/null 2>&1 || true
endscript
}
Ειδοποιήσεις σε Πραγματικό Χρόνο με auditd
# Εγκατάσταση auditd
sudo apt install auditd audispd-plugins
# Κανόνες audit για παρακολούθηση SSH
# Αρχείο: /etc/audit/rules.d/ssh.rules
# Παρακολούθηση αλλαγών στο αρχείο ρυθμίσεων SSH
-w /etc/ssh/sshd_config -p wa -k sshd_config_change
-w /etc/ssh/sshd_config.d/ -p wa -k sshd_config_change
# Παρακολούθηση αλλαγών στα authorized_keys
-w /home/ -p wa -k authorized_keys_change
# Παρακολούθηση εκτέλεσης ssh/scp/sftp
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/ssh -k ssh_execution
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/scp -k scp_execution
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/sftp -k sftp_execution
# Παρακολούθηση αλλαγών στα κλειδιά host
-w /etc/ssh/ssh_host_ed25519_key -p wa -k ssh_host_key_change
-w /etc/ssh/ssh_host_rsa_key -p wa -k ssh_host_key_change
# Φόρτωση κανόνων audit
sudo augenrules --load
# Αναζήτηση events
sudo ausearch -k sshd_config_change
sudo ausearch -k ssh_execution --start today
# Δημιουργία αναφοράς
sudo aureport -au --summary
Καταγραφή Συνεδριών SSH
Για περιβάλλοντα που απαιτούν πλήρη audit trail (compliance, κρίσιμες υποδομές), η καταγραφή των ίδιων των συνεδριών είναι απαραίτητη:
# Μέθοδος 1: Χρήση script command για καταγραφή τερματικού
# Προσθήκη στο /etc/profile ή στο ForceCommand
script -qf /var/log/ssh-sessions/$(whoami)_$(date +%Y%m%d_%H%M%S).log
# Μέθοδος 2: Αυτόματη καταγραφή μέσω sshd_config
# Χρήση ForceCommand για logging wrapper
# Αρχείο: /usr/local/bin/ssh-session-logger.sh
#!/bin/bash
LOG_DIR="/var/log/ssh-sessions"
LOG_FILE="${LOG_DIR}/${USER}_$(date +%Y%m%d_%H%M%S)_$$.log"
mkdir -p "$LOG_DIR"
echo "=== Συνεδρία SSH: χρήστης=${USER} ip=${SSH_CLIENT%% *} ημερομηνία=$(date) ===" >> "$LOG_FILE"
exec script -qf "$LOG_FILE" -c "${SSH_ORIGINAL_COMMAND:-$SHELL}"
# Στο sshd_config (για συγκεκριμένη ομάδα χρηστών)
Match Group audited-users
ForceCommand /usr/local/bin/ssh-session-logger.sh
# Μέθοδος 3: Χρήση asciinema για αναπαραγώγιμη καταγραφή
# Εγκατάσταση asciinema
sudo apt install asciinema
# Καταγραφή συνεδρίας
asciinema rec /var/log/ssh-sessions/session_$(date +%Y%m%d_%H%M%S).cast
# Αναπαραγωγή καταγραφής
asciinema play /var/log/ssh-sessions/session_20260206_143000.cast
Συμπεράσματα και Λίστα Ελέγχου
Η ασφάλεια SSH το 2026 δεν είναι κάτι που ρυθμίζετε μια φορά και ξεχνάτε. Χρειάζεται μια πολυεπίπεδη προσέγγιση — σύγχρονοι αλγόριθμοι, αυστηρές ρυθμίσεις, hardware αυθεντικοποίηση, και συνεχής παρακολούθηση. Ακολουθεί η λίστα ελέγχου:
Λίστα Ελέγχου Θωράκισης SSH
- Αναβάθμιση σε OpenSSH 10.0+ — Νέος διαχωρισμός δυαδικών αρχείων και υποχρεωτικό privilege separation
- Ενεργοποίηση μετα-κβαντικής ανταλλαγής κλειδιών — Χρήση mlkem768x25519-sha256 ως προεπιλογή
- Απενεργοποίηση κωδικών πρόσβασης —
PasswordAuthentication no - Χρήση μόνο κλειδιών Ed25519 — Αφαίρεση DSA και ECDSA κλειδιών
- Εφαρμογή FIDO2 — Κλειδιά ed25519-sk με PIN και φυσική επαφή
- Υλοποίηση πιστοποιητικών SSH — CA, principals, αυτόματη λήξη
- Απαγόρευση root login —
PermitRootLogin no - Περιορισμός χρηστών/ομάδων —
AllowUsersκαιAllowGroups - Αυστηρά όρια —
MaxAuthTries 3,LoginGraceTime 30 - Απενεργοποίηση μη αναγκαίων λειτουργιών — X11, Agent, TCP Forwarding
- CrowdSec + Fail2Ban — Προληπτική και αντιδραστική προστασία μαζί
- Ισχυροί αλγόριθμοι μόνο — chacha20-poly1305, aes256-gcm, hmac-sha2-512-etm
- Αναλυτική καταγραφή —
LogLevel VERBOSE - Κανόνες auditd — Παρακολούθηση αλλαγών ρυθμίσεων και εκτέλεσης SSH
- Τακτικός έλεγχος με ssh-audit — Αυτοματοποιημένος έλεγχος
- Bastion hosts — Κεντρικό σημείο πρόσβασης με ProxyJump
- Καταγραφή συνεδριών — Πλήρες audit trail για κρίσιμα συστήματα
- Αυτοματοποίηση με Ansible — Συνεπής εφαρμογή σε όλους τους servers
Γρήγορος Αυτοματοποιημένος Έλεγχος
#!/bin/bash
# Σενάριο γρήγορου ελέγχου θωράκισης SSH
# Εκτέλεση: sudo bash ssh_check.sh
echo "=== Έλεγχος Θωράκισης SSH ==="
echo ""
# Έλεγχος έκδοσης
echo "[1] Έκδοση OpenSSH:"
ssh -V 2>&1
echo ""
# Έλεγχος αυθεντικοποίησης κωδικού
echo "[2] Αυθεντικοποίηση κωδικού:"
if sshd -T 2>/dev/null | grep -q "passwordauthentication yes"; then
echo " ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η αυθεντικοποίηση κωδικού είναι ενεργή!"
else
echo " OK: Η αυθεντικοποίηση κωδικού είναι απενεργοποιημένη"
fi
echo ""
# Έλεγχος root login
echo "[3] Σύνδεση root:"
if sshd -T 2>/dev/null | grep -q "permitrootlogin yes"; then
echo " ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η σύνδεση root επιτρέπεται!"
else
echo " OK: Η σύνδεση root είναι απενεργοποιημένη"
fi
echo ""
# Έλεγχος αλγόριθμων
echo "[4] Αλγόριθμοι ανταλλαγής κλειδιών:"
sshd -T 2>/dev/null | grep "kexalgorithms" | tr ',' '\n' | head -5
echo ""
# Έλεγχος κρυπτογράφησης
echo "[5] Αλγόριθμοι κρυπτογράφησης:"
sshd -T 2>/dev/null | grep "^ciphers" | tr ',' '\n' | head -5
echo ""
# Έλεγχος θύρας
echo "[6] Θύρα SSH:"
sshd -T 2>/dev/null | grep "^port "
echo ""
# Έλεγχος CrowdSec
echo "[7] CrowdSec:"
if command -v cscli &>/dev/null; then
echo " OK: CrowdSec εγκατεστημένο"
sudo cscli decisions list --no-api 2>/dev/null | head -5
else
echo " ΠΡΟΕΙΔΟΠΟΙΗΣΗ: CrowdSec δεν είναι εγκατεστημένο"
fi
echo ""
# Έλεγχος Fail2Ban
echo "[8] Fail2Ban:"
if command -v fail2ban-client &>/dev/null; then
echo " OK: Fail2Ban εγκατεστημένο"
sudo fail2ban-client status sshd 2>/dev/null | head -5
else
echo " ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Fail2Ban δεν είναι εγκατεστημένο"
fi
echo ""
echo "=== Ολοκλήρωση Ελέγχου ==="
Η Σημασία της Συνεχούς Παρακολούθησης
Η θωράκιση SSH δεν είναι μια εφάπαξ υπόθεση — είναι μια συνεχής διαδικασία. Οι απειλές εξελίσσονται, νέες ευπάθειες ανακαλύπτονται, και οι ρυθμίσεις πρέπει να αναθεωρούνται τακτικά. Βάλτε μηνιαίους ελέγχους με ssh-audit στο calendar σας, ελέγχετε τα logs καθημερινά, και ενημερώνετε το OpenSSH αμέσως μετά κάθε νέα έκδοση ασφαλείας.
Κοιτάζοντας το Μέλλον
Η μετα-κβαντική κρυπτογραφία θα γίνει υποχρεωτική στα επόμενα χρόνια — αυτό δεν είναι υπόθεση, είναι σχεδόν βεβαιότητα. Το OpenSSH 10.1 ήδη προειδοποιεί για μη μετα-κβαντικούς αλγόριθμους, και αναμένεται ότι μελλοντικές εκδόσεις θα τους αφαιρέσουν πλήρως.
Η μετάβαση πρέπει να ξεκινήσει σήμερα. Γιατί; Εξαιτίας των επιθέσεων "harvest now, decrypt later": οι επιτιθέμενοι καταγράφουν κρυπτογραφημένη κίνηση τώρα, περιμένοντας να την αποκρυπτογραφήσουν με κβαντικούς υπολογιστές αργότερα. Αν τα δεδομένα σας θα είναι ευαίσθητα σε 10 χρόνια, πρέπει να τα προστατέψετε με μετα-κβαντική κρυπτογραφία σήμερα.
Ακολουθώντας τις πρακτικές αυτού του οδηγού, θα θωρακίσετε τους servers σας ενάντια στις σύγχρονες — και μελλοντικές — απειλές. Η ασφάλεια SSH το 2026 απαιτεί γνώση, επαγρυπνία και συνεχή προσαρμογή. Αλλά τώρα έχετε τα εργαλεία για να τα καταφέρετε.