SSH Güvenli Port Değiştirme (adim-adim)
Bu rehber, SSH portunu 22'den 2222'ye taşırken "içeride kilitli kalmamanız" için en güvenli yöntemi anlatır.
Hazırlık: Mevcut Durumu Gör
Önce şu an hangi portun dinlediğini ve UFW durumunu kontrol edin:
sudo ufw status verbose
# Çıktı "Status: active" ise kurallar işliyor demektir.
# "Inactive" ise firewall kapalıdır, yine de aşağıdakileri yapın.
sudo ss -lntp | grep sshd
# Çıktıda ":22" görüyorsanız şu an standart porttasınız. ok.
Adım 1: Firewall Sigortası (UFW)
SSH ayarını değiştirmeden önce, Firewall'da hem mevcut kapıyı hem yeni kapıyı açmalıyız. Bu "sigorta" işlemidir.
-
Mevcut portu garantiye al (Sigorta):
-
Yeni hedef portu aç:
-
Temel kurallar ve aktifleştirme:
-
Kontrol:
[!WARNING] > AWS, Oracle ve Cloud Kullanıcıları: Sadece UFW yetmez! Kullandığınız panelden (AWS Security Groups, Oracle Security List, Hetzner Firewall vb.) 2222 portuna izin vermelisiniz. Yoksa "bahçe kapısı" kapalı olduğu için eve giremezsiniz.
Adım 2: Konfigürasyon Değişikliği
Şimdi SSH servisine "Artık 2222'den dinle" diyeceğiz.
Dosyayı açın:
[!TIP] > Port Seçimi: 2222 çok bilinen bir alternatiftir. Daha az taranan bir port seçmek isteyebilirsiniz (örn: 41922, 52022). Ancak 1024 üstü olmalı.
[!WARNING] > RHEL/CentOS/Rocky Linux Kullanıcıları: SELinux, varsayılan olarak SSH'ın port değiştirmesini engeller. Şu komutu çalıştırmalısınız:
Şunları düzenleyin (satırın başında # varsa kaldırın):
Kaydet ve çık (Ctrl+O, Enter, Ctrl+X).
Adım 3: Ubuntu 22.04+ Socket Sorunu (En Garanti Yöntem)
Ubuntu 22.04 ve sonrasında SSH, "Socket Activation" ile çalışır. Önce durumunuzu kontrol edin:
# Socket modunda mısınız kontrol edin
if systemctl is-enabled ssh.socket 2>/dev/null | grep -q "enabled"; then
echo "⚠️ Socket Activation aktif - Aşağıdaki adımları uygulayın"
else
echo "✅ Klasik mod - Bu adımı atlayıp Adım 4'e geçebilirsiniz"
fi
Eğer Socket Aktifse:
Socket ayarlarını düzenlemek için şu komutu girin:
Açılan boş sayfaya şunları yapıştırın ve kaydedin (Ctrl+O, Enter, Ctrl+X):
(Not: İlk satırdaki boş ListenStream= varsayılan 22 portunu siler, ikincisi yenisini ekler.)
Değişikliği uygulayıp servisi yeniden başlatın:
Adım 4: Test ve Restart
Hatayı restart atmadan önce yakalamalıyız.
-
Config syntax testi:
(Çıktı yoksa her şey yolunda demektir. Hata varsa düzeltin!)
-
Servisi yeniden başlat:
(Bağlantınız hala kopmadı, korkmayın.)
-
Dinlenen Portu Doğrula:
Adım 5: İçeriden Bağlantı Testi (Localhost)
Yeni terminal açmadan önce, sunucunun kendi kendine 2222'den bağlanabildiğini doğrulayın:
Şifre veya key soruyorsa (veya "Permission denied" diyorsa) port çalışıyor demektir. -v ile detayları görebilirsiniz.
Adım 6: Dışarıdan Bağlantı Testi
- Mevcut terminali KAPATMAYIN.
- AWS/Cloud Panel Kontrolü: Security Group ayarlarında tcp/2222 portunu açtığınızdan emin olun.
- Bilgisayarınızdan yeni bir terminal açın.
- Bağlanmayı deneyin:
Adım 7: Temizlik (Eski Kapıyı Kapat)
Başarıyla girdiyseniz artık 22'ye ihtiyacınız yok.
Artık sadece 2222 açık! 🔒
Adım 8: İleri Düzey Hardening (Lynis Önerileri)
Bu ayarlar sadece "puan artırmak" için değildir; sunucunuzun yeteneklerini kısıtlayarak saldırı yüzeyini daraltır.
Neden Gerekli?
- TcpForwarding (Tünelleme): Varsayılan olarak SSH, sunucunuzu bir "Proxy" gibi kullanmaya izin verir. Bir saldırgan şifrenizi ele geçirirse, sizin sunucunuz üzerinden internete çıkıp başka yerlere saldırabilir (IP'nizi kirletir). Bunu kapatıyoruz.
- X11Forwarding: Sunucuda grafik arayüz (pencere, mouse vs.) kullanmıyorsanız bu özellik gereksiz bir güvenlik riskidir. Kapatıyoruz.
- ClientAlive: Kullanıcı bilgisayar başından kalktıysa, SSH oturumu sonsuza kadar açık kalmasın, otomatik kapansın istiyoruz.
Uygulama:
SSH'da önemli bir kural vardır: "İlk okunan satır geçerlidir." Bu yüzden dosyanın en altına eklemek yerine, mevcut satırları bulup değiştirmek en garantili yöntemdir.
- Dosyayı açın:
sudo nano /etc/ssh/sshd_config Ctrl+Wile aşağıdaki ayarları aratın.- Başlarında
#varsa silin (yorum satırından çıkartın). - Değerlerini şu şekilde güncelleyin:
# Proxy/VPN olarak kullanılmasını engelle
AllowTcpForwarding no
AllowAgentForwarding no
X11Forwarding no
# Boş oturumları at (5 dakika sonra)
ClientAliveInterval 300
ClientAliveCountMax 2
# Giriş denemelerini kısıtla
MaxAuthTries 3
MaxSessions 2
(Eğer dosyada bu satırları bulamazsanız, en alta ekleyebilirsiniz.)
# ==============================================
# LYNIS HARDENING (Level 2)
# ==============================================
# Tünelleme ve Yönlendirmeyi Kapat
# (Saldırgan sunucuyu proxy gibi kullanamasın)
AllowTcpForwarding no
AllowAgentForwarding no
X11Forwarding no
# Boş Duran Bağlantıları Kes
# (2 deneme x 300 saniye = 10 dakika sonra cevap vermeyen client'ı at)
ClientAliveInterval 300
ClientAliveCountMax 2
# Giriş Deneme Haklarını Kısıtla
# (Brute-force saldırıları için ek zorluk)
MaxAuthTries 3
MaxSessions 2
# Log Seviyesini Artır
# (Saldırı analizi için daha fazla detay)
LogLevel VERBOSE
# TCP KeepAlive Kapat
# (Hayalet bağlantıları önler, ClientAlive ile birlikte kullanılır)
TCPKeepAlive no
Ayarları uygulayın:
sudo sshd -t && sudo systemctl reload ssh
---
## Adım 9: Fail2Ban Hatırlatması 👮♂️
Port değiştirdiğiniz için Fail2Ban'ın da haberi olmalı. Yoksa saldırganları eski kapıda arar.
1. Dosyayı açın: `sudo nano /etc/fail2ban/jail.local`
2. `[sshd]` bölümünü bulun ve portu güncelleyin:
```ini
[sshd]
enabled = true
port = 2222
- Fail2Ban'ı yeniden başlatın:
sudo systemctl restart fail2ban
Adım 10: Acil Durum: Geri Dönüş (Rollback) 🚨
Eğer kendinizi kilitlediyseniz ve konsol erişiminiz (VNC/KVM) varsa:
- Cloud panelinden VNC/Serial Console açın.
- Şu komutları sırasıyla çalıştırın:
# 1. Eski portu aç
sudo ufw allow 22/tcp
# 2. Socket ayarını sıfırla (İçeriği silip kaydet)
sudo systemctl edit ssh.socket --force
# (Açılan editörde her şeyi silin, boş kaydedin)
# 3. Config'i düzelt
sudo sed -i 's/^Port 2222/Port 22/' /etc/ssh/sshd_config
# 4. Servisleri resetle
sudo systemctl restart ssh.socket ssh
📋 Özet Kontrol Listesi
| Adım | İşlem | Durum |
|---|---|---|
| 1 | UFW'de 22 ve 2222 açık | ⬜ |
| 2 | sshd_config düzenlendi |
⬜ |
| 3 | Socket ayarı (Ubuntu 22.04+) | ⬜ |
| 4 | sshd -t testi başarılı |
⬜ |
| 5 | Localhost testi başarılı | ⬜ |
| 6 | Dışarıdan bağlantı başarılı | ⬜ |
| 7 | Eski port (22) kapatıldı | ⬜ |
| 8 | Hardening uygulandı | ⬜ |
| 9 | Fail2Ban güncellendi | ⬜ |
Tebrikler! SSH portunuz artık güvenli bir şekilde değiştirildi. 🎉