VPS için SSH Sıkılaştırma: Güvenli Yapılandırma
VPS üzerinde SSH güvenliğini artırın: yalnızca anahtar girişine geçin, root ve parola oturumlarını drop-in config ile kapatın; Fail2ban ve VPN ekleyin.
SSH neden ilk olarak sıkılaştırılmalıdır
SSH, sunucunuzu kontrol etmenizi sağlayan araçtır; bu da onu her saldırganın ilk denediği kilit haline getirir. Bir VPS çevrimiçi olduğu anda, tarayıcılar 22 numaralı port üzerinde kullanıcı adı ve parola tahmin etmeye başlar. Bunu dakikalar içinde log kayıtlarınızda görebilirsiniz. SSH sıkılaştırması, tahmin edilebilecek unsurları ortadan kaldırmakla ilgilidir: parola ile girişi tamamen kapatın, root girişini devre dışı bırakın ve yalnızca kriptografik anahtarlara izin verin. Bunu yaptığınızda, bulunacak bir parola kalmadığı için sürekli tahmin girişimleri başarısız olacaktır.
Bu adımlar, SSH'in halihazırda çalıştığını varsayar. Giriş yapabiliyorsanız, sıkılaştırma yapabilirsiniz. Adımları sırasıyla uygulayın ve yeni bir oturum çalışana kadar mevcut oturumunuzu açık tutun; böylece bir hata durumunda sunucudan kilitlenmezsiniz.
Adım 1: Anahtar tabanlı kimlik doğrulamanın çalıştığından emin olun
Anahtar tabanlı kimlik doğrulama, parola yerine bir anahtar çifti kullanır: bilgisayarınızda kalan bir özel anahtar ve sunucuya yerleştirdiğiniz bir açık anahtar. Sunucu, özel anahtarın makinenizden hiç ayrılmadığını doğrular. Parola girişini devre dışı bırakmadan önce anahtarların çalıştığını onaylayın, aksi takdirde sunucuya erişiminizi kaybedersiniz.
Kendi bilgisayarınızda, eğer bir anahtarınız yoksa bir tane oluşturun:
ssh-keygen -t ed25519Açık anahtar kısmını sunucuya kopyalayın:
ssh-copy-id user@your-serverArdından yeni bir SSH oturumu açın. Eğer parola sormadan giriş yapmanıza izin veriyorsa, anahtarınız çalışıyor demektir ve parolaları kapatmanız güvenlidir. Eğer Permission denied (publickey) hatası ile karşılaşırsanız, bu hata beş farklı sorunu gizler ve başka bir değişiklik yapmadan önce ssh -v çıktısı hangi soruna sahip olduğunuzu size bildirir. Anahtarlar sizin için yeniyse veya birden fazla bilgisayar kullanıyorsanız, SSH anahtar yönetimi temelleri tüm modeli açıklar: cihaz başına bir anahtar, sshd tarafından talep edilen izinler ve bir dizüstü bilgisayar kaybolduğunda anahtarın nasıl iptal edileceği.
Adım 2: sshd servisini bir drop-in dosyası ile sıkılaştırın
/etc/ssh/sshd_config dosyasını doğrudan düzenlemeyin. Ubuntu 24.04, drop-in dosyalarını /etc/ssh/sshd_config.d/ dizininden okur; burada oluşturulacak küçük bir dosya daha temizdir, paket güncellemelerinden etkilenmez ve bir sorun çıkması durumunda kolayca kaldırılabilir. Dosya ismi önemlidir: sshd, her ayar için okuduğu ilk değeri esas alır ve Ubuntu bulut imajları bu dizinde PasswordAuthentication yes içeren 50-cloud-init.conf dosyasını barındırır. Dosyanızı 00- olarak adlandırın; böylece alfabetik sıralamada önce gelir ve geçerli olur. 99- ile başlayan bir dosya sessizce devre dışı kalır. Bir dosya oluşturun:
sudo nano /etc/ssh/sshd_config.d/00-hardening.confİçeriğine şunları ekleyin:
# Key-only login: no passwords to guess.
PasswordAuthentication no
KbdInteractiveAuthentication no
# No direct root login. Log in as your user, then use sudo.
PermitRootLogin noHer satır bir güvenlik açığını kapatır. PasswordAuthentication no en kritik olanıdır: parola girişi kapatıldığında, kaba kuvvet (brute-force) saldırılarının hedefleyebileceği bir parola kalmaz. KbdInteractiveAuthentication no, parola tabanlı ikinci bir giriş yolunu kapatır. PermitRootLogin no ayarı, saldırganın sadece her sistemde bulunan root hesabını hedeflemesini engeller; sisteme erişmek için hem kullanıcı adınızı bilmesi hem de özel anahtarınıza sahip olması gerekir.
Adım 3: Yapılandırmayı test edin, ardından yeniden yükleyin
Uygulamadan önce yazım hatalarını bulmak için yapılandırmayı denetleyin. Böylece bir yazım hatası servisi bozmaz:
sudo sshd -tHerhangi bir çıktı verilmezse yapılandırma geçerlidir. SSH yapılandırmasını yeniden yükleyin:
sudo systemctl reload sshArdından sshd'nin gerçekten kullandığı ayarları denetleyin. Böylece başka bir dosyanın öncelik kazanması nedeniyle etkisiz kalan bir drop-in yapılandırmasını yakalayabilirsiniz:
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'Her ikisi de no değerini göstermelidir. Şimdi mevcut oturumunuzu kapatmadan başka bir terminalden tamamen yeni bir oturum açın. Anahtarınızla giriş yapılabiliyorsa işlem tamamdır. Bir sorun varsa ilk oturum düzeltme yapmak için hâlâ açıktır. Bu örtüşme güvenlik ağıdır; bu adımı atlamayın.
Adım 4: İsteğe bağlı standart dışı port
SSH servisini 22 numaralı porttan 2222 gibi başka bir porta taşımak, kararlı bir saldırgan tüm portları tarayabildiği için gerçek anlamda bir güvenlik sağlamaz. Bu işlemin sağladığı fayda, otomatik tarayıcıların çoğu yalnızca 22 numaralı portu denediği için günlük kayıtlarındaki gürültüyü azaltmaktır. Eğer bu değişikliği yapmak istiyorsanız, Port 2222 ifadesini drop-in dosyanıza ekleyin, önce güvenlik duvarında yeni porta izin verin, ardından sudo systemctl daemon-reload && sudo systemctl restart ssh.socket komutunu çalıştırın ve ssh -p 2222 ile bağlantı kurun. Ubuntu 24.04 üzerinde dinleme portunun sahibi ssh.socket olduğu için, sadece reload ssh komutunu çalıştırmak sshd servisini 22 numaralı portta bırakır; yeni portun devreye girmesi için socket servisinin yeniden başlatılması gerekir. Bu işlemi bir koruma yöntemi olarak değil, düzen sağlama aracı olarak değerlendirin.
Adım 5: Ek savunma katmanları ekleyin
Güçlendirilmiş SSH anahtarları temel oluşturur. Bunların üzerine iki katman daha eklenir.
Fail2ban günlüklerinizi izler ve sürekli başarısız olan adresleri engeller. Böylece tarama gürültüsü azalır ve bu adresler erken aşamada uzaklaştırılır. Fail2ban, yalnızca anahtar tabanlı kimlik doğrulamayla doğal bir uyum içindedir: SSH saldırılarını durdurmak için Ubuntu üzerinde Fail2ban.
Daha güçlü bir yaklaşım, SSH'yi tamamen genel internetten uzak tutmaktır. SSH'yi WireGuard VPN arkasına alır ve 22 numaralı portu tünelle sınırlandırırsanız VPN dışındaki hiç kimse SSH'ye erişemez. Böylece kaba kuvvet yoluyla parola tahmini yalnızca zorlaşmaz, mümkün olmaktan çıkar. Bunun için altta varsayılan olarak tüm trafiği reddeden bir güvenlik duvarı bulunması gerekir. Bu yapı VPS üzerinde UFW kurulumu ile açıklanır.
SSH, daha geniş bir kontrol listesindeki tek bir adımdır: yeni bir VPS'te ilk 10 dakika adımları sıralı biçimde sunar. Ubuntu'da otomatik güvenlik güncellemeleri ise sistemi daha sonra güncel tutar. Kapıyı kilitlemek, arkasındaki servisleri korumaz. Bu nedenle aynı VPS üzerinde bir parola kasası çalışıyorsa Vaultwarden üzerinde kapsamlı bir güçlendirme çalışması yapılmalıdır. Bu çalışma, anahtar tabanlı kimlik doğrulamanın kapsamadığı iki konuyu ele alır: yönetici token'ı ve yedekleme dosyası.
FAQ
Ubuntu 24.04 üzerinde SSH için parola ile girişi nasıl devre dışı bırakırım?
/etc/ssh/sshd_config.d/00-hardening.conf konumunda bir ek yapılandırma dosyası oluşturun (00 öneki, 50-cloud-init.conf dosyasından önce okunmasını sağlar; aksi takdirde PasswordAuthentication yes ayarı öncelikli olur çünkü sshd okuduğu ilk değeri esas alır). Dosyanın içine PasswordAuthentication no ve KbdInteractiveAuthentication no satırlarını ekleyin, yapılandırmayı doğrulamak için sudo sshd -t komutunu çalıştırın ve ardından sudo systemctl reload ssh komutunu uygulayın. İşlemi tamamlamadan önce yeni bir oturum açarak anahtar ile girişin çalıştığından emin olun. sshd_config dosyasını doğrudan düzenlemek yerine bir ek dosya kullanmak, paket güncellemelerinde ayarların korunmasını sağlar ve geri alınmasını kolaylaştırır.
SSH üzerinden root girişini devre dışı bırakmalı mıyım?
Evet. Kimsenin doğrudan root olarak giriş yapamaması için PermitRootLogin no ayarını yapın. Normal kullanıcı hesabınızla giriş yapın ve yönetici görevleri için sudo kullanın. Root hesabı her Linux sisteminde mevcuttur; bu nedenle erişilebilir bırakılması, saldırgana hedef alabileceği bilinen bir kullanıcı adı sunar. Bu girişi devre dışı bırakmak, saldırganın hem kullanıcı adınızı bilmesini hem de anahtarınıza sahip olmasını gerektirir.
SSH portunu değiştirmek sunucumu daha güvenli hale getirir mi?
Anlamlı bir ölçüde hayır. 22 numaralı porttan uzaklaşmak, yalnızca 22 numaralı portu tarayan basit tarayıcılardan gizlenmenizi sağlar ve loglardaki gürültüyü azaltır; ancak gerçek bir saldırgan tüm portları tarayarak portu yine de bulacaktır. İzinsiz girişleri asıl engelleyen şey, yalnızca anahtar tabanlı kimlik doğrulamadır. Portu değiştirecekseniz, önce güvenlik duvarında yeni portu açın ve ardından sudo systemctl daemon-reload && sudo systemctl restart ssh.socket komutunu çalıştırın; Ubuntu 24.04 üzerinde soket dinleyiciyi yönetir, bu nedenle basit bir yeniden yükleme sshd'yi 22 numaralı portta bırakır.
SSH anahtarları kullanıyorsam Fail2ban'e ihtiyacım var mı?
İsteğe bağlıdır ancak yine de yararlıdır. Yalnızca anahtar tabanlı kimlik doğrulamada parola tahmini başarılı olamaz, bu nedenle Fail2ban saldırganları dışarıda tutan temel mekanizma değildir. Fail2ban, tek bir adresten gelen tekrarlı başarısızlıkları sınırlandırarak loglarınızdaki tarayıcı gürültüsünü azaltır ve sürekli deneme yapanları erkenden engeller; yavaş ve dağıtık bir saldırı zaten engelleme eşiğinin altında kalacaktır. Fail2ban'i anahtar tabanlı kimlik doğrulamanın üzerinde çalıştırın ve ideal olarak SSH erişimini bir VPN arkasında tutun.
SSH erişimini kaybedersem nasıl kurtarabilirim?
Sunucu sağlayıcınızın web konsolunu kullanın; bu konsol, SSH üzerinden geçmeyen bir seri veya VNC bağlantısı ile sunucuya erişmenizi sağlar. Buradan giriş yapabilir, sshd ek yapılandırma dosyasını düzeltebilir ve servisi yeniden yükleyebilirsiniz. Mevcut oturumunuzu kapatmadan önce yeni SSH yapılandırmasını ikinci bir terminalde test etmenizin ve parola ile girişi kapatmadan önce anahtar tabanlı kimlik doğrulamanın çalıştığından emin olmanızın nedeni tam olarak budur.