Разные заметки

понедельник, 23 июля 2012 г.

Установка Asterisk на Debian

Буду краток. Одни команды.


1. Подготовка системы:
Установка необходимых пакетов. Архиваторов. Утилиту Screen.


2. Настройка ядра:
uname -a                     -> выдает Linux srv93 2.6.32-5-amd64 #1 SMP Sun May 6 04:00:17 UTC 2012 x86_64 GNU/Linux
aptitude install linux-source-2.6.32

tar xjf /usr/src/linux-source-2.6.32.tar.bz2

ln -s /usr/src/linux-source-2.6.32 /usr/src/linux

cd /usr/src/linux

make clean && make mrproper

cp /boot/config-2.6.32-5-amd64 ./.config

make menuconfig
Выставляем опции:

Processor type and features >> Timer frequency = 1000 Hz.
Processor type and features >> [*]High Resolution Timer Option
Device Drivers >> Character Devices >> [*]HPET Timer Support

Device Drivers >> [*]Enchanced Real Time Clock Support
Library Routines >> [*]CONFIG_CRC_CCITT



make-kpkg clean

fakeroot make-kpkg --initrd --append-to-version=-mycustom kernel_image kernel_headers

dpkg -i *.deb

3. Настройка загрузки нового ядра:
grep menuentry /boot/grub/grub.cfg
nano /etc/default/grub
update-grub
grep menuentry /boot/grub/grub.cfg
reboot

uname -a             -> выдает Linux srv93 2.6.32-mycustom #1 SMP Mon Jul 23 15:05:23 MSK 2012 x86_64 GNU/Linux


4. Установка пакетов Asterisk.

aptitude install asterisk-1.6.2 asterisk-config asterisk-mp3 libasterisk-agi-perl python-asterisk

Следующие НОВЫЕ пакеты будут установлены:
  asterisk asterisk-config asterisk-core-sounds-en-gsm{a} asterisk-mp3 dahdi{a} dahdi-linux{a} debhelper{a} freetds-common{a} fxload{a} html2text{a}
  libasound2{a} libasterisk-agi-perl libc-client2007e{a} libcorosync4{a} libdirectfb-1.2-9{a} libflac8{a} libgmime-2.0-2a{a} libgsm1{a} libiksemel3{a}
  libjack-jackd2-0{a} libjpeg62{a} libnspr4-0d{a} libnss3-1d{a} libogg0{a} libopenais3{a} libopencore-amrnb0{a} libopencore-amrwb0{a} libopenr2-3{a}
  libperl5.10{a} libpq5{a} libpri1.4{a} libradiusclient-ng2{a} libresample1{a} libsdl1.2debian{a} libsdl1.2debian-alsa{a} libsndfile1{a} libsnmp-base{a}
  libsnmp15{a} libsox-fmt-alsa{a} libsox-fmt-base{a} libsox1b{a} libspandsp2{a} libspeex1{a} libspeexdsp1{a} libsqlite0{a} libss7-1{a} libsvga1{a}
  libsybdb5{a} libsysfs2{a} libtiff4{a} libtonezone2.0{a} libts-0.0-0{a} libvorbis0a{a} libvorbisenc2{a} libvorbisfile3{a} libvpb0{a} libwavpack1{a}
  libx86-1{a} mlock{a} module-assistant{a} odbcinst{a} odbcinst1debian2{a} python-asterisk sox{a} tsconf{a} unixodbc{a} vpb-driver-source{a}
0 пакетов обновлено, 67 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено.
Необходимо получить 19,6 MB архивов. После распаковки 50,1 MB будет занято.
На...Зачем это все? ну ладно...

/etc/init.d/asterisk stop

5. Настройка fail2ban

Конфигурация fail2ban:
Создадим новый фильтр.
Код:
touch /etc/fail2ban/filter.d/asterisk.conf

Содержимое файла /etc/fail2ban/filter.d/asterisk.conf должно быть таким:
Код: 
# Fail2Ban configuration file
#
#
# $Revision: 250 $
#

[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 "" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P\S+)
# Values:  TEXT
#

failregex = NOTICE.* .*: Registration from '.*' failed for '' - Wrong password
            NOTICE.* .*: Registration from '.*' failed for '' - No matching peer found
            NOTICE.* .*: Registration from '.*' failed for '' - Username/auth name mismatch
            NOTICE.* .*: Registration from '.*' failed for '' - Device does not match ACL
            NOTICE.* .*: Registration from '.*' failed for '' - Peer is not supposed to register
            NOTICE.* failed to authenticate as '.*'$
            NOTICE.* .*: No registration for peer '.*' \(from \)
            NOTICE.* .*: Host failed MD5 authentication for '.*' (.*)
            NOTICE.* .*: Failed to authenticate user .*@.*

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

в переменную ignoreregex через запятую, можете прописать ip, которые не будут блокироваться.

Следующим шагом мы редактируем файл /etc/fail2ban/jail.conf. В самый низ данного файла помещаем новый блок:
Код: 
[asterisk-iptables]
enabled  = true
filter   = asterisk
action   = iptables-allports[name=ASTERISK, protocol=all]
         sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@example.org]
logpath  = /var/log/asterisk/full
maxretry = 5
bantime = 259200

тут у нас следующая ситуация:
fail2ban@example.org - email куда будут отправляться репорты о банах
logpath = /var/log/asterisk/full - лог, который анализируется (смотрите куда пишется у вас лог)
maxretry = 5 - число неправильных попыток авторизации
bantime = 259200 - время бана в секундах

теперь включим полное логирование нашего asterisk:
Правим файл /etc/asterisk/logger.conf.
Должно получиться примерно такое:
Код: 
[general]
dateformat=%F %T;

; Logging Configuration
;
; In this file, you configure logging to files or to
; the syslog system.
;
; For each file, specify what to log.
;
; For console logging, you set options at start of
; Asterisk with -v for verbose and -d for debug
; See 'asterisk -h' for more information.
;
; Directory for log files is configures in asterisk.conf
; option astlogdir
;
[logfiles]
;
; Format is "filename" and then "levels" of debugging to be included:
;    debug
;    notice
;    warning
;    error
;    verbose
;
; Special filename "console" represents the system console
;
;debug => debug
; The DTMF log is very handy if you have issues with IVR's
;dtmf => dtmf
;console => notice,warning,error
;console => notice,warning,error,debug
messages => notice,warning,error
full => notice,warning,error,debug,verbose

;syslog keyword : This special keyword logs to syslog facility
;
;syslog.local0 => notice,warning,error
;


ну и последний шаг, перезагрузим наши сервисы:
Код: 
/etc/init.d/fail2ban restart
 и
Код: 
service iptables restart
cp /etc/asterisk /etasterisk/asterisk.bak

Установка закончена.