Yeni kurulan bir Linux sunucusu, ilk dakikalardan itibaren otomatik botların ve sözlük saldırılarının hedefi olur. Saldırı yüzeyini daraltmanın en etkili iki yolu, uzaktan erişimin kapısı olan SSH servisini doğru yapılandırmak ve trafiği bir paket filtresiyle sınırlamaktır. Aşağıda, üretim ortamında doğrudan uygulayabileceğiniz yapılandırma adımlarını sırasıyla ele alıyoruz.

Saldırı Yüzeyini Anlamak

Çoğu Linux dağıtımı kurulumdan sonra OpenSSH servisini 22 numaralı portta dinlemeye açar. Genellikle bir sunucu açık internete çıktığı andan itibaren root kullanıcısı ve yaygın parolalarla deneme yapan trafik almaya başlar. Bu trafiği journalctl -u ssh veya /var/log/auth.log kayıtlarında kolayca görürsünüz. Amaç bu denemeleri sıfıra indirmek değil, başarılı olma ihtimallerini ortadan kaldırmak ve gürültüyü azaltmaktır.

Anahtar Tabanlı Kimlik Doğrulama

Parola yerine asimetrik anahtar kullanmak, sertleştirmenin temel taşıdır. İstemci tarafında modern bir Ed25519 anahtarı üretip genel anahtarı sunucuya kopyalarsınız:

ssh-keygen -t ed25519 -a 100 -C "yonetici@bogahost"
ssh-copy-id -i ~/.ssh/id_ed25519.pub yonetici@sunucu-ip

Anahtar doğrulandıktan sonra parola ile girişi tamamen kapatabilirsiniz. Bu sayede ele geçirilmiş bir parolanın tek başına anlamı kalmaz; saldırganın ayrıca özel anahtar dosyasına da sahip olması gerekir.

sshd_config Sertleştirmesi

Asıl yapılandırma /etc/ssh/sshd_config dosyasında yapılır. Aşağıdaki direktifler en çok işe yarayan ayarlardır:

  • PermitRootLogin no: root ile doğrudan girişi engeller, yetki yükseltme için sudo kullanılır.
  • PasswordAuthentication no: parola tabanlı oturumları kapatarak yalnızca anahtara izin verir.
  • AllowUsers / AllowGroups: SSH erişimini belirli hesaplarla sınırlar.
  • MaxAuthTries 3: tek bağlantıda deneme sayısını düşürür.
  • Port: standart 22 yerine yüksek bir port seçmek otomatik tarama gürültüsünü azaltır.
# /etc/ssh/sshd_config
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers yonetici
MaxAuthTries 3
LoginGraceTime 30
ClientAliveInterval 300
X11Forwarding no

Değişiklikleri uygulamadan önce sshd -t ile sözdizimini doğrulayın, ardından systemctl reload ssh çalıştırın. Mevcut oturumunuzu kapatmadan ikinci bir terminalden yeni ayarları test etmek, kendinizi dışarıda bırakmamak için kritik bir alışkanlıktır.

Bogahost Önerisi: Port değiştirmek bir gizlilik önlemidir, güvenlik garantisi değildir. Asıl koruma anahtar tabanlı kimlik doğrulama ve firewall kurallarından gelir; portu yalnızca log gürültüsünü azaltmak için değiştirin.

fail2ban ile Otomatik Engelleme

Tekrarlayan başarısız girişleri otomatik olarak engellemek için fail2ban oldukça pratiktir. Auth loglarını izler ve eşik aşıldığında ilgili IP'yi geçici olarak firewall üzerinden bloklar.

# /etc/fail2ban/jail.local
[sshd]
enabled = true
port    = 2222
maxretry = 4
findtime = 600
bantime  = 3600

Servisi systemctl enable --now fail2ban ile etkinleştirdikten sonra fail2ban-client status sshd komutuyla aktif yasakları görebilirsiniz. Yoğun trafik alan sistemlerde bantime değerini artırmak çoğu durumda işe yarar.

Firewall Yapılandırması: nftables, ufw ve firewalld

Linux'ta paket filtreleme çekirdek seviyesinde Netfilter altyapısıyla yapılır. Dağıtıma göre farklı ön yüzler kullanılır. Aşağıdaki tablo en yaygın araçları karşılaştırıyor:

AraçTipik DağıtımArka PlanKullanım
ufwUbuntu / Debianiptables / nftablesBasit, hızlı kural eklemeye uygun
firewalldRHEL / Rocky / AlmaLinuxnftablesZone tabanlı, dinamik kural yönetimi
nftablesTüm modern çekirdeklerNetfilterDoğrudan, esnek, betiklenebilir

Ubuntu tabanlı bir sistemde varsayılan politikayı kapatıp yalnızca gereken portları açmak şu kadar basittir:

ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

RHEL ailesinde aynı mantık firewalld ile kurulur:

firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload

Temel ilke her zaman aynıdır: varsayılan olarak gelen trafiği reddet, yalnızca açıkça ihtiyaç duyduğun servisleri beyaz listeye al. Çıkış trafiğini de sınırlamak ileri düzey bir adımdır ve uygulama bağımlılıklarını iyi bilmeyi gerektirir.

İzleme ve Kayıt

Sertleştirme tek seferlik bir iş değil, sürekli izlenmesi gereken bir süreçtir. Birkaç pratik alışkanlık:

  • Log denetimi: journalctl -u ssh --since today ile günlük erişimleri gözden geçirin.
  • Açık portlar: ss -tulpn komutuyla dinleyen servisleri düzenli kontrol edin.
  • Güncel paketler: OpenSSH ve çekirdek güncellemelerini geciktirmeyin; bilinen açıklar çoğunlukla bu katmanda kapatılır.

Kaynak ölçeklendirme ve yedek altyapı planlarken, kendi kontrolünüzdeki izole bir ortam çoğu kurum için daha öngörülebilir olur. Bu nedenle proje gereksinimlerinize göre bir sanal sunucu çözümüyle test ortamı kurmak ve kritik yükler için ayrılmış bir fiziksel sunucu üzerinde üretim katmanını çalıştırmak dengeli bir yaklaşım sunar.

Özetle

Anahtar tabanlı kimlik doğrulama, root erişiminin kapatılması, fail2ban ve sıkı bir firewall politikası birlikte uygulandığında, sunucunuz otomatik saldırıların büyük çoğunluğuna karşı dirençli hale gelir. Bu katmanları kurduktan sonra düzenli log denetimi ve güncellemelerle koruma seviyesini canlı tutmak, uzun vadede en çok geri dönüş sağlayan yatırımdır.

Reklam Alanı

İçerik Altı (728x90)

Yorumlar (0)

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Yorum Yap

Maksimum 2000 karakter