VPS SSH Sıkılaştırma Rehberi: Güvenli Giriş Ayarları
VPS sunucunuzda SSH güvenliğini artırmak için parola ile girişi kapatın, root erişimini devre dışı bırakın ve Fail2ban kurulumu ile kaba kuvvet saldırılarını engelleyin.
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 ve yeniden yükleyin
Uygulamadan önce yapılandırmada hata olup olmadığını kontrol edin; böylece bir yazım hatası servisi devre dışı bırakmaz:
sudo sshd -tsudo sshd -t
Eğer çıktı boşsa yapılandırma geçerlidir. SSH servisini yeniden yükleyin:
sudo systemctl reload sshsudo systemctl reload sshd
Ardından, sshd tarafından gerçekten kullanılan ayarları kontrol edin; böylece başka bir dosya tarafından geçersiz kılınan bir ayar varsa tespit edebilirsiniz:
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'sshd -T | grep -E 'passwordauthentication|pubkeyauthentication'
Her ikisi de no sonucunu döndürmelidir. Şimdi, mevcut oturumunuzu kapatmadan başka bir terminalden yeni bir oturum açın. Eğer anahtarınızla giriş yapabiliyorsanız işlem tamamlanmıştır. Bir sorun varsa, ilk oturumunuz düzeltme yapabilmeniz için hala açıktır. Bu çakışma bir güvenlik ağıdır, bu yüzden asla 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ı oluşturma
Güçlendirilmiş SSH anahtarları temeldir; bunların üzerine iki katman daha eklenir.
Fail2ban, log dosyalarınızı izler ve sürekli başarısız giriş denemesi yapan adresleri yasaklar; bu işlem tarayıcı gürültüsünü azaltır ve saldırganları erkenden uzaklaştırır. Bu araç, yalnızca anahtar tabanlı kimlik doğrulama ile doğal bir uyum içindedir: bkz. SSH saldırılarını durdurmak için Ubuntu üzerinde Fail2ban.
Daha da güçlü bir yöntem, SSH'i genel internete tamamen kapatmaktır. Eğer SSH'i WireGuard VPN arkasına alırsanız ve 22 numaralı portu güvenlik duvarı üzerinden yalnızca tünele açarsanız, VPN dışındaki hiç kimse SSH'e erişemez; böylece kaba kuvvet (brute-force) saldırıları zorlaşmak yerine imkansız hale gelir. Tüm bunlar, altta varsayılan olarak reddeden bir güvenlik duvarı olduğunu varsayar; bu yapılandırma VPS üzerinde UFW kurulumu ile sağlanır.
SSH, daha geniş bir kontrol listesinin yalnızca bir maddesidir: yeni bir VPS üzerindeki ilk 10 dakika adımları sıraya koyar ve Ubuntu üzerinde otomatik güvenlik güncellemeleri sunucunun daha sonra da yamalı kalmasını sağlar. Kapıyı kilitlemek, arkasındaki servisler için bir koruma sağlamaz; bu nedenle, aynı VPS üzerinde bir parola yöneticisi çalışıyorsa, Vaultwarden için güvenlik sıkılaştırma rehberi, anahtar tabanlı kimlik doğrulamanın kapsamadığı iki kritik noktayı ele alır: yönetici belirteci (admin 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.