Yeni VPS Kurulumu ve Güvenlik Ayarları Rehberi
Yeni bir VPS sunucuyu ilk 10 dakikada güvenli hale getirin. Root erişimini kapatma, SSH anahtarları oluşturma, firewall yapılandırma ve otomatik güncelleme adımlarını öğrenin.
Sunucunuzun güvenliğini ilk 10 dakika belirler
Yeni bir VPS güvenli değildir. Genel bir IP adresi aldığı andan itibaren tarayıcılar giriş yapmaya çalışır ve varsayılan imaj onlara geniş bir hedef sunar: root hesabı genellikle erişilebilirdir, parolalara genellikle izin verilir, güvenlik duvarı yoktur ve hiçbir şey düzenli olarak güncellenmez. İyi haber şu ki, tüm bunları kapatmak yaklaşık on dakika ve birkaç komut sürer. Bu, herhangi bir şey yüklemeden önce her yeni sunucuda uyguladığım çalışma kılavuzudur.
Adımları sırasıyla uygulayın, çünkü her adım bir öncekinin üzerine inşa edilir. Her birinin kendi rehberi vardır ve ilerledikçe bağlantı verilir; bu sayfa, hepsini birbirine bağlayan hızlı yoldur.
Dakika 1: Her şeyi güncelleyin
Sağlayıcınızın verdiği kimlik bilgileriyle root kullanıcısı olarak giriş yapın ve başka hiçbir işlem yapmadan önce sistemi tamamen güncelleyin:
apt update && apt upgrade -yYamalanmamış bir sunucu, en kolay hedeftir; bu nedenle öncelik buna verilmelidir. Güncelleme işlemi tamamlandığında, sistemin sizin hatırlamanıza gerek kalmadan yamalı kalması için otomatik güvenlik güncellemelerini yapılandırın.
Dakika 2: Sudo yetkisine sahip normal bir kullanıcı oluşturma
root kullanıcısı olarak çalışmaya devam etmeyin. Kendiniz için bir kullanıcı oluşturun ve bu kullanıcıya sudo yetkisi verin:
adduser matt
usermod -aG sudo mattBu noktadan itibaren sisteme bu kullanıcıyla giriş yapın ve yönetimsel görevler için sudo komutunu kullanın. Sürekli root olarak çalışmak, yapılan her hatanın ve her güvenlik ihlalinin sınırsız yetkiyle gerçekleşmesi anlamına gelir; ayrıcalıksız bir kullanıcı olarak çalışmak tam olarak bunun önlenmesi için vardır.
Dakika 4: SSH anahtarlarını ayarlama
Parolalar tahmin edilebilir, ancak anahtarlar tahmin edilemez. Kendi dizüstü bilgisayarınızda, henüz bir anahtarınız yoksa bir tane oluşturun:
ssh-keygen -t ed25519Ardından genel anahtar kısmını sunucuya kopyalayın:
ssh-copy-id matt@YOUR_SERVERssh-copy-id, yeni kullanıcı için parola ile girişi açık tutmanızı gerektirir; eğer zaten kapalıysa, root kullanıcısının ~/.ssh/authorized_keys dosyasını matt kullanıcısına ait /home/matt/.ssh/authorized_keys dosyasına kopyalayın veya genel anahtarınızı bu dosyaya manuel olarak yapıştırın.
Bu adımın arkasındaki model, cihaz başına bir anahtar, anahtar ile girişi bozan izinler ve kaybolan bir anahtarın iptal edilmesi konuları SSH anahtar yönetimi temelleri bölümünde ele alınmıştır.
Oturumu kapatın ve anahtarı kullanarak matt kullanıcısı ile tekrar giriş yapın; bir sonraki adıma geçmeden önce çalıştığından emin olun. Anahtar ile giriş yapamadan SSH erişimini kısıtlamak, kullanıcıların kendilerini sistem dışı bırakmasına neden olur. Eğer giriş denemesi Permission denied (publickey) hatası verirse, parola ile girişe geri dönmek yerine bu sorunu hemen çözün; çünkü bu tek mesaj beş farklı hatayı kapsar ve ssh -v çıktısı size bunlardan hangisiyle karşılaştığınızı söyler.
Dakika 6: Root girişi ve parolaları devre dışı bırakma
SSH anahtarınız çalıştığına göre, tarayıcıların kullandığı iki giriş kapısını kapatın. Paket güncellemelerinin ayarlarınızı üzerine yazmaması için bir drop-in dosyası kullanın. Dosyayı 00- olarak adlandırın; böylece dizindeki diğer tüm dosyalardan önce sıralanacaktır. Ubuntu bulut imajları 60-cloudimg-settings.conf dosyasını PasswordAuthentication no ile birlikte sunar; ancak sağlayıcınız cloud-init içerisinde ssh_pwauth ayarını yaparsa, cloud-init imajın dosyasından önce sıralanan ve parolaları tekrar açabilen 50-cloud-init.conf dosyasını oluşturur. sshd okuduğu ilk değeri esas alır, bu nedenle daha sonra sıralanan bir dosya sessizce geçersiz kalacaktır:
sudo nano /etc/ssh/sshd_config.d/00-hardening.confPasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin noArdından SSH servisini yeniden yükleyin:
sudo systemctl restart sshDaha sonra, geçersiz kalan bir drop-in dosyasının sizi yanıltmaması için sshd'nin gerçekten kullandığı ayarları kontrol edin:
sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'Parolalar kapalıyken ve root girişi devre dışıyken, sunucunuza yönelik sürekli kaba kuvvet (brute-force) trafiği başarılı olamaz. İsteğe bağlı port değişikliği de dahil olmak üzere tam yapılandırma için VPS üzerinde SSH sıkılaştırma rehberine göz atın.
Dakika 8: Güvenlik duvarını açın
Gelen tüm trafiği varsayılan olarak reddedin, ardından yalnızca ihtiyaç duyduklarınıza izin verin. SSH bağlantısını kesmemek için güvenlik duvarını etkinleştirmeden önce SSH erişimine izin verdiğinizden emin olun:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enableÇalıştırdığınız her servis için allow kuralları ekleyin; örneğin bir web sitesi için 80/tcp ve 443/tcp portlarına izin verin. Eğer bu işlemden sonra yeni bir SSH oturumu bağlanamıyorsa, herhangi bir müdahalede bulunmadan önce hata mesajını okuyun; çünkü bağlantı reddediliyorsa sshd yanıt veriyor demektir, zaman aşımı ise genellikle güvenlik duvarının paketi yuttuğu anlamına gelir. Hem IPv4 hem de IPv6 trafiğinin kapsandığından emin olun; yalnızca IPv4 filtreleyen bir güvenlik duvarı IPv6 tarafını tamamen açık bırakır. Adım adım tam kılavuza VPS üzerinde Güvenlik Duvarı 101 başlığından ulaşabilirsiniz. Bu ufw komutları Ubuntu veya Debian sistemleri varsayar; Rocky veya AlmaLinux üzerinde varsayılan olarak reddetme hedefi aynıdır ancak kullanılan araç firewalld'dur, bu nedenle bu adımın firewalld sürümü üzerinden ilerleyin.
Dakika 10: Fail2ban ile tarayıcıları yavaşlatın
Son olarak, portlarınızı zorlayan IP adreslerini uzaklaştırmak için Fail2ban ekleyin:
sudo apt install -y fail2banUbuntu 24.04 üzerinde standart kurulum, SSH servisini ilk açılıştan itibaren korur. SSH anahtarları zaten zorunlu tutulduğundan, bu uygulama ana savunma hattınızdan ziyade log gürültüsünü azaltan ve tekrarlayan saldırganları engelleyen bir güvenlik katmanı görevi görür.
Kontrol listeniz
Bu bir runbook'tur. Her bir kontrolü işaretlemek ve sunucunuzla birlikte saklayabileceğiniz, her adım için gerekli komutları içeren kişiselleştirilmiş bir kontrol listesi oluşturmak için aşağıdaki oluşturucuyu kullanın:
Her yeni sunucuda bu listeyi sırayla uygulayın; böylece süreç zamanla alışkanlık haline gelecektir. Şimdi ayıracağınız on dakika, sunucunuzun ele geçirilmesi durumunda yaşayacağınız çok kötü bir öğleden sonrasını önler.
Temel gereksinimler sağlandıktan sonra, Ubuntu üzerinde otomatik güvenlik güncellemeleri sunucunuzu siz tekrar giriş yapmadan güncel tutar. Üzerine kurduğunuz her servis için ayrı bir güvenlik değerlendirmesi yapılması gerekir ve zayıf noktalar değişir: self-hosted bir parola kasası kullanıldığında sunucu hiçbir zaman düz metin (plaintext) veri tutmaz; bu nedenle Vaultwarden'ın gerçek riskleri yönetici token'ı ve yedekleme dosyasıdır.
FAQ
Yeni bir VPS üzerinde ilk ne yapmalıyım?
Sistemi apt update && apt upgrade -y ile güncelleyin, ardından sudo yetkisine sahip normal bir kullanıcı oluşturun ve root olarak çalışmayı bırakın. Buradan itibaren SSH anahtarlarını ayarlayın, root girişini ve parola kimlik doğrulamasını devre dışı bırakın, varsayılan olarak reddeden (default-deny) bir güvenlik duvarı etkinleştirin ve Fail2ban kurun. Bu adımları bu sırayla uygulamak, kendinizi sistemin dışında bırakmadan her adımın güvenli bir şekilde tamamlanmasını sağlar.
SSH sıkılaştırması yaparken sistemin dışında kalmaktan nasıl kaçınırım?
Parolaları veya root girişini devre dışı bırakmadan önce SSH anahtarı ile giriş yapmayı ayarlayın ve test edin. Çalıştığından emin olmak için oturumu kapatıp anahtar ile tekrar giriş yapın, ancak bundan sonra PasswordAuthentication ve PermitRootLogin ayarlarını kapatın. Güvenlik duvarını etkinleştirirken ufw enable komutunu çalıştırmadan önce 22 numaralı porta izin verin. Eğer sistemin dışında kalırsanız, servis sağlayıcınızın web konsolu SSH olmadan tekrar giriş yapmanızı sağlar.
Küçük bir sunucuda bunların hepsine gerçekten ihtiyacım var mı?
Evet, çünkü tarayıcı botları sunucunuzun ne kadar küçük olduğuyla ilgilenmez. Her genel IP adresini aynı şekilde denerler. Tüm bu prosedür yaklaşık on dakika sürer ve kolay yolları kapatır: root girişi yok, parola tahmini yok, seçmediğiniz hiçbir şey dışarıya açık değil ve bilinen hatalar otomatik olarak yamalanmış durumda.
En önemli tek adım hangisidir?
Root girişinin devre dışı bırakıldığı, yalnızca anahtar tabanlı SSH kullanımıdır. Yeni bir VPS'ye yapılan saldırıların çoğu, root hesabına yönelik otomatik parola tahminleridir; her ikisini de kapatmak bu saldırı kategorisinin tamamını imkansız hale getirir. Güvenlik duvarı ve Fail2ban ise dışarıya neyin açık olduğunu sınırlar ve kalan her şeyi yavaşlatır.
Sunucunun gerçekten güvenli hale getirildiğini nasıl doğrularım?
Güvenmeden önce üç şeyi manuel olarak kontrol edin. sudo ss -tlnp komutunu çalıştırın ve yalnızca açmayı amaçladığınız portların genel bir adreste dinlemede olduğunu, unuttuğunuz herhangi bir 0.0.0.0 veya [::] servisinin bulunmadığını doğrulayın. sudo ufw status verbose komutunu çalıştırın ve varsayılan gelen trafiği politikasının deny olduğunu, hem düz hem de (v6) kurallarının mevcut olduğunu teyit edin. Ayrıca, ilkini kapatmadan önce her zaman ikinci bir SSH oturumu açın; böylece SSH yapılandırmasındaki bir hata sizi sunucunun dışında bırakamaz. Üçü de doğru görünüyorsa, temel güvenlik önlemleri alınmış demektir.