CentOS 7 SSH port değişimi sunucu güvenliği için oldukça önemlidir. SSH üzerinden sunucumuza bağlanırken varsayılan olarak 22. porttan bağlanırız ve dünya üzerinde siber saldırılar gün geçtikçe arttığı için sunucunun IP adresini sizden başka bilen olmasa bile bot olarak kullanılan bilgisayarlar tarafından SSH erişimi brute force olarak düzenli aralıklarla saldırıya maruz kalmaktadır.

Gereksinimler

  • CentOS 7 Sunucu
  • SSH Erişimi ya da Console Erişimi
  • root Yetkisi

Başlamadan Önce

SSH port değiştirme işleminde bazen kullanıcılar hata yaparak SSH erişimini tamamen erişilmez hale getirebiliyor. Bu gibi durumlarda mutlaka console erişiminiz olduğundan emin olun

1. Adım: SELinux Kontrolü

SELinux, CentOS, RHEL gibi sunucularda güvenlik için ilk kurulumda aktif olarak gelir. Sunucunun rolüne göre bu servisi kapatabilir ya da kendinize göre konfigüre edebilirsiniz. SSH port değişimi öncesinde SELinux’u ya tamamen devredışı bırakmanız ya da yeni SSH port bilginizi SELinux’a eklemeniz gerekir. SELinux durumunu kontrol etmek için aşağıdaki komutu kullanıyoruz.

# sestatus

İlk kurulum sonrası aşağıdaki gibi bir çıktı elde etmemiz gerekiyor.

[root@localhost ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 21
Policy from config file:        targeted

 

SELinux servisini tamamen devredışı bırakmak için ise aşağıdaki komutu çalıştırmamız gerekli.

# setenforce 0

SELinux servisi, sunucumuz açılırken kernel yüklenme sırasında aktif olduğu için sunucumuza bu değişiklik sonrası yeniden başlatmalıyız. Bunun için ise reboot komutu yeterli olacaktır.

# reboot

 

2. Adım: SELinux’a SSH Port Bilgisi Eklemek

Bu makalede, 22. port yerine 22222. portu kullanacağımdan bundan sonraki kısımları kendinize göre düzenleyebilirsiniz. SELinux’a yeni port numarasını eklemek için şu komutu çalıştırabilirsiniz.

# semanage port -a -t ssh_port_t -p tcp 22222

 

3. Adım: SSH Konfigürasyonu

Sunucumuzdaki SELinux servisini kapattıysak ya da yeni SSH port bilgisini SELinux’a eklediysek artık SSH servisini konfigüre etmeye hazırız demektir. Bunun için vi editörünü kullanacağım. İlgili komut aşağıdaki gibidir.

# vi /etc/ssh/sshd_config

Bu komutu çalıştırdıktan sonra karşımız aşağıdaki ile aynı ya da benzer bilgiler gelmesi gerekiyor.

#       $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

 

Benim şu anda kullanmış olduğum CentOS sunucusunun ssh konfigürasyon dosyasında 17. satırda bulunan #Port 22 satırını değiştirmem gerekiyor. Ben bu makalede 22222 port ile ssh erişimi sağlayacağım için ilgili satırı aşağıdaki gibi yaptım ve dosyayı kaydedip çıktım.

Port 22222

 

4. Adım: SSH Servisini Yeniden Başlatmak

SELinux ayarları ve SSH konfigürasyon dosyasını kendimize göre düzenledik ve sıra SSH servisini, yeni port numarası ile yeniden başlatmaya geldi. Bunun için aşağıdaki komutu kullanabiliriz.

# service sshd reload

 

5. Adım: Port Değişikliğini Doğrulama

Bütün adımları sırasıyla takip ettik ve SSH servisimizin port numarasını 22. port yerine 22222. port olarak değiştirdik. Peki bu değişiklikten nasıl emin olacağız? Cevabımız basit. Servis durumunu kontrol ederek. Servis durumu kontrolü için aşağıdaki komutu çalıştırabiliriz.

# service sshd status

Servis kontrolü komutundan sonra aşağıdaki gibi bir bilgi görebiliyorsanız port bilgisini başarıyla değiştirdiniz demektir.

Redirecting to /bin/systemctl status  sshd.service
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2017-05-29 16:38:54 +03; 1 day 18h ago
     Docs: man:sshd(8)
           man:sshd_config(5)
  Process: 614713 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
 Main PID: 106912 (sshd)
   CGroup: /system.slice/sshd.service
           └─106912 /usr/sbin/sshd -D

May 31 11:06:33 localhost.localdomain sshd[106912]: Received SIGHUP; restarting.
May 31 11:06:33 localhost.localdomain systemd[1]: Reloaded OpenSSH server daemon.
May 31 11:06:33 localhost.localdomain sshd[106912]: Server listening on 0.0.0.0 port 22222.
May 31 11:06:33 localhost.localdomain sshd[106912]: Server listening on :: port 22222.

 

Tebrikler! En alt satırdan da görülebileceği üzere, SSH servisimiz artık 22222. port üzerinden çalışmakta. SSH bağlantınızı tamamen sonlandırdıktan sonra bundan sonraki bağlantılar için 22222. port üzerinden bağlantı sağlayabilirsiniz.