Linux sunucuda SSH güvenliği: anahtar ile giriş, root kapatma ve fail2ban
Kısa cevap
Linux sunucuda SSH nasıl güvenli hale getirilir?
Şifre yerine SSH anahtarıyla giriş yapın, sshd_config'te PasswordAuthentication no ve PermitRootLogin no ayarlayın, ayarı sshd -t ile test edip servisi yeniden yükleyin. Ek olarak fail2ban ile kaba kuvvet denemelerini engelleyin, firewall'da sadece gereken portları açın ve güvenlik güncellemelerini otomatik kurun.
Adım adım
Anahtar oluşturun ve sunucuya kopyalayın
Kendi bilgisayarınızda ed25519 anahtarı üretin ve sunucuya kopyalayın.
ssh-keygen -t ed25519 -C "bilgisayarim" ssh-copy-id kullanici@sunucuAnahtarla girişi test edin
Yeni bir terminalde şifre sormadan girebildiğinizi doğrulayın. Mevcut oturumu kapatmayın.
Şifreli girişi ve root'u kapatın
/etc/ssh/sshd_config dosyasında (veya sshd_config.d altındaki bir dosyada) şu satırları ayarlayın.
PasswordAuthentication no KbdInteractiveAuthentication no PermitRootLogin no PubkeyAuthentication yesTest edip yeniden yükleyin
Yazım hatası sizi dışarıda bırakmasın: önce yapılandırmayı test edin, sonra servisi yeniden yükleyin ve yeni bir oturumla tekrar girin.
sudo sshd -t && sudo systemctl reload sshFirewall
Sadece gereken portlara izin verin.
sudo ufw allow OpenSSH sudo ufw enable sudo ufw statusfail2ban
Tekrarlanan başarısız girişleri yapan IP'leri geçici olarak engeller.
sudo apt install fail2ban sudo systemctl enable --now fail2ban sudo fail2ban-client status sshdOtomatik güvenlik güncellemeleri
Debian/Ubuntu'da güvenlik yamalarını otomatik kurun.
sudo apt install unattended-upgrades sudo dpkg-reconfigure -plow unattended-upgrades
Sık sorulan sorular
SSH portunu 22'den değiştirmeli miyim?
Port değiştirmek loglardaki rastgele denemeleri azaltır ama güvenlik önlemi değildir. Asıl koruma şifreli girişi kapatıp anahtar kullanmaktır.
Ubuntu'da servisin adı ssh mi sshd mi?
Debian ve Ubuntu'da servis adı ssh, RHEL/Rocky/Alma'da sshd'dir. Komutu dağıtımınıza göre uyarlayın.