Merhabalar,
Bu makalede SSH güvenliğine yönelik kısa bir bilgi paylaşacağım. Bu makaleden itibaren kısa bir makaleler serisi yazarak, sonrasında biraz daha geniş bir konu içinde tüm bu yazdıklarımı toplayıp, linux sunuculardaki güvenlik seviyelerini arttırma çalışmaları altında tek bir başlıkta toplamayı hedefliyorum.
Bildiğiniz gibi root kullanıcısı, linux sistemlerdeki en yetkili sistem yöneticisi hesabıdır ve her türlü komutu çalıştırmaya, her dosyaya erişme hakkı vardır. Uzak bağlantılarımızı da SSH üzerinden bu kullanıcıyla yaptığımızda, kötü niyetli kullanıcıların ya da hacker’ların hedefi haline de gelebiliyoruz. Bu kullanıcı hesabının ele geçirilmesini zorlaştırmak, sistemler üzerinde uzak bağlantı kullanıcılarına bağlantı izni tanımlamak, basit ama etkili bir güvenlik iyileştirmesi de olacaktır.
CentOS ve Redhat sistemlerde, default kurulumla birlikte, root kullanıcısı olarak SSH üzerinden bağlantı sağlanabilmektedir. Dolayısıyla default’ta açık gelmektedir. Şimdi yapacağımız işlemle, root kullanıcısına SSH bağlantılarını kapatacağız. Peki root kullanıcısı da kapanırsa biz nasıl uzak bağlantı sağlayacağız?
Bunun iki cevabı var:
- Sunucunuzun başına geçip, root kullanıcınız ile konsoldan bağlanacaksınız,
- SSH bağlantıları için, sisteminizi kurarken oluşturduğunuz ilk kullanıcınızı kullanacaksınız.
Çoğunuz birçok makalede sudo ile başlayan komutlar görmüşsünüzdür. İşte sudo ile başlayan bu komutlar, yönetici haklarıyla bu komutu çalıştır anlamına gelir. Linux sistemlerin, bir nevi “run as administrator” çalıştırma şekli gibi de düşünebilirsiniz. Fakat sudo komutunu da her kullanıcı kullanamamaktadır. Bunun için sudoers dosyasını düzenlemek ya da kullanıcının grubuna bazı eklentiler yapmak da gerekir. Şimdilik bu konuya girmiyoruz…
PermitRootLogin konfig değişimi
SSH ile ilgili tüm sunucu ayarları, /etc/ssh/sshd_config dosyasında saklanır. Root kullanıcısı için oturum açma işlemlerini devre dışı bırakmak üzere, PermitRootLogin parametresini değiştireceğiz. Aşağıdaki komutla bu dosyayı düzenlemeye başlayalım. Nano komutu sisteminizde yoksa dnf install nano komutuyla yüklenmesini sağlayabilir, ya da vi komutlarıyla dosyayı düzenleyebilirsiniz.
nano /etc/ssh/sshd_config
Dosyanın orjinal halinde, gördüğünüz gibi bu parametre “yes” olarak görünüyor. Bunun anlamı, “SSH üzerinden root login’e izin ver” demektir…
PermitRootLogin no olacak şekilde değiştiriyoruz ve artık root kullanıcının SSH bağlantısı yapmasını yasaklıyoruz.
Dosyayı kaydedip çıkıyoruz. Sonrasında da sshd servisini restart ediyoruz.
systemctl restart sshd
İlk oturum açtığımız SSH arabirimini kapatıp, yeniden root kullanıcısı ile SSH bağlantısı yapmaya çalışalım.
Gördüğünüz gibi artık “Access denied” ile giriş engelleniyor.
Sistemi ilk kurarken oluşturduğum yusuf.isleyen kullanıcısı ile SSH yapıyorum. Sizlerin sisteminde başka kullanıcılar da olabilir. Bunlar için SSH izni konularını ileride inceleyeceğiz. Şimdilik bu yöntemle devam ediyoruz.
Gördüğünüz gibi artık bu kullanıcı ile admin komutlarını, komutların başına sudo ifadesini ekleyerek kullanmaya başlayabilirim.
Bir örnek yapalım şimdi.
/etc/shadow dosyası, sadece root tarafından okunan-yazılan-değiştirilen bir dosyadır. Bu dosyanın içeriğini görüntülemek isteyelim.
cat /etc/shadow
permission denied hatası alıyoruz.
sudo cat /etc/shadow
Bu komutla, run as admin olarak çalıştır ve dosyanın içeriğini göster demiş olduk. Bizden yusuf.isleyen kullanıcısının parolası istendi ve parolayı girdiğimizde dosyanın içeriğini görebildik
Sonraki makalelerde, SSH kullanıcılarını belirleme, bağlanacak kullanıcılara sınırlama getirme ve daha birçok ayarın nasıl yapılabileceğine değineceğiz.
Yararlı olması dileğiyle.
Yusuf İşleyen