Hepimizin bildigi uzere son yillarda yazilan cocukca scriptler butun gun ip adreslerini search edip 22. portu acik gordukleri hemen her sunucuda sifre denemesi yapiyorlar. Eger biraz basit bir sifre secmis isekte buyuk ihtimalle sifreyi tutturup scripti calistiran kisiye bu ip de su sifreyi tutturdum diye bilgi veriyorlar..

Bu scriptlerden korunmanin bircok yontemi var. Ornegin ssh i 22 den degilde cok farkli bir porttan calistirabiliriz, ya da sadece belirli ip lere erisim izni verebiliriz, pekiyi ayni durum ftp, mail ya da web servislerinde soz konusu olursa ne yapabiliriz?

Baslarken 

Bu yazimizda sizlere Fail2ban programini Debian 4.0 – Etch isletim sistemimiz uzerine kurulumunu ve basit ayarlarinin yapilmasini anlatacagim. Yazimizda Ssh, Courier-imap, Courier-Pop3, Proftp, Sasl servisleri ve htaccess ile korunan sitelerin brute force a karsi korunmasini saglayacagiz.

Yazi icin kullandigim isletim sistemi Debian 4.0 Etch’ tir. Eger oncelikle Debian kurmak isterseniz daha onceki makalelerimizden yararlanabilirsiniz;

http://fikridal.com/makale/debian-kurulumu-resimli-anlatim/

http://fikridal.com/makale/debian-40-etch-resimli-kurulum-rehberi-2/

http://fikridal.com/makale/debian-40-etch-resimli-kurulum-rehberi-3/

Fail2ban Programinin Kurulumu

[root@dinopsys ~]# apt-get install fail2ban

komutunu calistiralim ve kurulumun tamamlanmasini bekleyelim. Fail2ban kurulumu tamamlandiktan sonra gerekli konfigurasyon dosyalarini /etc/fail2ban klasoru altinda bulabiliriz.

Fail2ban Programinin Konfigurasyonu

[root@dinopsys ~]# vi /etc/fail2ban/jail.local

Sizinde gorebileceginiz gibi dosya son derece basit ve anlasilabilir ama ben yinede yeni kullanicilar icin biraz dosyadan basedecegim.

  • ignoreip = bu bolumde bulunan ip adresleri fail2ban tarafindan bloklanmaz. Ornegin sistem yoneticisinin ip adresi, makinanin local adresi vb. gibi.
  • bantime = brute force yapan ip adreslerinin ne kadar sure boyunca banli kalacagini belirten parametre. Default olarak 600 saniyedir bu da 10 dakikaya tekavul eder.
  • maxrety = Ip adresinin baslanmasi icin kac deneme yapmasi gerekli…
  • filter = filtre isimleri /etc/fail2ban/filter.d dosyasina gorebilirsiniz…
  • logpath = log dosyasinin yolu

Evet basit bir on bilginin ardindan kaldigimiz yerden devam edelim en son dosyamizi editorumuz ile acmistik;

# /etc/fail2ban/jail.local dosyasi

[DEFAULT]

# “ignoreip” can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 192.168.1.69
bantime  = 600
maxretry = 3

# “backend” specifies the backend used to get files modification. Available
# options are “gamin”, “polling” and “auto”.
# yoh: For some reason Debian shipped python-gamin didn’t work as expected
#      This issue left ToDo, so polling is default backend for now
backend = polling

#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost

# Default action to take: ban only
action = iptables[name=%(__name__)s, port=%(port)s]

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 4

[apache]

enabled = true
port    = http
filter  = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 4

[apache-noscript]

enabled = false
port    = http
filter  = apache-noscript
logpath = /var/log/apache*/*error.log
maxretry = 4

[vsftpd]

enabled  = false
port     = ftp
filter   = vsftpd
logpath  = /var/log/auth.log
maxretry = 4

[proftpd]

enabled  = true
port     = ftp
filter   = proftpd
logpath  = /var/log/auth.log
failregex = proftpd: \(pam_unix\) authentication failure; .* rhost=<HOST>
maxretry = 4

[wuftpd]

enabled  = false
port     = ftp
filter   = wuftpd
logpath  = /var/log/auth.log
maxretry = 4

[postfix]

enabled  = false
port     = smtp
filter   = postfix
logpath  = /var/log/mail.log
maxretry = 4

[courierpop3]

enabled  = true
port     = pop3
filter   = courierlogin
failregex = courierpop3login: LOGIN FAILED.*ip=\[.*:<HOST>\]
logpath  = /var/log/mail.log
maxretry = 4

[courierimap]

enabled  = true
port     = imap2
filter   = courierlogin
failregex = imapd: LOGIN FAILED.*ip=\[.*:<HOST>\]
logpath  = /var/log/mail.log
maxretry = 4

[sasl]

enabled  = true
port     = smtp
filter   = sasl
failregex = warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed
logpath  = /var/log/mail.log
maxretry = 4

# Dosya sonu…

Dosyada gorebileceginiz uzere bir cok servis mevcut. Sizde kendinize gore bu servisleri ayarlayabilirsiniz. Dikkat etmeniz gereken log dosyalarinin yoludur…

192.168.1.69 benim kullandigim makinanin ip adresidir. Bu ip adresini ignoreip listesine ekledim.

Kontrol edilmesini istedigim servisleri ekledim ve ekledigim servislerin log dosyalarinin pathlerini belirttim, sonrasinda ise maxretry sayisini 4 olarak atadim. Yani conf ta belirtilen servislerden herhangi birine 4 kez yanlis sifre denemesi yapan ip adresin banlanmasini istedim. Bu rakami kendinize gore istediginiz sekilde degistirebilirsiniz.

ssh, apache, proftpd, courierpop3, courierimap, ve sasl servisleri true olarak isaretledim yani kontrol edilmesini istedim, diger tum servisler false yani kontrol disi kaldilar…

Bazi servislere failregex in eklendigini goreceksiniz. Bunun sebebi fail2ban hail.conf un debian 4.0 icin dogru olmamasi idi..

Simdi yaptigimiz ayarlarin gecerli olabilmesi icin fail2ban servisini yeniden baslatalim;

[root@dinopsys ~]# /etc/init.d/fail2ban restart

Simdi kontrole basliyalim

[root@dinopsys ~]# tail -f /var/log/fail2ban.log

komutu ile failban.log dosyasini kontrol edelim. Burada eger kurallariniza uyan paketler yakalanmissa ip adreslerinin banlandigini gorebilirsiniz.

iptables -L

komutuda ban isleminin gerceklestigini gormenize yarar…

Categories:

Tags:

2 Responses

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir