İçeriğe geç
Sahadan
TeknikBaşlangıç13 dk okuma

Yeni VPS'te İlk 30 Dakika: Sunucu Güvenliği Kontrol Listesi

Yeni kurulan bir VPS veya sunucuda ilk yarım saatte yapılması gerekenler: güncelleme, sudo kullanıcısı, SSH anahtarı, firewall, otomatik güvenlik yaması, saat senkronizasyonu ve doğrulama adımları.

Erdem Özyurt

Kısa cevap: Yeni bir sunucuda ilk yarım saatte yapılacak altı iş vardır ve sırası önemlidir: sistemi güncelle, sudo yetkili kullanıcı aç, SSH anahtarını yerleştir, parola ve root girişini kapat, firewall’u varsayılan kapalı kur, otomatik güvenlik yamasını aç. Bu altı adım bitmeden sunucuya hiçbir uygulama kurulmaz. Örnekler Ubuntu Server ve Debian içindir; RHEL türevlerindeki farklar ayrıca belirtilmiştir.

Neden ilk yarım saat bu kadar kritik?

Bir sunucu internete açıldığı andan itibaren tarama trafiği alır. Bu, birinin sizi hedef seçmesiyle ilgili değildir: internet adres uzayını sürekli tarayan otomatik altyapılar, yeni açılan her IP’yi dakikalar içinde bulur ve standart portlara sırayla bağlanmayı dener. İşlettiğim honeypot ağında topladığım veride, taze bir sunucunun ilk gün gördüğü SSH giriş denemesi dört haneli mertebede ve denenen kullanıcı adlarının başında değişmez biçimde root geliyor; admin, ubuntu, test, oracle ve postgres onu takip ediyor.

Bunun pratik anlamı şu: root parolası zayıf olan bir sunucu, üzerine tek bir uygulama kurulmadan önce ele geçirilebilir. Ele geçirilen makine genellikle sizin veriniz için değil, kripto madenciliği veya başka saldırılarda aracı olarak kullanılmak için alınır; fark etmeniz haftalar sürebilir.

Bu yüzden sıralama tartışmaya kapalıdır: erişim katmanı, servis katmanından önce kurulur.

Adım 1: Sistem nasıl güncellenir?

Kurulum imajı, oluşturulduğu tarihte donmuş bir kopyadır ve içindeki paketler neredeyse her zaman eskidir. İlk komut budur:

# Debian / Ubuntu
sudo apt update && sudo apt full-upgrade -y

# RHEL / Rocky / AlmaLinux
sudo dnf upgrade -y

Çekirdek güncellemesi geldiyse yeniden başlatma gerekir. Ubuntu’da bunu şöyle doğrularsınız:

# Yeniden başlatma gerekiyorsa bu dosya oluşur
ls -l /var/run/reboot-required 2>/dev/null && echo "Yeniden başlatma gerekli"

Yeniden başlatmayı ertelemeyin. Yamalanmış ama yeniden başlatılmamış bir çekirdek, hâlâ eski çekirdekle çalışıyor demektir; güncelleme sadece diskte durur.

Adım 2: sudo yetkili kullanıcı nasıl açılır?

Root olarak çalışmak iki nedenle yanlıştır: yanlışlıkla yapılan bir komutun geri dönüşü yoktur ve hangi işlemi kimin yaptığı loglardan ayırt edilemez. Ayrı bir kullanıcı açın:

# Kullanıcıyı oluştur (parola sorar)
sudo adduser erdem

# Debian/Ubuntu'da yönetici grubu: sudo
sudo usermod -aG sudo erdem

# RHEL türevlerinde yönetici grubu: wheel
# sudo usermod -aG wheel erdem

Kullanıcı adı olarak admin, user, test gibi tahmin edilebilir adlar seçmeyin; bunlar tarama botlarının deneme listesinde zaten var. Kendi adınız veya projeye özel bir ad daha iyidir.

Adım 3: SSH anahtarı nasıl yerleştirilir ve doğrulanır?

Anahtar üretimi kendi bilgisayarınızda yapılır, sunucuda değil. Özel anahtar hiçbir zaman sunucuya kopyalanmaz.

# Kendi makinenizde (Ed25519 önerilir: kısa, hızlı, güçlü)
ssh-keygen -t ed25519 -C "erdem@laptop"

# Genel anahtarı sunucuya taşı
ssh-copy-id erdem@sunucu-ip

ssh-copy-id yoksa genel anahtarın içeriğini sunucuda ~/.ssh/authorized_keys dosyasına elle ekleyip izinleri düzeltmeniz gerekir:

mkdir -p ~/.ssh && chmod 700 ~/.ssh
# genel anahtar satırını authorized_keys içine ekleyin
chmod 600 ~/.ssh/authorized_keys

İzinler kritiktir: ~/.ssh dizini 700, authorized_keys dosyası 600 olmalıdır. Daha geniş izinlerde OpenSSH anahtarı sessizce reddeder ve “neden hâlâ parola soruyor” sorusunun en sık cevabı budur.

Şimdi doğrulayın: mevcut oturumunuzu kapatmadan, ikinci bir terminalden anahtarla giriş yapabildiğinizi test edin. Bu doğrulamayı yapmadan bir sonraki adıma geçmeyin.

Adım 4: Root ve parola girişi nasıl kapatılır?

Bu adım, sunucu güvenliğinde en yüksek getirili tek değişikliktir. Parola girişi kapalıyken kaba kuvvet denemesi teknik olarak imkânsızdır: denenecek bir parola yoktur.

/etc/ssh/sshd_config içinde (veya modern dağıtımlarda /etc/ssh/sshd_config.d/ altında yeni bir dosyada) şu üç satır:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Değişikliği uygulamadan önce sözdizimini test edin, sonra servisi yeniden yükleyin:

# Yapılandırma hatası varsa burada görürsünüz (servis durmadan)
sudo sshd -t

sudo systemctl reload ssh    # Debian/Ubuntu (bazı sürümlerde: sshd)

Bir uyarı: bazı bulut sağlayıcıları kendi yapılandırma parçalarını /etc/ssh/sshd_config.d/ altına koyar ve bu dosyalar ana dosyadaki ayarı ezebilir. Değişikliğin gerçekten geçerli olduğunu şu komutla doğrulayın:

sudo sshd -T | grep -Ei "permitrootlogin|passwordauthentication|pubkeyauthentication"

sshd -T çalışan efektif yapılandırmayı basar; dosyada ne yazdığını değil, sunucunun ne uyguladığını gösterir. Aradaki fark, yapılandırmayı “değiştirdim” sanıp aslında hiçbir şeyi değiştirmemiş olmanın en yaygın sebebidir.

Anahtar yönetimi, iki faktörlü doğrulama ve otomatik ban katmanının tamamı için SSH sertleştirme rehberine bakın.

Adım 5: Firewall varsayılan kapalı nasıl kurulur?

Kural nettir: gelen trafik varsayılan olarak reddedilir, yalnız ihtiyaç duyulan portlar açılır. Ubuntu ve Debian’da en pratik arayüz ufw’dir.

Sıralama hayati: önce SSH’a izin verin, sonra varsayılan politikayı değiştirin, en son etkinleştirin.

# 1) ÖNCE SSH'a izin ver (kendinizi kilitlememek için)
sudo ufw allow 22/tcp

# 2) Varsayılan politikaları ayarla
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 3) Gerekli servisleri aç (örnek: web)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 4) Etkinleştir ve doğrula
sudo ufw enable
sudo ufw status verbose

Yönetim erişimini yalnız bilinen bir IP’den kabul etmek çok daha güçlüdür:

# SSH'ı yalnız ofis/VPN IP'sine aç
sudo ufw delete allow 22/tcp
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp

Sabit IP’niz yoksa bunun yerine bir VPN üzerinden erişim kurun; ağ tarafında MikroTik kullanıyorsanız WireGuard site-to-site veya ZeroTier ile uzak erişim yazıları bu kurgunun ağ ayağını anlatıyor.

Kilitlenmeye karşı önlem: firewall değişikliği yaparken açık oturumunuzu kapatmayın ve ikinci bir terminalden bağlanabildiğinizi doğrulayın. Sağlayıcınızın web konsolu (veya kendi donanımınızda IPMI/KVM) yoksa firewall değişikliğine hiç girişmeyin.

ufw, firewalld ve doğrudan nftables arasındaki farkı ve hangisini ne zaman seçeceğinizi Linux firewall rehberinde karşılaştırdım.

Adım 6: Otomatik güvenlik güncellemesi nasıl açılır?

Güvenlik yamalarını elle takip edeceğinizi varsaymayın; birkaç hafta sonra unutulur. Debian ve Ubuntu’da:

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

Varsayılan yapılandırma yalnız güvenlik deposundan yama kurar; bu, üretim için doğru dengedir. Kurulumun gerçekten çalıştığını kuru çalıştırmayla doğrulayın:

sudo unattended-upgrade --dry-run --debug | tail -20

RHEL türevlerinde karşılığı dnf-automatic paketidir ve /etc/dnf/automatic.conf içinden yalnız güvenlik güncellemeleriyle sınırlanabilir.

Saat senkronizasyonunu da doğrulayın. Sapmış bir saat, sertifika doğrulamasını bozar ve logları karşılaştırılamaz hâle getirir:

timedatectl status
# "System clock synchronized: yes" görmelisiniz

Doğrulama: gerçekten kapandı mı?

Yaptığınızı sanmakla yapmış olmak arasındaki farkı kapatan adım budur. Altı kontrol:

# 1) Root ve parola girişi kapalı mı (efektif yapılandırma)
sudo sshd -T | grep -Ei "permitrootlogin|passwordauthentication"

# 2) Firewall aktif ve varsayılan kapalı mı
sudo ufw status verbose

# 3) Dinleyen servisler: beklemediğiniz bir port var mı
sudo ss -tulpn | grep LISTEN

# 4) Otomatik güncelleme zamanlayıcısı çalışıyor mu
systemctl list-timers | grep -i -E "apt-daily|unattended|dnf"

# 5) Saat senkron mu
timedatectl status | grep -i synchronized

# 6) Başarısız giriş denemeleri (log gürültüsünü görün)
sudo journalctl -u ssh --since "1 hour ago" | grep -ci "failed" || true

Üçüncü komut özellikle önemlidir. Dinleyen portlar listesinde tanımadığınız bir servis varsa, ya dağıtım varsayılanı olarak gelmiştir (ör. bir veritabanı tüm arayüzlerde dinliyordur) ya da istemediğiniz bir şey kuruludur. Veritabanları ve yönetim panelleri yalnız 127.0.0.1 üzerinde dinlemeli, dışarıya açılmaları gerekiyorsa VPN veya ters vekil sunucu arkasından yapılmalıdır.

Kopyalanabilir kontrol listesi

Her yeni sunucuda bu listeyi işaretleyerek ilerleyin:

  • Sistem güncellendi, gerekiyorsa yeniden başlatıldı
  • sudo yetkili kullanıcı açıldı (tahmin edilebilir ad değil)
  • SSH anahtarı yerleştirildi, izinler 700/600
  • İkinci terminalden anahtarla giriş doğrulandı
  • PermitRootLogin no ve PasswordAuthentication no, sshd -T ile teyit edildi
  • Firewall varsayılan kapalı, yalnız gerekli portlar açık
  • Yönetim portu mümkünse IP kısıtlı veya VPN arkasında
  • Otomatik güvenlik güncellemesi etkin ve kuru çalıştırmayla doğrulandı
  • Saat senkronizasyonu çalışıyor
  • ss -tulpn çıktısındaki her dinleyen port açıklanabiliyor
  • Sağlayıcı konsolu veya IPMI erişimi test edildi (kilitlenme sigortası)
  • İzleme ve yedekleme planı yazıldı (izleme)

Bu liste bittiğinde sunucu servis kurmaya hazırdır. Bir sonraki adım uygulamayı yayına almaktır; konteynerle çalışacaksanız Docker Compose üretim rehberi, sürekli deploy edeceğiniz uygulamalarınız varsa Coolify ile self-hosted PaaS doğal devamıdır. Bütün katmanların birbirine nasıl bağlandığını Linux sunucu yönetimi yol haritasında topladım.

Bu sertleştirmeyi birden fazla sunucuda düzenli yapmak ve denetlenebilir tutmak gerekiyorsa sistem yönetimi ve siber güvenlik hizmet sayfalarında bu işi nasıl yürüttüğümü anlattım.

Kaynaklar

#linux#sunucu#guvenlik#ssh#firewall#sistem-yonetimi#checklist
Paylaş:𝕏 TwitterLinkedIn

Sıkça Sorulan Sorular

Yeni bir VPS kurduktan sonra ilk ne yapmalıyım?

Sırasıyla altı iş: paket listesini güncelleyip yamaları kurmak, sudo yetkili ayrı bir kullanıcı açmak, o kullanıcıya SSH anahtarı yerleştirmek, root ve parola ile SSH girişini kapatmak, firewall'u varsayılan kapalı gelecek şekilde kurup yalnız gerekli portları açmak, otomatik güvenlik güncellemesini etkinleştirmek. Bu altısı bitmeden sunucuya hiçbir uygulama kurmayın.

SSH portunu değiştirmek güvenlik sağlar mı?

Tek başına gerçek bir güvenlik katmanı değildir, ama log gürültüsünü ciddi biçimde azaltır. Otomatik tarama botlarının büyük çoğunluğu yalnız 22 numaralı portu dener; portu değiştirdiğinizde başarısız giriş kayıtları neredeyse sıfıra iner ve gerçek bir saldırı denemesi log içinde görünür hâle gelir. Asıl koruma parola girişini kapatıp anahtara geçmektir; port değişimi ona ek, onun yerine geçen bir önlem değildir.

Firewall'u kurarken kendimi sunucudan kilitlemekten nasıl kaçınırım?

Kuralları uygularken açık SSH oturumunuzu kapatmayın ve ikinci bir oturum açarak erişimi doğrulayın. ufw'de varsayılan politikayı değiştirmeden önce mutlaka SSH portuna izin kuralını ekleyin. Konsol erişimi (sağlayıcının web konsolu veya IPMI/KVM) olmayan bir sunucuda firewall değişikliğine hiç girişmeyin; bir hata sizi kalıcı olarak dışarıda bırakabilir.

Otomatik güvenlik güncellemesi riskli mi?

Yalnız güvenlik deposundan gelen yamaları kuracak biçimde ayarlandığında risk düşüktür ve elle takip etmeye göre çok daha güvenlidir; elle takip birkaç hafta sürer sonra unutulur. Riskli olan, tüm depolardan otomatik yükseltme yapmak ve servis yeniden başlatmalarını denetimsiz bırakmaktır. Kritik üretim sunucularında otomatik indirme açık, kurulum bakım penceresine planlı bırakılabilir.

Fail2ban kurmak şart mı?

Parola girişi tamamen kapalıysa fail2ban'in SSH açısından koruyucu değeri sınırlıdır; anahtar zaten denenemez. Yine de log gürültüsünü azaltır ve web uygulaması, posta veya VPN gibi parola kabul eden diğer servisler için gerçek fayda sağlar. Sunucuda parola kabul eden herhangi bir servis varsa kurun.

Kaynaklar

  1. 1

    SSH sunucu yapılandırma direktifleri: PermitRootLogin, PasswordAuthentication, PubkeyAuthentication

    OpenBSD: sshd_config manual page (2026) ↗
  2. 2

    Ubuntu güvenlik güncellemeleri ve unattended-upgrades yapılandırması

    Canonical: Ubuntu Server Documentation (2026) ↗
  3. 3

    ufw (Uncomplicated Firewall) kullanımı ve varsayılan politika yönetimi

    Ubuntu Manpage: ufw (2026) ↗

Yazan: Erdem Özyurt

Bilişim Danışmanı · ISP Altyapı · Siber Güvenlik

Kablo döşemekten kod yazmaya, ağ tasarımından web geliştirmeye; Layer 1'den Layer 7'ye bütünlük içinde çalışıyorum.

Hakkımda daha fazla →