Teknoloji

VPS Güvenliği: İlk 10 Ayar

Yeni bir sanal sunucuda SSH, güvenlik duvarı, fail2ban ve güncelleme ayarlarını doğru sırayla, çalışan komutlarla ve sık yapılan hatalarla birlikte veriyoruz.

Aurora YazılımEditör ekibi 6 dk okuma
VPS Güvenliği: İlk 10 Ayar
VPS güvenliği için ilk ne yapılmalı?

VPS güvenliği için ilk iş sistemi güncellemek, root yerine sudo yetkili bir kullanıcı açmak ve SSH anahtarıyla giriş kurmaktır. Ardından root ve şifreyle SSH girişi kapatılır, güvenlik duvarında yalnızca gerekli portlar açılır, fail2ban kurulur, otomatik güvenlik güncellemeleri etkinleştirilir ve düzenli yedek planlanır.

VPS Güvenliği Nereden Başlar?

Yeni açılan bir sanal sunucu, internete bağlandığı andan itibaren otomatik tarayıcıların hedefidir. Bu botlar belirli bir şirketi değil, açık SSH portu ve zayıf şifre bulduğu her makineyi dener. Sunucu günlüklerine ilk saatlerde bile binlerce giriş denemesi düşmesi sıradan bir durumdur.

Bu yüzden vps güvenliği, kurulumdan sonraki ilk saatte yapılan birkaç temel ayarla başlar. Aşağıdaki on adım, Ubuntu ve Debian tabanlı sunucular için yazılmıştır; diğer dağıtımlarda paket yöneticisi ve servis adları farklı olsa da mantık aynıdır.

Sunucu yönetimi sizin için yeni bir alansa ya da sitenizi bir yazılım ekibiyle yürütüyorsanız, bu adımların kimin sorumluluğunda olduğunu baştan netleştirin. Güvenlik ayarları bir kez yapılıp unutulan bir iş değil, düzenli bakım gerektiren bir süreçtir.

Başlamadan Önce Bilmeniz Gerekenler

Kuruluma geçmeden önce elinizde şunlar olmalı: sunucunun IP adresi, sağlayıcının verdiği ilk root ya da yönetici erişimi ve kendi bilgisayarınızda bir terminal. Windows 10 ve 11'de PowerShell içinde OpenSSH istemcisi yerleşik gelir; macOS ve Linux'ta Terminal yeterlidir.

Komutları bir not dosyasına kaydederek ilerlemek de iyi bir alışkanlıktır. Hangi ayarı ne zaman değiştirdiğinizi bilmek, ileride bir sorun çıktığında nedeni bulmayı kolaylaştırır ve aynı kurulumu ikinci bir sunucuda tekrarlamanızı sağlar. Kurulum sırasında takıldığınız bir nokta olursa iletişim sayfasından ekibimize danışabilirsiniz.

Sistem ve Kullanıcı Ayarları

İlk iki adım, sunucuyu bilinen açıklardan arındırmak ve günlük işleri root dışında bir hesapla yapmaktır.

1. Sistemi güncelleyin

Sağlayıcının hazır imajı aylar önce oluşturulmuş olabilir. İlk iş, tüm paketleri güncel güvenlik yamalarıyla yenilemektir. Çekirdek güncellemesi geldiyse sunucuyu yeniden başlatın.

bash
sudo apt update && sudo apt upgrade -y
sudo reboot

2. Sudo yetkili kullanıcı açın

Root hesabıyla çalışmak, tek bir hatalı komutun tüm sistemi etkilemesi demektir. Kendinize ait bir kullanıcı oluşturup sudo grubuna ekleyin; yönetici yetkisini yalnızca gerektiğinde kullanın.

bash
sudo adduser yonetici
sudo usermod -aG sudo yonetici

SSH Güvenliği

SSH, sunucunun ön kapısıdır. SSH güvenliği için en etkili iki adım şifre yerine anahtar kullanmak ve root girişini kapatmaktır.

3. SSH anahtarıyla giriş kurun

Kendi bilgisayarınızda bir anahtar çifti oluşturun ve açık anahtarı sunucuya kopyalayın. macOS ve Linux'ta ssh-copy-id komutu bunu tek adımda yapar; Windows'ta PowerShell ile açık anahtarı sunucuya aktarabilirsiniz. Anahtara bir parola (passphrase) vermeniz, bilgisayarınız ele geçse bile ek bir koruma sağlar.

bashmacOS / Linux
ssh-keygen -t ed25519
ssh-copy-id yonetici@SUNUCU_IP
powershellWindows PowerShell
ssh-keygen -t ed25519
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh yonetici@SUNUCU_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

4. Root ve şifreli girişi kapatın

Anahtarla girişin çalıştığını ikinci bir terminalde doğruladıktan sonra SSH yapılandırmasını sertleştirin. Değişiklikten önce yapılandırmayı test etmek, hatalı bir satırın servisi durdurmasını önler.

Dikkat: bazı bulut imajlarında /etc/ssh/sshd_config.d/ klasöründeki ek dosyalar şifreli girişi yeniden açabilir. Ayarı yaptıktan sonra bu klasörü de kontrol edin.

bash/etc/ssh/sshd_config içinde
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
bashTest edip yeniden başlatın
sudo sshd -t
sudo systemctl restart ssh

Güvenlik Duvarı ve Fail2ban

Sunucuda yalnızca dışarıya gerçekten hizmet veren portlar açık olmalıdır. Doğru firewall ayarları saldırı yüzeyini küçültür; fail2ban ise ısrarlı deneme yapan adresleri otomatik engeller.

5. Güvenlik duvarını açın

Ubuntu'da UFW, iptables üzerinde sade bir arayüz sunar. Önce SSH'ye izin verin, sonra duvarı etkinleştirin; sıra ters olursa bağlantınız kesilir.

bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

6. Fail2ban kurun

Fail2ban, günlükleri izleyip art arda başarısız giriş yapan IP adreslerini belirli bir süre engeller. Ayarları doğrudan ana dosyada değil, güncellemelerde ezilmeyen jail.local dosyasında yapın.

bashKurulum
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
ini/etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 5
bantime = 1h
findtime = 10m
bashDoğrulama
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

Güncelleme ve Servisler

Güvenlik açıklarının önemli bir kısmı, yaması çoktan yayımlanmış ama uygulanmamış yazılımlardan kaynaklanır. Gereksiz çalışan her servis de ayrı bir risk demektir.

7. Otomatik güvenlik güncellemeleri

unattended-upgrades paketi, güvenlik yamalarını sizin müdahaleniz olmadan uygular. Büyük sürüm geçişlerini ise kontrollü biçimde, yedek aldıktan sonra elle yapın.

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

8. Açık portları ve servisleri denetleyin

Hangi servisin hangi portu dinlediğini listeleyin. Veritabanı gibi yalnızca sunucu içinden erişilmesi gereken servisler 127.0.0.1 adresini dinlemeli, dış dünyaya açık olmamalıdır. Kullanmadığınız servisleri kapatın.

bash
sudo ss -tulpn
sudo systemctl disable --now SERVIS_ADI

İzleme ve Yedekleme

Sunucuda web sitesi yayınlıyorsanız bu adımlara bir de HTTPS eklenmelidir; ücretsiz sertifikanın kurulumu ve otomatik yenilenmesini SSL sertifikası kurulumu yazımızda anlattık.

9. Günlükleri ve kaynakları izleyin

Saldırıyı fark etmenin en kolay yolu günlüklerdir. SSH girişlerini, disk doluluğunu ve olağandışı işlemci kullanımını düzenli kontrol edin. Sunucu saatinin doğru olması da günlüklerin anlamlı olması için şarttır.

bash
sudo journalctl -u ssh --since today
df -h
timedatectl

10. Yedek ve anlık görüntü planlayın

Hiçbir güvenlik önlemi yüzde yüz değildir; son savunma hattı sunucu dışındaki yedektir. Sağlayıcının anlık görüntü özelliğini kullanın, ama yalnızca ona güvenmeyin: veritabanı ve dosya yedeklerini ayrı bir depolama alanına da gönderin ve geri yüklemeyi düzenli test edin. Strateji için yedekleme nasıl yapılır rehberimize göz atabilirsiniz.

Docker Kullanıyorsanız Dikkat

Docker ile yayınlanan portlar, iptables kurallarını doğrudan düzenlediği için UFW kurallarını atlayabilir. Yani UFW'de kapalı görünen bir veritabanı portu, docker run -p ile yayınlandıysa dışarıdan erişilebilir olabilir.

Çözüm, yalnızca sunucu içinden erişilmesi gereken konteyner portlarını 127.0.0.1 adresine bağlamak ve dışarıya yalnızca ters vekil sunucu (reverse proxy) üzerinden 80 ve 443 portlarını açmaktır. Ayrıntılar için Docker'ın resmî ağ dokümantasyonuna bakabilirsiniz.

bashPortu yalnızca yerel ağa bağlama örneği
docker run -d -p 127.0.0.1:5432:5432 postgres

Sık Hatalar ve Sonraki Adımlar

Bu on adım bir başlangıçtır. Sunucuda çalışan uygulamanın kendisi de güncel tutulmalı, yönetim panelleri iki adımlı doğrulamayla korunmalı ve şüpheli bir durumda hızlı müdahale planı hazır olmalıdır. Saldırı sonrası izlenecek yolu web sitesi hacklendi yazımızda adım adım anlattık.

Sunucu yönetimini kendi ekibinizle yürütmek istemiyorsanız, sitenin barındırma, güvenlik ve hız katmanlarını birlikte ele alan hız ve performans yönetimi hizmetimiz bu yükü üstlenir. E-ticaret altyapısı, web tasarımı ve sektörel yazılım çözümleri projelerimizde sunucu güvenliği, devreye alma sürecinin bir parçası olarak planlanır.

HataSonuçDoğrusu
SSH'ye izin vermeden UFW'yi açmakSunucuya erişim kesilirÖnce ufw allow OpenSSH
Anahtarı test etmeden şifreli girişi kapatmakKendinizi dışarıda bırakırsınızİkinci terminalde test edin
Veritabanını dışa açık bırakmakDoğrudan saldırıya açık veri127.0.0.1'e bağlayın
Yedeği aynı sunucuda tutmakSunucuyla birlikte yedek de kaybolurAyrı bir depolama alanı kullanın
Güncellemeleri aylarca ertelemekBilinen açıklar açık kalırOtomatik güvenlik güncellemesi

Sık Sorulan Sorular

01SSH portunu değiştirmek güvenliği artırır mı?

Varsayılan 22 numaralı portu değiştirmek otomatik bot trafiğini ve günlük kalabalığını azaltır, ancak gerçek bir güvenlik önlemi değildir. Asıl koruma, anahtarla giriş, kapalı şifreli giriş ve fail2ban gibi önlemlerden gelir. Port değiştirirseniz güvenlik duvarında yeni porta izin vermeyi unutmayın.

02Yönetilen sunucu mu, kendim mi yöneteyim?

Linux yönetimine hâkimseniz ve düzenli bakım için zaman ayırabiliyorsanız VPS'i kendiniz yönetebilirsiniz. Değilse yönetilen bir hizmet ya da deneyimli bir ekip, güncelleme ve izleme işlerinin aksamamasını sağlar; aksayan bakım, güvenlik açıklarının en yaygın nedenidir.

03Fail2ban kendimi engellerse ne yapmalıyım?

Sağlayıcının web konsolundan sunucuya girip sudo fail2ban-client set sshd unbanip IP_ADRESI komutuyla engeli kaldırabilirsiniz. Sabit IP adresiniz varsa jail.local dosyasında ignoreip satırına ekleyerek tekrarını önleyebilirsiniz.

Yeni bir VPS'te bu on ayar, otomatik saldırıların çok büyük kısmını daha ilk günden boşa çıkarır; düzenli güncelleme ve test edilmiş yedekle birlikte sağlam bir temel oluşturur. Sunucunuzun güvenliğini ve hızını birlikte, ölçerek yönetmek isterseniz Aurora'nın hız ve performans yönetimi hizmetini inceleyebilirsiniz.