среда, 5 февраля 2014 г.

xtables-addons geoip баним страны

Для блокировки трафика с конкретных стран существует модуль ядра xt_geoip.ko.Приступим к его установке.Скачиваем и распаковываем исходники: 

# cd /usr/src/
# wget http://sourceforge.net/projects/xtables-addons/files/Xtables-addons/2.4/xtables-addons-2.4.tar.xz
# tar xfJ xtables-addons-*
# rm xtables-addons-2.4.tar.xz*
# cd xtables-addons-2.4/

Увеличим максимальное количество стран для одного правила.


sed -i "s#XT_GEOIP_MAX = 15#XT_GEOIP_MAX = 50#g" ./extensions/xt_geoip.h

Устанавливаем необходимые для сборки пакеты:

aptitude install checkinstall pkg-config iptables-dev libtext-csv-xs-perl

Устанавливаем заголовки текущего ядра:

aptitude install linux-headers-$(uname -r)

Собираем модуль:

./configure
make
checkinstall

Включаем модуль xt_geoip.ko:

depmod && depmod -A
modprobe xt_geoip

Проверяем:

root# lsmod|grep geoip
xt_geoip               12591  0
x_tables               19118  8 ip_tables,iptable_filter,iptable_nat,xt_tcpudp,xt_limit,ipt_LOG,xt_state,xt_geoip

Скачиваем и устанавливаем базы GeoIP:

/usr/local/libexec/xtables-addons/xt_geoip_dl
mkdir /usr/share/xt_geoip -p
/usr/local/libexec/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip ./GeoIPCountryWhois.csv

На этом установка и настройка модуля закончена. Примеры использования:Блокируем трафик с Китая:

iptables -A INPUT -m geoip --source-country CN -j DROP

Запрещаем трафик если он не из России или локальной сети:

iptables -I INPUT ! -i lo -m geoip ! --src-cc RU -j DROP


iptables addons geoip Баним страны

sudo apt-get install iptables-dev unzip dh-make dh-autoreconf  dkms build-essential  linux-headers-$(uname -r)libtext-csv-xs-perl
# cd /usr/src
# apt-get source xtables-addons-common

# cd xtables-addons*
# dpkg-buildpackage -d && cd ..    без -d не пошло 
# dpkg -i *.deb
# modinfo xt_geoip
# cd /var/tmp
# /usr/lib/xtables-addons/xt_geoip_dl 
Downloaded: 2 files, 2,9M in 5,8s (508 KB/s)
Archive:  GeoIPCountryCSV.zip
  inflating: GeoIPCountryWhois.csv

# ls
GeoIPCountryCSV.zip  GeoIPCountryWhois.csv  GeoIPv6.csv

# /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip ./GeoIPCountryWhois.csv
Запрещаем все кроме RU
# iptables -A INPUT ! -i lo -m geoip ! --source-country RU -j DROP  
iptables-save > /etc/iptables.up.rules
/etc/network/if-pre-up.d/iptables
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules

                                                                                                              Помогло это

воскресенье, 2 февраля 2014 г.

Asterisk iptables

iptables -A INPUT -p udp --dport 5060 -m recent --update --seconds 1 --hitcount 20 --name SIP
    -j LOG --log-prefix "SIP flood detected: "
iptables -A INPUT -p udp --dport 5060 -m recent --update --seconds 1 --hitcount 20 --name SIP-j DROP

суббота, 1 февраля 2014 г.

How to Install Asterisk 11 on Ubuntu x32 or x64 bit

apt-get update && apt-get upgrade -y && reboot

apt-get install build-essential wget libssl-dev libncurses5-dev libnewt-dev  libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev

cd /usr/src/

tar zxvf dahdi-linux-complete*
tar zxvf libpri*
tar zxvf asterisk*

cd /usr/src/dahdi-linux-complete*

make && make install && make config

cd /usr/src/libpri*

make && make install

cd /usr/src/asterisk*

For mp3 support :
contrib/scripts/get_mp3_source.sh

Do not forgot about Failed to authenticate device

For KVM virtual:
./configure CFLAGS=-mtune=native && make menuselect && make && make install && make config && make samples

For x64 bit :
./configure --libdir=/usr/lib64 && make menuselect && make && make install && make config && make samples

For x32 bit :
./configure && make menuselect && make && make install && make config && make samples

/etc/init.d/dahdi start

/etc/init.d/asterisk start

asterisk -rvvv

*CLI> dahdi show version
DAHDI Version: 2.6.1 Echo Canceller: HWEC
*CLI> pri show version
libpri version: 1.4.13

Asterisk 11. Failed to authenticate device

Надоели Failed to authenticate device zxcf<sip:zxcf@ip.ser.vera.com>;tag=483581ae в Asterisk 11.x.0?

cd /usr/src/asterisk-11*

vi channels/chan_sip.c

:? Failed to authenticate device 
меняем следующие строки ( минус - то что было, + на то что надо поменять) 

 примерная строка номер 18520       

   return;

        }        

if (res < 0) { /* Something failed in authentication */ 

-       ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", sip_get_header(req, "From")); 

+         ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));

           transmit_response(p, "403 Forbidden", req);

           sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);

           return; 

Строка примерно 24616  

      return 0;

        }        if (res < 0) { /* Something failed in authentication */ 

-         ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", sip_get_header(req, "From")); 

+         ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));

           transmit_response(p, "403 Forbidden", req);

           sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);

           return 0; 

 Строка примерно 25279

           goto request_invite_cleanup;

        }        if (res < 0) { /* Something failed in authentication */ 

-         ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", sip_get_header(req, "From")); 

+         ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));

           transmit_response_reliable(p, "403 Forbidden", req);

           p->invitestate = INV_COMPLETED;

           sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT); 

Строка примерно 27325

      p->lastinvite = seqno;

        return 0;

     } else if (auth_result < 0) { 

-      ast_log(LOG_NOTICE, "Failed to authenticate device %s\n", sip_get_header(req, "From")); 

+      ast_log(LOG_NOTICE, "Failed to authenticate device %s (%s)\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));

        transmit_response(p, "403 Forbidden", req);

        sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);        ast_string_field_set(p, theirtag, NULL);

  

Строка примерно 27540

      if (res == AUTH_CHALLENGE_SENT)   /* authpeer = NULL here */           return 0;

        if (res != AUTH_SUCCESSFUL) { 

-         ast_log(LOG_NOTICE, "Failed to authenticate device %s for SUBSCRIBE\n", sip_get_header(req, "From")); 

+         ast_log(LOG_NOTICE, "Failed to authenticate device %s for SUBSCRIBE (%s)\n", sip_get_header(req, "From"), ast_sockaddr_stringify(addr));

           transmit_response(p, "403 Forbidden", req);

           pvt_set_needdestroy(p, "authentication failed");

 

Строки Failed to authenticate device on .... менять не нужно