OpenSSH için Güvenlik Sıkıştırmaları

 

1Merhabalar

Bu yazıda sizlere OpenSSH ile ilgili bildiğim güvenlik yöntemlerinden bahsedeceğim. Bu güvenlik yöntemlerinin birkaçını bizzat bende kendim kullanıyorum ve ssh güvenliği için sizinde kullanmanızı şiddetle tavsiye ederim. Bildiğiniz gibi OpenSSH ( Secure Shell ) iki bilgisayar arasında uzaktan veri iletimi için şifreli bir yol açmasıdır. Daha detaylı bilgi için bu sayfaya bakabilirsiniz.

 

OpenSSH Güvenlik Sıkıştırmaları

  • Güçlü bir parola kullanmak.
  • Varsayılan olarak kullanılan 22 ssh portunu değiştirmek.
  • Her zaman kullanılacak protokol sürüm numarası 2 olmalıdır.
  • Root kullanıcısının ssh için erişimini kapatmak.
  • SSH mesajı oluşturmak.
  • SSH kimlik doğrulamasını anahtar tabanlı olarak kullanabilirsiniz.
  • X11 yönlendirmesini gerekmedikçe kullanmamak.
  • Maksimum oturum sayısını belirtmek.
  • SSH erişim kısıtlamak. ( IP Bazlı )
  • Periyodik olarak SSH ‘ın güncellemeleri kontrol edilebilir. 

 

Güçlü Bir Parola Kullanılmalı

Bir parola ne kadar güçlü ve karmaşık olursa o kadar güvenlik seviyesi yüksek olur. Örneğin, iyi bir parolanın içerisinde özel karakterler ( “!;/..**??^^ ) ve içerisinde numaraların ( 0-9 ) olduğu bir parolanın bulunması çok ama çok zordur.

 

SSH Port Numarasını Değiştirmek

OpenSSH ilk kurulduğu zaman siz değiştirmeyene kadar varsayılan olarak 22 portunda çalışmaktadır. SSH portunu değiştirmek sizi internetteki botlardan korur ve sunucunuzun hacklenmemesi için varsayılan olarak gelen 22 portunu değiştirmenizi öneririm tabi bu sunucunuzun hacklenmeyeceği anlamına gelmez. 🙂 SSH portu 22 olan yeri 1024. üzerinde herhangi bir port numarası yazabilirsiniz. Ayarlar değiştirildikten sonra CTRL+O kombinasyonuna bastıktan sonra enter tuşuna basıp ayarlar kaydedilir ardından CTRL+X kombinasyonuna basıp dosyadan çıkılır.

NOT : Sunucuya bağlanırken port numarası yanlış verilir ise “Connection Refused” hatası verecektir.

root# nano /etc/ssh/sshd_config
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
Port 3339
# Use these options to restrict which interfaces/protocols sshd will bind to
# ListenAddress ::
# ListenAddress 0.0.0.0 

 

SSH Güvenliği için Protocol 2 Kullanılması

SSH protokol 1 sürümü ile protokol 2 arasında birçok güvenlik farklılıkları bulunmaktadır. Örneğin, protokol 1 ‘de man-in-the-middle saldırısı ve güvenlik açıkları bulunmaktadır. Her zaman protokol 2 sürümünü kullanınız çünkü bu protokol diğer protokol 1 olandan daha güvenlidir. İki protokol sürümünün arasındaki farklılıkları bu siteden bulabilirsiniz.

# The default requires explicit activation of protocol 1
Protocol 2
#HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
#HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key 

Root Erişimini Kapatmak

Süper kullanıcı yani root kullanıcısının uzaktan ssh erişimini engellemek güvenlik için çok önemlidir. Örneğin, root kullanıcısının parolası elde edildiğini varsayalım böyle bir durumda üçüncü kişi uzaktan root haklarıyla sisteme ssh ile erişebilir ve isteği herşeyi yapar. Fakat bunun tersini düşünelim, yani root kullanıcısının uzaktan ssh erişimi kapatılırsa üçüncü kişi parolayı bilse bile ssh ile erişemez dolayısıyla sisteme giriş yapamaz. Aşağıdaki komutu kullanarak sshd_config dosyasına giriyorsunuz hemen ardından PermitRootLogin yes yazısını PermitRootLogin no olarak değiştiriyorsunuz.

NOT : Root kullanıcısını devre dışı bırakamadan önce ssh oturumu için bir kullanıcı oluşturun ve ssh ile giriş yapmayı test edin. Dışarıda kalmayın. 🙂

NOT : Bundan sonra root ile giriş yaparken “Permission denied, please try again.” hatası alacaksınız.

# Authentication:
LoginGraceTime 30
PermitRootLogin no
StrictModes yes

SSH Mesajı Göstermek

Bu özellik eski bir özelliktir fakat bu özelliği kurumsal firmalar ve sistem yöneticileri sıklıkla kullanmaktadırlar. Örneğin, bu karşılama mesajına “Hoş geldiniz” veya “Erişim Yasak” gibi birçok afiş gösterimi yapabilirsiniz. 🙂 Bu yazıma buradan ulaşabilirsiniz.

 

SSH Anahtar Yönetimi

SSH ile sunucunuza bağlanırken parola veya parolasız özel oluşturulmuş anahtar doğrulaması ile bağlanabilirsiniz. Bu hem çok kolay hemde güvenli olduğu için bunu kullanabilirsiniz. İlgili yazıma buradan ulaşabilirsiniz.

NOT : Bu anahtar ssh-keygen ile oluşturulurken parola girilmediğini varsayalım böyle bir durumda başka birinin eline geçerse sunucunuza direkt ssh ile bağlanır ve istediğini yapar, fakat ssh-keygen ile anahtar oluşturulurken parola verildiyse başka birisinin eline geçse bile anahtarın parolasını bilmediği için ssh ile sunucunuza bağlanamaz.

 

X11 Yönlendirmesini Devre Dışı Bırakmak

Bu özelliği isteğe bağlı olarak, gerek duyulmadıkça X11 yönlendirmesi kapalı olması güvenlik açısından iyi olabilir. X11 dediğimiz şey daha çok GNU/Linux ve Unix türevi işletim sistemlerinde kullanılan grafik arayüz programıdır. Bu özellik ile ssh sunucunuza grafik arayüz ile bağlanarak yönetebilirsiniz. Aşağıdaki komut ile sshd_config dosyası açılır ardından X11Forwarding satırı bulunur ardından satırın sonuna no eklenir.

root# nano /etc/ssh/sshd_config
X11Forwarding no
#X11DisplayOffset 10
#PrintMotd no
#PrintLastLog yes
#TCPKeepAlive yes

 

Maksimum Oturum Sayısını Belirtmek

Bir başka güvenlik seçeneği ise ssh oturumların maksimum oturum sayısını belirlemek. Örneğin, bu değer 2 olduğunu varsayalım sizin sunucunuza 2 kişinin oturum bağlantısı var ve diğer üçüncü kişi sizin sunucunuza bağlanmak istediğinde bağlanamayacaktır. Aşağıdaki komut ile sshd_config dosyası açılır ve içerisindeki MaxSessions satırının karşısına istediğiniz değeri verebilirsiniz. Varsayılan olarak 10 kullanılmaktadır.

root# nano /etc/ssh/sshd_config
 
MaxSessions 2 

 

IP Bazlı Erişim Kısıtlaması

Sunucunuza ip bazlı erişim kısıtlaması yapmak oldukça önemli bir güvenlik yöntemlerinden birisidir. Şöyleki siz aşağıdaki ayarları yaparak sunucunuza belirli ip adreslerinin bağlanmasını sağlayabilirsiniz. Mesela, herkes yasaklı dersiniz daha sonra sadece kendinizin ip adresinizi yazararak sadece sunucunuza siz bağlanabilirsiniz diğer tüm herkes ssh ile sunucuza bağlanamaz. Burada dikkat etmeniz gereken tek şey bilgisayarınıza statik bir ip adresi vermelisiniz çünkü ip adresi değişirse sunucunuza ssh bağlantısı yapamazsınız sizi engelleyecektir. 

NOT : Bu kurulum işletim sistemlerine göre farklılık göstermektedir. !

Başlayalım.

Aşağıdaki komut /tmp dizinine girmenizi sağlayacak hemen ardından o dizinde denyhosts.tar.gz adlı bir dosyayı indirmenizi sağlayacaktır.

root# cd /tmp/ && wget http://downloads.sourceforge.net/project/denyhost/denyhost-2.8/denyhosts-2.8.tar.gz 

Daha sonra .tar.gz uzantılı dosyayı açmak için aşağıdaki komut kullanılır.

root# tar xvf denyhosts-2.8.tar.gz 

Bulunduğunuz dizinde denyhosts adında bir dizin olacaktır. Aşağıdaki komutu kullanarak o dizine giriniz hemen ardından ikinci komut kullanılarak denyhosts kurulumu yapınız.

root# cd DenyHosts-2.8/
root@:/tmp/DenyHosts-2.8# sudo python setup.py install

Kurulum sonrası aşağıdaki komut kullanılarak kopyalama işlemi yapılır. Aşağıdaki komut /usr/local/bin/daemon-control-dist dosyasını /etc/init.d/denyhosts adlı dosya oluşturup kopyalayacaktır.

root# cp /usr/local/bin/daemon-control-dist /etc/init.d/denyhosts 

Aşağıdaki komut ile denyhosts dosyasına girilir. Bu dosyanın içerisine ee, vi, vim, nano gibi araçlar kullanarak girebilirsiniz. Daha sonra denyhosts dosyası açıldıktan sonra aşağıdaki gibi ayarlar yapılır ve dosyadan çıkılır.

root# nano /etc/init.d/denyhosts 

Screen Shot 2015-08-13 at 19.21.09Sıra geldi izin vermek istediğimiz ip adresleri ve yasaklamak istediğimiz ip adreslerinin ayarlarını yapmaya. Aşağıdaki komut kullanarak izin vereceğimiz dosya açılır ve izin verilecek ip adresi en alt satıra yazılır. Aşağıda örnek bir resim paylaştım bunun gibi yapabilirsiniz.

root# nano /etc/hosts.allow 

Screen Shot 2015-08-13 at 19.24.05

Örneğin, birden fazla ip adresine erişime izin vermek isterseniz aralarına ” . “ nokta işareti bırakabilirsiniz. Örnek bir resim aşağıdaki gibidir.

Screen Shot 2015-08-13 at 18.46.45

Daha sonra aşağıdaki komut kullanılarak servis yeniden başlatılır.

root# /etc/init.d/denyhosts restart 

NOT : Arkadaşlar yukarıda yaptığımız ayarlar sonrası /etc/hosts.deny dosyasını açalım ve son satıra ALL: ALL yazısını ekleyelim. Bu herkesi engelle anlamına geliyor. Biz önceden ssh ile erişime izin verdiğimiz ip adreslerini eklediğimiz için ssh erişimi açık olacaktır. Daha sonra servisi yeniden başlatmayı unutmayınız.

Sevgiler.

Tagged with: , , , , , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Archives