Temel Linux/Unix Araçlarını Kullanarak Tehdit Gözetleme Sistemi

http://netsec.lifeoverip.net/guvenlik-ipuclari/sayi35-haftanin-guvenlik-ipucu/ adresinde anlatıldığı gibi güvenlik duvarı arkasında erişime açık bulunan bir ssh sunucu yardımı ile OpenSSH’ın socks proxy özelliği kullanılarak, güvenlik duvarı ya da içerik engelleme servislerini atlatma gerçekleştirilebilir.

Eğer SSH sunucusu ön tanımlı port numarasında çalışıyorsa (22) ve güvenlik duvarı üzerinden bu portlara erişim kapalı ise, istemci ssh sunucuya doğal olarak erişemeyecektir. Peki SSH sunucu ön tanımlı port numarası üzerinden çalışmıyorsa ve bu porta güvenlik duvarı üzerinden erişim izni verilmişse ?

Her ne kadar hırsız polis oyununu andıran bu süreç genişletebilsede bu sorunun çözümünün linux/unix sistemi üzerinde basitçe nasıl yapılabildiği sorusunun cevabı bu yazıda aranacaktır.

Bilindiği üzere linux/unix sistemler bir çok özelliği içinde barından çeşitli amaçlar için kullanılabilen işletim sistemleri olarak göze çarpmaktadırlar. Yine bu durumu belirlemek için linux/unix işletim sistemleri kullanılacaktır. Kısaca yapılacak işlem linux/unix işletim sistemlerinin temel IDS (Tehdit Gözetleme Sistemi) olarak nasıl kullanılacağını göstermek olacaktır.

İstemci ile SSH sunucusu arasındaki trafğin gözlemlenebildiği bir linux/unix sistem üzerinde bu iletişim incelendiğinde aşağıdaki durum göze çarpmaktadır.Bu iletişim esnasından tcpdump -X parametresi ile kullanılmıştır.

[1] sunucudan istemciye ->  …SSH-2.0-OpenSSH_4.3…

[2] istemciden sunucya  ->  …SSH-2.0-OpenSSH_5.4…

Görüldüğü üzere istemci SSH sunucu ile iletişime geçmek istediğinde sunucu SSH sunucu sürüm bilgisini istemciye[1]  aynı şekilde [2] istemciden ssh istemci sürüm bilgisini sunucuya göndermektedir. Yani herhangi bir ssh istemcisi OpenSSH sunucusu ile iletişime geçmek istediğinde bu iletişim için geçerli olan imza belirlenebilmektedir.

Buraya kadar OpenSSH istemcisi ile OpenSSH sunucusu arasındaki iletişimin nasıl gerçekleştiği ve nasıl belirlenebildiği anlatıldı. Aslında bu işlem imza tabanlı tehdit gözetleme sistemleri tarafından gerçekleştirilen temel işlemlerden bir tanesidir.

Gelen giden trafik mevcut imza tabanı veritabanı ile karşılaştırılır ve uygun eşleşme gerçekleşirse belirlenen eylem uygulanır. Bahsedildiği gibi bu işlem tehdit gözetleme sistemleri tarafından yapılabildiği ağ trafiğinin gözlenebildiği herhangi bir linux/unix sistem ilede gerçekleştirilebilmektedir. Bunun için kullanılabilecek olan aracın adı ngrep komutudur. Basitçe kurulum detayları için aşağıdaki komut setleri takip edilebilir.

RedHat tabanlı sistemler için;

# yum -y install ngrep

FreeBSD tabanlı sistemler için;

# pkg_add -rv ngrep

Ubuntu tabanlı sistemleriçin;

# apt-get install ngrep

Kurulum ardından temel bir kaç paremetresi ile ağ trafiğinin gözlemlenebildiği bir linux/unix sunucu üzerinde çalıştırılarak istemci sunucu arasında trafik gözlemlenebilmektedir. Temel olarak burada ngrep komutuna dair -wiq paremetreleri kullanılmıştır. Daha ileri seviye kullanımı için man ngrep kullanılabilir.

# ngrep  -wiq “^ssh-[0-9]+”

interface: eth0 (10.0.0.0/255.255.255.0)

match: ((^^ssh-[0-9]+W)|(W^ssh-[0-9]+$)|(W^ssh-[0-9]+W))

T 10.0.0.1:22 -> 192.168.1.1:43081 [AP]

SSH-2.0-OpenSSH_4.3.

T 192.168.1.1:43081 -> 10.0.0.1:22 [AP]

SSH-2.0-OpenSSH_5.4..

Yukarıda kullanılan ngrep komutunun çıktısından da anlaşılacağı üzere istemci OpenSSH sunucu ile iletişime geçmeye başladığında sunucu sürüm bilgisini (SSH-2.0-OpenSSH_4.3) istemciye, aynı şekilde istemci sürüm bilgisini (SSH-2.0-OpenSSH_5.4) sunucuya iletmektedir. Yine bu işlemle ilgili olarak http://code.google.com/p/block-ssh/ adresine göz atılabilir.