SSH bağlantı noktasını değiştirme
Varsayılan SSH bağlantı noktasının (22) değiştirilmesi, otomatik taramalara ve temel brute-force saldırılarına maruz kalmayı azaltır, ancak uygun güvenlik önlemlerinin yerini tutmaz.
Herhangi bir değişiklik yapmadan önce etkin bir SSH oturumunun açık olduğundan emin olun. Yeni bağlantı noktasının çalıştığını doğrulayana kadar bu oturumu kapatmayın. Bir sorun oluşursa sunucuya erişiminizi kaybedebilirsiniz.
Bağlantı noktası numarası seçme
1024 değerinden büyük bir bağlantı noktası numarası seçin. 49152–65535 aralığındaki bağlantı noktalarının diğer bilinen hizmetlerle çakışma olasılığı daha düşüktür. 2222 veya 22222 gibi yaygın olarak kullanılan alternatiflerden kaçının; bunlar otomatik tarayıcılar tarafından sıkça hedef alınır. Bu kılavuzda örnek olarak 22777 kullanılmıştır.
Yapılandırma dosyasını yedekleme
Herhangi bir değişiklik yapmadan önce SSH yapılandırma dosyasının yedeğini oluşturun:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
Ubuntu ve Debian'da SSH bağlantı noktasını değiştirme
Debian 12 ve bazı daha yeni Ubuntu sürümlerinden (22.04+) itibaren SSH, varsayılan olarak systemd socket activation kullanabilir. Bu durumda yalnızca sshd_config içindeki Port yönergesini değiştirmek çoğu zaman yeterli değildir.
Öncelikle socket activation'ın etkin olup olmadığını kontrol edin:
systemctl is-active ssh.socket
Komut active sonucunu döndürürse SSH socket'ini yeni bağlantı noktasını kullanacak şekilde yapılandırın.
SSH socket'i için bir systemd override oluşturun:
systemctl edit ssh.socket
Aşağıdaki içeriği ekleyin:
[Socket] ListenStream= ListenStream=22777
Boş ListenStream= satırı varsayılan bağlantı noktasını (22) temizler. Bu satır olmadan SSH hem 22 numaralı bağlantı noktasını hem de yeni bağlantı noktasını dinlemeye devam edebilir.
Daha fazla güvenilirlik için bağlantı noktasını SSH yapılandırmasında da ayarlayın. Bu, systemd oluşturucusuna yardımcı olur ve OpenSSH güncellemeleri sonrasında ayarın korunmasını sağlar:
mkdir -p /etc/ssh/sshd_config.d echo "Port 22777" | tee /etc/ssh/sshd_config.d/10-port.conf
Daha iyi uyumluluk için adresleri açıkça da belirtebilirsiniz:
[Socket] ListenStream= ListenStream=0.0.0.0:22777 ListenStream=[::]:22777
Yapılandırmayı kaydedin ve değişiklikleri uygulayın:
systemctl daemon-reload systemctl restart ssh.socket systemctl restart ssh
Hizmetin çalıştığını doğrulayın:
systemctl status ssh.socket
Ubuntu 24.04+ gibi bazı daha yeni sistemlerde systemd oluşturucusu bağlantı noktasını sshd_config dosyasından otomatik olarak okuyabilir. Bu durumda Port değerini doğrudan değiştirmek ve ardından systemctl daemon-reload ile systemctl restart ssh.socket komutlarını çalıştırmak yeterli olabilir. Yukarıdaki override yöntemi tüm sürümlerde çalışır.
Eski Ubuntu ve Debian sürümleri
22.04 öncesi Ubuntu sürümlerinde ve 12 öncesi Debian sürümlerinde SSH, socket activation tarafından yönetilmez. SSH yapılandırma dosyasını açın:
nano /etc/ssh/sshd_config
Aşağıdaki satırı bulun:
Port 22
Satırın başındaki yorum işaretini kaldırın ve 22 değerini seçtiğiniz bağlantı noktası numarasıyla değiştirin:
Port 22777
Dosyayı kaydedin ve yapılandırmayı doğrulayın:
sshd -t
Komut bulunamazsa şunu kullanın:
/usr/sbin/sshd -t
Komut herhangi bir çıktı döndürmüyorsa yapılandırma geçerlidir. SSH hizmetini yeniden başlatın:
systemctl restart ssh
Socket activation'ı devre dışı bırakma
SSH'yi socket yerine geleneksel hizmet üzerinden yönetmeyi tercih ediyorsanız socket activation'ı devre dışı bırakabilirsiniz:
systemctl disable --now ssh.socket systemctl enable --now ssh
Bundan sonra sshd_config dosyasını yukarıda açıklandığı şekilde düzenleyin ve SSH'yi şu komutla yeniden başlatın:
systemctl restart ssh
AlmaLinux, Rocky Linux ve CentOS'ta SSH bağlantı noktasını değiştirme
SSH yapılandırma dosyasını düzenleme
SSH yapılandırma dosyasını açın:
nano /etc/ssh/sshd_config
Aşağıdaki satırı bulun:
Port 22
Satırın başındaki yorum işaretini kaldırın ve 22 değerini seçtiğiniz bağlantı noktası numarasıyla değiştirin:
Port 22777
Dosyayı kaydedin ve yapılandırmayı doğrulayın:
/usr/sbin/sshd -t
Komut herhangi bir çıktı döndürmüyorsa yapılandırma geçerlidir. SSH hizmetini yeniden başlatın:
systemctl restart sshd
Hizmetin çalıştığını doğrulayın:
systemctl status sshd
SELinux'ta bağlantı noktasına izin verme
SELinux'un etkin olduğu sistemlerde yeni bağlantı noktasına SELinux politikasında da izin vermeniz gerekir. SSH için şu anda hangi bağlantı noktalarına izin verildiğini kontrol etmek için şunu çalıştırın:
semanage port -l | grep ssh
Ardından yeni bağlantı noktasını ekleyin veya değiştirin:
semanage port -a -t ssh_port_t -p tcp 22777 || semanage port -m -t ssh_port_t -p tcp 22777
semanage yüklü değilse gerekli paketi yükleyin:
dnf install policycoreutils-python-utils
Güvenlik duvarını yapılandırma
Yeni bağlantı noktasına SSH'yi yeniden başlatmadan önce güvenlik duvarında her zaman izin verin. Önce SSH'yi yeniden başlatırsanız sunucuya erişiminizi kaybedebilirsiniz.
UFW
ufw allow 22777/tcp ufw reload ufw status
firewalld
firewall-cmd --permanent --zone=public --add-port=22777/tcp firewall-cmd --reload
iptables
iptables -I INPUT -p tcp --dport 22777 -j ACCEPT iptables-save > /etc/iptables/rules.v4
iptables-save komutu kuralları yalnızca sistemde iptables-persistent yüklü ve yapılandırılmışsa bir dosyaya kaydeder. Yüklemek için şunu çalıştırın:
apt install -y iptables-persistent
Kalıcı kurallar için bu dosyaya güvenmeden önce dağıtımınızın bu dosyayı kullandığını doğrulayın. Modern sistemlerin iptables yerine nftables kullanabileceğini unutmayın. nftables kullanıyorsanız, nftables yapılandırmanıza yeni bağlantı noktasına izin veren bir kural ekleyin.
Fail2Ban'ı yapılandırma
Sunucuda Fail2Ban yapılandırılmışsa, SSH bağlantı noktasını yapılandırmasında güncelleyin. /etc/fail2ban/jail.local dosyasını veya /etc/fail2ban/jail.d/ altındaki ilgili dosyayı açın ve şu değeri ayarlayın:
port = 22777
Yapılandırmayı güncelledikten sonra Fail2Ban'ı yeniden başlatın:
systemctl restart fail2ban
Yeni bağlantı noktasını doğrulama
SSH'nin yeni bağlantı noktasını dinlediğini kontrol edin:
ss -tlnp | grep :22777
Alternatif olarak SSH ile ilgili tüm dinleyicileri listeleyebilirsiniz:
ss -tlnp | grep ssh
Daha eski sistemlerde bunun yerine netstat kullanın:
netstat -tlnp | grep :22777
Hizmet durumunu doğrudan da kontrol edebilirsiniz.
Ubuntu ve Debian'da:
systemctl status ssh.socket
AlmaLinux, Rocky Linux ve CentOS'ta:
systemctl status sshd
Mevcut SSH oturumunuzu kapatmadan yeni bir terminal penceresi açın ve yeni bağlantı noktasını kullanarak bağlanın:
ssh root@YOUR_SERVER_IP -p 22777
Bağlantı başarılı olursa eski oturumu kapatabilirsiniz. Ardından artık gerekli değilse 22 numaralı bağlantı noktasını güvenlik duvarı kurallarından kaldırın.
UFW için:
ufw delete allow 22/tcp ufw reload
firewalld için:
firewall-cmd --permanent --zone=public --remove-port=22/tcp firewall-cmd --reload
Yeni bağlantı noktasının çalıştığını doğrulamadan 22 numaralı bağlantı noktasını güvenlik duvarından kaldırmayın. Yeni bağlantı başarısız olursa, sorunu gidermek veya değişiklikleri geri almak için açık SSH oturumunu kullanın:
systemctl revert ssh.socket cp /etc/ssh/sshd_config.backup /etc/ssh/sshd_config rm -f /etc/ssh/sshd_config.d/10-port.conf systemctl daemon-reload systemctl restart ssh.socket
Socket activation devre dışıysa son iki komutu şu komutla değiştirin:
systemctl restart ssh
Sonuç
Varsayılan SSH bağlantı noktasını 22'den özel bir bağlantı noktasına değiştirmek, otomatik taramalara ve temel brute-force saldırılarına maruz kalmayı azaltabilir. Ancak bağlantı noktasını değiştirmek, ek bir güvenlik önlemi olarak değerlendirilmelidir ve SSH'nin uygun şekilde güvenli hâle getirilmesinin yerine geçmez.
Yeni bağlantı noktasını kullanarak başarılı bir şekilde bağlandığınızı doğrulayana kadar mevcut SSH oturumunuzu her zaman açık tutun. Yeni bağlantı doğrulandıktan sonra eski oturumu güvenle kapatabilir ve artık gerekli değilse 22 numaralı bağlantı noktasını güvenlik duvarından kaldırabilirsiniz.