WESERVER / BİLGİ BANKASI

Yeni bir VDS’te ilk güvenlik ayarları nasıl yapılır?

Yeni bir Linux VDS’te önce paketleri güncelleyin, sudo yetkili kullanıcı açın, SSH anahtarına geçip root ve parola girişini kapatın, sonra güvenlik duvarını açın. Komutlar ve sık hatalar.

Kısa cevap

Yeni bir Linux VDS teslim aldığınızda ilk iş paketleri güncellemek, sudo yetkili ayrı bir kullanıcı açmak, bu kullanıcıya SSH anahtarı ekleyip root ve parola ile girişi kapatmak, ardından yalnız kullandığınız portlara izin veren bir güvenlik duvarı açmaktır. Bu adımlar tek oturumda biter ve internetteki otomatik parola denemelerini sonuçsuz bırakır.

Komutlar Ubuntu ve Debian için apt, AlmaLinux ve Rocky Linux için dnf ile verildi. Örneklerde sunucu IP’si 203.0.113.10, yeni kullanıcı deploy. Windows Server kurulu VDS’lere RDP ile bağlanılır; o tarafın ayarları için Uzak Masaüstü rehberine bakın.

İlk girişte hangi sırayla ilerlemek gerekir?

Bazı adımlar yanlış sırada yapılırsa sunucuya kendi erişiminizi kesersiniz. Root oturumunu iş bitene kadar açık tutun ve şu sırayı izleyin:

  • Root ile SSH’ye girin
  • Paketleri güncelleyin, gerekiyorsa sunucuyu yeniden başlatın
  • sudo yetkili kullanıcıyı açın ve SSH anahtarını ona ekleyin
  • İkinci bir pencereden yeni kullanıcıyla girişi deneyin
  • Root ve parola ile girişi kapatın, SSH servisini yeniden başlatın, ikinci pencereden tekrar deneyin
  • Güvenlik duvarında önce SSH’ye izin verin, sonra duvarı etkinleştirin
  • Fail2ban kurun ve dışarı açık portları ss ile kontrol edin

Sistem güncellemeleri nasıl yapılır ve otomatikleştirilir?

İşletim sistemi imajları hazırlandıkları tarihteki paketlerle gelir; sonradan çıkan güvenlik yamaları yeni sunucuda yoktur. Ubuntu ve Debian’da apt update && apt upgrade -y, AlmaLinux ve Rocky Linux’ta dnf upgrade -y çalıştırın. Ubuntu’da /var/run/reboot-required dosyası oluştuysa çekirdek de güncellenmiştir ve reboot ile yeniden başlatmanız gerekir.

Güvenlik yamalarının kendiliğinden kurulması için Ubuntu ve Debian’da unattended-upgrades paketini kurup dpkg-reconfigure -plow unattended-upgrades ile etkinleştirin. AlmaLinux ve Rocky Linux’ta dnf install dnf-automatic sonrasında /etc/dnf/automatic.conf dosyasında apply_updates = yes yapın ve zamanlayıcıyı systemctl enable --now dnf-automatic.timer ile açın. İki araç da varsayılan ayarlarda çekirdek yamasından sonra sunucuyu yeniden başlatmaz, yeniden başlatmayı bakım saatinize göre planlamanız gerekir.

Root yerine sudo yetkili kullanıcı nasıl açılır?

Her gün root ile çalışırsanız yanlış yazılmış tek bir komut ya da ele geçirilmiş bir oturum bütün sistemi etkiler. Ayrı bir kullanıcıyla çalışıp yönetici yetkisini yalnız gerektiğinde sudo ile almak hatanın etkisini sınırlar, logda da hangi komutu kimin çalıştırdığı görünür.

  • Ubuntu ve Debian: adduser deploy ile kullanıcıyı ve parolasını oluşturun, usermod -aG sudo deploy ile sudo grubuna ekleyin. Minimal Debian imajlarında sudo yoksa önce apt install sudo çalıştırın.
  • AlmaLinux ve Rocky Linux: useradd -m deploy ile kullanıcıyı açın, passwd deploy ile parola verin, usermod -aG wheel deploy ile wheel grubuna ekleyin.
  • Kontrol: su - deploy ile kullanıcıya geçip sudo whoami yazın. Çıktı root ise yetki çalışıyor.
  • Bu parola SSH girişinde değil sudo komutlarında sorulur. Yine de güçlü ve başka yerde kullanmadığınız bir parola seçin.

SSH anahtarı nasıl eklenir, root ve parola ile giriş nasıl kapatılır?

Anahtarınız root hesabında zaten tanımlıysa, root oturumundayken rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy komutu authorized_keys dosyasını doğru sahiplik ve izinlerle yeni kullanıcıya kopyalar. Anahtar hiç eklenmediyse kendi bilgisayarınızdan ssh-copy-id [email protected] çalıştırın. Sonra ikinci bir terminalde ssh [email protected] ile parola sorulmadan girebildiğinizi görün.

Giriş çalışıyorsa SSH ayarlarını sıkılaştırın. Ana dosyayı düzenlemek yerine /etc/ssh/sshd_config.d/00-guvenlik.conf adıyla yeni bir dosya açıp üç satır yazın: PermitRootLogin no, PasswordAuthentication no ve KbdInteractiveAuthentication no. sshd her ayar için okuduğu ilk değeri kullanır. Adı 00 ile başlayan dosya, bazı bulut imajlarında gelen 50-cloud-init.conf gibi dosyalardaki PasswordAuthentication yes satırından önce okunduğu için geçerli olur.

Servisi yeniden başlatmadan önce sshd -t ile söz dizimini denetleyin; çıktı boşsa hata yoktur. Ardından Ubuntu ve Debian’da systemctl restart ssh, AlmaLinux ve Rocky Linux’ta systemctl restart sshd çalıştırın. sshd -T | grep -Ei "permitrootlogin|passwordauthentication" komutu sunucunun o an kullandığı değerleri gösterir. Root oturumunu kapatmadan önce yeni bir pencereden deploy ile bir kez daha bağlanın.

Güvenlik duvarı nasıl açılır, hangi portlara izin verilmeli?

Gelen bağlantıların hepsini kapatıp yalnız kullandığınız servislere izin verin. Bir web sunucusunda bu çoğunlukla SSH, 80 ve 443 numaralı portlardır. Veritabanı, Redis ya da yönetim paneli gibi servisleri internete açmayın; uzaktan erişim gerekiyorsa yalnız ilgili IP adresine izin verin.

  • Ubuntu ve Debian (ufw): ufw allow OpenSSH, ufw allow 80/tcp, ufw allow 443/tcp komutlarından sonra ufw enable. Durumu ufw status verbose ile görün. Debian’da ufw kurulu gelmeyebilir, apt install ufw ile ekleyin.
  • AlmaLinux ve Rocky Linux (firewalld): systemctl enable --now firewalld ile servisi başlatın. ssh hizmeti varsayılan bölgede zaten açıktır. Web için firewall-cmd --permanent --add-service=http ve firewall-cmd --permanent --add-service=https ekleyip firewall-cmd --reload çalıştırın; firewall-cmd --list-all geçerli kuralları listeler.
  • Tek bir IP’ye izin: ufw allow from 198.51.100.7 to any port 3306 proto tcp

IPv6 adresi olan sunucuda güvenlik duvarı ayrıca ayarlanır mı?

WeServer VDS’ler IPv4 ve IPv6 ile gelir, bu yüzden kuralların iki protokolde de geçerli olduğunu kontrol edin. ufw, /etc/default/ufw dosyasında IPV6=yes iken her kuralı IPv4 ve IPv6 için birlikte ekler. firewalld iki protokolü zaten aynı bölgede yönetir.

Elle yazılan iptables kuralları ise yalnız IPv4’ü kapsar; IPv6 için ip6tables ile ayrı kural gerekir. Bu atlanırsa IPv4’te kapalı görünen bir servise IPv6 adresinden erişilebilir. Dışarıdan test için başka bir makineden nc -zv -6 sunucunun-ipv6-adresi 3306 gibi bir komutla portun yanıt verip vermediğine bakın.

Fail2ban gerekli mi, nasıl kurulur?

Parola ile giriş kapalıysa SSH’ye yapılan deneme saldırıları zaten sonuçsuz kalır; Fail2ban bu durumda loglardaki gürültüyü ve gereksiz bağlantı yükünü azaltır. Parolalı girişin açık kalmak zorunda olduğu servislerde ise asıl korumalardan biridir.

  • Kurulum: Ubuntu ve Debian’da apt install fail2ban. AlmaLinux ve Rocky Linux’ta paket EPEL deposundadır: önce dnf install epel-release, sonra dnf install fail2ban.
  • /etc/fail2ban/jail.local dosyasında [sshd] başlığının altına enabled = true, maxretry = 5 ve bantime = 1h yazın. Debian 12’de SSH logları dosyaya değil journal’a gittiği için backend = systemd satırını da ekleyin.
  • systemctl enable --now fail2ban ile başlatın. fail2ban-client status sshd engellenen IP adreslerini gösterir.
  • Kendi IP’nizi yanlışlıkla engellerseniz fail2ban-client set sshd unbanip 198.51.100.7 ile kaldırın.

Dışarı açık servisler nasıl kontrol edilir?

ss -tulpn komutu dinlemedeki bütün TCP ve UDP portlarını, onları açan programla birlikte listeler. Adres sütununda 0.0.0.0 veya [::] varsa servis bütün ağ arayüzlerinden erişilebilir durumdadır. 127.0.0.1 veya [::1] görüyorsanız servise yalnız sunucunun kendisinden ulaşılır.

Kullanmadığınız bir servis listede çıkıyorsa systemctl disable --now <servis> ile kapatın. MySQL, PostgreSQL veya Redis aynı sunucudaki bir uygulamaya hizmet ediyorsa 127.0.0.1 adresinde dinlemeleri yeterlidir. Güvenlik duvarı ikinci savunma hattıdır; servis yanlış adreste dinliyorsa sorunu önce servisin kendi ayarında düzeltin.

Saat dilimi, hostname ve yedek gibi diğer ilk ayarlar nelerdir?

  • Saat dilimi: timedatectl set-timezone Europe/Istanbul. Logları karşılaştırırken ve zamanlanmış görevlerde saatin doğru olması hata ayıklamayı kolaylaştırır.
  • Hostname: hostnamectl set-hostname web01. Birkaç sunucuya aynı anda bağlandığınızda komut isteminde hangisinde olduğunuzu gösterir.
  • Yedek: Sağlayıcınızın yedek ya da snapshot hizmeti varsa kapsamını ve saklama süresini yazılı olarak öğrenin. Kritik veriler için sunucunun dışında düzenli alınan ve geri yüklemesi denenmiş bir kopya tutun.
  • Yeniden kurulum: İşletim sistemini WE1 müşteri panelinden yeniden kurarsanız buradaki ayarlar yeni sisteme taşınmaz. Adımları baştan uygulayın ve bilgisayarınızdaki eski host anahtarını ssh-keygen -R 203.0.113.10 ile silin.

İlk kurulumda sık yapılan hatalar ve çözümleri

Sunucuya erişimi kesen ya da bir servisi açıkta bırakan hataların çoğu şunlardır:

  • ufw enable sonrası SSH bağlantısı koptu. Neden: duvar, SSH’ye izin verilmeden açıldı. Çözüm: sağlayıcının konsol erişimiyle girip ufw allow OpenSSH çalıştırın; konsol yoksa destek ekibinden yardım isteyin.
  • Parola girişini kapattım ama SSH hâlâ parola soruyor. Neden: sshd_config.d altındaki başka bir dosya ayarı eziyor ya da servis yeniden başlatılmadı. Çözüm: sshd -T ile etkin değeri kontrol edin, dosya adlarının sırasını düzeltip servisi yeniden başlatın.
  • Yeni kullanıcı Permission denied (publickey) alıyor. Neden: authorized_keys dosyası root’a ait kalmış ya da izinler yanlış. Çözüm: chown -R deploy:deploy /home/deploy/.ssh, chmod 700 /home/deploy/.ssh ve chmod 600 /home/deploy/.ssh/authorized_keys.
  • sudo komutu “deploy is not in the sudoers file” hatası veriyor. Neden: kullanıcı sudo veya wheel grubuna eklenmedi ya da oturum grup değişikliğinden önce açıldı. Çözüm: root ile usermod -aG komutunu tekrar çalıştırın, kullanıcıyla yeniden oturum açın.
  • Veritabanı portu dışarıdan açık görünüyor. Neden: servis 0.0.0.0 ya da [::] üzerinde dinliyor ve IPv6 kuralları eksik. Çözüm: servisin dinleme adresini 127.0.0.1 yapın, ufw’de IPV6=yes ayarını kontrol edin.

Sık sorulan sorular

SSH portunu değiştirmeli miyim? Port değişikliği otomatik taramaların loglarda bıraktığı izi azaltır ama hedefli bir saldırıyı durdurmaz. Asıl korumayı anahtarla giriş ve kapalı parola girişi sağlar. Portu değiştirirseniz yeni portu güvenlik duvarında, eskisini kapatmadan önce açın.

Bu adımlar Windows Server VDS için de geçerli mi? Mantık aynı, araçlar farklı: Windows Update ile güncelleme, yönetici hesabı için güçlü bir parola ve Windows Defender Güvenlik Duvarı’nda RDP erişimini gerekli IP adresleriyle sınırlama. Ayrıntılar RDP ile bağlanma rehberinde.

Ağ tarafında bir filtre varsa sunucuda güvenlik duvarı yine gerekir mi? İkisi birbirini tamamlar. Sunucudaki duvar tamamen sizin kontrolünüzdedir ve servis bazında kural yazmanıza izin verir; ağ tarafındaki kurallar değişse bile sunucunuz korumasız kalmaz.

SELinux’u kapatmalı mıyım? AlmaLinux ve Rocky Linux’ta SELinux varsayılan olarak enforcing modda gelir ve ek bir koruma katmanıdır. Bir uygulama çalışmıyorsa SELinux’u kapatmak yerine ausearch -m avc ile engellenen işlemi bulun ve ilgili bağlamı ya da kuralı düzeltin.

Kurulumdan sonra neleri düzenli kontrol etmeliyim? Bekleyen güncellemeleri, fail2ban-client status sshd çıktısını ve ss -tulpn listesini ara ara gözden geçirin. Yeni kurulan bir servisin fark edilmeden dışarı açılması en çok bu listede yakalanır.

İlgili ürünleri inceleWhatsApp ile sor← Kategoriye dön

İLGİLİ

İlgili yazılar

ALL IN WE1

Altyapınızı birlikte kuralım.

İhtiyacınızı paylaşın; doğru kaynak ve sunucu tipini birlikte belirleyelim.

WhatsApp ile görüş