Kako zavarovati SSH na Linux VPS-u
Javni VPS prejme samodejne poskuse prijave v nekaj minutah po zagonu. Ti koraki močno otežijo napade na SSH. Napisani so za Ubuntu ali Debian; če strežnika še nimate, lahko najamete Linux VPS in začnete s čisto sliko. Trenutno SSH sejo odprto pustite, dokler nove nastavitve ne preizkusite v drugem oknu.
1. Ustvarite običajnega uporabnika s sudo pravicami
adduser deploy
usermod -aG sudo deploy2. Uporabite SSH ključe namesto gesel
Na svojem računalniku:
ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id deploy@YOUR_SERVER_IP
ssh deploy@YOUR_SERVER_IPPred izklopom gesel se enkrat prijavite s ključem in preverite, ali deluje.
3. Izklopite prijavo z geslom in prijavo kot root
Ustvarite datoteko /etc/ssh/sshd_config.d/99-hardening.conf:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3Preverite sintakso in ponovno naložite storitev. Storitev se na Ubuntu in Debianu imenuje ssh, na sistemih RHEL pa sshd:
sudo sshd -t && sudo systemctl reload sshOdprite drugi terminal in se znova prijavite. Šele nato zaprite staro sejo.
4. Vklopite požarni zid
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verboseOdprite samo vrata, ki jih potrebujete, na primer 80 in 443 za spletni strežnik. SSH lahko omejite tudi na svoj IP naslov s pravilom požarnega zidu v spletni konzoli ponudnika.
5. Blokirajte ponavljajoče se neuspešne poskuse z Fail2ban
sudo apt install -y fail2banUstvarite datoteko /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1hsudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd6. Samodejno namestite varnostne posodobitve
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades7. Dodatne možnosti
- Sprememba vrat SSH zmanjša število dnevniških zapisov, vendar sama po sebi ni varnostni ukrep.
- Zasebni ključ zaščitite z geslom in hranite varno kopijo na varnem mestu.
- Prijave pregledujte z ukazom
lastinsudo journalctl -u ssh --since today. - Ko je strežnik nastavljen, naredite posnetek stanja, da lahko kasneje obnovite čisto izhodišče.
Če ste zaklenjeni iz strežnika, uporabite brskalniško konzolo v svoji nadzorni plošči za prijavo in popravilo nastavitev. Naš vodnik za zaščito pred DDoS opisuje naslednjo plast obrambe.
Pogosto zastavljena vprašanja
Ali je varno onemogočiti prijavo kot root?
Da, če prej ustvarite uporabnika s sudo pravicami in preverite, ali njegov ključ deluje. Administrativne ukaze še vedno lahko izvajate s sudo.
Ali potrebujem Fail2ban, če uporabljam samo ključe?
Ni nujno. Ko je prijava z geslom onemogočena, napad z grobo silo ne more uspeti, vendar Fail2ban zmanjša število dnevniških zapisov in obremenitev.
Kaj storiti, če izgubim SSH ključ?
Prijavite se prek konzole v svoji nadzorni plošči, dodajte nov javni ključ v datoteko ~/.ssh/authorized_keys in odstranite stari.