Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Asegurando Elastix
Samuel Cornu
2
Contenido
AGRADECIMIENTOS ........................................................................................................... 5
LICENCIAMIENTO .............................................................................................................. 5
INTRODUCCIN ................................................................................................................ 6
SERVICIOS ....................................................................................................................... 7
RUN LEVELS...................................................................................................................... 9
ASEGURANDO SSH ........................................................................................................... 12
Grupo Wheel ................................................................................................................ 12
Uso del sudo................................................................................................................. 14
FIREWALL ........................................................................................................................ 17
NETFILTER-IPTABLES ....................................................................................................... 17
ASEGURANDO HTTPS........................................................................................................ 21
Fail2ban .......................................................................................................................... 24
Instalacin y Configuracin ............................................................................................ 24
fail2ban y SSH .............................................................................................................. 24
Fail2ban y Asterisk ....................................................................................................... 25
Fail2ban y apache2 ....................................................................................................... 26
PORTSENTRY ................................................................................................................... 28
Configuracin ............................................................................................................... 28
Portsentry - Modo clsico ............................................................................................... 28
Portsentry - Modo avanzado ........................................................................................... 29
Portsentry - Otras opciones de configuracin .................................................................... 29
CHKROOTKIT ................................................................................................................... 31
TCPWRAPPER................................................................................................................... 32
PRCTICAS RECOMENDADAS............................................................................................. 33
SIETE PASOS PARA MEJORAR LA SEGURIDAD SIP EN ASTERISK PUBLICADOS POR DIGIUM .... 34
Backdoor en FreePBX .................................................................................................... 35
NOTAS FINALES ............................................................................................................... 37
FUENTES ......................................................................................................................... 38
AGRADECIMIENTOS
Principalmente quiero agradecer a mi familia (esposa e hijos) que me apoya cuando me
quedo probando cosas los fines de semana o cuando me quedo toda la noche haciendo
ruido.
A Juan Manuel Garca Carral que me introdujo en el paranoico mundo de la seguridad y
me prest algo de tiempo para que pueda escribir este manual.
Rafael Ibez por el apoyo institucional para este proyecto.
A la gente de PaloSanto Solutions por corregir y publicar este manual.
LICENCIAMIENTO
Copyright 2011 Samuel Cornu
Este documento est permitido de copiar, distribuir y/o modificar bajo los trminos de la
licencia GNU Free Documentation License Versin 1.3; sin Secciones Invariantes
(Invariant Sections), Textos de Cubierta Frontal (Front-Cover Texts), y sin Textos de
Cubierta Posterior (Back-Cover Texts).
El autor puede en cualquier momento decidir actualizar la licencia de la presente obra a
una versin ms reciente de la GNU Free Documentation License.
INTRODUCCIN
En el mundo actual, donde las comunicaciones son cada da ms importantes, los
servidores de comunicaciones, tanto Elastix como cualquier otro, se encuentran
comprometidos.
El avance constante de la telefona y la VOIP hace que da a da aumenten las
instalaciones de servidores de comunicaciones. Paralelo a este avance van las tcnicas
de ataques a estos servidores. Las herramientas actuales hacen que cualquier persona
con un mnimo de conocimiento pueda realizar un dao grande en ellos.
Las empresas en busca de reducir costos utilizando los avances en comunicaciones,
muchas veces no toman las precauciones de seguridad necesarias. Puede ser por
desconocimiento o simplemente por optar por la empresa o persona inadecuada.
Estos errores se traducen en grandes costos en comunicaciones y que culminan
generalmente en el retiro de servidores con distribuciones de cdigo abierto por
servicios propietarios de grandes Empresas como Cisco o Avaya. Esto tambin se
traduce en desprestigio para el software Libre.
No se trata de una gua definitiva de seguridad sino un buen punto de partida, ya que
constantemente aparecen nuevas vulnerabilidades. El administrador del servidor de
comunicaciones tendr que estar al da con los boletines de seguridad y
constantemente mirando los logs del sistema.
Existen muchos productos tendientes a utilizar las bondades de la telefona IP, para
este ejemplo se va a utilizar Asterisk, creado por Mark Spencer, y mantenido por la
empresa Digium.
Uno de los productos ms difundidos en el mundo de la telefona IP es Elastix.
Elastix es un software de cdigo abierto para el establecimiento comunicaciones unificadas.
Pensando en este concepto el objetivo de Elastix es el de incorporar en una nica solucin
todos los medios y alternativas de comunicacin existentes en el mbito empresarial.
SERVICIOS
Lo primero que hay que tener en cuenta a la hora de administrar un servidor, es tener
control de los servicios que estn corriendo en el mismo.
Al momento de la instalacin algunos servicios son instalados por defecto y realmente
no sern necesarios en el uso cotidiano del servidor de comunicaciones.
A continuacin los servicios que corren al inicio en un servidor Elastix luego de una
instalacin.
# chkconfig --list
Acpid
0:off
1:off
2:on
3:on
4:on
5:on
6:off
asterisk
0:off
1:off
2:on
3:on
4:on
5:on
6:off
atd
0:off
1:off
2:off
3:on
4:on
5:on
6:off
auditd
0:off
1:off
2:on
3:on
4:on
5:on
6:off
crond
0:off
1:off
2:on
3:on
4:on
5:on
6:off
cyrus-imapd
0:off
1:off
2:off
3:on
4:on
5:on
6:off
dahdi
0:off
1:off
2:on
3:on
4:on
5:on
6:off
elastix-firstboot
0:off
1:off
2:on
3:on
4:on
5:on
6:off
elastix-updaterd
0:off
1:off
2:on
3:on
4:on
5:on
6:off
haldaemon
0:off
1:off
2:off
3:on
4:on
5:on
6:off
httpd
0:off
1:off
2:off
3:on
4:on
5:on
6:off
hylafax
0:off
1:off
2:on
3:on
4:on
5:on
6:off
iaxmodem
0:off
1:off
2:on
3:on
4:on
5:on
6:off
ip6tables
0:off
1:off
2:on
3:on
4:on
5:on
6:off
iptables
0:off
1:off
2:on
3:on
4:on
5:on
6:off
isdn
0:off
1:off
2:on
3:on
4:on
5:on
6:off
kudzu
0:off
1:off
2:off
3:on
4:on
5:on
6:off
lm_sensors
0:off
1:off
2:on
3:on
4:on
5:on
6:off
lvm2-monitor
0:off
1:on
2:on
3:on
4:on
5:on
6:off
mcstrans
0:off
1:off
2:on
3:on
4:on
5:on
6:off
mdmonitor
0:off
1:off
2:on
3:on
4:on
5:on
6:off
messagebus
0:off
1:off
2:off
3:on
4:on
5:on
6:off
mysqld
0:off
1:off
2:off
3:on
4:on
5:on
6:off
netfs
0:off
1:off
2:off
3:on
4:on
5:on
6:off
network
0:off
1:off
2:on
3:on
4:on
5:on
6:off
nfslock
0:off
1:off
2:off
3:on
4:on
5:on
6:off
ntpd
0:off
1:off
2:off
3:on
4:on
5:on
6:off
openfire
0:off
1:off
2:on
3:on
4:on
5:on
6:off
portmap
0:off
1:off
2:off
3:on
4:on
5:on
6:off
postfix
0:off
1:off
2:on
3:on
4:on
5:on
6:off
rawdevices
0:off
1:off
2:off
3:on
4:on
5:on
6:off
rpcgssd
0:off
1:off
2:off
3:on
4:on
5:on
6:off
rpcidmapd
0:off
1:off
2:off
3:on
4:on
5:on
6:off
saslauthd
0:off
1:off
2:off
3:on
4:on
5:on
6:off
sshd
0:off
1:off
2:on
3:on
4:on
5:on
6:off
syslog
0:off
1:off
2:on
3:on
4:on
5:on
6:off
wanrouter
0:off
1:off
2:on
3:on
4:on
5:on
6:off
xfs
0:off
1:off
2:on
3:on
4:on
5:on
6:off
xinetd
0:off
1:off
2:off
3:on
4:on
5:on
6:off
on
RUN LEVELS
Antes de configurar los servicios del sistema, debemos conocer los niveles de ejecucin
o runlevels de un sistema Linux. Un run level es un modo de ejecucin, con
determinadas caractersticas.
Los niveles de ejecucin o run levels existentes son
0
1
2
3
4
5
6
Halt
Single-user mode
Multi-user without network support.
Full multi-user mode).
Not used (user-definable).
Full multi-user mode (with an X-based login screen).
Reboot
KUDZU
Se encarga de detectar y configurar el hardware nuevo conectado al equipo. Se
recomienda desactivar este servicio y ejecutarlo cuando sea necesario. Para realizar
esta tarea se debe ejecutar la siguiente accin:
chkconfig --level 345 kudzu off
ISDN
Servicio utilizado para conexin a Internet. Si no dispone de un modem de este tipo,
debe deshabilitar el servicio ejecutando la siguiente accin:
chkconfig --level 2345 isdn of
NETFS
Monta sistema de archivos en red como NFS, Samba, entre otros. Al momento del inicio
del sistema.
Para desactivar este servicio ejecutamos la siguiente accin:
chkconfig --level 345 netfs off
NFSLOCK
Bloquea los archivos que se encuentran compartidos en la red a travs de NFS. Si no
utiliza NFS para acceder a unidades compartidas puede deshabilitar este servicio.
Para desactivar este servicio ejecutamos la siguiente accin:
chkconfig level 345 nfslock off
PORTMAP
Es un Servicio complementario al NFS (Network File System) y NIS (Autenticacin). Si
no se hace uso de NFS, el servicio debe estar desactivado.
Para desactivar este servicio ejecutamos la siguiente accin:
chkconfig --level 345 portmap off
RESTODECOND
Se usa monitorizar y restaurar file context para SELinux. Puede deshabilitarlo con:
chkconfig --level 345 restodecond off
PCGSSD / RPCIDMAPD
Servicios utilizados por NFS, si usted no utiliza este protocolo, debe deshabilitarlo.
Para desactivar este servicio ejecutamos la siguiente accin:
chkconfig level 345 pcgssd off
chkconfig level 345 rpcidmapd off
10
WANROUTER
Es el driver para las tarjetas Sangoma, si no utiliza una en el servidor de
comunicaciones es recomendable desactivarlo. Para desactivar este servicio ejecutamos
la siguiente accin:
Chkconfig level 345 wanrouter off
XINETD
A travs de xinetd se puede hacer uso de funciones especiales, tales como el tftp. En el
caso de ser vulnerado puede dar un riesgo a nivel seguridad. Si no va a utilizar el
servicio de tftp puede deshabilitarlo ejecutando la siguiente accin:
chkconfig level 345 xinetd off
Hasta ahora slo se deshabilitaron los servicios al arranque, pero los mismos an siguen
corriendo. Se pueden parar todos los servicios con:
service kudzu stop
service isdn stop
service netfs stop
service nfslock stop
service portmap stop
service restodecond stop
service pcgssd stop
service rpcidmapd stop
service wanrouter stop
service xinetd stop
De esta manera slo han quedado los servicios necesarios para el buen funcionamiento
de un servidor de comunicaciones integradas, y resta asegurar a los mismos.
11
ASEGURANDO SSH
sufficient
pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth
sufficient
required
pam_wheel.so use_uid
auth
include
system-auth
account
sufficient
account
include
system-auth
password
include
system-auth
12
session
include
system-auth
session
optional
pam_xauth.so
required
pam_wheel.so use_uid
Tal como dice el comentario que precede esa lnea al descomentar la misma se requiere
ser del grupo wheel para poder utilizar el comando su
Si quita el comentario a la siguiente lnea implica confianza en los usuarios del grupo
Wheel:
auth
sufficient
required
pam_wheel.so use_uid
sufficient
pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth
sufficient
required
pam_wheel.so use_uid
auth
include
system-auth
account
sufficient
account
include
system-auth
password
include
system-auth
session
include
system-auth
session
optional
pam_xauth.so
13
passwd Samuel
No se profundizar en el tema ya que est fuera del mbito de este documento. Por ello
solo se explicara cmo realizar esta tarea en un sistema Elastix que ya usa este archivo
para el usuario Asterisk y simplifica la configuracin
14
Si bien aqu se podran incluir todos los comandos que desee es recomendable que sean
los menos posibles.
Hasta este momento se establecieron polticas de usuarios tendientes a mejorar la
seguridad del sistema. Para continuar con las polticas de seguridad se deben modificar
las opciones de seguridad del servicio SSH, que habitualmente se utiliza para
administracin remota.
Los beneficios de una contrasea fuerte no son exclusivos de SSH, pero tienen fuerte
impacto en todos los aspectos de la seguridad del sistema
#LoginGraceTime 2
PermitRootLogin no
y reiniciar el servicio sshd:
service sshd restart
Si usted necesita acceder como root, acceda como un usuario normal que pertenezca al
grupo Wheel y use el comando su -.
3. No utilizar el puerto por defecto
Por defecto, SSH escucha las conexiones entrantes en el puerto 22. Para que un hacker
determine si SSH se est ejecutando en su mquina, lo ms probable es que escanee el
puerto 22. Un mtodo efectivo es ejecutar SSH en un puerto no estndar. Cualquier
puerto sin usar funcionar, pero es preferible usar uno por encima del 1024.
Muchas personas escogen el 2222 como un puerto alternativo, de la misma forma que
el 8080 es conocido, como un puerto HTTP alternativo. Por esta razn, probablemente
esta no es la mejor opcin. De la misma forma que cualquier hacker escanear el
puerto 22, seguramente tambin escanear el puerto 2222 slo como buena medida. Es
mejor escoger cualquier puerto alto al azar que no sea usado por ningn servicio
conocido. Para hacer los cambios, aada una lnea como esta a su fichero
/etc/ssh/sshd_config:
# Ejecutar ssh en un puerto No-Estndar:
Port 30022
y reinicie el servicio sshd.
16
FIREWALL
Un firewall es un elemento de hardware o software que filtra el trfico entre dos redes
u hosts conectados entre s. El firewall permite controlar el flujo de paquetes que van
de un lado al otro, es decir, decide si un paquete pasa, se descarta o es respondido con
un mensaje de error. Los firewalls ms comunes operan en las capas de transporte y de
red, es decir, analizan los paquetes en base al protocolo TCP/IP. Para ello, el firewall
examina primero si la comunicacin es entrante o saliente, de dnde viene y hacia
dnde se dirige (direcciones IP y puertos origen - destino).
Siempre es recomendable poseer un Firewall en la red, para que tome las decisiones
sobre aceptar, rechazar o denegar. En algunos casos no existe la posibilidad de contar
con l, por costos, disponibilidad o decisiones comerciales. Para estos casos se puede
utilizar las herramientas disponibles en CentOS, el sistema operativo elegido para las
distribuciones Elastix.
NETFILTER-IPTABLES
Aceptar la red interna, se asume que el texto $RED_LAN es una variable que tiene
cargada la red interna
#iptables -A INPUT -s $RED_LAN -d 0/0 -j ACCEPT
5060
-j
ACCEPT
En el caso de que se tenga usuarios que deben registrarse desde IP remotas dinmicas
no deben introducir las lneas anteriores y agregar la siguiente.
#iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
Esto es un faro para los atacantes, si necesita tener esta regla, deber implementar
algn analizador de log, tal como se explicar ms adelante.
18
que quiera liberar la tarea administrativa que lleva tener que agregar estas IPs o redes
puede agregar la siguiente entrada.
#iptables -A INPUT p udp m udp dport 10000:20000 j ACCEPT
Aceptar el trfico IAX2. Como su nombre indica es un protocolo propietario de Asterisk
y sirve para interconectar servidores corriendo Asterisk
Si algn proveedor provee una interconexin utilizando este protocolo se debe ingresar
la siguiente lnea.
#iptables -A INPUT -s $IP_ITSP2 -p udp --dport 4569 -j ACCEPT
En el caso de que existan algunos clientes IAX2 con IP dinmica ingresar la siguiente
lnea.
# iptables -A INPUT -p udp -m udp -i eth0 --dport 4569 -j ACCEPT
Aceptar trfico MGCP (slo aplicar si es que se va a usar. En la mayora de los casos no
es necesario):
# iptables -A INPUT -p udp -m udp -i eth0 --dport 2727 -j ACCEPT
Aceptar trfico Web (HTTPS) para poder visitar la interface administrativa de Elastix:
Tambin es conveniente ingresar desde una IP o IPs de confianza, en este caso el texto
$IP_CONFIANZA1 asume una direccin IP
iptables -A INPUT -s $IP_CONFIANZA1 -p tcp --dport 443 -j ACCEPT
19
Se pueden ingresar cuantas lneas como IPs de confianza se tenga. Sin embargo si se
requiere ingresar desde cualquier IP deber ingresar la siguiente lnea.
# iptables -A INPUT -p tcp -i eth0 --dport 443 -j ACCEPT
Esto es como otro faro para los atacantes, por ello, se vern algunas polticas para
restringir el acceso HTTP ms tarde en este documento
20
ASEGURANDO HTTPS
Para las ocasiones que no puede cerrar el HTTPS para las redes de confianza, se puede
agregar ms seguridad al mismo. En este caso se va a evitar que todo el mundo que
ingrese en su navegador https://IPDEMIELASTIX obtenga una imagen como esta.
Para ello hay que configurar apache2 para que antes de que autentifique Elastix tome
algunos recaudos de seguridad.
Timeout 300
150
#MaxRequestsPerChild 1000
User asterisk
Group asterisk
<Directory "/var/www/html">
# Redirect administration interface to https
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
AuthType Basic
AuthName "Zona Restringida"
AuthUserFile /usr/local/apache/wwwpasswd
Require user elastix Samuel
</Directory>
Como se nota se han agregado las ltimas 4 lneas al archivo y se explicarn una por
una
22
A partir de ahora, el servidor de contenidos web mostrar una ventana similar a esta
en lugar de la pgina de inicio de Elastix.
Todo intento de acceso errneo ser guardado en los archivos de log que se encuentran
en /var/log/httpd/
23
Fail2ban
Fail2Ban es un analizador de logs que busca intentos fallidos de registro y bloquea las
IPs de donde provienen estos intentos. Se distribuye bajo la licencia GNU y tpicamente
funciona en todos los sistemas que tengan interfaz con un sistema de control de
paquetes o un firewall local.
Fail2Ban tiene una gran configuracin pudiendo, adems, crear reglas para programas
propios o de terceros.
Instalacin y Configuracin
Para instalar fail2ban en un sistema operativo CentOS es necesario ejecutar:
# yum install fail2ban
Ahora hay que configurar Fail2Ban para que analice los logs que deseamos y bloquee
IPs, enviando notificaciones va e-mail. Para ello se modificara el archivo jail.conf que
encontramos en /etc/fail2ban
# cd /etc/fail2ban
# vim jail.conf
fail2ban y SSH
Para que busque intentos fallidos de logueo por SSH modificar el archivo hasta que sea
similar a las siguientes lneas:
[ssh-iptables] # Configuracin de fail2ban para el puerto ssh
enabled = true
filter = sshd
action = iptables[name=SSH, port=22, protocol=tcp]
24
Fail2ban y Asterisk
Ahora se debe configurar para que fail2ban lea los registros de Asterisk
#cd /etc/fail2ban/filter.d
Crear el archivo asterisk.conf
#vim asterisk.conf
Copiar estas lneas
[INCLUDES]
[Definition]
failregex = NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Wrong password
NOTICE.* .*: Registration from '.*' failed for '<HOST>' - No matching peer
found
NOTICE.* .*: Registration from '.*' failed for '<HOST>' - Username/auth name
mismatch
NOTICE.* <HOST> failed to authenticate as '.*'$
NOTICE.* .*: No registration for peer '.*' (from <HOST>)
NOTICE.* .*: Host <HOST> failed MD5 authentication for (*.) '*.'
NOTICE.* .*: Registration from '.*' failed for '<HOST>' Device does not match
ACL
NOTICE.* .*: Failed to authenticate user .*@<HOST>.*
ignoreregex =
Con esto le indica a fail2ban que tiene que controlar eventuales accesos indeseados en
el archivo de registro de Asterisk.
Luego hay que modificar el archivo de configuracin de fail2ban
25
cd /etc/fail2ban
vim jail.conf
Aadir al final del archivo de texto las siguientes lneas
[asterisk-iptables]
enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=mimail@mail.com,
sender=fail2ban@localhost]
logpath = /var/log/asterisk/full
maxretry = 3
bantime = 86400
Para que funcione este nuevo jail hay que chequear la configuracin de los archivos de
registro de Asterisk:
#vim /etc/asterisk/logger.conf
Fail2ban y apache2
Otro servicio que se puede monitorear con fail2ban son los intentos fallidos de logeo en
Apache2, para ello solo hay que cambiar algunos parmetros en el archivo jail.conf
enabled = true
port
= http,https
filter
= apache-auth
logpath = /var/log/httpd/ssl_error_log.log
#logpath = /var/log/apache*/*error.log
26
maxretry = 6
Reiniciar el servicio de fail2ban para que tome en cuenta las modificaciones realizadas
service fail2ban restart
Starting fail2ban: [ OK ]
Es una herramienta muy flexible que permitir realizar los filtros que crea necesario
pero los mismos exceden los alcances de este documento.
27
PORTSENTRY
Una herramienta muy til para evitar escaneos de puertos es Portsentry. Su misin es
sentarse y escuchar a los puertos que se le indique que deben permanecer siempre
inactivos. En caso de llegar una conexin a uno de ellos puede marcarlo en el log del
sistema, bloquear toda la comunicacin con la direccin identificada como agresora, o
correr un comando externo.
Para agregarlo para que arranque al inicio del sistema operativo, utilizar el comando:
# chkconfig portsentry on
Configuracin
La configuracin de Portsentry se hace en el archivo
/etc/portsentry/portsentry.conf
28
IGNORE_FILE
Es el nombre del archivo que incluye la lista de direcciones en las que confiamos
y por tanto no se quiere bloquear si intentan accesar un puerto bloqueado. Por
ejemplo, sera muy molesto que quisiramos correr nmap contra uno de
nuestros servidores para asegurar de que no haya servicios abiertos que no se
requieran y que nos bloqueramos por ello.
HISTORY_FILE
Contiene la lista de direcciones que Portsentry ha detectado intentando accesar
puertos monitoreados.
BLOCKED_FILE
Es equivalente a HISTORY_FILE, pero relevante nicamente a la sesin actual
de Portsentry.
29
BLOCK_TCP
Especifica qu hacer cuando un barrido de puertos TCP es detectado. Tiene tres
posibles valores: 0 (slo registrar el intento), 1 (bloquear la direccin que
intento el escaneo) y 2 (correr un comando externo especificado en
KILL_RUN_CMD).
BLOCK_UDP
Es equivalente a BLOCK_TCP para barridos de puertos UDP.
KILL_ROUTE
Guarda el comando utilizado para descartar toda la comunicacin con una
direccin. En los Unixs que no incluyen un paquete que permita manejar reglas
de filtrado de paquetes tipo firewall sugiere hacerlo creando una ruta esttica
hacia dicho host por una interfaz por la que nunca podremos llegar a l (una
direccin IP falsa o localhost), evitando toda posible respuesta. En un sistema
que incluya un filtro de paquetes (por ejemplo, iptables en Linux o ipf en los
*BSD) es muy preferible manejar una regla bloqueando la conexin.
KILL_HOSTS_DENY
Tiene la lnea que deber ser agregada a /etc/hosts.deny para que la direccin
atacante sea bloqueada por TCPwrappers. Es conveniente activarlo, pues a
diferencia de las reglas manejadas por KILL_ROUTE ste archivo sobrevivir a la
baja del sistema. Claro, no hay que confiarse - TCPwrappers slo maneja
determinados servicios, y si slo nos protegemos con l, el sistema podr seguir
proporcionando informacin importante a nuestro atacante.
KILL_RUN_CMD
Puede guardar un comando a ser ejecutado de ser detectada una intrusin. No
recomendamos utilizar esta opcin, ya que puede fcilmente llevar a una
negacin de servicio. Hay administradores que sugieren utilizar esta opcin para
lanzar un contraataque contra el atacante.
SCAN_TRIGGER
Indica qu tan rpido marcar un intento fallido de conexin como un ataque.
Probablemente, si a la primera bloqueamos toda comunicacin con el presunto
atacante, dejaremos fuera a muchos usuarios legtimos que por casualidad
hicieron la conexin equivocada. Sin embargo, si ponemos un nmero muy alto
nos exponemos a dar ms informacin de la que hubiramos querido. Un valor
de 1 o 2 es recomendado.
30
CHKROOTKIT
Para instalar y ejecutar correctamente la aplicacin Chkrootkit siga los siguientes pasos:
1.-Descagar e instalar el chkrootkit con los siguientes comandos:
cd /usr/local/src
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar -zxvf chkrootkit.tar.gz
mkdir /usr/local/chkrootkit
mv /usr/local/src/chkrootkit*/* /usr/local/chkrootkit
cd /usr/local/chkrootkit
make sense
2.- Agregar al CRON para que se ejecute a diario:
vim /etc/cron.daily/chkrootkit.sh
#!/bin/sh
(
/usr/local/chkrootkit/chkrootkit
) | /bin/mail -s
evolution.com.ar
'CHROOTKIT
Daily
Run
Nombre_del_Server'
samuel@call-
31
TCPWRAPPER
TCP Wrapper ("Envoltorio de TCP") es un sistema de ACL que trabaja en terminales y
que se usa para filtrar el acceso de red a servicios de protocolos de Internet que corren
en sistemas operativos (tipo UNIX), como Linux o BSD. Permite que las direcciones IP,
los nombres de terminales y/o respuestas de consultas ident de las terminales o
subredes sean usadas como tokens sobre los cuales filtrar para propsitos de control de
acceso.
Este proceso trabaja con los archivos /etc/hosts.allow y /etc/hosts.deny. Al compararse
con las directivas de control de acceso de una terminal, que comnmente se
encuentran en los archivos de configuracin de los demonios, TCP Wrappers tienen el
beneficio de una reconfiguracin de ACL en tiempo de ejecucin (es decir, los servicios
no necesitan ser cargados nuevamente o reiniciados). Esto facilita su uso en scripts
anti-gusano, tales como Fail2ban, para agregar y sacar reglas de bloqueo a clientes,
cuando estos producen excesivos intentos de conexin o varios errores en el proceso
mismo.
Utilizando TCPWapper se puede acotar los accesos por ejemplo de SSH.
Ejemplo de host allow
sshd : 192.168.2.1 : allow
sshd : 172.16.86.0/255.255.255.0 : allow
En el archivo /etc/hosts.deny debe existir una lnea como la siguiente.
sshd : ALL : deny
Tambin existen otros demonios que utilizan esta ACL los cuales quedaran a cargo del
lector buscar informacin al respecto.
32
PRCTICAS RECOMENDADAS
Les dejo algunos puntos importantes a tener en cuenta al momento de una nueva
implementacin. Son algunas recomendaciones que evitaran problemas futuros. Esto no
quiere decir que implementando todos estos puntos nunca tendrn un evento de
seguridad, sino que ser muy difcil para un atacante poder vulnerar un sistema de esta
manera. Es posible que cualquier atacante desista de intentar atacar un sistema
protegido, e intente otro que no lo est. Por ello les propongo las siguientes prcticas:
33
1) No aceptar pedidos de autenticacin SIP desde cualquier direccin IP. Utilizar las
lneas permit= y deny= de sip.conf para slo permitir un subconjunto razonable de
direcciones IP alcanzar cada usuario/extensin listado en el archivo sip.conf. Aun
aceptando llamadas entrantes desde anywhere (va [default]) no se debe permitir a
esos usuarios alcanzar elementos autenticados.
4) Bloquear los puertos del Asterisk Manager Interface. Usar permit= y deny= en
manager.conf para limitar las conexiones entrantes slo a hosts conocidos. Una vez ms
34
6) Los nombres de usuarios SIP deben ser diferentes que sus extensiones.
A pesar de ser conveniente tener una extensin 1234 que mapee a una entrada SIP
1234 la cual es tambin el usuario SIP 1234, esto tambin facilita a los atacantes
para descubrir nombres de autenticacin SIP. En su lugar usar las direcciones MAC del
dispositivo, o alguna combinacin de frases comunes + extensin MD5 hash (por
ejemplo: desde el Shell prompt, hacer md5 -s ThePassword5000)
Backdoor en FreePBX
Backdoor detectado en FreePBX (hasta la versin 2.0.1 de Elastix - Agosto 2010)
Resea
En el mes de agosto de 2010, Andrs Babativa, miembro de lista general de Elastix
descubri que uno de los usuarios definidos para acceder a la base de datos, poda
acceder como usuario Admin por el front-end de FreePBX, as es; mas all de que nos
hayamos esmerado muchsimo en usuarios y contraseas fuertes, si yo vengo con el
gold super user entro sin ningn problema con permisos de admin y puedo hacer lo
que quiero en cualquier Asterisk que tenga un FreePBX!
Para verificar esto podemos acceder a la interfaz de FreePBX, cuando nos solicite user y
password ingresamos: asteriskuser/eLaStIx.asteriskuser.2oo7
35
Frente a esto ese mismo da, horas ms tarde el equipo de desarrolladores de Palosanto
Solutions ya tena listo el paquete RPM de FreePBX corregido en los repositorios de
Elastix.
Para aplicarlo debemos actualizar FreePBX; para esto ejecutamos en la consola como
usuario root:
yum upgrade freePBX
Una vez actualizado, se puede corroborar que el problema est solucionado ingresando
el usuario y password anteriormente mencionados y notar que ya no puede acceder.
36
NOTAS FINALES
Sin dudas la mejor opcin es tener un firewall delante de un servidor Elastix, y luego
poner un segundo nivel de reglas en el servidor de comunicaciones, sin embargo, no
siempre es posible disponer de este escenario.
37
FUENTES
38