format_list_bulletedBu İçerikte Bahsedilen Konular
- arrow_rightSunucu Güvenliğinde Gelişmiş SSH ve Erişim Güvenliği
- arrow_rightSSH Güvenliğinin Önemi ve Güncel Tehditler
- arrow_rightSSH Temel Yapılandırma Güvenliği
- arrow_rightSSH Config Dosyasının Optimize Edilmesi
- arrow_rightSSH Servis Yeniden Başlatma ve Doğrulama
- arrow_rightAnahtar Tabanlı Kimlik Doğrulama
- arrow_rightRSA vs Ed25519 Anahtar Karşılaştırması
- arrow_rightEd25519 Anahtar Üretimi
- arrow_rightAuthorized_keys Yapılandırması
- arrow_rightİki Faktörlü Kimlik Doğrulama (2FA)
- arrow_rightPAM Modülü Kurulumu
- arrow_rightsshd Yapılandırması
- arrow_rightKullanıcı Tarafında 2FA Aktif Etme
- arrow_rightFail2ban ile SSH Koruma
- arrow_rightFail2ban Kurulumu
- arrow_rightSSH Jail Yapılandırması
- arrow_rightFail2ban Komutları
- arrow_rightSSH Port Yönlendirme ve Güvenlik Tünelleme
- arrow_rightLocal Port Yönlendirme
- arrow_rightDynamic Port Yönlendirme (SOCKS Proxy)
- arrow_rightRemote Port Yönlendirme
- arrow_rightErişim Kontrol Listeleri ve Kullanıcı Yönetimi
- arrow_rightAllowUsers ve AllowGroups
- arrow_rightChrootDirectory ile Sınırlı Erişim
- arrow_rightsudo Yetkilendirme Yönetimi
- arrow_rightSSH Agent Forwarding Güvenliği
- arrow_rightSSH İzleme ve Denetim
- arrow_rightSSH Bağlantı Logları
- arrow_rightSSH Audit Scripti
- arrow_rightSSH Anomali Tespiti
- arrow_rightGelişmiş SSH Güvenlik Yapılandırması
- arrow_rightKapsamlı sshd_config Örneği
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@sunucuile agent forwarding aktifleştirilir- Alternatif olarak
ssh -o ForwardAgent=noile 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