VDS Güvenliği: SSH, Güvenlik Duvarı ve Fail2ban Rehberi

BalHost
10 dk
3 görüntüleme
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 de no olmalı.
  • Güvenlik duvarı: sudo ufw status yalnız izin verdiğiniz portları ALLOW olarak listeler.
  • Fail2ban: sudo fail2ban-client status sshd çıktısında Currently banned veya Total banned alanı 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.