spacer.png, 0 kB
Bilgi için: bilgi at bilgiguvenligi gov tr   

 

spacer.png, 0 kB
spacer.png, 0 kB
Yazarın bu bölümdeki diğer yazıları...
Fail2ban ile Linux Sistemlerini Koruma Yazdır E-posta
İsmail Güneydaş, Rackspace Managed Hosting   
20.12.2009

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 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 = 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: 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.


Favori olarak ekle (1) | Görüntüleme sayısı: 1859

Yorumlar (6)
1. 22-04-2010 14:12
 
Ahmet Bey, 
 
Eger lokal olarak mail almak istiyorsaniz herhangi bir MTA yeterli olabilir. Ubuntu surumlerinde default olarak mailx kullanilir. 
 
Ancak disaridan external bir email adresine mail gondermek istiyorsaniz postfix ya da sendmail kurmanizda fayda vardir.
 
İsmail Güneydaş
2. 15-04-2010 14:42
 
Ubuntu 9,10 server üzerinde kurulum yaptık depmail kısmında mail adresi yazılı olduğu halde mail alamıyoruz.Sunucu üzerinde mail server olması gerekiyormu acaba ayarlarımız aşağıdaki gibidir. 
# Destination email address used solely for the interpolations in 
# jail.{conf,local} configuration files. 
destemail = mail adresimiz 
 
# Default action to take: ban only 
action = iptables[name=%(__name__)s, port=%(port)s] 
 
Ayarlarımız bu şekilde bilginize
 
ahmet sengul
3. 30-12-2009 00:38
 
Öncelikle Yazma Verdikleri Yanıtlar nedeniyle İsmail Güneydaş Bey'e Teşekürlerimi Sunarım. 
Ben naçizane usta derecede bir Bilgisayar kullanıcısı olmama rağmen yazılanlar doğrultusunda biraz uğraştıktan sonra fail2ban programını kurmayı ve ayarlamalarını yapmayı başardım.Çalışıp çalışmadığı konusunda bilgilendiririm. 
Tüm TÜBİTAK UEKAE Camiasının Yeni yıllarn kutlarım.Teşekkürler.
 
Selçuk ALBAYRAK
4. 29-12-2009 10:39
 
Kurulum kismina gelince, fail2bani pisi ile kurmak mumkun degil. Bu nedenle source dan yukleyecegiz. Phyton ile yazildigi icin sadece bir komutla kurulumu tamamliyacagiz. 
 
Oncelikle bu linkten( http://sourceforge.net/projects/fail2ban/files/fail2ban-stable/fail2ban-0.8.4/fail2ban-0.8.4.tar.bz2/download) son surumu indirin. 
 
Daha sonra bu klasoru herhangi bir yerde sag tiklayip extract ediniz. Diyelim ki /home/ismail/Desktop a kaydettiniz. 
 
Daha sonra terminalden cd /home/ismail/fail2ban-0-8.4 
yapip o klasorun icine giriniz. 
daha sonra da 
python setup.py install 
 
Sonraki asamalar bu yazilan teknik yazidaki asamalar ile aynidir. 
 
Eger sorunuz olursa cekinmeden sorabilirsiniz. Sanirim sordugunuz soru ile pardus kullanan arkadaslara yardimci oldunuz. 
 
Iyi gunler, 
 
İsmail Güneydaş
5. 29-12-2009 09:52
 
Selcuk Bey, 
 
Pardus ile yuklemenin nasil yapilacagina gecmeden once bu makalenin daha cok server pazarindaki Linux surumleri icin yazildigini belirtmek isterim. Zaten fail2ban programi da ozellikle apache, ssh, ftp gibi daha cok serverlarda bulunan programlari monitor etmektedir. Ubuntu'nun server ve desktop surumlerini ayri ayri cikardigini yani performans acisindan bu ayrimi yapan bir kac surumden biri oldugunu da unutmamak gerekiyor. 
 
Pardus, cok iyi bir desktop surumudur. Server olarak ubuntu hardy surumu ile kiyasladigimizda arada performans acisindan ortaya cikan fark bunu gosteriyor. Bu konuda ekleyebilecegim bir cok madde var ama yer kisitli. Ama yanlis anlamayin. Pardusun basarisini kucumsemiyorum sadece asil hedef kitlesinin farkliligindan bahsediyorum. Mesela Pardus un en iyi Linux desktop surumlerinden biri oldugunu rahatlikla soyleyebilirm.
 
İsmail Güneydaş
6. 29-12-2009 00:31
 
Fail2ban programınn PARDUS 2009 işletim sistemine nasıl kurabileceğimizi de anlatabilirmisiniz? Yani Ubuntu Milli İşletim sistemimiz değilki ondan örnek vermişsiniz.Ben pardus 2009'da denedim ama başaramadım.Yardımcı olabilirmisiniz Lütfen! 
Selçuk ALBAYRAK 
Bu mail adresi spam botlara karşı korumalıdır, görebilmek için Javascript açık olmalıdır
 
Selçuk ALBAYRAK

Sadece kayıtlı kullanıcılar yorum yazabilir.
Lütfen sisteme giriş yapın veya kayıt olun.

 
spacer.png, 0 kB
spacer.png, 0 kB
Copyright 2010 TÜBİTAK-UEKAE. Sitenin teknik altyapısında Joomla kullanılmıştır. Yazar ve site referans gösterilmeden alıntı yapılamaz. Görüşleriniz
spacer.png, 0 kB