Bastion Host (Jump Box) Mimarisi 🏰
Bastion Host (Kale Sunucusu), ağınızın tek giriş kapısıdır. Diğer tüm sunucular internete kapalıdır (Private Network), sadece Bastion sunucusundan gelen bağlantıları kabul ederler.
Bu yapı, saldırı yüzeyini tek bir noktaya indirger ve bu noktayı çok sıkı korumanıza olanak tanır.
1. Mimari
graph LR
User[💻 Sen (Laptop)] -->|SSH (22)| Bastion[🏰 Bastion Host\n(Public IP)]
Bastion -->|SSH (Internal)| App1[App Server 1\n(Private IP)]
Bastion -->|SSH (Internal)| DB1[DB Server 1\n(Private IP)]
style Bastion fill:#f96,stroke:#333
style User fill:#fff,stroke:#333
- Bastion: Public IP'ye sahip tek sunucu. Çok sıkı güvenlik önlemleri var (2FA, IP Whitelist).
- Internal Sunucular: Sadece Private IP'leri var. Dış dünyadan SSH erişimi YOK.
2. Bastion Sunucu Kurulumu
Bu sunucu üzerinde hiçbir uygulama çalışmamalıdır. Sadece SSH servisi olmalıdır.
Adım 1: Sıkılaştırma (Hardening)
Standart güvenlik önlemlerini (Key-only auth, root login disable) uygulayın. Ek olarak:
/etc/ssh/sshd_config
# Sadece forwarding ve jump için izin ver
AllowTcpForwarding yes
X11Forwarding no
PermitTunnel no
AllowAgentForwarding yes
Adım 2: 2FA (Google Authenticator)
Bu sunucuya giren herkesin telefonundaki kodu girmesi zorunlu olmalıdır. (Detaylar için Google Auth (2FA) sayfasına bakın)
Adım 3: Firewall (Kritik!)
Sadece yöneticilerin IP adreslerine izin verin.
3. Bağlantı (Client Usage)
Bastion kullanmak zor veya yavaş değildir. ProxyJump özelliği ile sanki direkt bağlanıyormuşsunuz gibi çalışır.
Yöntem 1: Tek Seferlik Komut (-J)
# Format: ssh -J <bastion-user>@<bastion-host> <target-user>@<target-host>
ssh -J admin@bastion.example.com root@10.0.0.5
Terminal size önce Bastion şifresini/anahtarını sorar (veya bilgisayarınızdaki key'i kullanır), sonra hedef sunucuya sizi fırlatır.
Yöntem 2: SSH Config (Otomatik) 🚀
Bilgisayarınızdaki ~/.ssh/config dosyasına şu ayarı yapın.
# 1. Bastion Sunucusu
Host bastion
HostName bastion.example.com
User admin
IdentityFile ~/.ssh/id_rsa
# 2. Arka Plandaki Sunucular (Private IP)
Host app-server
HostName 10.0.0.5
User root
# Sihirli satır: Bastion üzerinden yap
ProxyJump bastion
Artık sadece sunucu ismini yazmanız yeterli:
Arka planda otomatik olarak Bastion üzerinden tünel açılır.
4. Avantajlar
- Tek Noktadan Denetim: Kimin ne zaman bağlandığını sadece Bastion loglarına bakarak görebilirsiniz.
- Yama Yönetimi: Sadece tek bir sunucunun SSH servisini güncellemek ve korumakla yükümlüsünüz.
- İzolasyon: Arka plandaki veritabanı veya uygulama sunucularını
0.0.0.0'a açmanıza gerek kalmaz.
5. Farklı Ağ Senaryoları
Bastion sunucusunun nerede olduğuna göre iki farklı kurulum stratejisi vardır.
Senaryo A: Aynı Ağda (VPC/LAN) - ⭐ Önerilen
En güvenli yöntemdir. Hedef sunucuların Public IP adresi yoktur.
- Bastion: Public IP + Private IP (örn:
10.0.0.2) - App Server: Sadece Private IP (örn:
10.0.0.5)
Saldırgan App Server'a istese de ulaşamaz çünkü internete kapalıdır. Bastion üzerinden 10.0.0.5'e tünel atılır.
Senaryo B: Farklı Ağlarda (Remote Bastion)
Eğer Bastion AWS'de, App Server ise başka bir veri merkezindeyse ve aralarında özel bir ağ (VPN/VPC Peering) yoksa:
- Bastion: Public IP (
88.x.x.x) - App Server: Public IP (
99.x.x.x)
Güvenlik Kuralı (Whitelist): App Server 'herkese' açık IP'ye sahip olsa bile, Firewall (UFW) kuralı ile sadece Bastion'un IP'sini kabul etmelidir.
App Server üzerinde:
# 1. Herkese kapat
sudo ufw deny 22
# 2. SADECE Bastion sunucusuna aç
sudo ufw allow from 88.x.x.x to any port 22
Böylece App Server internete açık olsa bile, Bastion dışında kimse SSH yapamaz.