fail2ban asterisk ayarları

fail2ban

Asterisk sunucumuzu bazı nedenlerden dolayı internete ortamına açmak durumunda kalırız. Sistemimizi dışarıdan gelebilecek saldırılara karşı korumak için de bir takım önlemler almamız gerekir. fail2ban da bunlardan birtanesi. Bu yazımızda fail2ban ve asterisk ayarlarını yapıp neler yapabiliyoruz kısaca bir göz atalım.

fail2ban nedir?

fail2ban sistemdeki belirli servislere ait log dosyalarını kontrol ederek izinsiz giriş denemesi olup olmadığını kontrol eder ve bizim belirlediğimiz kriterlere göre ne yapacağına karar verir. Örneğin 1 saat içerisinde 3 adet başarısız giriş denemesi olursa IP yi blokla diyebiliriz. fail2ban da log dosyalarında bu kriterlere uyan bir eşleşme görürse ilgili IP yi  iptables a ekler ve sisteme erişimini engeller. Engellemenin süresini yine biz belirliyoruz.

fail2ban ı yüklemek için konsol a aşağıdaki komutu girmemiz yeterli.

yum install fail2ban

Eğer elastix in yeni sürümlerini kullanıyorsanız fail2ban sisteminizde yüklüdür. Doğrudan etkinleştirip ayarlara başlayabilirsiniz.

fail2ban ın asterisk loglarını anlayabilmesi için logger conf dosyasında bazı değişiklikler yapmamız gerekli.

/etc/asterisk/logger.conf dosyasını açalım ve aşağıdaki değişiklikleri yapalım.

[general]
dateformat=%F %T

[logfiles]

console => notice,warning,error,debug
messages => notice,warning,error

ve logger ı yeniden başlatalım

asterisk -rx "logger reload"

asterisk.conf dosyasını oluşturalım

nano /etc/fail2ban/filter.d/asterisk.conf

Bu dosya aşağıdaki gibi olmalı.

# Fail2Ban configuration file
#
#
# $Revision: 251 $
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

#_daemon = asterisk

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
#
# Asterisk 1.8 uses Host:Port format which is reflected here

failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Username/auth name mismatch
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Device does not match ACL
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Peer is not supposed to register
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - ACL error (permit/deny)
            NOTICE.* .*: Registration from '.*' failed for '<HOST>:.*' - Device does not match ACL
            NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>:.*' - No matching peer found
            NOTICE.* .*: Registration from '\".*\".*' failed for '<HOST>:.*' - Wrong password
            NOTICE.* <HOST> failed to authenticate as '.*'$
            NOTICE.* .*: No registration for peer '.*' \(from <HOST>\)
            NOTICE.* .*: Host <HOST> failed MD5 authentication for '.*' (.*)
            NOTICE.* .*: Failed to authenticate user .*@<HOST>.*
            NOTICE.* .*: <HOST> failed to authenticate as '.*'
            NOTICE.* .*: <HOST> tried  to authenticate with nonexistent user '.*'
            VERBOSE.*SIP/<HOST>-.*Received incoming SIP connection from unknown peer

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =
nano /etc/fail2ban/jail.conf

jail.conf dosyasında da aşağıdaki değişiklikleri yapalım

[DEFAULT]
bantime = 3600
findtime = 21600
maxretry = 3
backend = auto

[asterisk-iptables]
# if more than 4 attempts are made within 6 hours, ban for 24 hours
enabled  = true
filter   = asterisk
action   = iptables-allports[name=ASTERISK, protocol=all]
              sendmail[name=ASTERISK, [email protected], [email protected]]
logpath  = /var/log/asterisk/messages
maxretry = 4
findtime =21600
bantime = 86400

Burada findtime ve bantime saniye cinsinden giriliyor. Bu örnekte findtime 21600 saniye yani 6 saat girilmiş. Eğer 6 saat içerisinde 4 hatalı deneme (maxretry=4) olursa 86400 saniye yani 24 saat bu ip den gelen istekler kabul edilmeyecek.

Servislerimizi çalıştıralım

/etc/init.d/iptables start
/etc/init.d/fail2ban start

Son olarak ta sistemin restart olması durumunda otomatik olarak başlaması için gereken komutları yazalım.

chkconfig iptables on
chkconfig fail2ban on

fail2ban asterisk ayarları” için 6 yorum

  • 20 Eylül 2013 tarihinde, saat 15:34
    Permalink

    jail conf un içine direk verdiğiniz kodumu yapıştırağız yoksa editlememiz gereken yerler varmı çünki servisi start ettim hata aldım line :278 tarzı yazıyla

    Yanıtla
  • 19 Kasım 2013 tarihinde, saat 15:58
    Permalink

    elastixin güvenlik duvarıyla ilgilide makale yayınlarmıısnız

    Yanıtla
  • 14 Ocak 2016 tarihinde, saat 08:51
    Permalink

    merhaba,

    ayarları aynen uyguladım ve servisi restart ederek çalıştırdım fakat hatalı denemelerden sonra ip yi banlamıyor. ssh için yaptığım çalışıyor elastix için yaptığım çalışmadı. deneme sayısını 5 e set etmiştim. 10 defa denesemde harekete geçmiyor. 5060,5061 tcp udp portlarını ayarladım. serverda 5060 üzerine ayarlı.

    Yanıtla
  • 14 Ocak 2016 tarihinde, saat 09:04
    Permalink

    asterisk versiyonuna göre conf dosyasında değişiklikler yapmak gerekebiliyor. failregex uyuşmadığı için banlamıyordur muhtemelen.

    Yanıtla
  • 14 Ocak 2016 tarihinde, saat 09:48
    Permalink

    2.4 kullanıyorum orjinal dosyayı paylaşabilirim isterseniz. çok atak olduğu için engellemem gerekli. yardımcı olabilirseniz sevinirim slmlar

    Yanıtla

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir