SSH Bastion Host ile Güvenli Sunucu Erişimi
SSH Bastion Host ile Güvenli Sunucu Erişimi
Son Güncelleme: Eylül 2026
SSH Bastion Host, birden fazla Linux sunucusuna doğrudan internetten erişmek yerine, tüm yönetim trafiğini kontrollü bir ara sunucu üzerinden geçirmek için kullanılan güvenli erişim mimarisidir. Özellikle VPS, VDS, kiralık sunucu ve bulut ortamlarında saldırı yüzeyini azaltmak, erişimleri kayıt altına almak ve merkezi güvenlik politikaları uygulamak için etkili bir çözümdür.
Bu rehberde bastion host kavramını, jump server mimarisini, temel kurulum adımlarını, SSH yapılandırma örneklerini, güvenlik sıkılaştırmalarını ve işletme sürecinde dikkat edilmesi gereken noktaları detaylı şekilde ele alacağız.
İçindekiler
- Bastion Host Nedir?
- Ne Zaman Bastion Host Kullanılmalı?
- Bastion Host Mimarisi ve Bileşenleri
- Kurulum Öncesi Planlama
- Linux Bastion Host Kurulumu
- SSH Yapılandırması ve Jump Kullanımı
- Güvenlik Sıkılaştırma Önerileri
- Loglama, Denetim ve İzleme
- Yaygın Hatalar ve Çözüm Yolları
- Sıkça Sorulan Sorular
- Sonuç
Bastion Host Nedir?
Bastion Host, iç ağdaki veya özel ağdaki sunuculara erişim için kullanılan, kontrollü ve sıkı güvenlik politikalarıyla korunan ara erişim sunucusudur. Bu yapı bazen Jump Server, Jump Host veya SSH Gateway olarak da adlandırılır. Temel amaç, tüm sunucuların SSH portlarını internete açmak yerine yalnızca tek bir güvenli giriş noktası oluşturmaktır.
Örneğin, bir altyapıda web sunucusu, veritabanı sunucusu, önbellek sunucusu ve yedekleme sunucusu olabilir. Geleneksel yöntemde her sunucuya ayrı ayrı SSH erişimi verildiğinde, her biri potansiyel bir saldırı hedefi haline gelir. Bastion host mimarisinde ise internetten yalnızca bastion sunucusuna erişilir; diğer sunucular sadece özel ağ üzerinden bastion hosttan bağlantı kabul eder.
Bu yaklaşım özellikle least privilege yani en az yetki prensibiyle uyumludur. Kullanıcı, doğrudan tüm sistemlere açık erişim elde etmek yerine, merkezi bir noktadan yetkilendirilir. Ayrıca bağlantı kayıtları tek yerde tutulduğu için denetim, olay inceleme ve uyumluluk süreçleri daha kolay hale gelir.
Bastion Host ile VPN Aynı Şey midir?
Bastion host ve VPN birbirine alternatif gibi görünse de aynı işlevi birebir yerine getirmez. VPN, kullanıcının cihazını özel ağa dahil eder; bastion host ise belirli protokoller için kontrollü geçiş noktası sağlar. Bazı yapılarda ikisi birlikte kullanılabilir: Önce VPN ile ağa girilir, ardından bastion host üzerinden sunuculara SSH yapılır. Daha küçük ekiplerde ise yalnızca bastion host yeterli olabilir.
Ne Zaman Bastion Host Kullanılmalı?
Bastion host, her ortamda zorunlu değildir; ancak sunucu sayısı arttıkça ve erişim ihtiyacı karmaşıklaştıkça ciddi avantaj sağlar. Tek bir kişisel web sitesi için yönetilen hosting kullanıyorsanız bastion yapısına ihtiyaç duymayabilirsiniz. Ancak birden fazla sanal sunucu, mikroservis, veritabanı veya müşteri ortamı yönetiyorsanız merkezi erişim mimarisi güvenlik açısından önem kazanır.
- Birden fazla sunucu yönetimi: Web, veritabanı, cache ve uygulama sunucularına ayrı ayrı SSH açmak yerine tek giriş noktası kullanılır.
- Özel ağ mimarisi: İç sunucuların public IP adresi olmadan yönetilmesi sağlanır.
- Ekip bazlı erişim: Sistem yöneticisi, geliştirici ve destek ekibi için farklı yetki politikaları uygulanabilir.
- Denetim ihtiyacı: Kim, hangi sunucuya, ne zaman bağlandı sorusuna daha net cevap verilir.
- Uyumluluk gereksinimleri: Finans, e-ticaret ve kurumsal projelerde erişim izlerinin kayıt altına alınması gerekebilir.
Corelux üzerinde Sanal Sunucu, Türkiye VDS Sunucu veya Kiralık Sunucu altyapıları kullanıyorsanız, bastion host modeliyle yönetim erişimlerinizi daha kontrollü hale getirebilirsiniz.
Bastion Host Mimarisi ve Bileşenleri
Sağlıklı bir bastion host mimarisi yalnızca bir Linux sunucusu kurmaktan ibaret değildir. Ağ, kullanıcı yönetimi, SSH politikaları, loglama ve izleme birlikte düşünülmelidir. Aksi halde bastion host, güvenliği artırmak yerine tüm erişimlerin toplandığı kritik ve riskli bir noktaya dönüşebilir.
Temel Bileşenler
- Bastion sunucusu: İnternetten erişilebilen, mümkün olduğunca sade tutulmuş Linux sunucusudur.
- İç sunucular: Veritabanı, uygulama, web veya yedekleme gibi doğrudan internete SSH açmayan sunuculardır.
- Özel ağ: Bastion ile iç sunucular arasında public internet yerine özel IP bloğu üzerinden iletişim sağlar.
- SSH anahtarları: Parola yerine kriptografik kimlik doğrulama için kullanılır.
- Güvenlik duvarı: Kaynak IP, port ve ağ erişimlerini sınırlar.
- Log sistemi: SSH oturumları, başarısız denemeler ve yetki değişiklikleri için merkezi kayıt sağlar.
Basit Mimari Akışı
Kullanıcı önce kendi bilgisayarından bastion hosta bağlanır. Daha sonra bastion host üzerinden hedef iç sunucuya geçer. Modern SSH istemcilerinde bu işlem ProxyJump parametresi ile tek komut halinde yapılabilir. Kullanıcı açısından bağlantı doğrudan hedef sunucuya gidiyor gibi görünür; fakat trafik bastion host üzerinden yönlendirilir.
| Yaklaşım | Avantaj | Risk | Uygun Kullanım |
|---|---|---|---|
| Her sunucuda public SSH | Kurulumu kolaydır | Saldırı yüzeyi geniştir | Küçük ve geçici test ortamları |
| Bastion host | Merkezi erişim ve denetim sağlar | Bastion kritik hedef haline gelir | Çok sunuculu üretim ortamları |
| VPN + Bastion | Katmanlı güvenlik sunar | Yönetim karmaşıklığı artar | Kurumsal ve yüksek güvenlikli sistemler |
Kurulum Öncesi Planlama
Bastion host kurulumuna başlamadan önce ağ topolojisi, kullanıcı rolleri, erişim kuralları ve yedek erişim senaryoları belirlenmelidir. Plansız kurulan bastion hostlar zamanla paylaşılan kullanıcı hesapları, unutulmuş anahtarlar ve kontrolsüz yetkiler nedeniyle güvenlik açığına dönüşebilir.
Planlama Kontrol Listesi
- Sunucu konumu: Bastion host, erişilecek sunucularla düşük gecikmeli ve güvenilir bir ağda konumlandırılmalıdır.
- İşletim sistemi: Ubuntu, Debian, AlmaLinux veya Rocky Linux gibi güncel ve uzun destekli dağıtımlar tercih edilmelidir.
- Kullanıcı modeli: Her ekip üyesi için ayrı Linux kullanıcısı oluşturulmalı, ortak kullanıcı hesaplarından kaçınılmalıdır.
- Anahtar politikası: Parolalı SSH anahtarları, düzenli anahtar rotasyonu ve ayrılan personel için hızlı iptal süreci tanımlanmalıdır.
- Ağ kısıtları: Bastion SSH portu yalnızca güvenilir IP adreslerinden erişilebilir olmalıdır.
- Kurtarma yöntemi: Yanlış firewall kuralı veya SSH kilitlenmesi durumunda konsol erişimi planlanmalıdır.
Bastion host üzerinde web paneli, veritabanı, uygulama sunucusu veya dosya paylaşımı gibi ek servislerin çalıştırılması önerilmez. Bu sunucu ne kadar sade tutulursa saldırı yüzeyi o kadar düşük olur. Bastion hostun görevi yönetim trafiğini kontrollü geçirmek, kayıt altına almak ve erişimi sınırlandırmaktır.
Linux Bastion Host Kurulumu
Aşağıdaki örnekler Ubuntu tabanlı bir bastion host üzerinden verilmiştir. Komutlar farklı dağıtımlarda küçük paket yöneticisi farkları gösterebilir. Kuruluma başlamadan önce sunucunun güncel olduğundan emin olun.
Sistemi Güncelleme
sudo apt update
sudo apt upgrade -y
sudo apt install openssh-server ufw fail2ban auditd -y
openssh-server SSH servisini sağlar. ufw basit güvenlik duvarı yönetimi için, fail2ban başarısız giriş denemelerini sınırlamak için, auditd ise sistem olaylarını daha ayrıntılı izlemek için kullanılabilir.
Yönetici Kullanıcı Oluşturma
Doğrudan root kullanıcısıyla bağlanmak yerine kişiye özel bir kullanıcı oluşturmak daha güvenlidir. Aşağıdaki örnekte ahmet isimli kullanıcı oluşturulmaktadır.
sudo adduser ahmet
sudo usermod -aG sudo ahmet
sudo mkdir -p /home/ahmet/.ssh
sudo nano /home/ahmet/.ssh/authorized_keys
sudo chown -R ahmet:ahmet /home/ahmet/.ssh
sudo chmod 700 /home/ahmet/.ssh
sudo chmod 600 /home/ahmet/.ssh/authorized_keys
authorized_keys dosyasına kullanıcının public SSH anahtarı eklenmelidir. Private key dosyası hiçbir zaman sunucuya kopyalanmamalı ve ekip içinde paylaşılmamalıdır.
Firewall ile SSH Erişimini Sınırlama
SSH portunu tüm dünyaya açık bırakmak yerine, ofis IP adresi veya VPN çıkış IP adresi gibi güvenilir kaynaklarla sınırlandırmak daha güvenlidir. Aşağıdaki örnekte 203.0.113.10 IP adresinden SSH erişimine izin verilmektedir.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
sudo ufw enable
sudo ufw status verbose
IP adresiniz değişkense sabit IP, VPN veya alternatif bir erişim yöntemi planlamanız gerekir. Aksi halde yanlış firewall kuralı nedeniyle bastion hosta erişiminizi kaybedebilirsiniz.
SSH Yapılandırması ve Jump Kullanımı
Bastion hostun güvenli çalışması için /etc/ssh/sshd_config dosyası dikkatle düzenlenmelidir. Bu dosyada parola ile girişin kapatılması, root erişiminin engellenmesi ve sadece yetkili kullanıcıların SSH yapmasına izin verilmesi temel güvenlik adımlarıdır.
Sunucu Tarafı SSH Ayarları
Aşağıdaki örnek güvenlik odaklı başlangıç yapılandırmasıdır. Ortamınıza göre kullanıcı adlarını ve IP kısıtlarını uyarlamalısınız.
sudo nano /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers ahmet zeynep
X11Forwarding no
AllowTcpForwarding yes
ClientAliveInterval 300
ClientAliveCountMax 2
MaxAuthTries 3
LogLevel VERBOSE
Değişikliklerden sonra SSH yapılandırmasını test etmek ve servisi yeniden yüklemek gerekir. Doğrudan yeniden başlatma yapmadan önce mevcut oturumunuzu kapatmayın; yeni bir terminalden bağlantı testi yapın.
sudo sshd -t
sudo systemctl reload ssh
İstemci Tarafında ProxyJump Kullanımı
Modern OpenSSH istemcilerinde -J parametresiyle bastion host üzerinden hedef sunucuya bağlanabilirsiniz. Örneğin iç ağdaki 10.10.0.20 adresli uygulama sunucusuna bağlanmak için:
ssh -J ahmet@bastion.example.com ubuntu@10.10.0.20
Daha pratik kullanım için yerel bilgisayarınızdaki ~/.ssh/config dosyasına aşağıdaki gibi tanım ekleyebilirsiniz:
Host bastion
HostName bastion.example.com
User ahmet
IdentityFile ~/.ssh/id_ed25519
Host app-server
HostName 10.10.0.20
User ubuntu
ProxyJump bastion
IdentityFile ~/.ssh/id_ed25519
Bu yapılandırmadan sonra hedef sunucuya bağlanmak için yalnızca aşağıdaki komutu çalıştırmanız yeterlidir:
ssh app-server
İç Sunucularda Erişim Kısıtlama
En kritik adımlardan biri, iç sunucuların SSH erişimini yalnızca bastion host özel IP adresinden kabul etmesini sağlamaktır. Örneğin bastion hostun özel IP adresi 10.10.0.5 ise uygulama sunucusunda şu kurallar uygulanabilir:
sudo ufw default deny incoming
sudo ufw allow from 10.10.0.5 to any port 22 proto tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Bu sayede saldırganlar uygulama sunucusunun public IP adresini bilse bile doğrudan SSH bağlantısı kuramaz. Yönetim erişimi bastion host üzerinden geçmek zorunda kalır.
Güvenlik Sıkılaştırma Önerileri
Bastion host kritik bir erişim noktası olduğu için standart Linux güvenlik adımlarının ötesinde dikkatli yönetilmelidir. Aşağıdaki öneriler, üretim ortamlarında güçlü bir başlangıç sağlar.
- Parola girişini kapatın:
PasswordAuthentication noile yalnızca SSH anahtarı kullanımına izin verin. - Root erişimini engelleyin:
PermitRootLogin noayarıyla doğrudan root bağlantısını kapatın. - Kişisel kullanıcı kullanın: Tüm ekip üyeleri için ayrı kullanıcı hesabı tanımlayın.
- Sudo yetkisini sınırlandırın: Her kullanıcıya tam yönetici yetkisi vermek yerine görev bazlı yetkilendirme yapın.
- Kaynak IP kısıtı uygulayın: SSH portunu sadece güvenilir IP adreslerine açın.
- Güncellemeleri aksatmayın: OpenSSH, kernel ve güvenlik paketlerini düzenli güncelleyin.
- MFA kullanın: Kritik ortamlarda SSH için çok faktörlü kimlik doğrulama değerlendirin.
- Oturum kayıtlarını saklayın: Başarılı ve başarısız girişleri merkezi log sistemine gönderin.
- Port değişikliğine güvenmeyin: SSH portunu değiştirmek tarama gürültüsünü azaltabilir; ancak tek başına güvenlik önlemi sayılmamalıdır.
Fail2Ban ile Temel Koruma
fail2ban, başarısız SSH giriş denemelerini izleyerek belirli eşik üzerinde deneme yapan IP adreslerini geçici olarak engelleyebilir. Temel bir SSH jail yapılandırması için:
sudo nano /etc/fail2ban/jail.d/sshd.local
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 4
findtime = 10m
bantime = 1h
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
Fail2Ban, kaynak IP kısıtının yerine geçmez; fakat kaba kuvvet denemelerini azaltan ek bir savunma katmanı sağlar.
Anahtar Rotasyonu
SSH anahtarları süresiz kullanılmamalıdır. Personel ayrılığı, cihaz kaybı, şüpheli erişim veya periyodik güvenlik politikaları kapsamında eski anahtarlar kaldırılmalı, yeni anahtarlar dağıtılmalıdır. authorized_keys dosyalarında kimliği belirsiz anahtar bırakılmamalıdır. Her public key satırının sonuna açıklayıcı bir yorum eklemek yönetimi kolaylaştırır.
Loglama, Denetim ve İzleme
Bastion host mimarisinin en güçlü yönlerinden biri, erişim kayıtlarını merkezi hale getirmesidir. Ancak loglar düzenli incelenmiyor, saklanmıyor veya alarm üretmiyorsa bu avantaj sınırlı kalır. Loglama stratejisi hem güvenlik hem de operasyon açısından düşünülmelidir.
Temel Log Dosyaları
- SSH girişleri: Ubuntu ve Debian sistemlerde genellikle
/var/log/auth.logdosyasında tutulur. - Sistem olayları:
journalctlile systemd servis kayıtları incelenebilir. - Sudo kullanımı: Hangi kullanıcının hangi komutu yetkili çalıştırdığı takip edilebilir.
- Firewall olayları: Engellenen bağlantılar saldırı veya yanlış yapılandırma işareti olabilir.
Örnek log inceleme komutları:
sudo tail -f /var/log/auth.log
sudo journalctl -u ssh --since "1 hour ago"
sudo grep "Failed password" /var/log/auth.log
sudo grep "Accepted publickey" /var/log/auth.log
Merkezi Loglama Neden Önemlidir?
Saldırgan bastion host üzerinde yetki elde ederse yerel logları silebilir veya değiştirebilir. Bu nedenle önemli logların harici bir log sunucusuna, SIEM sistemine veya güvenli yedekleme alanına gönderilmesi önerilir. Corelux altyapısında kritik projeler için Yedekleme Hizmeti ile yapılandırma dosyalarını ve log arşivlerini koruma altına almak operasyonel süreklilik açısından değerlidir.
Oturum Denetimi
Bazı kurumlar yalnızca bağlantı logu değil, komut geçmişi ve oturum kaydı da tutmak ister. Bu noktada auditd, shell history politikaları, merkezi komut kayıt sistemleri veya özel bastion çözümleri kullanılabilir. Ancak komut kaydı yapılırken gizli anahtar, parola, token ve müşteri verisi gibi hassas bilgilerin loglara düşmemesi için dikkatli olunmalıdır.
Yaygın Hatalar ve Çözüm Yolları
Bastion host kurulumu teknik olarak basit görünse de yanlış tasarım güvenlik riskini artırabilir. Aşağıdaki hatalar üretim ortamlarında sık görülür.
- Bastion üzerinde çok fazla servis çalıştırmak: Web paneli, veritabanı veya uygulama barındırmak bastion hostun saldırı yüzeyini artırır. Çözüm olarak bastion yalnızca erişim geçidi rolünde tutulmalıdır.
- Ortak kullanıcı kullanmak: Tüm ekibin
admingibi tek hesapla bağlanması denetimi zorlaştırır. Her kullanıcı için ayrı hesap oluşturulmalıdır. - İç sunucularda SSH açık bırakmak: Bastion kurulduktan sonra hedef sunucuların SSH erişimi public internete kapatılmalıdır.
- Eski anahtarları temizlememek: Ayrılan personel veya kullanılmayan cihazlara ait SSH anahtarları düzenli kaldırılmalıdır.
- Logları sadece yerelde tutmak: Olay incelemesi için logların merkezi ve değiştirilemez şekilde saklanması daha güvenlidir.
- Firewall testini yanlış yapmak: Kurallar uygulanmadan önce alternatif erişim yöntemi hazır olmalıdır.
Örnek Sorun: ProxyJump ile Bağlantı Kurulamıyor
Eğer ssh -J komutu çalışmıyorsa önce bastion hosta doğrudan erişimin çalıştığını doğrulayın. Ardından bastion hosttan hedef sunucuya erişimi test edin.
ssh ahmet@bastion.example.com
ssh ubuntu@10.10.0.20
nc -vz 10.10.0.20 22
Bu testlerde bastiona bağlantı başarılı fakat hedef sunucuya erişim başarısızsa sorun genellikle iç sunucudaki firewall, yanlış özel IP, SSH servis durumu veya kullanıcı yetkisinden kaynaklanır.
Örnek Sorun: Kullanıcı Yetkisi Fazla Geniş
Bastion hostta her kullanıcıya tam sudo yetkisi verilmesi risklidir. Sadece sunuculara geçiş yapacak kullanıcılar için sudo gerekmeyebilir. Gerekirse /etc/sudoers.d/ altında komut bazlı yetki tanımlanabilir. Bu yaklaşım özellikle destek ekipleri ve dış tedarikçiler için önemlidir.
Sıkça Sorulan Sorular
Bastion host için ayrı bir sunucu gerekir mi?
Üretim ortamlarında evet, bastion hostun ayrı ve sade bir sunucu olarak konumlandırılması önerilir. Aynı sunucuda web sitesi, veritabanı veya uygulama çalıştırmak güvenlik riskini artırır. Küçük test ortamlarında geçici çözümler kullanılabilir; ancak kurumsal altyapıda ayrı sunucu tercih edilmelidir.
Bastion host yerine sadece SSH portunu değiştirmek yeterli mi?
Hayır. SSH portunu değiştirmek otomatik tarama gürültüsünü azaltabilir; fakat gerçek bir erişim kontrolü sağlamaz. Bastion host; merkezi yetkilendirme, loglama, IP kısıtlama ve iç sunucuları public erişimden ayırma gibi daha güçlü avantajlar sunar.
İç sunucularda public IP olmalı mı?
İdeal yapıda iç sunucuların yönetim erişimi özel ağ üzerinden sağlanır ve SSH portu public internete kapalıdır. Bazı mimarilerde public IP gerekli olabilir; bu durumda SSH erişimi yine yalnızca bastion host IP adresinden kabul edilmelidir.
Bastion host performansı önemli midir?
SSH trafiği genellikle düşük kaynak tüketir; bu nedenle bastion host için çok yüksek CPU veya RAM gerekmez. Ancak çok sayıda eş zamanlı kullanıcı, yoğun port forwarding veya denetimli oturum kaydı yapılacaksa kaynak planlaması buna göre yapılmalıdır.
Bastion host tek hata noktası olur mu?
Evet, tek bastion host kullanılırsa erişim açısından tek hata noktası oluşabilir. Kritik yapılarda ikinci bir bastion host, yedek erişim yöntemi, konsol erişimi ve düzenli yapılandırma yedeği planlanmalıdır. Yüksek erişilebilirlik ihtiyacı olan ortamlarda bu konu mimari tasarımın parçası olmalıdır.
Windows istemciden bastion host kullanılabilir mi?
Evet. Windows üzerinde OpenSSH istemcisi, Windows Terminal, PowerShell veya destekleyen üçüncü taraf SSH istemcileriyle ProxyJump benzeri bağlantı yapılabilir. Önemli olan istemcinin SSH anahtarını güvenli saklaması ve bağlantı yapılandırmasının doğru yapılmasıdır.
Bastion host üzerinde MFA kullanılmalı mı?
Kritik üretim ortamlarında çok faktörlü kimlik doğrulama güçlü bir ek güvenlik katmanıdır. SSH anahtarı tek başına güçlü olsa da cihaz kaybı veya anahtar sızıntısı gibi senaryolara karşı MFA değerlendirilmelidir.
Sonuç
SSH Bastion Host, çok sunuculu Linux altyapılarında yönetim erişimini merkezileştiren, saldırı yüzeyini azaltan ve denetimi kolaylaştıran etkili bir güvenlik mimarisidir. Doğru planlandığında iç sunucuların SSH portları internete kapatılır, kullanıcı erişimleri kişiselleştirilir, bağlantı kayıtları merkezi hale gelir ve güvenlik politikaları daha tutarlı uygulanır.
Bastion host kurarken en önemli prensip sadeliktir. Bu sunucu yalnızca erişim geçidi olarak kullanılmalı, parola ile giriş kapatılmalı, root bağlantısı engellenmeli, kaynak IP kısıtlaması uygulanmalı ve loglar düzenli izlenmelidir. Ayrıca iç sunucularda SSH erişiminin sadece bastion hosttan kabul edilmesi, mimarinin gerçek güvenlik değerini ortaya çıkarır.
Corelux altyapısında Türkiye VPS Sunucu, Almanya VDS Sunucu, Türkiye Kiralık Sunucu veya Bulut Sunucu hizmetleriyle bastion host mimarinizi oluşturabilir; güvenli, ölçeklenebilir ve yönetilebilir bir sunucu erişim modeli tasarlayabilirsiniz.
Yazar
Boran BAR