Actualizado 31 Enero 2010
Para proteger el servidor Linux de accesos no autorizados hay que instalar un firewall (cortafuegos) y abrir los puertos que Asterisk necesita para aceptar conexiones externas. Esta es la parte más delicada de la configuración del servidor porque es donde se definen los puertos y los servicios que son accesibles desde Internet. En el caso del VPS Linode se instalará y Configurará IPtables.
Si Asterisk se encuentra instalado en un computador conectado a Internet a través de un router hay dos opciones:
Abrir los puertos desde la pagina de administración del router.
Configurar una DMZ en el router y luego gestionar los puertos directamente con IPtables
Para instalar iptables:
yum install iptables
Iptables se encarga de gestionar todos los paquetes que entren y salgan del servidor Linux. Para eso se utilizan tres tipos de tablas:
INPUT para los paquetes en entrada
OUTPUT para los paquetes en salida
FORWARD para redireccionar los paquetes
la tabla MANGLE se utiliza para modificar algunos parámetros de los paquetes (un ejemplo es marcar los paquetes para que vengan procesados y enviados con una prioridad más alta)
Las reglas se definen una por linea y serán procesadas por iptables siguiendo la misma secuencia.
Cuando no se especifica diversamente, todas las reglas se aplicarán a la tabla filter:
Se acepta todo el trafico en entrada direccionado a la interfaz lookpack
iptables -A INPUT -i lo -j ACCEPT
Se rechaza (REJECT) todo el trafico entrante direccionado a las IP 127.0.0.0/127.255.255.255 menos que para la interfaz -lo
iptables -A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT
Se aceptan todos los paquetes en entrada de conexiones ya establecidas, o relacionados con conexiones establecidas. Véase protocolo TCP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Se deja pasar todos los paquetes salientes.
iptables -A OUTPUT -j ACCEPT
Se deja pasar todo el trafico en entrada para el protocolo tcp 22 (SSH)
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
Se deja pasar todo el trafico en entrada destinado al puerto udp 4569 (protocolo IAX2)
iptables -A INPUT -p udp --dport 4569 -j ACCEPT
Se deja pasar todo el trafico en entrada destinado al puerto udp 5060 (protocolo SIP)
iptables -A INPUT -p udp --dport 5060 -j ACCEPT
Se deja pasar todo el trafico en entrada destinado a los puertos udp que van de 10000 a 20000 (protocolo RTP)
iptables -A INPUT -p udp --dport 10000:20000 -j ACCEPT
Se dejan pasar las solicitudes de ping
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
A este punto, ya que hemos definido los puertos que necesitamos abiertos, podemos bloquear todo el trafico restante.
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT
Se averigua el estado de las reglas definidas con el comando:
iptables -L
Aparecerá:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere 127.0.0.0/8 reject-with icmp-port-unreachable
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT udp -- anywhere anywhere udp dpt:iax
ACCEPT udp -- anywhere anywhere udp dpt:sip
ACCEPT udp -- anywhere anywhere udp dpts:ndmp:dnp
ACCEPT icmp -- anywhere anywhere icmp echo-request
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Para guardar los cambios:
service iptables save
Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
Se arranca el servicio:
service iptables start
Se vuelve a arrancar iptables:
service iptables restart
Para arrancar iptables automáticamente:
chkconfig iptables on
Para terminar hay que configurar Asterisk para que use los puertos UDP desde 10000 hasta 20000 para el protocolo RTP (es el que se encarga, una vez establecida la conexión entre dos canales, del flujo audio/video)
Se edita el archivo:
nano /etc/asterisk/rtp.conf
En los archivos de configuración de Asterisk, los parámetros pueden estar comentados con un punto y coma por delante. Si se quiere utilizarlos hay que quitar el punto y coma.
Se quita el punto y coma antes de [general]
En rtpstart se pone 10000 y en rtpend 20000:
rtpstart=10000
rtpend=20000
Se guardan los cambios efectuados y se recarga la configuración de Asterisk:
/etc/init.d/asterisk restart
Comentarios
Asterisk y Firewall
Hice la configuracion detallada pero aun no me escuchan cuando llamo, agradeceria mucho que hacer por favor mi iptables luce asi
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:4520
ACCEPT udp -- anywhere anywhere udp dpt:iax
ACCEPT udp -- anywhere anywhere udp dpt:sip
ACCEPT udp -- anywhere anywhere udp dpts:ndmp:dnp
ACCEPT udp -- anywhere anywhere udp dpts:ndmp:dnp
ACCEPT udp -- anywhere anywhere udp dpts:ndmp:dnp
ACCEPT tcp -- anywhere anywhere tcp dpt:30000
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere icmp echo-request
con -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4520
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4569
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:5060
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:10000:20000
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:10000:20000
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:10000:20000
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:30000
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8
Asterisk y Firewall
Cuando hay problemas con el audio normalmente está relacionado con el NAT http://es.wikipedia.org/wiki/NAT Donde tienes instalada la centralita? en tu computador o en un servidor externo?
Chao
Hey cuadro mil gracias por
Hey cuadro mil gracias por compartir esta info, estoy cacharreando mi propia centralita y tu info me ha servido full.
Re: Hey cuadro mil gracias por
De nada... cuéntanos como te está yendo inscribiendote al sitio y usando tu blog personal.
Un saludo
Consulta
Hola buen dia, yo no soy muy bueno en linux como uds, pero me gustaria saber como configurar el FireWalle de linux sin el yum, osea utilizando por ejemplo: solamente un rpm
Re: Consulta
Hola,
o creas que soy tan bueno.
Respecto a tu consulta todo depende de que distribución de linux tienes instalada.
En el caso de la distribución Centos el modo más cómodo y sencillo es hacerlo usando yum.
Si tienes instalada otras distribución (ej. debian) tienes que buscar en internet el paquete rpm para esa versión.
Hasta pronto.
AsterisK
Hola, que bueno este material que has compartido muchas gracias por hacerlo publico y ayudar a quien lo necesita, tengo una duda. yo hice la inatalacion del Centos 5.0 y creo que automaticamente instaló el iptables por que no tuve que hacer el primer paso que tienes, el problema es que el ultimo paso para abrir el archivo nano /etc/asterisk/rtp.conf el directorio /asterisk/ no me aparece en el etc.
Que debo hacer en ese caso ?
Muchas gracias
Re: Asterisk
Hola,
gracias :)
vamos por pasos:
Tienes instalado Asterisk?
Si la repuesta es no, tienes que instalarlo y con la distribución Centos el único modo es desde las fuentes.
Escribí dos artículos sobre la instalación de Asterisk, usa el buscador del sitio para encontrarlos.
Si la respuesta es si y lo instalaste desde las fuentes, debes tener la carpeta /etc/asterisk en tu servidor Linux.
Cuéntame.
Un saludo
Quizas otro punto interesante
Quizas otro punto interesante es instalar el fail2ban para evitar ataques de contraseñas. Lo estoy probando un poco y parece que hace bien la tarea.
Saludos
Re: fail2ban
Que bien!!!
Cuando tenemos que esperar para una pequeña guía sobre el tema? :)
Chao
Todavia necesito tiempo,
Todavia necesito tiempo, primero tengo que pasar de modo "novato".
Re: No te preocupes
No te preocupes, estaba bromeando :)
Hasta pronto
Chao
Veo que ya lo has puesto,
Veo que ya lo has puesto, genial, just mirando el post de nerdvittles lo vi, y la verdad, todos los puntos que comentan son intereasntes para tener un servidor seguro y no llevarse ninguna sorpresa extraña en las facturas.
Saludos
Re: Veo que ya lo has puesto
Espero que me perdones.
Es que vi el post en el blog de Nerd Vittles y no pude resistir :)
Chao