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.