Brute Force saldırılarını iptables ile engelleyin

Brute Force saldırısı(Brute Force Attack) diğer bir deyişler Anahtar Arama Saldırısı ( exhaustive key search) hedefin özel alanlara sızmak için deneme- yanılma yolu o servise ulaştıracak giriş bilgilerini tespit edip sisteme sızma saldırılarıdır.Ayrıntılı bilgi için bakınız ***

Sunucular internet dünyasına açıldığı takdirde bu tip saldırılardan nasibini alması kaçınılmazdır.Örnek bir “brute force” saldırısı:

May 05 01:23:23 zeus sshd[12355]: Illegal user office from 2.1..
May 05 01:23:33 zeus sshd[12755]: Failed password for illegal user office from 2*.1.. port 53033 ssh2
May 05 01:24:10 zeus sshd[12857]: Illegal user samba from 213.191.74.219
May 05 01:24:16 zeus sshd[12357]: Failed password for illegal user samba from 2*.1.. port 53712 ssh2
May 05 01:24:19 zeus sshd[12659]: Illegal user tomcat from 2*.1..
May 05 01:24:25 zeus sshd[12459]: Failed password for illegal user tomcat from 2*.1.. port 54393 ssh2
May 05 01:24:34 zeus sshd[12361]: Illegal user webadmin from 2*.1..
Jul 28 01:24:43 zeus sshd[12361]: Failed password for illegal user webadmin from 2*.1..* port 55099 ssh2

Yukarda gördüğünüz gibi saldırgan rastgele kullanıcı adı ve parolalarla “ssh” servisine sızmaya çalışıyor. Bu ve bu gibi brute saldırıları iptables‘e kural ekleyerek engellemeye çalışalım. ( Daha  önceki bir yazıda ssh güvenliği ilgili not yazmıştım**O yazıya göz atabilirsiniz.)

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --rttl --name SSH -j DROP

Yukardaki iptables kurallarındaki “eth0” arayüzünü,”22”  portunu kendi sisteminizdeki göre düzenleyiniz.

Bu kuralda ssh  servisimizi 1 dakika içerisinde 5 defa giriş izni vermiş olduk.Eğer  5′ten fazla giriş olduğu takdirde

 iptables “ssh” ulaşımını  engelleyecek.Bu kuralın normal ssh ile bağlanan kullanıcılar için bir  zararı olmayacak 

fakat durmadan atak yapacak olan saldırganı  engelleyecektir.


SSHatter ile kendinize saldırın!

Şimdi koyduğumuz kuralı test edelim.Bu kuralı test etmek için kendi kendimize saldıralım. ”SSH” servislerine “brute force attack” yapmak için kullanılan “SSHatter”ı kullanarak koyduğumuz kuralı test edelim. SSHatter‘ı “freshmeat” sitesinden edinebilirsiniz.SSHatter‘ı indirin . SSHatter’i indirdikten sonra uygun bir yere açalım. $ tar zxvf  SSHatter-1.0.tar.gz SSHatter’ın  iki tane bağımlılığı bulunuyor.Bunlar ForkManager ve Net-SSH-Perl bunları paket yöneticisi ile indirebiliriz. # emerge -av Parallel-ForkManager ( Debian kullanıcıları #apt-get install libparallel-forkmanager-perl ) # emerge -av  net-ssh-perl Artık saldırıya hazırız.SSHatter dizinine geçelim. $ cd SSHatter-1.0/src/ $ ls Saldıraya başlamadan önce deneme yapacağı birkaç username belirleyelim.Bunun için “users” adlı bir dosya oluşturup içine ekleyelim.Her satıra bir kullanıcı adı yazın. $nano users elma armut erik ….. gibi örnek kullanıcı adları yazıp kaydedin.Şimdi hedefi belirleyelim.Bunun için ise “targets” adlı bir dosya oluşturup içine hedefi yazalım. $ echo 127.0.0.1 > targets Zaten “src” dizininde “passwords” adlı bir dosyada örnek parolalar bulunmakta,kendiniz ekleme de yapabilirsiniz. Artık “brute force” atak yapmaya hazırız fakat kendi kendimizi de banlamamak için “cron” a 5 dakika sonra “iptables” kurallarını sıfırlamasını söyleyelim.
*/5 * * * * /sbin/iptables -F
Yukardaki satırı “cron”a eklemeyi unutmayın.Şimdi atağı başlatabiliriz.Örnek atak komutu: $ perl SSHatter.pl -x 1 -t targets -u users -p passwords Atak başladı ve 5 deneme girişinden sonra iptables tarafından banlanması gerekir ve 5 dakika sonra bu kural iptal olacak ve tekrar erişime açılacak. Bu eklediğimiz iptables kuralının her açılışta aktif olmasını istiyorsanız basit script yazarak sistem açılışına ekleyebilirsiniz.Eğer daha kolay yollar arıyorsanız fail2ban gibi yazılımlara bakabilirsiniz. Bu sitede fail2ban hakkında güzel bir yazı mevcut.

Linux Ders Notu

26 Temmuz-6 Ağustos 2010 tarihleri arasında Hatay Kırıkhan Meslek Yüksek Okulu’nda verilen eğitime katılan Fatih Çakmak hocamızın derslerde tutmuş olduğu notlar.Biraz düzenleme,ekleme ile daha güzel ve detaylı bir not olabilirdi.Fakat bu haliyle de bazı kullanıcılara yardımcı olabilir.

Notu indirmek için tıklayın .

Kırıkhan MYO Linux Sınavı

MKÜ Kırıkhan Meslek Yüksek Okulu’nda 26-29 Aralık 2010 tarihlerinde gerçekleştrilen 4 günlük Linux eğitiminin ardından yapılan sınav soruları.

17 Sorudan oluşan sınav sorularını indirmek için tıklayın .

Yeni Yıl:2011

Penguen’den yeni yıl mesajı : ” Yeni yılınız kutlu olsun,Hoşgeldin 2011 “

Virtualhostlar için webalizer

Sisteminizde birden çok siteye webalizer istatistiklerini sunmak istiyorsanız bunu birkaç konfigurasyonla yapabiliriz.Örneğin sunucuda " virtual1.example.com" ve " virtual2.example.com " adında iki virtualhostumuz olsun.Bu hostların log dosyaları " /var/log/httpd/virtual1-access_log" ve " /var/log/httpd/virtual2-access_log " olsun. İlk önce sisteminizde "webalizer" kurulu değil ise kurun:

# yum install webalizer

Webalizer sisteme kurulduktan sonra " /etc/webalizer.conf " konumunda konfigurasyon dosyası bulunur.Bizim sistemimizde birden çok site barınacağı için her site için ayrı bir konfigurasyon dosyası oluşturacağız.Bu dosyaları düzenli bir şekilde tutmak için bir klasör oluşturup onun içinde bulunduralım.

# mkdir /etc/webalizer #mv /etc/webalizer.conf /etc/webalizer/webalizer.conf.example (Eski ayar dosyasını örnek olarak saklayalım) #touch /etc/webalizer/virtualhost1.conf (birinci sitemiz için ayar dosyasımızı oluşturduk.) #touch /etc/webalizer/virtualhost2.conf (İkinci sitemiz için ayar dosyamızı oluşturduk) #mkdir /var/www/virtual1/stats (İstatiskleri yayınlayacağımız dizini oluşturduk.) #mkdir /var/www/virtual2/stats

Artık sitelerimiz için ayarları dosylarına girebiliriz.

virtual1.conf :

LogFile /var/log/httpd/virtual1-access_log OutputDir /var/www/virtual1/stats HistoryName /var/lib/webalizer/virtual1.hist Incremental yes IncrementalName /var/lib/webalizer/virtual1.current HostName virtual1.example.com PageType htm* PageType cgi PageType php PageType shtml DNSCache /var/lib/webalizer/dns_cache.db DNSChildren 10 Quiet yes FoldSeqErr yes HideURL *.gif HideURL *.GIF HideURL *.jpg HideURL *.JPG HideURL *.png HideURL *.PNG HideURL *.svg HideURL *.SVG SearchEngine yahoo.com p= SearchEngine google.com q= SearchEngine msn.com MT= SearchEngine bing.com q=

virtual2.conf :

LogFile /var/log/httpd/virtual2-access_log OutputDir /var/www/virtual2/stats HistoryName /var/lib/webalizer/virtual2.hist Incremental yes IncrementalName /var/lib/webalizer/virtual2.current HostName virtual2.example.com PageType htm* PageType cgi PageType php PageType shtml DNSCache /var/lib/webalizer/dns_cache.db DNSChildren 10 Quiet yes FoldSeqErr yes HideURL *.gif HideURL *.GIF HideURL *.jpg HideURL *.JPG HideURL *.png HideURL *.PNG HideURL *.svg HideURL *.SVG SearchEngine yahoo.com p= SearchEngine google.com q= SearchEngine msn.com MT= SearchEngine bing.com q=

Böylece ayarlarımızı dosyalarımıza işledik.Şimdi istatistiklerimizi cron düzenli bir şekilde yenilenen hale getirelim. " /etc/cron.daily/webalizer " dosyasını aşağıdaki gibi değiştirin :

/etc/cron.daily/webalizer :

#!/bin/bash if [ -s /var/log/httpd/virtual1-access_log ]; then /usr/bin/webalizer -Q -c /etc/webalizer/virtual1.conf fi if [ -s /var/log/httpd/virtual2-access_log ]; then /usr/bin/webalizer -Q -c /etc/webalizer/virtual2.conf fi

Bu konfigurasyonu da yaptıktan sonra ilk istatistiklerimizi aşağıdaki komut ile oluşturalım :

# for i in /etc/webalizer/*.conf; do webalizer -c $i; done

" /etc/httpd/conf.d/webalizer " dosyasındaki ayarlarınızı düzelttikten sonra tarayıcıdan istatistiklere http://virtual1.example.com/stats ve http://virtual2.example.cpm/stats adreslerinden bakabiliriz.