Você está na página 1de 15

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

Asterisk - Instalao e Congurao


Autor: guilherme gustavo ribeiro de godoi <gustavo.ti at hotmail.com.br> Data: 02/04/2012 Descrio e Dependncias

Descrio
Vamos utilizar o Debian 6.0.4 como S.O., pois mais estvel e de minha preferncia. Utilizamos o Asterisk 1.8.10.1, a verso atual e estvel. Vamos instalar uma interface com 4FXO da Digium. Vamos congurar alguns ramais e o plano de discagem em .conf, entre outras funes. No vamos esquecer de aprender a instalar o suporte a Codec G.729, sem colocar a mo no bolso! Este tutorial foi desenvolvido para prossionais de T.I., que j tm conhecimento com Linux, pois no estarei entrando em muitas explicaes. At mesmo porque, j tem muita coisa na Internet, e o que falta mesmo so as conguraes.

Dependncias
Vamos criar o arquivo dependencias.sh: # touch dependencias.sh Agora, edite o arquivo adicionando o contedo abaixo:
#!/bin/sh ####################################################################### # Script criado por Alexandre Keller # # Objetivo: Instalacao das dependecias do Linux: # - Linux: Distro Debian Lenny # - Apache: 2.0

1 of 15

04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

# - MySQL: 5.0 # - PHP: 5.0 # # Data criacao: 03/09/2008 # Data ultima alteracao: 27/06/2009 ####################################################################### # # Instalacao das dependencias do Linux echo "-" echo "-" echo "deb http://ftp.br.debian.org/debian/ squeeze main" > /etc/apt /sources.list echo "deb-src http://ftp.br.debian.org/debian/ squeeze main" >> /etc/apt /sources.list echo "deb http://security.debian.org/ squeeze/updates main" >> /etc/apt /sources.list echo "deb-src http://security.debian.org/ squeeze/updates main" >> /etc/apt /sources.list echo "deb http://volatile.debian.org/debian-volatile squeeze/volatile main" >> /etc/apt/sources.list echo "deb-src http://volatile.debian.org/debian-volatile squeeze/volatile main" >> /etc/apt/sources.list /usr/bin/aptitude -y update echo "-" echo "-" echo "Instalando as dependencias do Linux..." /usr/bin/aptitude -y install linux-headers-`uname -r` /usr/bin/aptitude -y install acpid \ apache2 \ apache2.2-common \ apache2-mpm-prefork \ apache2-utils \ autoconf \ automake \ binutils \ bison \ bzip2 \ doxygen \ exim4 \ g++ \ g++-4.1 \ gcc \ graphviz \ gsfonts \ less \ libapache2-mod-php5 \ libapache2-mod-perl2 \ libasound2-dev \

2 of 15

04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

libc6-dev \ libcurl3 \ libcurl3-dev \ libdbd-mysql-perl \ libedit2 \ libedit-dev \ libeditline0 \ libeditline-dev \ libgcrypt11 \ libiksemel3 \ libiksemel-dev \ libmcrypt4 \ libmcrypt-dev \ libmhash2 \ libmyodbc \ libmysqlclient15-dev \ libmysqlclient15off \ libncurses5 \ libncurses5-dev \ libnewt0.52 \ libnewt-dev \ libogg-dev \ libsnmp \ libsnmp-dev \ libsnmp-base \ libsnmp-perl \ libspandsp1 \ libspandsp-dev \ libspeex1 \ libspeex-dev \ libssl0.9.8 \ libssl-dev \ libtiff4-dev \ libtiff-tools \ libvorbis-dev \ libwrap0-dev \ libxml2 \ libxml2-dev \ lrzsz \ make \ mc \ mcrypt \ mime-construct \ mysql-server-5.0 \ ngrep \ ntp \ ntpdate \ openssh-server \ openssl \ patch \ pciutils \ php5 \ php5-cgi \ php5-cli \ php5-common \ php5-gd \ php5-mcrypt \ php5-mysql \ php-pear \ procps \ sox \ tofrodos \ unixodbc-dev \ unzip \

3 of 15

04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

vim \ zlib1g-dev # # FIM DO SCRIPT DE INSTALACAO DO IPBX # #######################################################################

Salve o arquivo, e d permisso de execuo com o comando: # chmod +x dependencias.sh Agora vamos executar o comando: # ./dependencias.sh Aps a instalao, reinicie o sistema com: # reboot E execute novamente: # ./dependencias.sh Pronto. Com isto, seu sistema est atualizado e com todas as dependncias instaladas com sucesso. Instalao, Codec G.729 e Sip.conf

Instalao
Vamos baixar os pacotes compactados, com o comando 'Wget', da verso atual e estvel do Asterisk, no meu caso utilizei a verso 1.8.10.1: $ cd /usr/src # wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases /dahdi-linux-complete-2.6.0+2.6.0.tar.gz # wget http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.12.tar.gz # wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk1.8.10.1.tar.gz Como estamos instalando a verso 1.8 do Asterisk, no necessita baixar o 'asteriskaddons'. Descompactando o Asterisk: $ cd /usr/src

4 of 15

04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

# tar zxvf dahdi-linux-complete-2.6.0+2.6.0.tar.gz # tar zxvf libpri-1.4.12.tar.gz # tar zxvf asterisk-1.8.10.1.tar.gz Compilando e instalando o Asterisk: - DAHDI: # # # # cd /usr/src/dahdi-linux-complete-2.6.0+2.6.0 make make install make cong

- LibPRI: # cd /usr/src/libpri-1.4.12 # make # make install - Asterisk: # # # # # # cd /usr/src/asterisk-1.8.10.1 ./congure make make install make samples make cong

Bom, j estamos com nosso Asterisk instalado e rodando perfeitamente, se tudo ocorreu bem at aqui. Entre no console do Asterisk com o comando: # rasterisk -vvvvv Para sair, basta digitar 'exit', e pressionar ENTER. * S v para o prximo passo, se tudo ocorreu bem at aqui!

Codec G.729
Bom, vamos melhorar a qualidade de compreenso dos pacotes com o Codec G.729. Infelizmente, os Softfone Open Source (ou grtis) no trabalham com ele, portanto, precisa vericar se o seu Softfone ou IPFONE, tem suporte a Codec G.729. Vamos visitar o site: http://asterisk.hosting, e conhecer um pouco mais sobre o Codec

5 of 15

04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

G.729 e seu funcionamento. Para instalar o Codec, precisamos saber a verso do Asterisk, o processador e quantos bits tem seu sistema operacional, se 32 ou 64 bits. No meu caso, uso um Xeon com S.O. 32 bits: # cd /usr/src # wget http://asterisk.hosting.lv/bin/codec_g729-ast18-gcc4-glibc-x86_64-pentium4.so Vamos copiar o Codec baixando para /usr/lib/asterisk/modules, com o comando: # mv /usr/src/codec_g729-ast18-gcc4-glibc-x86_64-pentium4.so /usr/lib /asterisk/modules Agora, vamos dar permisso de execuo para nosso arquivo: # chmod +x codec_g729-ast18-gcc4-glibc-x86_64-pentium4.so Reinicie o Asterisk com o comando: # /etc/init.d/asterisk restart Agora, vamos acessar a console do Asterisk e digitar o comando: core show translation recalc 10 E veja se esta habilitado o Codec G.729. Se sim, o suporte ao Codec foi realizado com sucesso!

Sip.conf
Vamos adicionar os ramais do nosso IPBX, para isso, precisamos congurar o sip.conf. Vamos renomear o arquivo padro como sip.conf_old com o comando: # mv /etc/asterisk/sip.conf /etc/asterisk/sip.conf_old Agora vamos criar o arquivo sip.conf, e editar o mesmo com o seguinte contedo: # vim /etc/asterisk/sip.conf
[general] bindport=5060 bindaddr=0.0.0.0 disallow=all allow=g729 allow=gsm

6 of 15

04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

[template](!) type=friend host=dynamic context=ramais qualify=no language=pt_BR callgroup=1 pickupgroup=1 nat=yes dtmfmode=rfc2833 [9000](template) secret=1234 callerid=9000 [9001](template) secret=1234 callerid=9001 [9002](template) secret=1234 callerid=9002 [9003](template) secret=1234 callerid=9003

Salve o arquivo e saia. Feito este passo, estamos com os ramais congurados e agora precisamos criar o nosso plano de discagem. Antes disso, vamos ao console do Asterisk e digitar: sip reload Extensions.conf e Placa Digium

Extensions.conf
Vamos renomear o arquivo padro como "extensions.conf_old", para isso use o comando: # mv /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf Agora vamos criar o arquivo "extensions.conf', e editar o mesmo com o seguinte contedo: # vim /etc/asterisk/extensions.conf

7 of 15

04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

[general] autofallthrough=no

;ramais [macro-ramal] exten=>s,1,dial(${ARG1}/${ARG2},20,tTwW) exten=>s,n,goto(${DIALSTATUS},1) exten=>BUSY,1,voicemail(${ARG2},b) exten=>NOANSWER,1,voicemail(${ARG2},u) exten=>CHANUNAVAIL,1,voicemail(${ARG2},u)

[ramais] exten=>_90XX,1,Macro(ramal,SIP,${EXTEN},tT) exten=>90,1,Answer exten=>90,n,voicemailmain(${CALLERID(num)}@default) exten=>90,n,hangup exten=>91,1,answer exten=>91,n,directory(default,ramais) exten=>91,n,hangup output pstn exten=>s,1,Answer exten=>s,n,Dial(SIP/9000,35,tT)

;Linhas da Telefonica

;local exten=>_NXXXXXXX,1,Dial(Dahdi/G1/${EXTEN},40,tT) ;DDD exten=>_0ZZZZNXXXXXXX,1,Dial(Dahdi/G1/${EXTEN},40,tT) ;DDI exten=>_00ZZZZXXXXX.,1,Dial(Dahdi/G1/${EXTEN},55,tT) ;Ligar 0800 exten=>_0800.,1,Dial(Dahdi/G1/${EXTEN},35,tT) ;Ligar 0300 exten=>_0300XXXXXXX,1,Dial(Dahdi/G1/${EXTEN},35,tT)

;Ligar 0500 exten=>_0500XXXXXXX,1,Dial(Dahdi/G1/${EXTEN},35,tT) ;ligar tel. exten=>_10.,1,DIAL(Dahdi/G1/${EXTEN},35,tT)

Salve o arquivo e saia. Como podem ver, eu gosto de comentar as linhas para a facilidade em resoluo de problemas e identicao.
8 of 15 04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

Este um plano de discagem bsico, na verdade, eu uso e recomendo o '.AEL', que veremos em um prximo tutorial. Nele, organizamos melhor e ca uma programao mais limpa. V at a console do Asterisk e digite: dialplan reload

Congurando a placa Digium


Neste passo do nosso tutorial, vamos congurar uma interface da Digium com 4 FXO, no vou entrar em detalhes sobre a placa e os mdulos FXO, pois isso tem de monte na Internet. Vamos fazer um congurao bsica e limpa para o funcionamento do nosso IPBX. Utilizaremos o cancelamento de eco via software. Com a placa conectada digite: $ lspci E verique a sada do comando identicando sua placa. Encontrado a nossa placa Digium, vamos prosseguir com o carregamento dos mdulos: modprob dahdi modprob wctdm Agora, digitamos os comandos: dahdi_cfg dahdi_genconf Feito isto, foi criado os arquivos com as conguraes padres, vamos altera-las deixando-as limpas e de fcil entendimento. # vim /etc/dahdi/system.conf

9 of 15

04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

# Span 1: WCTDM/0 "Wildcard TDM410P" (MASTER) fxsks=1-4 echocanceller=mg2,1-4 # Global data loadzone defaultzone = br = br

Salve e saia do arquivo. Agora, vamos editar o arquivo: # vim /etc/asterisk/dahdi_channels.conf


; Span 1: WCTDM/0 "Wildcard TDM410P" (MASTER) ;;; line="1 WCTDM/0/0 FXSKS (In use) (EC: MG2 - INACTIVE)" signalling=fxs_ks callerid=asreceived group=1 context=ramais channel=>1-4

Salve e saia do arquivo. Agora vamos editar o arquivo: # vim /etc/asterisk/chan_dahdi.conf


[trunkgroups] [channels] context=ramais language=pt_BR signalling=fxs_ks echocancel=yes echocancelwhenbridged=yes echotraining=yes busydetect=yes busycount=6 group=1 channel=1-4

Salve e saia do arquivo. Agora vamos no console do Asterisk e vericar se ele j reconheceu a nossa interface com o comando: dahdi show channels

10 of 15

04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

Caso tiver uma sada com informaes dos canais, ocorreu tudo certo. Se voc seguiu com sucesso todos os passo de nosso tutorial, seu Asterisk j esta fazendo ligaes e recebendo chamadas no ramal 9000. Faa os testes de ligar para um ramal e um telefone ou celular, e depois ligue em nosso IPBX e perceba que ir tocar apenas o ramal 9000, que foi congurado em nosso plano de discagem em: outpout pstn Script de Firewall e Consideraes

Script de Firewall
No podemos esquecer da segurana de nosso servidor de telefonia, para isso, vamos fazer um Firewall intermedirio no IPtables. Segue o nosso Script de Firewall padro para IPBX: Crie o arquivo "rewall.sh" em "/etc/init.d" e d permisso de execuo para ele: # touch rewall.sh # chmod+x rewall.sh Agora, vamos editar o arquivo adicionado o seguinte contedo: # vim /etc/init.d/rewall.sh
#!/bin/bash ################################################## ###########SHR - Network Solution################# ################################################## #mensagem de inicializao "| Script de Firewall - SecuritySHR" echo "| Criado por:Guilherme Ribeiro" echo "| Uso: firewall start|stop|restart" echo echo "============================================= |" echo "|:INICIANDO A CONFIGURAO DO FIREWALL NETFILTER ATRAVA:|" echo "|: DO IPTABLES :|" echo "============================================= |" iniciar(){ #Declarando Variaveis LAN=eth1 WAN=eth0 REDE=192.168.1.0/24 # Abre para a interface de loopback: iptables -A INPUT -p tcp -i lo -j ACCEPT

11 of 15

04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

# Abre as portas referentes aos servios: # SSH: iptables -A INPUT -p tcp --dport 5322 -j ACCEPT # DNS: iptables -A INPUT -p tcp --dport 53 -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT # HTTP e HTTPS: iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT #IAX2 iptables -A INPUT -p udp --dport 4569 -j ACCEPT #Manager do Asterisk iptables -A INPUT -p tcp --dport 5038 -j ACCEPT #Sinalizacao SIP iptables -A INPUT -p udp --dport 5060 -j ACCEPT #RTP iptables -A INPUT -p udp --dport 10000:20000 -j ACCEPT #Webmin iptables -A INPUT -p tcp --dport 10000 -j ACCEPT #Mysql iptables -A INPUT -p udp --dport 3306 -j ACCEPT #Bacula iptables -A INPUT -p udp --dport 9101:9103 -j ACCEPT iptables -A INPUT -p tcp --dport 9101:9103 -j ACCEPT # Segurana### echo Seguranca da rede, Firewall e gerando logs de portas iptables -A INPUT -p icmp --icmp-type echo-request -j DROP echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter ### Impedindo ataque Ping of Death no Firewall iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT ### Descarte de pacotes nao identificados ICMP iptables -A OUTPUT -m state -p icmp --state INVALID -j DROP iptables -A INPUT -m state -p icmp --state INVALID -j DROP iptables -A FORWARD -m state -p icmp --state INVALID -j DROP ### Impedindo ataque Ping of Death na rede iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT ### Impedindo ataque de Denial Of Service Dos na rede e servidor iptables -I FORWARD -p tcp -m limit --limit 1/s -j ACCEPT iptables -A INPUT -p tcp -m limit --limit 1/s -j ACCEPT ### Impedindo ataque Port Scanners na rede e no Firewall

12 of 15

04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT iptables -I INPUT -p udp --dport 33435:33525 -j LOG --log-level info --logprefix 'SCANNERS DROPADO>' iptables -A INPUT -p udp --dport 33435:33525 -j DROP iptables -I FORWARD -p udp --dport 33435:33525 -j LOG --log-level info --log-prefix 'SCANNERS DROPADO NA REDE>' iptables -A FORWARD -p udp --dport 33435:33525 -j DROP ### Bloquear Back Orifice na rede iptables -I INPUT -p tcp --dport 31337 -j LOG --log-level info --log-prefix 'ORIFICE DROPADO>' iptables -A INPUT -p tcp --dport 31337 -j DROP iptables -I INPUT -p udp --dport 31337 -j LOG --log-level info --log-prefix 'ORIFICE UDP>' iptables -A INPUT -p udp --dport 31337 -j DROP iptables -I FORWARD -p tcp --dport 31337 -j LOG --log-level info --logprefix 'ORIFICE NA REDE>' iptables -A FORWARD -p tcp --dport 31337 -j DROP iptables -I FORWARD -p udp --dport 31337 -j LOG --log-level info --logprefix 'ORIFICE NA REDE UDP>' iptables -A FORWARD -p udp --dport 31337 -j DROP ### Bloquear NetBus na rede iptables -I INPUT -p tcp --dport 12345 -j LOG --log-level info --log-prefix 'NETBUS >' iptables -A INPUT -p tcp --dport 12345 -j DROP iptables -I INPUT -p udp --dport 12345 -j LOG --log-level info --log-prefix 'NETBUS UDP>' iptables -A INPUT -p udp --dport 12345 -j DROP iptables -I FORWARD -p tcp --dport 12345 -j LOG --log-level info --logprefix 'NETBUS NA REDE>' iptables -A FORWARD -p tcp --dport 12345 -j DROP iptables -I FORWARD -p udp --dport 12345 -j LOG --log-level info --logprefix 'NETBUS UDP>' iptables -A FORWARD -p udp --dport 12345 -j DROP ### Desabilita resposta para pingecho 1 > /proc/sys/net/ipv4 /icmp_echo_ignore_all ### Desabilita port scan echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ### Desabilita redirecionamento de ICMP for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 0 >$f done ### Protecao contra synflood echo "1" > /proc/sys/net/ipv4/tcp_syncookies ### Ativando protecao contra responses bogus echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ### Protecao contra worms iptables -I FORWARD -p tcp --dport 135 -j LOG --log-level info --log-prefix 'WORMS REDE>' iptables -A FORWARD -p tcp --dport 135 -j DROP iptables -I INPUT -p tcp --dport 135 -j LOG --log-level info --log-prefix 'WORMS >'

13 of 15

04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

iptables -A INPUT -p tcp --dport 135 -j DROP ### Bloqueando tracertroute #iptables -A INPUT -p udp -s 0/0 -i $ifinternet --dport 33435:33525 -j REJECT ### Permite o redirecionamento seguro dos pacotes echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects ### IMPEDINDO O REDIRECIONAMENTO E UMA ROTA echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects echo Seguranca Carregada e logs gerados ..... [ok] # Bloqueia conexo demais portas: iptables -A INPUT -p tcp --syn -j DROP # Garante que o firewall permitir conexes: iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Bloqueia as portas UDP de 0 a 1023 (com excees abertas acima): iptables -A INPUT -p udp --dport 0:1023 -j DROP } parar(){ iptables -F iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT } case "$1" in "start") iniciar ;; "stop") parar ;; "restart") parar; iniciar ;; *) echo "Use os parmetros start ou stop" esac

Salve e saia do arquivo. Como podemos vericar, criamos um Script de Firewall de nvel intermedirio caso sua empresa ou escritrio, no conte com um Servidor de Internet ou Firewall.

Consideraes Finais
Bom, seguindo todos nossos passos, estamos com um Servidor IPBX congurado e com recursos de melhoria funcionado. E o mais importante, sem ter que colocar a mo no bolso, anal nada melhor que isso n. Este artigo teve a participao de alguns amigos que compartilharam comigo no decorrer da jornada de trabalho algumas solues e conhecimentos: Alexandre Keller e Danilo Bedani.

14 of 15

04/04/12 13:07

Asterisk - Instalao e Congurao [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?co...

E alguns tpicos na Internet, claro. Caso tenha alguma duvida ou sugesto, estamos sempre disponvel para novas ideias. Tenho uma empresa que vende esta e outras solues de telefonia IP e Redes. Abrao a todos!

http://www.vivaolinux.com.br/artigo/Asterisk-Instalacao-e-Conguracao Voltar para o site

15 of 15

04/04/12 13:07