Şub 25

Linux işletim sistemleri  ekonomik ve teknik nedenlerden dolayı sunucu (server) pazarında oldukca büyük rağbet görmektedir. Bu durum bilgisayar korsanlarının Linux işletim sistemlerinde yer alan programlar için özel atak metodları geliştirmesine yol açmaktadir.

Bu nedenle Linux makinelerininde atak engelleyici güvenlik programları büyük önem arz etmektedir.

Linux servis sağlayıcılarında SSH servisi, web servisi, mail servisi, FTP servisi gibi çeşitli programlar çalışmaktadır. Tüm bu programların log dosyalarını analiz edip bilgisayar korsanlarına karşı önlem almak oldukça zaman alıcı ve zordur.

Fakat Fail2ban sistem yöneticilerinin hayatını kolaylaştırmaktadır. Fail2ban  /var/log/pwdfail ya da /var/log/apache/error_log  gibi log dosyalarını taramakta ve eğer olağan dışı fazla hatalı şifre girişi varsa, giriş yapılan IP’yi  cezalandırmaktadır. Fail2ban güvenlik duvar kurallarını  atağın geldiği IP adreslerini engelleyecek şekilde yeniler.

Bu  makalede SSH servisinin özelinde Fail2ban’ın Linux makinelerini bilgisayar korsanlarından nasıl koruduğunu inceleyeceğiz.

SSH(Güvenli Kabuk-Secure Shell)

Tüm Linux sunucularında SSH servisi bulunmaktadir. SSH servisi ile İnternet üzerinden herhangi bir Linux makinesine bağlanılabilir, komut satırıyla makine üzerinde istenilen işlemler gerçekleştirilebilir.

SSH’ın cazip yanı tüm iletişimin kriptolanmiş olmasında yatmaktadır. Bu protokolün açık anahtarlı şifrelemeyi (public/private key encryption) desteklemesi populerliğini daha da artırmaktadır.

SSH’ın varsayılan port numarası 22’dir. Bu değer /etc/ssh/sshd_config dosyasindan değiştirilebilir. Fakat çoğu sistem yöneticisinin bunu değiştirmediği ne yazık ki bir gerçektir. Üstelik root kullanıcısının SSH bağlantısı da çoğu sistemde engellenmemiştir.

Görüleceği üzere bilgisayar korsanının yapması gereken işlem port 22'ye root kullanıcı adını kullanarak sözlük atağıyla (dictionary attack)   farklı şifreleri deneyip saldırmaktan ibarettir. Çoğu zaman bilgisayar korsanı ele geçirilmiş makineler ile saldırdığından izinin bulunması hayli güçleşmektedir. Bu durumda atağı önleyip, cezanın otomatik olarak sizin makineniz tarafından verilmesi büyük bir önem kazanmaktadır.

Neden Fail2ban?

Fail2ban harici başka programlarda log dosyalarını analiz edip hücum eden  makineleri yasaklayabilir. Fakat Fail2ban’ın bu programlar arasından aşağıdaki tüm özelliklere sahip olması ile sıyrılabilmektedir.

·         İstemci/sunucu

·         Multithreaded

·         Tarih/zaman dilimini otomatik tanıma

·         Logpath opsiyonunda wildcard desteği

·         Çoklu servis desteği (sshd, apache, qmail, proftpd, sasl)

·         Birçok önlem alma şekli (iptables, tcp-wrapper, shorewall, e-mail ile bildirim, etc)

Kurulum

Kurulum  Ubuntu 8.10 işletim sistemi ile gerçekleştirilmiş olmakla beraber diğer Linux versiyonlarındaki kurulum aşamaları oldukça benzerdir.

Aşağıdaki komut fail2ban programını kuracaktir.

sudo apt-get install fail2ban

Şimdi sıra gerekli konfigurasyonları yapmakta. Konfigurasyon dosyları /etc/fail2ban klasörünün altında bulunmaktadır.

Jail.conf dosyasına bir göz atalım. Burada geliştiricinin uyarısını dikkate alıp bu dosyayı değiştirmeyelim. Bunun yerine tüm değişiklikleri /etc/fail2ban/jail.local dosyasında yapalım.

Bunun için jail.conf  dosyasını aşağıdaki komut ile jail.local dosyasına taşıyalım:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Ayarlar

Eğer jail.local dosyasına bakarsanız bir çok opsiyon görürsünüz. Bu opsiyonları birer birer ele alalim:

enabled

Bölümün aktif edilip edilmediğini tanımlar. Olası değerler 'true' or 'false'.

Filter

Hapis (jail) tarafından eşleşmeleri bulmak için kullanılan filtrenin (filter) ismi.

Bu ‘/etc/fail2ban/filter.d’ klasöründe var olan dosya ismine denk gelir. ( .conf uzantisiz)

Örnegin ‘filter=sshd’ /etc/fail2ban/filter.d/sshd.conf' dosyasına karşılık gelir.

action

Filtremiz bir eşitliği yakaladığı vakit hangi etkinliği yapacağını belirtir.

logpath

Filtremizin hangi log dosyasına bakacağını tanımlar.

ignoreip

Bu opsiyon ayarlandığında ne kadar başarısız login girişimi olursa olsun bunlar yok sayılıp IP'ye ceza kesilmiyecek yani ban’lanmıyacaktır.

maxretry

IP'ye ceza kesimi için ne kadar hatalı giriş yapma hakkı olduğunu belirler. Eğer bu sayıyı 5'e ayarlarsanız altıncı başarısız login girişiminde bulunan IP'ler cezalandırılacak yani bloklanacaktır.

bantime

IP'nin kaç saniye bloke kalacağını belirler.

destmail

Bu opsiyon her hangi bir bloklanma olayında kime e-posta gönderileceğini belirler.

banaction

Bu değişken ile IP hakkında ne türlü bir ceza kesimi olacağına karar verilir.

Bu opsiyon,  '/etc/fail2ban/action.d' klasöründe yer alan dosyanın '.conf' uzantısız halini tanımlar. Örnegin, 'action = iptables-allports', '/etc/fail2ban/action.d/iptables-allports.conf' dosyasına karşılık gelir.

Protocol

Standart olarak engellenecek protokoller varsa burada belirtilir.

Vereceğimiz örnekte, fail2ban’in saldırgan makinelerin IP’lerini bloke edip bilgi@example.com Bu mail adresi spam botlara karşı korumalıdır, görebilmek için Javascript açık olmalıdır adresine whois raporunu içeren e-posta göndermesini sağlıyacağız.

Bu IP adresinin 5 dakikalığına bloke edilmesini istemekteyiz:

[DEFAULT]

 

bantime  = 600

destemail = bilgi@example.com Bu mail adresi spam botlara karşı korumalıdır, görebilmek için Javascript açık olmalıdır

action = %(action_mw1)s

 

[ssh]


enabled = true

port    = ssh

filter  = sshd

logpath  = /var/log/auth.log

maxretry = 5

Şimdi fail2ban programını yeniden başlatalım:

sudo /etc/init.d/fail2ban restart

Başlangıçta jail.conf adlı dosyada sadece ssh bölümü aktif edilmiştir.

Bu fail2ban programının yalnızca  /var/log/auth.log dosyasına bakıp saldırgan IP’leri bloke edecek anlamına gelmektedir. Eğer web, mail, dns ya da ftp sunucularına saldıran IP’leri de engellemek istiyorsak, ‘enabled’ değerini o bölümler için de ayarlamamız ve gerekli filtreleri aktif hale getirmemiz lazımdır.

Test

Hazırladığımız test ortamında iki tane makine mevcuttur: Saldırgan makine ve bizim sunucumuz

Saldırgan makinenin IP’si: 123.45.67.89

Sunucumuzun IP’si: 98.76.54.32

Yönetici e-posta adresi: bilgi@example.com Bu mail adresi spam botlara karşı korumalıdır, görebilmek için Javascript açık olmalıdır

Saldırgan makineden 5 tane başarısız login girişimi yaptıktan sonar e-postamızı kontrol edelim:

From fail2ban@ITSecurity  Thu Jul 16 04:59:24 2009

Subject: [Fail2Ban] ssh: banned 123.45.67.89

Hi,

The ip 123.45.67.89 has just been banned by Fail2Ban after

5 attempts against ssh.

Here are more information about 123.45.67.89:

{whois info}

Lines containing IP:123.45.67.89 in /var/log/auth.log

Jul 16 04:59:16 example.com sshd[10390]: Failed password for root from 123.45.67.89 port 46023 ssh2

Jul 16 04:59:18 example.com sshd[10390]: Failed password for root from 123.45.67.89 port 46023 ssh2

Jul 16 04:59:20 example.com sshd[10390]: Failed password for root from 123.45.67.89 port 46023 ssh2

Jul 16 04:59:21 example.comsshd[10394]: reverse mapping checking getaddrinfo for 123.45.67.89.example.com [123.45.67.89] failed – POSSIBLE BREAK-IN ATTEMPT!

Jul 16 04:59:22 example.com sshd[10394]: Failed password for root from 123.45.67.89 port 46024 ssh2

Regards,

Fail2Ban

Burada fail2ban bize engellediği IP’yi whois bilgisiyle beraber göndermiştir. Whois bilgisi saldırgan kullanıcıyı organizasyona ihbar etmemiz bakımından oldukça önemlidir. Çoğu şirket gerekli yaptırımları uygulamakta ve kullanıcıyı uyarmaktadir.

Sonuç

Fail2ban, Linux sistemleri daha güvenli hale getiren oldukça iyi bir programdir. Bu teknik yazıda fail2ban programını kendi ihtiyaçlarımız doğrultusunda nasıl kurabileceğimizi ögrendik. Fail2ban, saldırgan IP'leri bloke edebilir ve whois bilgisini e-posta yoluyla bize ulaştırabilir. Böylelikle saldırganı kendi ISP şirketine şikayet edebilir ve  böylelikle gelecekte aynı IP’den gelebilecek olası atakların önüne geçebiliriz.

İsmail Güneydaş

http://www.bilgiguvenligi.gov.tr/linux-guvenligi/fail2ban-ile-linux-sistemlerini-koruma.html

Yazar ceyhun çamlı \\ tags: , , , , , , , , ,