VDS Güvenliği: SSH, Güvenlik Duvarı ve Fail2ban Rehberi
VDS güvenliği, bir sanal sunucunun (VDS) işletim sistemi ve servis ayarlarının yetkisiz erişimi engelleyecek biçimde yapılandırılmasıdır. Yeni kurulan bir VDS tipik olarak root parolası ve tüm portları açık bir güvenlik duvarı ile gelir; bu durum otomatik tarama araçlarının hedefi olur. Bu rehberde SSH sertleştirme, güvenlik duvarı kurulumu ve Fail2ban yapılandırmasını adım adım ele alıyor, doğrulama yöntemlerini ve sık karşılaşılan sorunları gösteriyoruz.
VDS güvenliği neden önemlidir?
Bir VDS internete açıldığı andan itibaren otomatik tarayıcılar tarafından taranmaya başlar. Bu araçlar 22 numaralı SSH portuna saniyede onlarca deneme gönderir; zayıf parolalar saatler içinde kırılabilir. Sunucu yalnızca sizin hizmetinizi çalıştırsa bile, ele geçirilen bir hesap e-posta gönderimi, kripto madenciliği veya başka sunuculara saldırı için kullanılır.
Sertleştirmenin amacı, saldırı yüzeyini küçültmektir: kullanılmayan servisleri kapatmak, erişimi anahtarla sınırlamak ve yalnızca gerekli portları dışarıya açmak. Bu yaklaşım, tek bir güvenlik ürünü satın almaktan daha etkilidir çünkü yanlış yapılandırılmış bir servis, en pahalı korumayı bile devre dışı bırakır. Örneğin yönetim paneli 8080 portunda parola ile açık bırakılmışsa, SSH sertleştirmesi tek başına yeterli olmaz.
BalHost'un İstanbul lokasyonundaki sanal sunucu paketleri tam root erişimi ve NVMe SSD disklerle teslim edilir; bu, sertleştirme adımlarını doğrudan sunucu üzerinde uygulayabileceğiniz anlamına gelir. Kurulum yaklaşık 5 dakikada tamamlanır ve Windows ile Linux işletim sistemi seçenekleri sunulur. İşletim sistemi seçiminizi ve kaynak planlamanızı VPS kiralama rehberi üzerinden gözden geçirebilirsiniz. Windows tarafında çalışıyorsanız erişim yöntemleri Linux'tan farklıdır; Windows sanal sunucu seçeneğinin kimler için uygun olduğunu ayrıca değerlendirmek gerekir.
Başlamadan önce ne hazırlamalısınız?
Sertleştirmeye başlamadan önce mevcut oturumunuzu kaybetme riskine karşı hazırlık yapmalısınız. Yanlış bir SSH ayarı sizi sunucudan tamamen kilitleyebilir; bu nedenle değişiklikleri ikinci bir oturum açıkken uygulamak gerekir.
Gereksinimler:
- Sunucuya root veya sudo yetkili bir hesapla erişim
- Yerel bilgisayarda oluşturulmuş bir SSH anahtar çifti (ed25519 önerilir)
- Anahtarın ortak kısmını sunucuya ekleme imkânı
- Sağlayıcı panelinden konsol (VNC/serial) erişimi — kilitlenme durumunda kurtarma yolu
- Yedek almak için en az bir hedef disk veya uzak konum
- Sunucuda çalışan servislerin listesi ve hangi portları dinledikleri
İkinci bir SSH oturumunu açık tutmak, uyguladığınız kuralın sizi dışarıda bırakıp bırakmadığını anında test etmenizi sağlar. Test başarısız olursa açık oturumdan değişikliği geri alabilirsiniz. Hangi portların gerçekten dinlendiğini görmek için sudo ss -tulpn komutu pratik bir başlangıç noktasıdır; bu listede tanımadığınız bir port varsa güvenlik duvarı kuralını yazmadan önce o servisi araştırın.
SSH güvenliği nasıl sertleştirilir?
SSH, sunucuya yönetim erişiminin kapısıdır; bu nedenle ilk sertleştirilecek servistir. Amaç, parola tahminine dayalı saldırıları tamamen devre dışı bırakmak ve erişimi yalnızca anahtar sahibine bırakmaktır.
1. Adım: SSH anahtarınızı sunucuya ekleyin
Yerel bilgisayarınızda anahtar yoksa oluşturun, ardından ortak anahtarı sunucuya kopyalayın. Bu adım, parola doğrulamasını kapatmadan önce tamamlanmalıdır.
# Yerel bilgisayarda anahtar oluşturma
ssh-keygen -t ed25519 -C "yonetici@ornek"
# Ortak anahtarı sunucuya kopyalama
ssh-copy-id kullanici@SUNUCU_IP
Anahtarı ekledikten sonra parola ile değil, anahtarla giriş yapabildiğinizi doğrulayın. Bu test başarısızsa sonraki adıma geçmeyin; çünkü parola doğrulamasını kapattığınızda erişimi tamamen kaybedebilirsiniz. Anahtar girişinde parola sorulmaya devam ediyorsa ~/.ssh/authorized_keys dosyasının izinlerini kontrol edin.
2. Adım: Parola doğrulamasını ve root girişini kapatın
/etc/ssh/sshd_config dosyasında üç ayar değiştirilir. PermitRootLogin no doğrudan root girişini engeller, PasswordAuthentication no parola tahminini devre dışı bırakır, PubkeyAuthentication yes anahtar girişini etkinleştirir.
sudo nano /etc/ssh/sshd_config
# Değiştirilecek satırlar
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
# Yapılandırmayı test edip servisi yeniden başlatma
sudo sshd -t
sudo systemctl restart ssh
sshd -t komutu, dosyada söz dizimi hatası olup olmadığını servisi yeniden başlatmadan gösterir. Sık yapılan hata, bu testi atlayıp servisi yeniden başlatmaktır; hatalı bir satır tüm SSH erişimini keser. Değişiklikten sonra mevcut oturumu kapatmayın; önce yeni bir terminalden bağlanarak her şeyin çalıştığını doğrulayın.
3. Adım: SSH portunu değiştirmeyi değerlendirin
SSH portunu değiştirmek güvenlik sağlamaz, yalnızca otomatik taramaların gürültüsünü azaltır. Gerçek koruma anahtar doğrulaması ve Fail2ban'dan gelir; port değişikliği tek başına yeterli bir önlem değildir. Bu nedenle portu değiştirseniz bile diğer iki adımı atlamayın.
Port değiştirirseniz güvenlik duvarı kuralını da güncellemeyi unutmayın. Aksi halde yeni porta erişemezsiniz. Bu adımı isteğe bağlı olarak değerlendirin ve yalnızca diğer önlemlerle birlikte uygulayın. Port değişikliğinin yanılsama yaratan bir rahatlama hissi oluşturması, sertleştirmede sık yapılan hatalardan biridir.
Güvenlik duvarı nasıl yapılandırılır?
Güvenlik duvarı, sunucuya hangi portlardan trafik kabul edileceğini belirler. Linux'ta en yaygın iki araç UFW ve iptables'tır; UFW, iptables kurallarını daha okunabilir biçimde yöneten bir ön yüzdür. Doğru yapılandırılmış bir duvar, sunucuda çalışmayan tüm servisleri dışarıdan görünmez hâle getirir.
UFW ile temel kurallar
Önce yalnızca SSH portuna izin verilir, ardından web portları eklenir. Bu sıralama önemlidir: UFW etkinleştirilmeden önce SSH kuralı tanımlanmazsa mevcut oturum kesilir.
sudo apt update && sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
ufw status verbose çıktısı, hangi kuralın hangi portu açtığını ve varsayılan politikaları gösterir. Kuralları uyguladıktan sonra ikinci bir terminalden bağlantı testi yapmak, erişimin gerçekten açık kaldığını doğrular. Yalnızca SSH kullanacaksanız 80 ve 443 kurallarını eklemeniz gerekmez; her açık port saldırı yüzeyini büyütür.
UFW mu iptables mı seçilmeli?
İki araç aynı çekirdek mekanizmasını kullanır; fark, yönetim kolaylığındadır. Tek sunucu yönetiyorsanız UFW daha hızlı sonuç verir; karmaşık yönlendirme ve NAT senaryolarında iptables daha esnektir.
| Ölçüt | UFW | iptables |
|---|---|---|
| Kural okunabilirliği | Yüksek, sade komutlar | Düşük, zincir tabanlı |
| Öğrenme eğrisi | Düşük | Orta-yüksek |
| NAT ve yönlendirme | Sınırlı | Esnek |
| Kalıcılık | Varsayılan olarak kalıcı | Ayrı kayıt gerekir |
| Uygun senaryo | Tek sunucu, basit port seti | Yönlendirici, karmaşık kurallar |
Güvenlik duvarını devre dışı bırakmak veya kapatmak, sorun giderme sırasında başvurulan bir yöntemdir; ancak kalıcı olarak kapalı bırakmak sunucuyu tüm portlara açık hâle getirir. Geçici olarak kapatmanız gerekirse sudo ufw disable komutunu kullanıp işiniz bittiğinde sudo ufw enable ile yeniden açın. Kuralları yeniden açtıktan sonra ufw status ile doğrulamayı atlamayın.
Fail2ban nasıl kurulur ve yapılandırılır?
Fail2ban, günlük dosyalarını izleyerek tekrarlayan başarısız giriş denemelerini tespit eder ve ilgili IP adresini belirli bir süre engeller. Güvenlik duvarı kurallarını dinamik olarak güncellediği için, sabit kuralların kapsamadığı tekrarlayan denemeleri durdurur. Sabit bir port kuralı kimin kaç kez denediğini bilmez; Fail2ban bu boşluğu kapatır.
1. Adım: Kurulum ve servis durumu
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl status fail2ban
Servis etkin ve çalışıyor durumda olmalıdır. Varsayılan yapılandırma SSH için hazır bir kural içerir; yine de kendi ayarlarınızı ayrı bir dosyada tanımlamanız güncellemelerde kaybolmamanızı sağlar. jail.conf dosyasını doğrudan düzenlemek yerine her zaman jail.local kullanın.
2. Adım: SSH için kural tanımlama
/etc/fail2ban/jail.local dosyası oluşturulur. Bu dosya, paket güncellemelerinde üzerine yazılmayan yerel ayarları tutar.
[sshd]
enabled = true
port = 22
maxretry = 5
findtime = 10m
bantime = 1h
ignoreip = 127.0.0.1/8
maxretry değeri, kaç başarısız denemeden sonra engelleme uygulanacağını belirler. bantime engel süresidir; çok kısa tutulursa saldırgan süre dolduğunda yeniden denemeye başlar. Kendi IP adresinizi ignoreip listesine eklemek, yanlışlıkla kendinizi engellemenizi önler.
3. Adım: Yapılandırmayı uygulama ve doğrulama
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
Çıktıda engellenen IP sayısı ve izlenen günlük dosyası görünür. fail2ban-client status sshd komutu, kuralın gerçekten yüklendiğini ve günlüğü takip ettiğini doğrulamanın en hızlı yoludur. Kural yüklü değilse jail.local dosyasındaki bölüm adının [sshd] ile birebir eşleştiğinden emin olun.
Doğrulama: sertleştirme gerçekten çalışıyor mu?
Ayarların etkin olduğunu test etmek, yapılandırmayı yazmak kadar önemlidir. Aşağıdaki kontroller her adımın karşılığını gösterir.
- SSH:
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication'çıktısında her iki değer denoolmalı. - Güvenlik duvarı:
sudo ufw statusyalnız izin verdiğiniz portlarıALLOWolarak listeler. - Fail2ban:
sudo fail2ban-client status sshdçıktısındaCurrently bannedveyaTotal bannedalanı görünür. - Dinlenen portlar:
sudo ss -tulpnçıktısında beklenmeyen bir servis görünmemeli. - Erişim: İkinci bir terminalden anahtarla bağlanabildiğinizi, parolayla bağlanamadığınızı doğrulayın.
Bu beş kontrolü geçen bir sunucuda, otomatik parola denemelerinin büyük bölümü etkisiz kalır. Testlerden sonra kullandığınız geçici oturumları kapatmayı unutmayın. Doğrulamayı yalnızca kurulum gününde değil, yeni bir servis eklediğinizde de tekrarlamak gerekir.
Sık karşılaşılan sorunlar ve alınacak önlemler
Sertleştirme sırasında en sık yapılan hata, değişiklikleri açık bir yedek oturum olmadan uygulamaktır. SSH yapılandırmasını test etmeden yeniden başlatmak veya güvenlik duvarı kuralını SSH portunu eklemeden etkinleştirmek, sunucudan tamamen kilitlenmeye yol açar. Bu durumda tek çıkış yolu sağlayıcı panelindeki konsol erişimidir.
Diğer yaygın sorunlar ve çözümleri:
| Belirti | Olası neden | Çözüm |
|---|---|---|
| SSH bağlantısı reddediliyor | Yanlış port veya engellenen IP | Konsoldan ufw status ve fail2ban-client status sshd kontrolü |
| Anahtar kabul edilmiyor | Yanlış izinler | ~/.ssh 700, authorized_keys 600 olmalı |
| Fail2ban engellemiyor | Kural etkin değil | jail.local içinde enabled = true doğrulaması |
| Web sitesi erişilemez | 80/443 kapalı | ufw allow 80/tcp ve 443/tcp ekleme |
| Kendi IP'niz engellendi | ignoreip eksik | IP adresini ignoreip listesine ekleyip servisi yeniden başlatma |
Güvenlik duvarı kapatma işlemi yalnızca sorun giderme sırasında ve kısa süreliğine yapılmalıdır. Kalıcı olarak kapalı bir güvenlik duvarı, sertleştirmenin tamamını geçersiz kılar. Bir sorunu çözmek için kapatmanız gerekirse, çözüm sonrası kuralları yeniden etkinleştirip durumu doğrulayın.
Sertleştirme tek seferlik bir iş değildir; yeni servis kurduğunuzda güvenlik duvarı kuralını, yeni kullanıcı eklediğinizde SSH yetkilerini güncellemeniz gerekir. Aynı yaklaşım, TLS sertifikası yönetimi ve düzenli yedekleme ile birlikte uygulandığında sunucunun genel dayanıklılığını artırır. Yedekleri ayrı bir konumda tutmak, sunucunun ele geçirildiği bir senaryoda geri dönüş imkânı sağlar.
Sonuç
VDS güvenliği, üç temel adımın tutarlı biçimde uygulanmasıyla sağlanır: SSH'ta anahtar tabanlı girişe geçmek, güvenlik duvarında yalnız gerekli portları açmak ve Fail2ban ile tekrarlayan giriş denemelerini engellemek. Bu adımlar birbirini tamamlar; yalnızca biri uygulandığında koruma eksik kalır. Örneğin anahtar girişi kapalı bir sunucuda güvenlik duvarı, parola denemelerini engellemez.
Sertleştirmeyi tamamladıktan sonra düzenli yedekleme ve güncelleme rutini kurmak, uzun vadeli korumanın parçasıdır. Sunucunuzu bu yapılandırmayla çalıştırmak için tam root erişimli, NVMe SSD diskli ve İstanbul lokasyonundaki VDS kiralama seçeneklerini inceleyebilirsiniz. Tek çekirdek performansı kritik olan iş yüklerinde ise Ryzen VDS sunucu seçeneği değerlendirilebilir.
Sık Sorulan Sorular
VDS güvenliği için ilk hangi adım atılmalı?
İlk adım, SSH erişimini anahtar tabanlı girişe çevirmektir; çünkü parola doğrulaması açık kaldığı sürece otomatik denemeler sunucuya erişmeyi denemeye devam eder. Anahtar eklendikten sonra parola doğrulaması ve root girişi kapatılır, ardından güvenlik duvarı ve Fail2ban yapılandırılır.
UFW mu iptables mı tercih edilmeli?
Tek sunucu yönetiyorsanız UFW daha hızlı sonuç verir; komutlar okunabilir ve varsayılan olarak kalıcıdır. NAT, yönlendirme veya karmaşık zincir kuralları gerekiyorsa iptables daha esnektir. İkisi de aynı çekirdek mekanizmasını kullandığı için birlikte çalışabilir.
Fail2ban engelleme süresi nasıl belirlenir?
Engelleme süresi bantime parametresiyle ayarlanır ve varsayılan olarak kısa tutulur. Tekrarlayan saldırılarda süreyi artırmak, aynı IP'nin süre dolduğunda yeniden denemesini zorlaştırır. Kendi IP adresinizi ignoreip listesine ekleyerek yanlışlıkla engellenmeyi önleyebilirsiniz.
Güvenlik duvarını geçici olarak kapatmak riskli mi?
Kısa süreli kapatma, sorun giderme için kabul edilebilir; ancak bu sürede tüm portlar dışarıya açık kalır. İşlem bittiğinde ufw enable ile kuralları yeniden etkinleştirmek ve ufw status ile doğrulamak gerekir. Kalıcı olarak kapalı bırakmak sertleştirmeyi geçersiz kılar.
SSH portunu değiştirmek güvenlik sağlar mı?
Port değiştirmek, otomatik taramaların gürültüsünü azaltır ancak gerçek bir güvenlik önlemi değildir. Hedefli bir saldırgan tüm portları tarayabilir. Asıl koruma, anahtar tabanlı doğrulama, güvenlik duvarı kuralları ve Fail2ban engellemesinden gelir.
İlgili Yazılar
Bu konuda hizmet mi arıyorsunuz?
Yazıda anlatılan altyapıyı BalHost sunucularında hazır bulabilirsiniz.

