Kako osigurati SSH na Linux VPS-u
Javni VPS prima automatizirane pokušaje prijave već nekoliko minuta nakon pokretanja. Ovi koraci znatno otežavaju napade na SSH. Pisani su za Ubuntu ili Debian. Ako još niste napravili poslužitelj, možete iznajmiti Linux VPS i započeti s čistom slikom. Držite trenutačnu SSH sesiju otvorenom dok ne provjerite nove postavke iz drugog prozora.
1. Izradite običnog korisnika sa sudo ovlastima
adduser deploy
usermod -aG sudo deploy2. Umjesto lozinki koristite SSH ključeve
Na vlastitom računalu:
ssh-keygen -t ed25519 -C "you@example.com"
ssh-copy-id deploy@YOUR_SERVER_IP
ssh deploy@YOUR_SERVER_IPPrijavite se jednom ključem kako biste potvrdili da radi, prije nego isključite lozinke.
3. Isključite prijavu lozinkom i root računom
Izradite /etc/ssh/sshd_config.d/99-hardening.conf:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
MaxAuthTries 3Provjerite sintaksu i ponovno učitajte uslugu. Usluga se zove ssh na Ubuntu i Debian sustavima, a sshd na sustavima temeljenim na RHEL-u:
sudo sshd -t && sudo systemctl reload sshOtvorite drugi terminal i ponovno se prijavite. Tek tada zatvorite staru sesiju.
4. Uključite vatrozid
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verboseOtvorite samo portove koji su vam potrebni, primjerice 80 i 443 za web poslužitelj. SSH također možete ograničiti na vlastitu IP adresu pravilom vatrozida u konzoli za oblak.
5. Blokirajte ponovljene neuspjele pokušaje pomoću Fail2bana
sudo apt install -y fail2banIzradite /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1hsudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd6. Automatski instalirajte sigurnosna ažuriranja
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades7. Dodatne opcije
- Promjena SSH porta smanjuje šum u logovima, ali sama po sebi nije sigurnosna mjera.
- Zaštitite privatni ključ lozinkom i čuvajte sigurnosnu kopiju na sigurnom mjestu.
- Pregledajte prijave naredbama
lastisudo journalctl -u ssh --since today. - Kad je poslužitelj konfiguriran, napravite snapshot kako biste mogli vratiti čisto početno stanje.
Ako ste zaključani, koristite konzolu preglednika u panelu za oblak da se prijavite i ispravite konfiguraciju. Naš vodič o DDoS zaštiti pokriva sljedeći sloj obrane.
Često postavljana pitanja
Je li sigurno isključiti prijavu root korisnika?
Da, ali tek nakon što izradite sudo korisnika i provjerite radi li njegov ključ. Administrativne naredbe i dalje možete pokretati pomoću sudo.
Trebam li Fail2ban ako koristim samo ključeve?
Nije obavezan. Kad je prijava lozinkom isključena, brute force napad ne može uspjeti, ali Fail2ban smanjuje šum u logovima i opterećenje.
Što ako izgubim SSH ključ?
Pomoću konzole u panelu za oblak prijavite se, dodajte novi javni ključ u ~/.ssh/authorized_keys i uklonite stari.