Hastanenin acil servis ve yoğun bakım girişini düşünün. Gece nöbetinde içeriye yetkisiz şahısların, sarhoşların veya hırsızların girmesini engellemek isteyen güvenlik görevlisi, başhekimlikten habersiz olarak ana giriş kapısının elektronik şifreli kilit mekanizmasını söker. Yerine son model, çift kademeli manyetik bir kilit takar ve yeni bir şifre tanımlar. İşlemi bitirdiğinde kapıyı arkasından sertçe çeker ve kapı kilitlenir. Ancak o an dehşet verici bir gerçeği fark eder: Yeni kartları ve şifreyi personele dağıtmamıştır, kendi şifre kartı da içerideki masanın üzerinde kalmıştır! Tam o sırada dışarıya sirenlerini çalarak bir ambulans yanaşır; sedyede bilinci kapalı, dakikalar içinde entübe edilmesi gereken bir arrest vakası vardır. Güvenlik görevlisi ise kapının camına çaresizce yumruk atmakta, kendi korumaya çalıştığı kalenin kapısında hastayla birlikte kilitli kalmaktadır.
Linux sistem yönetiminde her genç mühendisin kariyerinde en az bir kez yaşadığı o soğuk terleme anı tam olarak bu sahnedir: /etc/ssh/sshd_config dosyasını açıp varsayılan port 22'yi örneğin 2222 yapmak; ardından systemctl restart sshd deyip mevcut terminal sekmesini kapatmak ve UFW / iptables / firewalld güvenlik duvarında o yeni porta izin vermeyi unuttuğunu fark etmek.
"Security Through Obscurity" (Belirsizlikle Güvenlik) ve Yanılgı
Linux sunucular internete açıldığı andan itibaren Çin, Rusya, ABD veya Hollanda kaynaklı otomatik botnet'lerin aralıksız hedefi olur. Sunucunun auth.log veya secure kayıtlarına baktığınızda saniyede onlarca başarısız giriş denemesi görürsünüz:
Failed password for root from 185.220.101.5 port 41202 ssh2
Failed password for invalid user admin from 45.154.255.88 port 58914 ssh2Bu log kirliliğinden ve brute-force saldırılarından rahatsız olan sistem yöneticisi, güvenlik rehberlerinde sıkça rastlanan ilk adımı uygular: Varsayılan SSH portunu (22) değiştirmek.
Bu işlem brute-force botlarını önemli ölçüde uzaklaştırır; çünkü botların çoğu sadece standart 22. portu tarar. Ancak bu adım tek başına bir güvenlik önlemi değil; yalnızca belirsizliğe dayalı yüzeysel bir filtredir (Security through obscurity). Gerçek güvenlik; güçlü SSH anahtarları (Ed25519), parola ile girişin kapatılması (PasswordAuthentication no) ve Fail2ban/CrowdSec kullanımıyla sağlanır.
Yine de portu değiştirmek yaygın bir pratiktir. Felaket ise bu değişikliğin icra ediliş biçiminde başlar.
Kendi Kapısını Üzerine Kilitleyen Komut Dizisi
Deneyimsiz bir sistem yöneticisinin terminaldeki adımları genellikle şu ölümcül sırayı takip eder:
# 1. SSH yapılandırması açılır
sudo nano /etc/ssh/sshd_config
# 2. Satır değiştirilir:
Port 2222
# 3. Servis yeniden başlatılır
sudo systemctl restart sshd
# 4. Geliştirici "Temiz bir başlangıç olsun" diyerek terminal sekmesini KAPATIR!
exitGeliştirici bilgisayarındaki terminali açar ve yeni portla bağlanmayı dener:
ssh -p 2222 root@sunucu_ip_adresiİmleç yanıp söner... 5 saniye, 10 saniye, 30 saniye geçer ve o acımasız hata ekrana düşer:
ssh: connect to host sunucu_ip_adresi port 2222: Connection timed out
Geliştirici şüpheyle standart portu dener:
ssh root@sunucu_ip_adresi
# ssh: connect to host sunucu_ip_adresi port 22: Connection refusedPort 22 kapalıdır; çünkü SSH servisi artık orada dinlememektedir (Connection refused). Port 2222 ise zaman aşımına düşmektedir (Connection timed out); çünkü sunucuda çalışan UFW (Uncomplicated Firewall) veya firewalld, yeni portu tanımamakta ve gelen tüm TCP paketlerini sessizce çöpe atmaktadır (DROP).
Mühendis kendi kalesinin surları dışında kalmıştır.
┌──────────────────────┐
│ Sistem Yöneticisi │
└──────────┬───────────┘
│
ssh -p 2222 │
▼
[GÜVENLİK DUVARI (UFW)]
- Kural 1: Port 80 (HTTP) -> ALLOW
- Kural 2: Port 443 (HTTPS) -> ALLOW
- Kural 3: Port 22 (Eski SSH) -> ALLOW
- Port 2222 için KURAL YOK! -> DROP (ÇÖP!)
│
(Paket Düştü) ❌
│
[SSH Servisi (Port 2222)]
- İçeride sessizce bekliyor...
- Ama kapıdaki nöbetçi kimseyi sokmuyor!
Masadaki Hastaya Ulaşma Çabaları: Out-of-Band Kurtarma
Bu kilitlenme yaşandığında internet üzerinden standart yollarla sunucuya ulaşmak imkânsızdır. Eğer fiziksel bir veri merkezindeyseniz monitör ve klavye alıp sunucu kabinine gitmeniz gerekir. Bulut ortamındaysanız (AWS, DigitalOcean, Hetzner, OVH) devreye Bant Dışı Yönetim (Out-of-Band Management) girmek zorundadır:
1. Bulut Web Konsolu / VNC / Serial Console
- DigitalOcean Droplet Console, AWS EC2 Serial Console veya Hetzner VNC arayüzü açılır.
- Bu konsollar ağ kartını (NIC) baypas ederek doğrudan sanal makinenin donanım ekran kartına ve klavyesine bağlanır.
- Buradan kullanıcı adı ve şifreyle giriş yapılarak güvenlik duvarı kuralı eklenir:
sudo ufw allow 2222/tcp sudo ufw reload
2. IPMI / iDRAC / iLO (Fiziksel Sunucular İçin)
Fiziksel sunucularda anakart üzerindeki bağımsız yönetim yongasına (Dell iDRAC, HP iLO) izole bir yönetim ağı üzerinden bağlanılır ve sanal KVM konsolu başlatılır.
Ya Bu Arayüzler Yoksa?
Eğer ucuz bir sanal sunucu (VPS) kullanıyorsanız ve sağlayıcınız bir kurtarma konsolu sunmuyorsa; tek çare sunucuyu Rescue Mode (Kurtarma Modu) ile boot edip diski /mnt altına bağlamak, chroot atarak /etc/ssh/sshd_config dosyasını eski haline getirmek ve sunucuyu yeniden başlatmaktır. Bu da en az 30-45 dakikalık planlanmamış bir servis kesintisi demektir.
Altın Kural: İkinci Oturumu Test Etmeden Asla Çıkma!
Sistem yönetiminin ilk ve en kutsal kuralı şudur: Mevcut aktif SSH oturumunu, yeni bir terminalden başarılı bir bağlantı kurup doğrulamadan ASLA kapatma!
Linux'ta bir servisi yeniden başlattığınızda (systemctl restart sshd), o an açık olan mevcut SSH oturumunuz kesilmez! Oturum varlığını sürdürür. Bu sayede hata yapsanız bile açık olan oturumunuzdan düzeltme şansınız vardır.
Kusursuz Port Değiştirme Protokolü
Bir sunucuda SSH portu değiştirilirken uygulanması gereken profesyonel protokol şu sıralamayı izlemelidir:
# ADIM 1: Önce Güvenlik Duvarında Yeni Porta İzin Verin!
sudo ufw allow 2222/tcp
# Eğer firewalld kullanıyorsanız:
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
# ADIM 2: SELinux Varsa Yeni Portu Kaydedin! (CentOS/AlmaLinux/RHEL için hayati)
sudo semanage port -a -t ssh_port_t -p tcp 2222
# ADIM 3: Yapılandırma Dosyasını Düzenleyin
sudo nano /etc/ssh/sshd_config
# Port 2222 yazın ve kaydedin.
# ADIM 4: Sözdizimi Testi Yapın (Hatalı parametre servisi patlatmasın)
sudo sshd -t
# ADIM 5: Servisi Yeniden Başlatın
sudo systemctl restart sshd
# ADIM 6: MEVCUT TERMİNALİ KAPATMAYIN!
# Yan tarafta YENİ BİR TERMİNAL sekmesi açın ve test edin:
ssh -p 2222 kullanici@sunucu_ip_adresi
# Başarıyla giriş yapıldıysa:
# Tebrikler! Artık eski portu güvenlik duvarından silebilirsiniz:
sudo ufw delete allow 22/tcpSELinux Tuzağı: RedHat Dünyasının Görünmez Duvarı
Debian/Ubuntu kullanıcıları sadece UFW ile uğraşırken, RedHat/CentOS/Rocky Linux kullanıcılarının karşısına çok daha katı bir muhafız çıkar: SELinux (Security-Enhanced Linux).
Güvenlik duvarında port 2222'yi açsanız bile, SELinux politikalarında SSH servisinin yalnızca 22 numaralı portu dinlemesine izin verilmiştir. Siz sshd_config içine Port 2222 yazıp servisi yeniden başlattığınızda, SELinux çekirdek düzeyinde soket açılmasını engeller:
systemd[1]: Failed to start OpenSSH server daemon: Permission denied.
Bu durumu aşmak için SELinux port etiketini güncellemek zorunludur:
semanage port -a -t ssh_port_t -p tcp 2222Aksi takdirde sunucu güvenlik duvarına bile ulaşamadan kendi içinde felç olur.
Sonuç
Güvenlik, ardı ardına düşünülmüş senkronize adımlar bütünüdür. Bir kapının kilidini değiştirirken anahtarın çalıştığını test etmeden kapıyı çarpmak cesaret değil, profesyonel körlüktür.
Altyapı mühendisliğinde özgüven değil, kontrol listeleri (checklists) hayat kurtarır. SSH portunu değiştirirken her zaman nöbetçi kapıyı açık tutun, yeni tünelin çalıştığını gözlerinizle görün ve o terminal sekmesini ancak her şeyin yeşil yandığından emin olduğunuzda kapatın.