Linux Sunucularda SSH Servisi Güvenliği

Merhaba

SSH servisine yapılan kaba kuvvet saldırıları hakkında bilgiye Multi-Threat Sözlük Saldırıları ile SSH Hacking Performansı linki ile ulaşabilirsiniz.

Bu saldırıların önüne geçmek için SSH servisinin ayaları değiştirilmelidir.

Public Key Authentication

Kullanıcılar Public ve Private olarak ifade edilen iki farklı dosya üretirler. Public key’in çözümlenebilmesi için Private Key’e sahip olunması ve passphrase’in bilinmesi gerekmektedir. SSH servisi Public Key Authentication’a imkan tanımaktadır.

Her kullanıcının privaye key’i home folder’ının altındaki .ssh dosyasında bulunmalıdır. Private key’in hangi isimde bulunacağı ise linux dağıtımlarına göre değişmektedir. Bu ismi öğrenmek için aşağıdaki komut çalıştırılabilir.

mince@rootlab ~ $ cat /etc/ssh/ssh_config |grep 'IdentityFile'
#   IdentityFile ~/.ssh/identity
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa

Key oluşturmak için aşağıdaki komut kullanılmaktadır.

ssh-keygen -t rsa -C "your_email@example.com"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.
# Enter file in which to save the key (/home/you/.ssh/id_rsa):

Bağlantının gerçekleştirileceği sunucuda bir adet normal kullanıcı oluşturulmalı ve ardından bu kullanıcı wheel grubuna dahil edilmelidir.

Bu işlemler için öncelikle /etc/sudoers dosyası düzenlenmelidir. visudo komutu ile sudoers dosyası ön tanımlı metin editörü ile açılır. Aşağıdaki satırın başındaki diyez kaldırılmalıdır.

%wheel ALL=(ALL) ALL

Sudoers dosyası düzenlenip kayıt edildikten sonra linux kullanıcısı wheel grubuna dahil edilmelidir.

gpasswd -a mehmet wheel

Ardından oluşturulan id_rsa.pub dosyası yönetilecek sunucuda ki mehmet kullanıcısının home folder’ına yerleştirilir. Dosya transferi scp komutu ile yapılabilir.

scp ~/.ssh/id_rsa.pub root@192.168.1.22:/home/mehmet/.ssh/[public key ismi]

Root Kullanıcısına Sınırlama ve Şifre ile Giriş Yasaklaması

Saldırgan SSH servisine kaba kuvvet saldırısı yapabilmek için öncelikle hedef sistemde tanımlı kullanıcı hesabını bilmelidirler.  Her linux sistemde en yetkili kullanıcı root kullanıcısıdır. Saldırganlar deneme yanılma saldırılarında root kullanıcısı için şifre denemeleri yapacaktır. Bu nedenle root kullanıcısı için uzaktan gelen bağlantılar kabul edilmemelidir.

Password Authentication iptal edilmelidir. Bu sayede herhangi bir kullanıcının linux şifresi saldırganlar tarafından ele geçirilse bile ssh bağlantısı kabul edilmeyecektir.

/etc/ssh/sshd_config dosyası metin editörü ile açılarak aşağıdaki iki satır tanımlaması yapılmalıdır.

PasswordAuthentication no
PermitRootLogin no

ssh servisi yeniden başlatılarak yeni ayarlar devreye alınacaktır.

SSH Portunun Değiştirilmesi

SSH servisinin çalıştığı portu değiştirilebilir. Bu işlem sayesinde standart taramalarda ssh servisi tespit edilemeyecektir. Bu noktada önemli olan şey, üniversite networkleri gibi kural tanımlamalarına göre erişimlerin sağlandığı yapılarda genellikle reserved port‘ların haricinde ki portlara erişim engellidir. Bu durumda 1024’ten büyük bir portta servis çalıştırıldığında bazı networkler için erişilemez olacaktır..

NOT: sshd_config dosyasında düzenleme yapılmadan önce yedeği alınmalıdır. Yanlış bir tanımlama yapılırsa linux sunucusuna ssh erişimi sorunu yaşanacaktır. Bu durumda yedek konfigürasyon dosyası devreye alınabilir.