Documente Academic
Documente Profesional
Documente Cultură
Para proteger el servidor Linux de accesos no autorizados hay que instalar un firewall (cortafuegos) y
abrir solamente los puertos que Asterisk necesita para aceptar conexiones externas. Esta es la parte ms
delicada de la configuracin del servidor porque es donde se definen los puertos y los servicios que son
accesibles desde Internet. Desde la versin 7.X de CentOS, el programa para gestionar y configurar el
cortafuegos es firewalld. Aunque sea un sistema muy valido, no he encontrado el equivalente de
algunas reglas que utilizaba con IPtables. Es por este motivo que he preferido continuar a utilizar
IPtables. Para utilizar Iptables en CentOS 7.X hay que seguir los siguientes pasos:
Instalar IPtables:
Mover la configuracin que viene por defecto para crear una nueva:
mv /etc/sysconfig/iptables /etc/sysconfig/iptables.old
Iptables se encarga de gestionar todos los paquetes que entren y salgan del servidor Linux. Para eso
utiliza tres tipos de tablas:
la tabla filter donde pasan todos los paquetes en entrada y salida. La tabla filter acepta tres tipos
de opciones (cadenas):
INPUT para los paquetes en entrada
OUTPUT para los paquetes en salida
FORWARD para redireccionar los paquetes
la tabla NAT se utiliza para rescribir las direcciones y/o los puertos de los paquetes
la tabla MANGLE se utiliza para modificar algunos parmetros de los paquetes (un ejemplo es
marcar los paquetes para que vengan procesados y enviados con una prioridad ms alta)
Las reglas se definen una por linea y sern procesadas por IPTABLES siguiendo la misma secuencia.
Se rechaza (REJECT) todo el trafico entrante dirigido a las IP 127.0.0.0/127.255.255.255 menos los
paquetes para la interfaz -lo
Se aceptan todos los paquetes en entrada de conexiones ya establecidas, o relacionados con conexiones
establecidas. Vase protocolo TCP
Se deja pasar todo el trafico en entrada para el protocolo SSH (puerto 22 tcp)
Se deja pasar todo el trafico en entrada destinado al puerto udp 4569 (protocolo IAX2)
Se bloquea el trafico sobre el puerto 5060 procedente de los ms conocidos programas de escaneo de
servidores SIP utilizados para ataques y fraudes de llamadas. Este puerto se utilizar con el viejo
canal chan_sip:
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "friendly-scanner" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "sipcli" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "VaxSIPUserAgent" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "sipvicious" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "sundayddr" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "iWar" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "sipsak" --algo bm -j DROP
Se bloquea el trafico sobre el puerto 5080 procedente de los ms conocidos programas de escaneo de
servidores SIP utilizados para ataques y fraudes de llamadas. Este puerto se utilizar con el nuevo canal
chan_pjsip:
iptables -A INPUT -p udp -m udp --dport 5080 -m string --string "friendly-scanner" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5080 -m string --string "sipcli" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5080 -m string --string "VaxSIPUserAgent" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5080 -m string --string "sipvicious" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5080 -m string --string "sundayddr" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5080 -m string --string "iWar" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5080 -m string --string "sipsak" --algo bm -j DROP
Se deja pasar todo el trafico en entrada destinado a los puertos udp que van de 10000 a 20000 (Flujo
media o protocolo RTP segn la configuracin predefinida de Asterisk):
Ahora que se han definido los puertos base que se necesitan abiertos, se bloquea todo el trafico
restante.
iptables -L
Aparecer:
Se inicia el servicio:
Se mira el estado:
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 conexin entre dos canales, del flujo
audio/vdeo)
mv /etc/asterisk/rtp.conf /etc/asterisk/rtp.conf.old
nano /etc/asterisk/rtp.conf
[general]
rtpstart=10000
rtpend=20000
rtpchecksums=no
dtmftimeout=3000
rtcpinterval=5000
strictrtp=yes
icesupport=yes
Los datos:
[general] etiqueta inicial del archivo de configuracin
rtpstart puerto inicial para el trafico RTP (flujo media)
rtpend puerto final para el trafico RTP (flujo media)
rtpchecksums Activar o no la suma de verificacin en los paquetes RTP
dtmftimeout la cantidad de tiempo (en mili segundos) que un tono DTMF sin marcador de fin
tiene los permisos para continuar en el trafico RTP
mili segundos entre cada reporte del protocolo RTCP (protocolo che se utiliza para monitorear
el flujo RTP)
strictrtp Lo paquetes que no proceden del mismo flujo RTP utilizado en la conexin sern
eliminados
icesupport se activa el soporte para el protocolo ICE (RFC5245).