SSH adalah layanan yang paling banyak diserang di server publik mana pun, sekaligus yang paling mudah ditutup dengan benar. Nyaris seluruh risikonya datang dari satu hal: kata sandi. Singkirkan itu, maka percobaan-percobaan itu tetap berlangsung dan berhenti berarti apa pun.

Pengaturannya

# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
AllowUsers sara deploy

sudo sshd -t && sudo systemctl reload ssh
Sebelum memuat ulang: pastikan Anda punya kunci yang berfungsi, dan satu terminal kedua yang sudah masuk. Menyetel PasswordAuthentication no tanpa kunci terpasang berarti Anda mengunci diri di luar server Anda sendiri — dan konsol penyedia menjadi satu-satunya jalan kembali.

Baris demi baris

  • PermitRootLogin no — bekerjalah sebagai pengguna bernama, dengan sudo. Lihat Pengguna, sudo, dan jangan pernah bekerja sebagai root.
  • PasswordAuthentication no — satu baris paling berharga di daftar ini.
  • KbdInteractiveAuthentication no — menutup jalur kata sandi kedua yang biasa dilupakan orang, dan yang diam-diam membuat kata sandi tetap berfungsi.
  • AllowUsers — daftar yang disebut terang-terangan. Akun sistem baru yang dibuat oleh sebuah paket tidak bisa masuk.

Batasi dari mana ia menjawab

sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp
sudo ufw deny 22/tcp

Kalau alamat kantor yang tetap tidak memungkinkan, Fail2ban adalah cadangannya — lihat Apa yang dihentikan Fail2ban. Memindahkan porta hanyalah kosmetik; lihat Mengganti porta SSH.

Periksa apa yang akhirnya Anda peroleh

sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|pubkeyauthentication|allowusers'
sshd -T mencetak pengaturan yang benar-benar berlaku, termasuk apa pun yang disetel di berkas Include lebih ke bawah. Itulah satu-satunya pembacaan yang memperhitungkan sebuah distribusi menaruh berkas di sshd_config.d lalu menimpa pengaturan Anda.