
SSH port değiştirme ve root girişini kapatma, yeni bir Linux sunucuda en sık yapılan iki sertleştirme adımıdır. Varsayılan 22 numaralı port, internetteki botların sürekli taradığı bir hedeftir ve root kullanıcısı her sistemde bulunduğu için parola denemelerinin bir numaralı adıdır. Bu iki ayar tek başına tam güvenlik sağlamaz, ancak günlüklerdeki gürültüyü azaltır ve saldırı yüzeyini daraltır. Asıl dikkat edilmesi gereken nokta sırayla ilgilidir: Yanlış sırayla yapılan bir port değişikliği sizi kendi sunucunuzun dışında bırakabilir. Bu rehberde Ubuntu 22.04/24.04 ve AlmaLinux 9 için kilitlenme riskini en aza indiren adım adım bir yol izliyoruz.
Başlamadan Önce: Kilitlenmeye Karşı Önlemler
Aşağıdaki kurallar bu yazının tamamı için geçerlidir:
- Mevcut SSH oturumunu kapatmayın. SSH servisini yeniden başlatmak açık oturumları genellikle sonlandırmaz; bir hata olursa bu oturumdan geri alırsınız. Testleri her zaman yeni bir terminal penceresinde yapın.
- Önce güvenlik duvarında yeni portu açın, sonra SSH'ı yeni porta taşıyın. Tersi, bağlantının anında kesilmesine yol açar.
- Konsol erişiminizi bilin. Sunucu panelindeki VNC veya web konsolu, SSH çalışmadığında bile sunucuya girmenizi sağlar.
- Root girişini kapatmadan önce sudo yetkili bir kullanıcıyla giriş yapabildiğinizi doğrulayın.
Adım 1: Sudo Yetkili Bir Kullanıcı Oluşturun
Root girişini kapattığınızda sunucuya başka bir kullanıcıyla girip yetkili işleri sudo ile yapacaksınız. Bu kullanıcıyı şimdi oluşturun. Örneklerde kullanıcı adı olarak deploy kullanıyoruz.
# Ubuntu 22.04 / 24.04
adduser deploy
usermod -aG sudo deploy
# AlmaLinux 9
useradd -m deploy
passwd deploy
usermod -aG wheel deploy
Root hesabında SSH anahtarı kullanıyorsanız anahtarları yeni kullanıcıya doğru sahiplikle kopyalayın:
cp -r /root/.ssh /home/deploy/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys
# Yalnızca AlmaLinux (SELinux bağlamını düzeltir)
restorecon -Rv /home/deploy/.ssh
Ardından yeni bir terminalden ssh [email protected] ile bağlanın ve sudo whoami komutunun root yanıtını verdiğini görün. Anahtar tabanlı girişi henüz kurmadıysanız SSH anahtarı ile giriş rehberimizi bu adımdan önce uygulamanızı öneririz.
Adım 2: Yeni Port Numarasını Seçin
1024 ile 65535 arasında, sunucuda başka bir servisin kullanmadığı bir port seçin. Linux'un giden bağlantılar için kullandığı geçici port aralığı varsayılan olarak 32768–60999 olduğundan bu aralığın altında kalan bir numara tercih etmek olası çakışmaları önler. Örneklerimizde 2222 kullanıyoruz; kendi kurulumunuzda daha az bilinen bir numara seçebilirsiniz. Portun boş olduğunu şöyle kontrol edin:
ss -tlnp | grep ':2222'
Komut hiçbir çıktı vermiyorsa port boştur. Unutmayın: Port değiştirmek bir güvenlik önlemi değil, otomatik tarama gürültüsünü azaltan bir yöntemdir. Asıl korumayı anahtarla giriş, güvenlik duvarı ve Fail2ban gibi araçlar sağlar.
Adım 3: Güvenlik Duvarında Yeni Portu Açın
Bu adım atlandığında yaşanan kilitlenmeler, port değişikliğiyle ilgili sorunların en yaygın nedenidir. Kullandığınız güvenlik duvarına göre:
# Ubuntu (UFW)
sudo ufw allow 2222/tcp
sudo ufw status
# AlmaLinux 9 (firewalld)
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports
Sağlayıcı panelinizde ayrıca bir ağ güvenlik duvarı veya güvenlik grubu tanımlıysa orada da aynı portu açın. UFW ve firewalld ayrıntıları için Ubuntu UFW rehberimize ve AlmaLinux firewalld rehberimize bakabilirsiniz.
AlmaLinux 9: SELinux'a yeni portu tanıtın
AlmaLinux'ta SELinux varsayılan olarak enforcing modda çalışır ve sshd'nin yalnızca ssh_port_t etiketli portlarda dinlemesine izin verir. Bu adımı atlarsanız sshd yeni portta başlayamaz:
sudo dnf install -y policycoreutils-python-utils
sudo semanage port -a -t ssh_port_t -p tcp 2222
sudo semanage port -l | grep ssh_port_t
Son komutun çıktısında tcp 2222, 22 görmelisiniz. Ubuntu'da SELinux varsayılan olarak kullanılmadığı için bu adım gerekmez.
Adım 4: sshd Yapılandırmasını Düzenleyin
Ubuntu 22.04/24.04 ve AlmaLinux 9'da /etc/ssh/sshd_config dosyası, başındaki Include /etc/ssh/sshd_config.d/*.conf satırıyla ek dosyaları okur. OpenSSH'de çoğu ayar için ilk okunan değer geçerli olur; bu nedenle ana dosyayı değiştirmek yerine adı alfabetik olarak en önde gelen bir ek dosya oluşturmak, başka dosyaların ayarınızı ezmesini engeller:
sudo nano /etc/ssh/sshd_config.d/00-sertlestirme.conf
# Geçiş süresince iki port birlikte açık kalsın
Port 22
Port 2222
# Root ile doğrudan girişi kapat
PermitRootLogin no
Geçiş süresince iki Port satırını birlikte tutmak, yeni port çalışmazsa eski porttan girebilmenizi sağlar. Port ayarı birden fazla kez yazılabilen istisnai ayarlardandır; sshd tüm satırlardaki portları dinler. Bu yüzden ana dosyada yorum satırı olmayan bir Port 22 kalmışsa son aşamada onu da kaldırmanız gerekir.
PermitRootLogin için kullanabileceğiniz değerler şunlardır:
| Değer | Anlamı | Ne zaman? |
|---|---|---|
| yes | Root parola veya anahtarla girebilir | Önerilmez |
| prohibit-password | Root yalnızca anahtarla girebilir | Root ile otomasyon gerekiyorsa ara çözüm |
| forced-commands-only | Root yalnızca anahtara bağlı tanımlı komutu çalıştırabilir | Belirli yedekleme senaryoları |
| no | Root ile SSH girişi tamamen kapalı | Genel öneri |
Kaydettikten sonra yapılandırmayı test edin ve gerçekte uygulanacak değerleri görün:
sudo sshd -t
sudo sshd -T | grep -E '^(port|permitrootlogin) '
İsterseniz aynı dosyaya AllowUsers deploy satırını ekleyerek SSH ile giriş yapabilecek kullanıcıları açıkça sınırlayabilirsiniz. Bu ayar tanımlandığında listede olmayan hiçbir kullanıcı, parolası doğru olsa bile SSH ile giremez. Birden fazla kullanıcı varsa adları boşlukla ayırarak yazın; yeni bir yönetici hesabı açtığınızda bu listeyi güncellemeyi unutmayın, aksi halde o hesap SSH ile bağlanamaz.
sshd -t hata vermezse ve ikinci komut port 22, port 2222 ve permitrootlogin no satırlarını gösteriyorsa bir sonraki adıma geçebilirsiniz.
Adım 5: SSH Servisini Doğru Şekilde Yeniden Başlatın
Bu adım dağıtıma ve SSH'ın nasıl başlatıldığına göre değişir.
AlmaLinux 9
sudo systemctl restart sshd
Ubuntu 22.04
sudo systemctl restart ssh
Ubuntu 24.04: ssh.socket ve soket etkinleştirme
Ubuntu 22.10 ile birlikte OpenSSH, varsayılan olarak systemd soket etkinleştirmesiyle çalışmaya başladı. Bu düzende portu ssh.socket birimi dinler; ssh.service ise ilk bağlantı geldiğinde başlatılır. Ubuntu 22.10–23.10 arasında port değişikliği için ssh.socket birimindeki ListenStream değerini elle düzenlemek gerekiyordu. Ubuntu 24.04'te ise bir systemd üreteci (generator), sshd_config içindeki Port ve ListenAddress değerlerini okuyup soket ayarını otomatik oluşturur. Ancak bunun devreye girmesi için systemd'nin yeniden yüklenmesi ve soketin yeniden başlatılması gerekir:
# Soket etkinleştirmesi kullanılıyor mu?
systemctl is-active ssh.socket
# Yanıt "active" ise:
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
# Yanıt "inactive" ise (klasik servis düzeni):
sudo systemctl restart ssh
Sadece systemctl restart ssh yazıp soketi yeniden başlatmamak, Ubuntu 24.04'te yeni portun dinlenmemesinin en yaygın nedenidir. Hangi düzende olursanız olun, sonucu her zaman gerçekten dinlenen portlara bakarak doğrulayın:
sudo ss -tlnp | grep -E ':(22|2222) '
Çıktıda hem 22 hem de 2222 numaralı portları görmelisiniz.
Adım 6: Yeni Bağlantıyı Test Edin
Mevcut oturumu açık tutarak yeni bir terminalde sırasıyla şunları deneyin:
ssh -p 2222 [email protected]ile yeni porttan sudo kullanıcısıyla bağlanın.sudo -iile root yetkisine geçebildiğinizi doğrulayın.ssh -p 2222 [email protected]denemesinin reddedildiğini görün.- Portun dışarıdan erişilebilir olduğunu port kontrol aracı ile de teyit edin.
Bağlantı zaman aşımına uğruyorsa güvenlik duvarını ve sağlayıcı tarafındaki kuralları, Connection refused alıyorsanız sshd'nin yeni portta dinleyip dinlemediğini kontrol edin. Ayrıntılı hata tablosu için SSH ile sunucuya bağlanma yazımıza bakabilirsiniz.
Adım 7: Eski Portu Kapatın
Yeni port üzerinden sorunsuz bağlandığınızdan eminseniz yapılandırma dosyasından Port 22 satırını silin, testi tekrarlayıp servisi Adım 5'teki gibi yeniden başlatın. Ardından güvenlik duvarındaki eski kuralı kaldırın:
# Ubuntu (UFW) - kuralı hangi adla eklediyseniz
sudo ufw delete allow OpenSSH
sudo ufw delete allow 22/tcp
# AlmaLinux 9 (firewalld)
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
Fail2ban kullanıyorsanız sshd hapishanesindeki port değerini de yeni portla güncellemeyi unutmayın; aksi halde engellemeler yanlış porta uygulanır.
Sık Sorulan Sorular
SSH portunu değiştirmek sunucuyu güvenli hale getirir mi?
Tek başına hayır. Port değişikliği otomatik botların denemelerini ve günlüklerdeki kalabalığı ciddi ölçüde azaltır, ancak hedefli bir saldırgan port taramasıyla yeni portu bulabilir. Gerçek koruma anahtarla giriş, parola girişinin kapatılması, güvenlik duvarı ve Fail2ban birlikte kullanıldığında sağlanır.
Ubuntu 24.04'te port değiştirdim ama SSH hâlâ 22'de dinliyor, neden?
Büyük olasılıkla soket etkinleştirmesi kullanılıyor ve yalnızca servis yeniden başlatıldı. sudo systemctl daemon-reload ardından sudo systemctl restart ssh.socket komutlarını çalıştırıp ss -tlnp ile kontrol edin. Ana yapılandırma dosyasında unutulmuş bir Port 22 satırı da aynı sonuca yol açar.
AlmaLinux'ta sshd yeni portta başlamıyor, ne yapmalıyım?
En sık neden SELinux'tur. semanage port -a -t ssh_port_t -p tcp 2222 komutuyla portu tanımlayın ve journalctl -u sshd çıktısındaki hata mesajını kontrol edin.
PermitRootLogin no yerine prohibit-password kullanabilir miyim?
Kullanabilirsiniz; bu ayarla root yalnızca SSH anahtarıyla girebilir. Yine de günlük işlerde ayrı bir kullanıcı ve sudo kullanmak, yapılan işlemlerin kim tarafından yapıldığını izlemeyi kolaylaştırdığı için daha iyi bir uygulamadır.
Kendimi sunucunun dışında bıraktım, ne yapabilirim?
Sunucu panelindeki konsoldan giriş yapın, /etc/ssh/sshd_config.d/ altındaki dosyanızı ve güvenlik duvarı kurallarını düzeltip SSH servisini yeniden başlatın. Konsola erişemiyorsanız destek ekibinden yardım isteyin.
SSH port değiştirme ve root girişini kapatma, doğru sırayla yapıldığında birkaç dakikalık bir iştir ve sunucunuzu gereksiz deneme trafiğinden arındırır. NVMe SSD, DDoS koruması ve Linux dağıtım seçenekleriyle sunulan VDS sunucu kiralama seçeneklerimizi ya da bütçe dostu VPS paketlerimizi inceleyerek bu yapılandırmayı kendi sunucunuzda hemen uygulayabilirsiniz.
Hizmet Sözleşmemiz
Web Koruma
İade Politikamız
