Asterisk - Instalação e Configuração

Neste artigo, vou ensinar como instalar o Asterisk 1.8 no Debian 6, também ensinarei a configurar e administrar. Vamos
também, instalar uma interface FXO da Digium e suporte ao Codec G.729.

[ Hits: 96.532 ]

Por: guilherme gustavo ribeiro de godoi em 02/04/2012


Script de Firewall e Considerações



Script de Firewall

Não podemos esquecer da segurança de nosso servidor de telefonia, para isso, vamos fazer um Firewall intermediário no IPtables.

Segue o nosso Script de Firewall padrão para IPBX:

Crie o arquivo "firewall.sh" em "/etc/init.d" e dê permissão de execução para ele:

# touch firewall.sh
# chmod+x firewall.sh


Agora, vamos editar o arquivo adicionado o seguinte conteúdo:

# vim /etc/init.d/firewall.sh

#!/bin/bash
##################################################
###########SHR - Network Solution#################
##################################################
#mensagem de inicialização "| Script de Firewall - SecuritySHR"
echo "| Criado por:Guilherme Ribeiro"
echo "| Uso: firewall start|stop|restart"
echo
echo "============================================= |"
echo "|:INICIANDO A CONFIGURAÇÃO 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

# Abre as portas referentes aos serviços:

# 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

# Segurança###
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
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 --log-prefix '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 --log-prefix 'ORIFICE NA REDE>'
iptables -A FORWARD -p tcp --dport 31337 -j DROP
iptables -I FORWARD -p udp --dport 31337 -j LOG --log-level info --log-prefix '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 --log-prefix 'NETBUS NA REDE>'
iptables -A FORWARD -p tcp --dport 12345 -j DROP
iptables -I FORWARD -p udp --dport 12345 -j LOG --log-level info --log-prefix '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 >'
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 conexão demais portas:
iptables -A INPUT -p tcp --syn -j DROP

# Garante que o firewall permitir conexões:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Bloqueia as portas UDP de 0 a 1023 (com exceções 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 parâmetros start ou stop"
esac


Salve e saia do arquivo.

Como podemos verificar, criamos um Script de Firewall de nível intermediário caso sua empresa ou escritório, não conte com um Servidor de Internet ou Firewall.

Considerações Finais

Bom, seguindo todos nossos passos, estamos com um Servidor IPBX configurado e com recursos de melhoria funcionado. E o mais importante, sem ter que colocar a mão no bolso, afinal nada melhor que isso né.

Este artigo teve a participação de alguns amigos que compartilharam comigo no decorrer da jornada de trabalho algumas soluções e conhecimentos: Alexandre Keller e Danilo Bedani.

E alguns tópicos na Internet, é claro.

Caso tenha alguma duvida ou sugestão, estamos sempre disponível para novas ideias.

Tenho uma empresa que vende esta e outras soluções de telefonia IP e Redes.

Abraço a todos!
Página anterior    

Páginas do artigo
   1. Descrição e Dependências
   2. Instalação, Codec G.729 e Sip.conf
   3. Extensions.conf e Placa Digium
   4. Script de Firewall e Considerações
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Criando aplicação MVC utilizando DOTNET Core no GNU/Linux

O papel social do software livre

Aplicando relevo em símbolos com o Gimp

DSpace no Ubuntu 12.04 - Instalação via Banco de Dados Oracle 11g

Criando um pacote DEB manualmente

  
Comentários
[1] Comentário enviado por removido em 02/04/2012 - 12:40h

Show de bola o artigo. Muito bom !

[ ]'s

[2] Comentário enviado por GustavinhoO em 02/04/2012 - 13:10h

Vlw Thalysson S

[3] Comentário enviado por dbedani em 02/04/2012 - 14:33h

Muito bom, parabens pela iniciativa!
Abraços!

[4] Comentário enviado por GustavinhoO em 02/04/2012 - 22:03h

vlw danilowz, temos que compartilhar né....

[5] Comentário enviado por dalveson em 03/04/2012 - 15:46h

demais o artigo, so vai enriquecer ainda mais a vasta documentação como vc mesmo citou ja disponivel na web.
parabens!

[6] Comentário enviado por GustavinhoO em 03/04/2012 - 18:04h

obg, vim postar este tutorial, pois percebi com alguns amigos e colegas os problemas em instalar placas fxo e principalmente o codec g729, em um proximo artigo vou ensinar a programar em .ael e também instalar o a2billing.

[7] Comentário enviado por mago_dos_chats em 03/04/2012 - 19:53h

mto bom cara... so recomando a instalação do elastix que tem uma interface de administração ótima, e instalação do oslec, que em termos de cancelamento de eco da de mil no mg2, mesmo porque, o oslec é evolução do mg2..
Parabéns.

[8] Comentário enviado por GustavinhoO em 03/04/2012 - 20:28h

olha em relação ao cancelamento de eco em linha analógica nem chega ser muito necessário, mais pode-se usar o oslec também. mais usar elastix eu discordo como opinião propiá, pra mim nada melhor que administrar via shell script mesmo e o asterisk é asterisk, se for escolher interface gosto muito do trixbox, porem eu mesmo não uso, minha empresa tem uma interface que vendemos, mais isso pra usuário sem experiencia.
em experiencia também com cancelamento já tive caso que o oslec ficou muito pior que o mg2, então varia um pouco também isso, o administrador decide na hora dos teste de ligações.
e obg pelo elogio.

[9] Comentário enviado por ragen em 12/04/2012 - 20:03h

Tenho que te agradecer pelo artigo, existe uma diferença notável na utilização do codec G.729

Parabéns!

[10] Comentário enviado por GustavinhoO em 18/04/2012 - 15:19h

concerteza existe mesmo esta diferença, obrigado!

[11] Comentário enviado por wesleyjordao em 23/07/2012 - 23:48h

Parabéns pelo seu tutorial! não querendo abusar muito gostaria de saber se você poderia nos ajudar com o monitor! eu estou precisando implementar um sistema de gravação de todas as ligações bem como um area web para que o administrador possa estar ouvindo e baixando as que lhe interessar.

[12] Comentário enviado por ramonelizeu em 12/02/2014 - 21:03h

Gustavo,

Não domino o linux e não manjo muito de programação mais tenho muita boa vontade e força para buscar aprender, e estou procurando uma forma de utilizar o Asterisk como softphone para utilização como sistema de telefonia buscando um melhor gerenciamento das ligações e menor custo através do sistema voip.

Basicamente pelo o que eu andei lendo o Asterisk seria um bom softphone e atenderia as necessidades que busco que seria Cadastro de ramais, Controle de filas de atendimento, entrar na chamada do operador, URA atendimento redirecionado, Relatorios, Download de gravações, Manager servidor PBX (gerenciar).

Como frisei acima ainda não mexo com linux irei instalar em uma maquina buscando aprender e executar algumas das orientações do seu artigo, porem gostaria de saber se tal aprendizado seria possível e qual o melhor caminho e se me indica algum forum pra que eu possa aprender e entender melhor sobre isso.



[13] Comentário enviado por wanderton em 22/01/2016 - 17:41h

Olá, gostei muito das suas dicas, parabéns!
Mais fiquei com a duvida, qual placa PCI-E ou gateway você recomenda para usar duas linhas (FXO) e dois ramais (FXS)?
Agradeço!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts