SSH Anahtar Yönetimi ve Sunucu Erişim Güvenliği Rehberi
SSH Anahtar Yönetimi ve Sunucu Erişim Güvenliği Rehberi
Son Güncelleme: Mart 2026
SSH (Secure Shell) tabanlı erişim, sunucu yönetiminde en yaygın yöntemlerden biridir. Bu rehber, anahtar yönetimi ve erişim güvenliği uygulamalarını anlatarak VPS/VDS ve kiralık sunucu ortamlarında güvenli bir altyapı oluşturmanıza yardımcı olacaktır.
Makale boyunca SSH anahtarları, bastion host (atlama sunucusu), iki faktörlü doğrulama ve otomasyon süreçleri ele alınacak; pratik örnekler ve öneriler sunulacaktır.
İçindekiler
- SSH Anahtar Yönetimi Nedir?
- Anahtar Oluşturma ve Formatlar
- Yetkilendirme ve İzinler
- Bastion Host ve Jumpbox Tasarımı
- İki Faktörlü Doğrulama (2FA)
- Otomasyon ve Yönetim Süreçleri
- Pratik Kullanım Senaryoları ve Örnekler
- Sıkça Sorulan Sorular
- Sonuç
SSH Anahtar Yönetimi Nedir?
SSH anahtar yönetimi, sunuculara parola (şifre) yerine asimetric (asimetrik) kriptografi kullanan public/private key çiftleri ile erişimi sağlamaktır. Bu yöntem, parola tabanlı oturum açmaya göre daha güvenlidir çünkü özel anahtar (private key) sistemde kalmaz ve tahmin edilmesi zordur.
Temel kavramlar:
- Public Key (Açık Anahtar): Sunucuya eklenen ve yetkilendirme için kullanılan anahtar.
- Private Key (Özel Anahtar): Kullanıcının bilgisayarında saklanan ve asla paylaşılmaması gereken anahtar.
- Authorized_keys: Sunucuda kullanıcı dizinindeki yetkili anahtarların bulunduğu dosya.
Anahtar Oluşturma ve Formatlar
Anahtar Oluşturma
Linux / macOS ortamında ssh-keygen komutu ile RSA, ECDSA, veya Ed25519 türünde anahtar üretilebilir. Örnek komut satırı açıklaması (komutları terminalde çalıştırınız):
ssh-keygen -t ed25519 -C "kullanici@host"
Not: Ed25519 modern, hızlı ve güvenli bir tercihtir; RSA kullanılıyorsa en az 3072-bit önerilir.
Anahtar Formatları
Yaygın formatlar:
- PEM: OpenSSH ve birçok yazılım tarafından kullanılan metin tabanlı format.
- OpenSSH: Yeni OpenSSH sürümlerinin kullandığı özel format.
- PFX/P12 (PKCS#12): Genelde sertifika ve anahtar taşımada kullanılır, SSH için nadiren tercih edilir.
Yetkilendirme ve İzinler
authorized_keys Yönetimi
Sunucuda kullanıcının ~/.ssh/authorized_keys dosyası, hangi public anahtarların o hesaba erişebileceğini tanımlar. Bu dosyaya eklerken her satırda bir anahtar olacak şekilde düzenleyin.
İzinler (Permissions):
- ~/.ssh: 700 (drwx------)
- ~/.ssh/authorized_keys: 600 (-rw-------)
- Home dizini: root veya kullanıcı dışındaki yazılara kapalı olmalı, 755/750 tercih edilir.
Yanlış izinler SSH tarafından reddedilebilir; bu nedenle izinleri düzenli kontrol edin.
Bastion Host ve Jumpbox Tasarımı
Bastion host (veya jumpbox), özel ağda bulunan sunuculara güvenli şekilde erişmek için kullanılan, internet erişimi olan tek giriş noktasıdır. Bu mimari, doğrudan tüm sunuculara internetten bağlantı açmak yerine tek bir kontrol noktasından erişim sağlar.
Bastion Tasarım İlkeleri
- Minimal servis: Bastion sadece SSH ve gerekli yönetim araçlarını çalıştırmalı.
- Güncel yamalar: İşletim sistemi (ör. Linux) ve SSH yazılımı güncel tutulmalı.
- Çok faktörlü doğrulama: Bastion üzerinde 2FA etkinleştirilmeli.
- Loglama ve izleme: SSH oturumları merkezi bir log toplayıcıya (örn. ELK, Splunk) gönderilmeli.
| Öğe | Bastion | Doğrudan İnternet Erişimi |
|---|---|---|
| Güvenlik | Yüksek (tek giriş noktası kontrollü) | Düşük (çok sayıda hedef açık) |
| Yönetim | Kolay (tek yerde denetim) | Zor (çoklu host yönetimi) |
| Logging | Merkezi | Dağınık |
İki Faktörlü Doğrulama (2FA)
2FA (iki faktörlü doğrulama), sadece anahtar veya parola yetmez; ek bir doğrulama katmanı sağlar. SSH için yaygın yöntemler:
- OTP (One-Time Password): Google Authenticator veya FreeOTP ile TOTP tabanlı doğrulama.
- U2F/WebAuthn: Donanım tabanlı token (ör. YubiKey) kullanımı.
- SSH sertifikaları: Merkezi CA (Certificate Authority) kullanarak kısa ömürlü sertifikalar verilmesi.
Örnek: OpenSSH + PAM ile TOTP entegrasyonu; PAM modülleri aracılığıyla oturum açma sırasında OTP doğrulaması istenebilir.
Otomasyon ve Yönetim Süreçleri
Anahtar Rotasyonu ve Yaşlandırma
Anahtarların belirli aralıklarla yenilenmesi (ör. 90-180 gün) bir güvenlik pratiğidir. Otomasyon araçlarıyla anahtar rotasyonu şu adımları içerir:
- Yeni anahtar oluşturma: Kullanıcı cihazında yeni anahtar üretilir.
- Yeni public key dağıtımı: Centralized configuration management (örn. Ansible, Salt) ile authorized_keys güncellenir.
- Eski anahtarın kaldırılması: Eski anahtar yetkilerinden çıkarılır.
- Denetim: Değişiklikler loglanır ve doğrulanır.
Yönetim Araçları
- Ansible/Puppet/Chef: Anahtar dağıtımı, izinlerin düzeltilmesi ve periyodik kontroller için kullanılır.
- GitOps yaklaşımları: authorized_keys içeriği versiyonlanarak değişiklik geçmişi tutulur.
- SSH Certificate Authority (CA): Anahtar yerine kısa süreli sertifika verme, manuel anahtar yönetimini azaltır.
Pratik Kullanım Senaryoları ve Örnekler
1) Geliştirici Erişimi (VPS üzerinde)
Her geliştirici için ayrı kullanıcı hesabı ve ayrı private/public key çifti oluşturun. Anahtarlar ~/.ssh/authorized_keys dosyasına eklendikten sonra parolayı tamamen devre dışı bırakmayı düşünün (PasswordAuthentication no).
Corelux Türkiye VPS Sunucu hizmetlerinde bu modeli kolayca uygulayabilirsiniz.
2) Üretim Erişimi (Kiralık Sunucu ve Bastion)
Üretim ortamında doğrudan internetten erişim açmak yerine, tek bir bastion üzerinden erişim verin. Bastion’a 2FA zorunlu, bastion ile içerideki sunucular arasında ise yalnızca anahtar temelli erişim olsun.
Kurumsal ihtiyaçlarda Kiralık Sunucu seçenekleri ile yüksek izolasyon sağlayabilirsiniz.
3) Otomatik Dağıtım Süreçleri
CI/CD süreçlerinde deploy anahtarları (deploy keys) kullanın; bu anahtarları repo bazlı ve sadece gerekli izinlerle sınırlayın. Deploy anahtarlarını sık sık rotasyon ve izleme ile yönetin.
Sıkça Sorulan Sorular
SSH anahtarı neden parola kullanımından daha güvenlidir?
Parolalar kaba kuvvet (brute-force) ve tahmine açıktır; özel anahtar dosyası güçlü kriptografi ile korunur ve sunucu üzerinde tutulmaz. Anahtarlar ayrıca parola paylaşımı riskini ortadan kaldırır.
Hangi anahtar türünü seçmeliyim: RSA, ECDSA, Ed25519?
Güncel öneri Ed25519'dir; hem performans hem güvenlik açısından iyidir. RSA kullanacaksanız en az 3072-bit tercih edin.
authorized_keys dosyasına eklenen bir anahtarı nasıl iptal ederim?
Sütunlar halinde saklanan public anahtar satırını silmeniz yeterlidir. Otomasyon kullanıyorsanız eski anahtarı kaldıran playbook/manifest çalıştırın ve loglama yapın.
SSH anahtar çalınırsa ne yapılmalı?
Hemen o anahtarı authorized_keys dosyasından kaldırın, ilgili hesapta oturumları sonlandırın ve varsa anahtarın kullanımını izleyerek forensik analiz yapın. Anahtar rotasyonu ve erişim denetimleri ile tehdidi sınırlayın.
Bastion host kullanmak zorunlu mu?
Bastion zorunlu değildir ancak güvenlik ve yönetilebilirlik için güçlü bir öneridir. Özellikle çok sayıda iç sunucuya sahip ortamlarda saldırı yüzeyini azaltır ve denetimi kolaylaştırır.
Sonuç
SSH anahtar yönetimi, doğru uygulandığında sunucu erişim güvenliğini büyük oranda artırır. Özetle uygulanması gerekenler:
- Anahtar tipi: Ed25519 veya güçlü RSA kullanın.
- İzinler: ~/.ssh ve authorized_keys izinlerini sıkı tutun.
- Bastion: Üretim erişimi için bastion/jumpbox mimarisi kurun.
- 2FA ve CA: İki faktörlü doğrulama ve SSH sertifika otoritesi ile ek güvenlik sağlayın.
- Otomasyon: Ansible/Puppet ile anahtar rotasyonu ve dağıtımı yönetin.
Corelux altyapı ve sunucu hizmetleri hakkında daha fazla bilgi almak veya güvenli bir SSH mimarisiyle sunucularınızı kurmak için Türkiye VPS Sunucu veya Kiralık Sunucu sayfalarımızı ziyaret edebilirsiniz.
Yazar
Boran BAR