Blogchevron_rightSunucu Yönetimichevron_rightSunucu Güvenliğinde Gelişmiş SSH Yapılandırma Rehberi

Sunucu Güvenliğinde Gelişmiş SSH Yapılandırma Rehberi

S
Serversium
calendar_today4 Temmuz 2026
schedule5 dk okuma
Sunucu Güvenliğinde Gelişmiş SSH Yapılandırma Rehberi

Sunucu Güvenliğinde Gelişmiş SSH ve Erişim Güvenliği

Sunucu güvenliği, modern IT altyapılarının en kritik bileşenlerinden birini oluşturmaktadır. SSH (Secure Shell), sunuculara uzaktan erişim için kullanılan en yaygın protokollerden biri olarak, %94'ün üzerinde Linux sunucular tarafından tercih edilmektedir. Bu kapsamlı rehberde, SSH güvenliğinin gelişmiş tekniklerini, erişim kontrol mekanizmalarını ve en iyi uygulamaları detaylı olarak inceleyeceğiz.

SSH Güvenliğinin Önemi ve Güncel Tehditler

SSH protokolü, varsayılan olarak 22 numaralı portu kullanmakta ve bu durum saldırganlar için bir hedef noktası oluşturmaktadır. Araştırmalara göre, internet üzerindeki tüm SSH sunucularının yaklaşık %60'ı brute-force saldırılara maruz kalmaktadır. Docker Swarm ortamlarında veya çoklu sunucu yapılandırmalarında SSH güvenliği, tüm altyapının güvenliği açısından kritik öneme sahiptir.

SSH Temel Yapılandırma Güvenliği

SSH Config Dosyasının Optimize Edilmesi

SSH yapılandırma dosyası (/etc/ssh/sshd_config), sunucu güvenliğinin temel taşlarından birini oluşturmaktadır. Aşağıdaki ayarlar mutlaka yapılandırılmalıdır:

  • Port Değişikliği: Varsayılan 22 portunun değiştirilmesi, otomatik tarama araçlarına karşı ilk savunma hattını oluşturur.
  • Root Girişinin Kısıtlanması: PermitRootLogin no parametresi ile root kullanıcısının doğrudan SSH erişimi engellenmelidir.
  • Parola Kimlik Doğrulamasının Kapatılması: PasswordAuthentication no ile yalnızca anahtar tabanlı kimlik doğrulama aktif hale getirilmelidir.
  • SSH Protokolü Versiyonu: Protocol 2 ayarı ile SSH protokolünün daha güvenli versiyonu zorunlu kılınmalıdır.
  • Boşta Kalan Oturumların Sonlandırılması: ClientAliveInterval ve ClientAliveCountMax parametreleri ile zaman aşımı süreleri belirlenmelidir.

SSH Servis Yeniden Başlatma ve Doğrulama

Yapılandırma değişikliklerinin ardından SSH servisi yeniden başlatılmalı ve yapılandırma test edilmelidir:

sudo sshd -t
sudo systemctl restart sshd

Yapılandırma test komutu, sözdizimi hatalarını kontrol eder ve servisin çökmesini önler.

Anahtar Tabanlı Kimlik Doğrulama

RSA vs Ed25519 Anahtar Karşılaştırması

Anahtar tabanlı kimlik doğrulama, parola tabanlı authentication'a göre çok daha güvenli bir alternatif sunmaktadır. Modern şifreleme algoritmaları arasında karşılaştırma yapmak gerekmektedir:

Özellik RSA 4096-bit Ed25519 ECDSA
Anahtar Uzunluğu 4096 bit 256 bit 256-384 bit
Performans Orta Çok Yüksek Yüksek
Güvenlik Seviyesi Çok Yüksek Çok Yüksek Yüksek
Uyumluluk Mükemmel İyi Orta
Tavsiye Edilen Kullanım Eski Sistemler Yeni Deploylar Özel Durumlar

Ed25519 Anahtar Üretimi

Günümüzde en推荐 edilen anahtar tipi Ed25519'dur. Aşağıdaki adımlarla anahtar üretilebilir:

ssh-keygen -t ed25519 -C "user@hostname"
# veya daha yüksek güvenlik için
ssh-keygen -t ed25519 -a 100 -C "user@hostname" -f ~/.ssh/id_ed25519

-a parametresi, anahtar türetme fonksiyonunun döngü sayısını belirler ve brute-force saldırılarına karşı koruma sağlar.

Authorized_keys Yapılandırması

Sunucu tarafında anahtarın eklenmesi ve güvenliğinin sağlanması kritik öneme sahiptir:

# Anahtarı sunucuya ekleme
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@sunucu_ip

# Authorized_keys dosyasının güvenliğini sağlama
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

ZFS dosya sistemi kullanan sunucularda, anlık snapshot özellikleri ile authorized_keys dosyasının versiyon kontrolü sağlanabilir.

İki Faktörlü Kimlik Doğrulama (2FA)

SSH güvenliğini bir üst seviyeye taşımak için iki faktörlü kimlik doğrulama implementasyonu kritik önem taşımaktadır. Google Authenticator veya benzeri TOTP (Time-based One-Time Password) sistemleri kullanılabilir.

PAM Modülü Kurulumu

# Ubuntu/Debian
sudo apt install libpam-google-authenticator

# CentOS/RHEL
sudo yum install google-authenticator

sshd Yapılandırması

/etc/pam.d/sshd dosyasına aşağıdaki satır eklenmelidir:

auth required pam_google_authenticator.so

/etc/ssh/sshd_config dosyasında ise şu ayar yapılmalıdır:

ChallengeResponseAuthentication yes
AuthenticationMethods password,keyboard-interactive

Kullanıcı Tarafında 2FA Aktif Etme

google-authenticator

Bu komut çalıştırıldığında QR kod, güvenlik anahtarı ve onay kodları oluşturulur. Kullanıcı, mobil cihazındaki authenticator uygulamasıyla eşleştirme yapmalıdır.

Fail2ban ile SSH Koruma

Fail2ban, brute-force saldırılarına karşı otomatik koruma sağlayan bir intrusion prevention sistemidir. WAF güvenlik duvarı kurulumlarına paralel olarak SSH koruması için de kullanılmalıdır.

Fail2ban Kurulumu

# Ubuntu/Debian
sudo apt install fail2ban

# CentOS/RHEL
sudo yum install fail2ban

SSH Jail Yapılandırması

/etc/fail2ban/jail.local dosyasında SSH yapılandırması:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
destemail = [email protected]
action = %(action_mwl)s

Fail2ban Komutları

  • Servisi başlatma: sudo systemctl start fail2ban
  • Durumu kontrol etme: sudo fail2ban-client status
  • Belirli jail'i kontrol etme: sudo fail2ban-client status sshd
  • IP engelini kaldırma: sudo fail2ban-client set sshd unbanip IP_ADRESİ

SSH Port Yönlendirme ve Güvenlik Tünelleme

Local Port Yönlendirme

SSH tünelleme, verilerin şifrelenmiş bir kanal üzerinden iletilmesini sağlar:

# Local port yönlendirme
ssh -L 8080:localhost:80 user@sunucu

# Özel port ile
ssh -L 8080:localhost:80 -p 2222 user@sunucu

Dynamic Port Yönlendirme (SOCKS Proxy)

# SOCKS proxy oluşturma
ssh -D 1080 user@sunucu

Bu yapılandırma, tarayıcıda SOCKS proxy olarak 127.0.0.1:1080 kullanılarak şifrelenmiş navigasyon sağlar.

Remote Port Yönlendirme

# Uzak sunucudan local port'a erişim
ssh -R 8080:localhost:80 user@sunucu

Proxy hizmetleri ile birlikte kullanıldığında, karmaşık ağ topolojilerinde güvenli erişim kanalları oluşturulabilir.

Erişim Kontrol Listeleri ve Kullanıcı Yönetimi

AllowUsers ve AllowGroups

SSH erişimini belirli kullanıcılarla sınırlamak, saldırı yüzeyini önemli ölçüde azaltır:

# /etc/ssh/sshd_config
AllowUsers admin deploy bot
AllowGroups sshusers sudo

ChrootDirectory ile Sınırlı Erişim

Kullanıcıların yalnızca belirli dizinlere erişmesini sağlamak için chroot kullanılabilir:

Match User ftpuser
    ChrootDirectory /var/www/uploads
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

sudo Yetkilendirme Yönetimi

sudo erişiminin kısıtlanması, kritik sunucularda temel güvenlik önlemlerinden biridir:

# /etc/sudoers dosyasında
Cmnd_Alias SSH_CMDS = /usr/bin/ssh, /usr/bin/scp, /usr/bin/sftp
%sshusers ALL=(ALL) SSH_CMDS

SSH Agent Forwarding Güvenliği

SSH Agent Forwarding, anahtarların ara sunuculara taşınmasını sağlar ancak dikkatli kullanılmalıdır:

  • Agent forwarding güvenlik riskleri taşıyabilir
  • Yalnızca güvenilir sunucularda kullanılmalıdır
  • ssh -A user@sunucu ile agent forwarding aktifleştirilir
  • Alternatif olarak ssh -o ForwardAgent=no ile devre dışı bırakılabilir

VLAN izolasyonu uygulayan ağlarda, SSH agent forwarding kullanımı ek güvenlik katmanları gerektirir.

SSH İzleme ve Denetim

SSH Bağlantı Logları

Tüm SSH aktivitelerinin kayıt altına alınması, güvenlik olaylarının tespiti için kritik öneme sahiptir:

# SSH bağlantılarını izleme
tail -f /var/log/auth.log | grep sshd

# Başarısız giriş denemeleri
grep "Failed password" /var/log/auth.log

# Başarılı bağlantılar
grep "Accepted" /var/log/auth.log

SSH Audit Scripti

#!/bin/bash
# SSH Denetim Scripti
LOG_FILE="/var/log/auth.log"
echo "=== SSH Güvenlik Denetimi ==="
echo "Son 10 başarısız giriş denemesi:"
grep "Failed password" $LOG_FILE | tail -10
echo ""
echo "Son 10 başarılı giriş:"
grep "Accepted" $LOG_FILE | tail -10
echo ""
echo "Aktif SSH oturumları:"
who

SSH Anomali Tespiti

Machine learning tabanlı anomali tespit sistemleri, normal dışı SSH aktivitelerini belirleyebilir. Performans izleme sistemleri ile entegre edildiğinde, güvenlik olayları gerçek zamanlı olarak tespit edilebilir.

Gelişmiş SSH Güvenlik Yapılandırması

Kapsamlı sshd_config Örneği

Port 2222
Protocol 2
ListenAddress 0.0.0.0

# Kimlik Doğrulama
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward