aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Araçlar & DevOps

VPS Güvenlik Kontrol Listesi: İlk Kurulum Adımları

Yeni bir VPS aldığında saat işlemeye başlar: internete açık her sunucu, kurulumdan dakikalar sonra otomatik bot taramalarıyla karşılaşır. Sağlam bir vps güvenlik temeli, henüz üzerine hiçbir uygulama kurmadan, ilk birkaç saatte atılır. Bu yazıda yeni bir Ubuntu/Debian sunucusunu üretime hazırlarken sırayla geçtiğim kontrol listesini paylaşıyorum: yetkili kullanıcı, SSH sertleştirme, firewall, fail2ban, otomatik güvenlik güncellemeleri ve birkaç temel iyi alışkanlık.

1. İlk giriş ve sistemi güncelle

Sağlayıcı sana genelde root şifresi ya da SSH anahtarı verir. İlk iş, paket listesini ve kurulu paketleri güncellemek. Eski paketler bilinen açıklarla gelir; güncelleme, en ucuz güvenlik kazancındır.

apt update && apt upgrade -y

Kernel ya da kütüphane güncellemesi geldiyse sunucuyu bir kez yeniden başlat: reboot. Bağlandığın saat dilimini ve makine adını da burada ayarlamak iyi olur.

2. root yerine yetkili (sudo) bir kullanıcı oluştur

Her şeyi root ile yapmak, tek bir yanlış komutun ya da ele geçirilmiş bir oturumun bütün sistemi düşürmesi demek. Kendi kullanıcını oluştur ve sudo grubuna ekle:

adduser aslain
usermod -aG sudo aslain

Yeni kullanıcıya geçip sudo whoami çalıştırarak yetkiyi doğrula. Bundan sonra günlük işleri bu kullanıcıyla yapacak, root ile doğrudan girişi birazdan tamamen kapatacağız.

3. SSH anahtarı kullan, parolayı bırak

Parola tabanlı giriş, kaba kuvvet (brute-force) saldırılarına açık kapıdır. Bunun yerine SSH anahtar çifti kullan. Kendi bilgisayarında anahtar yoksa üret:

ssh-keygen -t ed25519 -C "aslain@laptop"

Açık anahtarı sunucuya kopyala:

ssh-copy-id aslain@SUNUCU_IP

Artık ssh aslain@SUNUCU_IP ile parola sormadan girebiliyorsan anahtar çalışıyor demektir. Anahtarsız girişi doğrulamadan parola girişini kapatma; aksi halde kendini dışarıda bırakabilirsin.

4. SSH yapılandırmasını sertleştir

SSH güvenliği, vps güvenlik tarafında en yüksek getirili adımlardan biri. /etc/ssh/sshd_config dosyasını (ya da /etc/ssh/sshd_config.d/ altında ayrı bir dosya) düzenle:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Bu ayarlar sırasıyla: root ile doğrudan girişi kapatır, parola girişini tamamen devre dışı bırakır ve yalnızca anahtarla girişe izin verir. Değişiklikten sonra servisi yeniden başlat:

systemctl restart ssh

Önemli ipucu: yeni bir terminalden tekrar bağlanmayı dene ama mevcut oturumu kapatma. Bir hata yaptıysan açık oturum sayesinde geri dönüp düzeltebilirsin. Varsayılan 22 portunu değiştirmek "güvenlik by obscurity"dir; gerçek koruma sağlamaz ama log gürültüsünü azaltır — istersen yapabilirsin, ama firewall ve anahtar girişinin yerini tutmaz.

5. Firewall'u kur ve sadece gerekli portları aç

Ubuntu/Debian'da en pratik araç ufw (Uncomplicated Firewall). Mantık basit: her şeyi kapat, sadece ihtiyacın olanı aç.

ufw default deny incoming
ufw default allow outgoing
ufw allow OpenSSH
ufw enable

Bir web sunucusu çalıştıracaksan HTTP ve HTTPS'i de aç:

ufw allow 80/tcp
ufw allow 443/tcp

Durumu ufw status verbose ile kontrol et. Dikkat: firewall'u açmadan önce SSH kuralını eklediğinden emin ol, yoksa kendini kilitlersin.

6. fail2ban ile otomatik saldırıları engelle

Anahtar girişine geçsen bile loglar başarısız giriş denemeleriyle dolar. fail2ban, belirli sayıda başarısız denemeden sonra IP'yi geçici olarak engeller:

apt install fail2ban -y
systemctl enable --now fail2ban

Varsayılan ayarlar SSH için makul bir koruma sağlar. Özelleştirmek istersen /etc/fail2ban/jail.local dosyası oluştur (asıl jail.conf'u düzenleme, güncellemede üzerine yazılır):

[sshd]
enabled = true
maxretry = 4
bantime = 1h

Engellenen IP'leri fail2ban-client status sshd ile görebilirsin.

7. Otomatik güvenlik güncellemelerini aç

İnsanlar güncellemeyi unutur; otomatik güncelleme unutmaz. Güvenlik yamalarını kendiliğinden uygulamak için unattended-upgrades kullan:

apt install unattended-upgrades -y
dpkg-reconfigure --priority=low unattended-upgrades

Bu paket varsayılan olarak sadece güvenlik depolarından gelen güncellemeleri kurar, böylece beklenmedik büyük sürüm atlamaları yaşamazsın. Yine de kritik sistemlerde güncellemeleri periyodik olarak kendin de gözden geçir.

8. Birkaç temel iyi alışkanlık

  • Zaman senkronizasyonu: timedatectl set-ntp true ile saatin doğru kalmasını sağla; sertifikalar ve loglar için önemlidir.
  • En az ayrıcalık: Servisleri root yerine kendi sınırlı kullanıcılarıyla çalıştır.
  • Yedek: Güvenlik sadece saldırıyı engellemek değil, kötü günde geri dönebilmektir. Sağlayıcının snapshot özelliğini ve düzenli veri yedeklerini ihmal etme.
  • İzleme: journalctl ve last komutlarıyla giriş kayıtlarına ara sıra göz at.

Bu adımları bir kez alışkanlık haline getirdiğinde, yeni bir sunucuyu güvenli temele oturtmak yarım saatten az sürer.

Sık Sorulan Sorular

SSH portunu 22'den değiştirmek gerekli mi?

Zorunlu değil. Port değiştirmek otomatik log gürültüsünü azaltır ama gerçek bir güvenlik katmanı değildir. Asıl koruma anahtar tabanlı giriş, kapalı parola girişi ve firewall'dur; port değişimi bunların yerine geçmez.

Parola girişini kapatırsam anahtarımı kaybedince ne olur?

Sunucudan tamamen dışarıda kalırsın. Bu yüzden anahtarını güvenli yedekle ve çoğu sağlayıcının sunduğu web tabanlı konsol (VNC/recovery) erişimini bil; oradan girip yeni bir anahtar ekleyebilirsin.

fail2ban ile firewall aynı işi mi yapıyor?

Hayır. Firewall hangi portların açık olduğunu belirler; fail2ban ise açık portlara gelen tekrarlayan kötücül davranışı (başarısız girişler gibi) tespit edip ilgili IP'yi geçici engeller. İkisi birbirini tamamlar.

Sunucu kurulumunda yardıma mı ihtiyacın var? Linux sunucu sertleştirme, oyun/web sunucusu kurulumu ve DevOps konularında destek veriyorum. Projeni konuşmak için benimle iletişime geç.

Bu kategorideki tüm yazılar →

Devamı için