Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
Güvenlik Linux Sanal Sunucular

VPS’de SSH Bağlantısı ve Yapılandırması: Tam Güvenlik Rehberi

Secure shell (SSH) erişimi, profesyonel sunucu yönetiminin temelini oluşturur. WordPress sitesi dağıtıyor, Git aracılığıyla kod gönderiyor veya özel uygulamaları yönetiyor olsanız da, SSH size sunucunuza doğrudan şifrelenmiş, kimliği doğrulanmış bir tünel sağlar. Bu kapsamlı rehber her adımda size yol gösterir — ilk bağlantınızdan gerçek dünya saldırılarına karşı kurulumunuzu sağlamlaştırmaya kadar — böylece VPS Hosting ortamınızı güvenle yönetebilirsiniz.

SSH Güvenliğinin Neden Önemli Olduğu

Herkese açık olan her sunucu, sürekli otomatik brute-force saldırılarına maruz kalır. Bir VPS canlı olduktan birkaç dakika sonra, botlar 22 numaralı portu taramaya ve yaygın kullanıcı adı/şifre kombinasyonlarını denemeye başlar. Kötü güvenliği sağlanmış bir SSH yapılandırması, saldırganlar için en yaygın giriş noktalarından biridir.

İyi haber: birkaç kasıtlı yapılandırma değişikliği saldırı yüzeyinizi önemli ölçüde azaltır. NVMe destekli depolama ve yerleşik DDoS koruması gibi güvenilir altyapı ile birleştirildiğinde, düzgün şekilde sertleştirilmiş bir SSH kurulumu size hızlı, dayanıklı ve gerçekten güvenli bir yönetim kanalı sağlar.

Henüz bir barındırma ortamı seçmediyseniz, tam kök erişimi, özel kaynakları ve bu kılavuzda ele alınan her güvenlik önlemini uygulamak için esnekliği içeren VPS Hosting planlarını keşfetmeyi düşünün.

Ön Koşullar

Başlamadan önce, aşağıdakilerin yerinde olduğunu doğrulayın:

GereksinimAyrıntılar
Çalışan bir VPSHerhangi bir Linux dağıtımı (Ubuntu, Debian, CentOS, AlmaLinux, vb.) yüklü işletim sistemi ile
SSH istemcisiLinux/macOS: yerleşik ssh komutu. Windows: PuTTY, Windows Terminal veya WSL
Sunucu IP adresiSağlama sonrasında barındırma kontrol panelinizde sağlanır
Giriş kimlik bilgileriVarsayılan kullanıcı adı (root veya sudo özellikli bir kullanıcı) ve ilk şifre
Temel terminal bilgisiKomutları çalıştırma ve nano veya vim ile dosyaları düzenleme yeteneği

> İpucu: Birden fazla sunucuyu yönetiyorsanız veya SSH’nin yanında grafik bir arayüze ihtiyacınız varsa, komut satırı erişimini tamamlayan cPanel, Plesk ve DirectAdmin gibi seçenekler için VPS Kontrol Panelleri‘ne göz atın.

VPS’nize SSH Üzerinden Bağlanma

Linux veya macOS’ta

Terminal’inizi açın ve şunu çalıştırın:

ssh username@your_server_ip

username yerine gerçek kullanıcı adınızı (yeni bir VPS için genellikle root) ve your_server_ip yerine sunucunuzun genel IP adresini yazın.

Örnek:

ssh root@203.0.113.45

İlk bağlantı isteminde:

The authenticity of host '203.0.113.45 (203.0.113.45)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

yes yazın ve Enter tuşuna basın. Bu, sunucunun host anahtarını ~/.ssh/known_hosts dosyanıza ekler. Sonraki bağlantılarda SSH bu parmak izini otomatik olarak doğrulayacaktır — eğer beklenmedik şekilde değişirse, bunu olası bir güvenlik olayı olarak değerlendirin.

İstendiğinde şifrenizi girin.

Windows’ta PuTTY Kullanarak

  1. putty.org adresinden PuTTY‘i indirin ve açın.
  2. Host Name (or IP address) alanına sunucunuzun IP adresini girin.
  3. Port ayarının 22 olduğunu ve Connection type ayarının SSH olduğunu doğrulayın.
  4. Open‘e tıklayın.
  5. İstendiğinde host anahtarı parmak izini kabul edin.
  6. Kullanıcı adınızı ve şifrenizi girin.

> Windows 10/11 alternatifi: Windows Terminal ve PowerShell, yerel bir OpenSSH istemcisi içerir. Linux/macOS ile aynı ssh username@your_server_ip söz dizimini kullanabilirsiniz — üçüncü taraf araçlara gerek yoktur.

SSH Sertleştirme: Adım Adım Yapılandırma

Tüm SSH davranışı tek bir yapılandırma dosyası tarafından kontrol edilir:

/etc/ssh/sshd_config

Yükseltilmiş ayrıcalıklarla açın:

sudo nano /etc/ssh/sshd_config

Aşağıdaki her sertleştirme adımını izleyin. Tüm değişiklikleri yaptıktan sonra, hizmeti bir kez yeniden başlatacaksınız — sonraki bölümde ele alınmıştır.

Adım 1: Varsayılan SSH Portunu Değiştirin

Port 22, botların taradığı ilk porttur. SSH’yi standart olmayan bir porta taşımak, günlüklerinizdeki otomatik gürültünün büyük çoğunluğunu ortadan kaldırır.

Bu satırı bulun:

#Port 22

Seçtiğiniz bir porta değiştirin (1024 ile 65535 arasında başka bir hizmet tarafından kullanılmayan bir numara kullanın):

Port 2222

# öğesini kaldırarak satırın açıklamasını kaldırın. CTRL+X ile kaydedin, ardından Y, ardından Enter tuşuna basın.

> Önemli: SSH’yi yeniden başlatmadan önce, güvenlik duvarınızın yeni porta izin verdiğinden emin olun. Aşağıdaki güvenlik duvarı notuna bakın.

Güvenlik duvarınızı güncelleyin (UFW örneği):

sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp
sudo ufw reload

Güvenlik duvarınızı güncelleyin (firewalld örneği):

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

Adım 2: Root Girişini Devre Dışı Bırakın

SSH üzerinden doğrudan root girişine izin vermek önemli bir güvenlik riskidir. Bunun yerine, normal bir kullanıcı olarak oturum açın ve gerektiğinde sudo ile ayrıcalıkları yükseltin.

sshd_config içinde şunu bulun:

PermitRootLogin yes

Bunu şu şekilde değiştirin:

PermitRootLogin no

Root girişini devre dışı bırakmadan önce, sudo ayrıcalıklarına sahip root olmayan bir kullanıcınız olduğundan emin olun:

# Create a new user
adduser adminuser

# Grant sudo privileges
usermod -aG sudo adminuser

Root girişini devre dışı bırakmadan ve SSH’yi yeniden başlatmadan önce bu kullanıcının oturum açabileceğini ve sudo komutlarını çalıştırabileceğini test edin.

Adım 3: Parola Kimlik Doğrulamasını Devre Dışı Bırakın (Anahtarlar Ayarlandıktan Sonra)

SSH anahtar kimlik doğrulaması yapılandırıldıktan sonra (sonraki bölüm), parola tabanlı girişi tamamen devre dışı bırakarak kaba kuvvet riskini ortadan kaldırın:

PasswordAuthentication no

Ayrıca bu ilgili yönergelerin ayarlandığından emin olun:

ChallengeResponseAuthentication no
UsePAM no

Adım 4: Ek Önerilen Yönergeler

Kapsamlı bir sertleştirme temeli için sshd_config içinde bu ayarları ekleyin veya doğrulayın:

# Limit authentication attempts per connection
MaxAuthTries 3

# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2

# Disable empty passwords
PermitEmptyPasswords no

# Restrict SSH to specific users (replace 'adminuser' with your username)
AllowUsers adminuser

# Use only strong protocol version
Protocol 2

# Disable X11 forwarding if not needed
X11Forwarding no

SSH Anahtar Kimlik Doğrulaması Kurulumu

SSH anahtar kimlik doğrulaması şifreleri bir şifreleme anahtar çifti ile değiştirir: yerel makinenizde kalan bir özel anahtar ve sunucuda bulunan bir genel anahtar. Bir saldırgan kullanıcı adınızı bilse bile, özel anahtarınız olmadan kimlik doğrulaması yapamaz.

Adım 1: SSH Anahtar Çifti Oluşturun (Yerel Makinenizde)

ssh-keygen -t ed25519 -C "your_email@example.com"

> Neden Ed25519? Eski RSA algoritmasından daha hızlı ve daha güvenlidir. Sisteminiz uyumluluk için RSA gerektiriyorsa, bunun yerine ssh-keygen -t rsa -b 4096 kullanın.

Kaydetme konumunu seçmeniz (varsayılan ~/.ssh/id_ed25519 iyidir) ve bir parola ayarlamanız istenecektir. Her zaman bir parola ayarlayın — özel anahtarınızı şifreler, böylece makinenize fiziksel erişim sunucularınızı otomatik olarak tehlikeye atmaz.

Çıktı:

Your identification has been saved in /home/you/.ssh/id_ed25519
Your public key has been saved in /home/you/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com

Adım 2: Genel Anahtarı VPS’nize Kopyalayın

En kolay yöntem ssh-copy-id kullanır:

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@your_server_ip

Bu komut:

  1. Şifre kimlik doğrulaması kullanarak sunucunuza bağlanır.
  2. Sunucuda ~/.ssh/authorized_keys oluşturur (mevcut değilse).
  3. Genel anahtarınızı bu dosyaya ekler.
  4. Doğru izinleri otomatik olarak ayarlar.

Manuel yöntem (ssh-copy-id kullanılamıyorsa):

# On your local machine, display your public key
cat ~/.ssh/id_ed25519.pub

# On your server, add it manually
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "paste-your-public-key-here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Adım 3: Şifreleri Devre Dışı Bırakmadan Önce Anahtar Tabanlı Girişi Doğrulayın

Anahtar tabanlı girişin çalıştığını doğrulayana kadar şifre kimlik doğrulamasını devre dışı bırakmayın. Yeni bir terminal penceresi açın ve test edin:

ssh -i ~/.ssh/id_ed25519 username@your_server_ip -p 2222

Şifre istenmeden başarıyla bağlanırsanız (yalnızca anahtar parolanız ayarlandıysa), sshd_config içinde PasswordAuthentication devre dışı bırakmaya devam edin.

SSH Hizmetini Yeniden Başlatma ve Doğrulama

sshd_config dosyasında yapılan tüm değişiklikleri kaydettikten sonra, yeniden başlatmadan önce yapılandırma sözdizimini doğrulayın:

sudo sshd -t

Hiçbir hata döndürülmezse, SSH daemon’unu yeniden başlatın:

sudo systemctl restart sshd

Hizmetin başarıyla başlatıldığını kontrol edin:

sudo systemctl status sshd

Çıktıda Active: active (running) görmelisiniz.

> Kritik güvenlik ipucu: Yeni yapılandırmayı ayrı bir pencerede test ederken mevcut SSH oturumunuzu açık tutun. Bir şey ters giderse, mevcut oturumunuz etkin kalır ve değişiklikleri geri alabilirsiniz.

Güvenli Yapılandırmanızı Test Etme

Test 1: Yeni Bağlantı Noktasında Anahtarınızla Bağlanın

Yerel makinenizden:

ssh username@your_server_ip -p 2222

Beklenen sonuç: SSH anahtarınızı kullanarak oturum açtınız (anahtar parolanız için istenebilir, ancak sunucu parolanız için değil).

Test 2: Root Girişinin Engellenmesini Doğrulayın

ssh root@your_server_ip -p 2222

Beklenen sonuç:

Permission denied (publickey).

veya

root@your_server_ip: Permission denied

Test 3: Parola Kimlik Doğrulamasının Devre Dışı Bırakıldığını Doğrulayın

ssh username@your_server_ip -p 2222 -o PubkeyAuthentication=no

Beklenen sonuç:

Permission denied (publickey).

Parola kimlik doğrulaması hala etkinleştirilmiş olsaydı, bunun yerine bir parola istenir.

Ek Güvenlik Sağlamlaştırması: Fail2Ban

Fail2Ban, günlük dosyalarını izler ve kötü amaçlı etkinlik belirtileri gösteren IP adreslerini otomatik olarak yasaklar — örneğin tekrarlanan başarısız SSH oturum açma girişimleri. SSH sağlamlaştırma adımlarının yukarıdaki temel tamamlayıcısıdır.

Fail2Ban’ı Yükleyin

Ubuntu/Debian:

sudo apt update && sudo apt install fail2ban -y

CentOS/AlmaLinux/RHEL:

sudo dnf install epel-release -y
sudo dnf install fail2ban -y

SSH için Fail2Ban’ı Yapılandırın

Yerel bir geçersiz kılma dosyası oluşturun (varsayılan jail.conf dosyasını asla doğrudan düzenlemeyin):

sudo nano /etc/fail2ban/jail.local

Aşağıdakini ekleyin:

[DEFAULT]
bantime  = 3600
findtime = 600
maxretry = 5

[sshd]
enabled  = true
port     = 2222
logpath  = %(sshd_log)s
backend  = %(sshd_backend)s

port öğesini özel SSH portunuzla eşleşecek şekilde ayarlayın. Kaydedin, ardından Fail2Ban’ı etkinleştirin ve başlatın:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Etkin yasakları ve hapishane durumunu kontrol edin:

sudo fail2ban-client status sshd

SSH Anahtarlarınızı ve Yapılandırmanızı Yedekleme

Kilitli bir sunucu ciddi bir sorundur. Bunu önlemek için şu uygulamaları izleyin:

  • Özel anahtarınızı şifreli bir parola yöneticisine veya çevrimdışı depolamaya yedekleyin.
  • Değişiklik yapmadan önce sshd_config kopyasını saklayın: sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  • SSH erişimini kaybederseniz yedek olarak barındırma sağlayıcınızın bant dışı konsolunu (kontrol paneli aracılığıyla VNC/KVM erişimi) kullanın.
  • Özel portunuzu belgeleyin — sunucular arasında geçiş yaparken 2222 unutmak kolaydır.

SSH’yi Doğru Hosting Altyapısıyla Eşleştirmek

Güvenli bir SSH yapılandırması, altında yatan altyapı kadar güçlüdür. Bu tamamlayıcı hizmetleri göz önünde bulundurun:

  • Dedicated Servers — Maksimum performans ve tam donanım izolasyonu gerektiren iş yükleri için, dedicated sunucular fiziksel ve yazılım katmanlarının her ikisine de tam kontrol sağlar; SSH yapılandırması da buna dahildir.
  • SSL Certificates — Uygulamalarınızın web tarafını güvenilir SSL/TLS sertifikaları ile güvence altına alın; sunucunuzun arka ucu için SSH güvenliğini tamamlayın.
  • Domain Registration — Hosting’inizle birlikte alan adınızı kaydedin ve yönetin; DNS tabanlı erişim kontrolleri ve sunucu ana bilgisayar adlarını yapılandırmayı kolaylaştırın.

Sonuç

Düzgün şekilde yapılandırılmış bir SSH kurulumu, herhangi bir Linux sunucusuna yapabileceğiniz en yüksek etkili güvenlik iyileştirmelerinden biridir. Uyguladığınız şeyleri özetlemek gerekirse:

Güvenlik ÖnlemiFayda
Özel SSH portuOtomatik port-22 taramasını ortadan kaldırır
Root girişinin devre dışı bırakılmasıEn çok hedeflenen hesabı uzaktan erişimden kaldırır
SSH anahtar kimlik doğrulamasıTahmin edilebilir şifreleri kriptografik kanıtla değiştirir
Şifre kimlik doğrulamasının devre dışı bırakılmasıBrute-force saldırı vektörünü tamamen kapatır
Fail2BanKalıcı saldırganları otomatik olarak engeller
MaxAuthTries & zaman aşımlarıYavaş veya dağıtılmış saldırılardan maruziyeti sınırlar

Bu önlemler birlikte katmanlı bir savunma oluşturmak için çalışır — her biri kendi başına anlamlıdır ve kombinasyon halinde önemli ölçüde daha güçlüdür.

İster tek bir WordPress sitesi çalıştırıyor ister bir uygulama sunucuları filosunu yönetiyor olun, sertleştirilmiş bir SSH yapılandırmasıyla başlamak sizi kontrol sahibi yapar. Bunu güvenilir VPS Hosting altyapısıyla eşleştirin, anahtarlarınızı yedekleyin ve uzun süre dayanacak şekilde inşa edilmiş güvenli, profesyonel bir sunucu ortamına sahip olacaksınız.