Install Janus WebRTC Gateway in Debian

janus-logo

Desde hace varios meses vengo trabajando algunas cosas con mi amigo de aventuras tecnológicas Alfredo Pastor @AlfredoPastorL  sobre la plataforma “Janus”  pero qué es? 

Por que no solo de Asterisk vive el hombre, se puede decir que  Janus es auto denominado por la empresa Meetecho como un “WebRTC Gateway” de múltiple propósito, proporciona funcionalidades de comunicación para el uso de WebRTC con un navegador, a través del intercambio mensajes JSON y retransmitir comunicación RTP / RTCP . es posible  desarrollar implementaciones de aplicaciones como pruebas de eco, web conference, grabadoras de medios, pasarelas SIP y similares.

En este caso vamos a ver  como instalarlo correctamente en una plataforma DEBIAN

1.- Instalación de dependencias

#apt-get install aptitude
#aptitude install libmicrohttpd-dev libjansson-dev libnice-dev libssl-dev libsrtp-dev libsofia-sip-ua-dev libglib2.0-dev libopus-dev libogg-dev libcurl4-openssl-dev pkg-config gengetopt libtool automake make git cmake

Luego removemos los paquetes de correspondientes a rtp srtp ya que vamos a instalar nuevas versiones desde fuentes.

#apt-get remove libsrtp0 libsrtp0-dev
#apt-get autoremove libsrtp0 libsrtp0-dev

2.- Instalación de SRTP

#cd /opt/
#wget https://github.com/cisco/libsrtp/archive/v1.5.4.tar.gz
tar xfv v1.5.4.tar.gz
#cd libsrtp-1.5.4
#./configure –prefix=/usr –enable-openssl
#make shared_library && make install

Janus

3.- Instalación de USRSCTP

#cd /opt/
#git clone https://github.com/sctplab/usrsctp
#cd usrsctp
#./bootstrap
#./configure –prefix=/usr/lib64 && make && make install

 

4.- Instalación de LIBWEBSOCKETS

#cd /opt/
#git clone https://github.com/warmcat/libwebsockets.git
#libwebsockets
#mkdir build && cd build/
#cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS=”-fpic” ..
#make && make install

selection_057

5.- Instalación de DXYGEN y GRAPHVIZ

#aptitude install doxygen graphviz

6.- Instalación de RABBITMQ

#cd /opt
#git clone https://github.com/alanxz/rabbitmq-c
#cd rabbitmq-c
#git submodule init
#git submodule update
#autoreconf -i
#./configure –prefix=/usr && make && make install

Janus

7.- Instalación de PAHO

#cd /opt
#git clone https://github.com/eclipse/paho.mqtt.c.git
#cd paho.mqtt.c
#make && make install

Janus

8.- Instalación de JANUS

#cd /opt
#git clone https://github.com/meetecho/janus-gateway.git
#cd janus-gateway
#sh autogen.sh
#./configure –prefix=/opt/janus
#make
#make install
#make configs
#./configure –disable-rabbitmq
#./configure –enable-docs

Janus

9.- Instalación del servidor Web

#apt-get install apache2

Ahora copiamos las paginas de ejemplo
#cp -R /opt/janus-gateway/html/ /var/www/
#cd /var/www/html/

10.- Pruebas

Si todo salio bien deberíamos poder levantar Janus de la siguiente forma :

#/opt/janus/bin/janus

JanusEso quiere decir que Janus está en funcionamiento, luego ingresaremos al servidor Web de la siguiente forma :   http://debian/ y veremos los siguiente

janusSi desean ver el manual en video Alfredo realizó todo el proceso incluido como funcionan los demos de Janus

En el siguiente post haremos una guia de como enlazar Janus con Asterisk

Kamailio entendiendo lógica de enrutamiento

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

 

 

 

 

 

 

¿ TU SEGURIDAD AL 100%? – PARTE3 – A

Entre apuros y temas profesionales, recién me desocupo.

Como les comente les el anterior post ¿ TU SEGURIDAD AL 100%? – PARTE2 continuaremos con el pequeño manual  básico del UTM sophos para posteriormente realizar las pruebas de rendimiento a nivel de seguridad, haciéndole focus en el parte de UTM:

Este es el esquema que trabajaremos para las primeras configuraciones:

graf1

  1. ingresamos al portal(de preferencia firefox) https://192.168.20.1:4444

1

  • Aceptamos el certificado inseguro

2

2. En el siguiente panel agregaremos nuestros datos de la empresa, includido empresa, ciudad, pais y un password:

username:admin

password: elquemasteguste

3

aceptamos las condiciones de uso

4

3. esperamos unos 40 segundos e ingramos con nuestro user y password, ojo que el user sera  “admin”

5

4. solo ponemos continuar:

6

5. habrá una licencia de activación por 30 dias, que servirá para realizar las pruebas que deseen:

7

6.  Listo, hasta cada todo bien, ahora cargaremos configuraciones mediante el wizzard, podremos configurar tanto las internfaces como el FW y el UTM(filtro web, antispam, antivirus, antispam etc)

  • interfaz lan:

8

  • interfaz wan(ponemos configurar despues, esto ya depende de uds)

9

  • Con el wizzard podemos crear una regla de salida para ciertos servicios

**** red lan(192.168.20.0/24) permit http,https,dns —> internet

  • Y también permitir realizar pruebas de conectividad hacia el utm:

10

7. En el wizzar también podremos realizar activaciones y configuraciones del IPS, filtro web, antispam (ojo por 30 dias)

  • Activación del ips

11

  • Activación del filtro web y antivirus

12

antispam

14

8) bueno ya esta casi listo para comenzar, aca aparecera un resumen de lo que hemos hecho.

15

9) Este sera nuestro primer panel, las caracteristicas del panel son como la de la mayoria de equipos UTM, apareceran licencias, versiones de sistemas operativo, consumo de CPU, tambien podemos añadirles widgets, para verficar alincion por ejemplo las reglas FW y  del UTM escritas asi como logs del sistemas y de seguridad

16

  • Como nota importante es las secciones de configuracion:

Donde estara el managment, interfaz routing, definition user etc

secciones

El el panel de control verificamos:

  • Interfaces activas:

17

  • Consumo de cpu

cpu

  • Registro de log de amenazas

AMENAZAZ

  • Así como también podemos agregar mas widgets.

widget

20

10.Bien ahora iremos en la parte izquierda a la sección de interface y routing, en esta sección podemos verificar el estado de las interfaz, con cuadros referenciales al consumo de ancho de banda, estado de la interfaz etc

21

  • Aca existen varias subsecciones:

subseccion1

11. En la subseccion  interfaces

por ejemplo podemos observar o re configurar la interface managment:

22

  • Crear una interfaz wan:

interfacewan

  • Dando en up a la interfaz creada:

23

12. También podemos crear rutas estáticas, en el menú izquierdo en la subseccion de routing static:

24

  • podemos configurar rutas como las siguientes:

25

13. Ahora para crear objetos tanto a nivel de redes como de servicios iremos a la seccion Definition & users

  • Dentro de esta sección tendremos muchas subsecciones

subseccion2

  • Creamos un network definitions

networkdef

  • También podemos crear un service definition

27

14. listo, despues de crear el service y el network definition podemos crear reglas en el FW:

En network protection / firewall

28

30

activar la regla

31

15. Y podemos verificar los logs:

32

En la próximo post (parteB) hablaremos un poco de el UTM, para posteriormente crear el siguiente esquema muy similar a hacking fortinet , donde tendremos un servidor expuesto a la nube con un software vulnerable(pentesterlab)

esquemavitima

Saludos

continuara:

Alexis Torres  @dUn_h4t

post anterior

Hacking fortinet – bypassing UTM (English version)

Spanish version :https://jroliva.wordpress.com/2015/07/31/hacking-fortinet-bypassing-utm/

Hello, in the previous post “Hacking FoAceptarrtinet – SQLI test” I made clear my position that I was unhappy with the results obtained. And do not misunderstand, beyond that we received very good feedback from the Fortinet brand which is important to us.

by showing a very good position and receptive to this type of study, however we needed perform another tests the offensive security because SQLI is not everything, Now the current attacks go far beyond, including combined attacks and techniques.

It is so a few days ago, again with my good friend Alexis Torres, developed the following test, detailed below:

Scenario:

fortinet-esenario

The scenario is implemented as follows:

192.168.100.100 — IP WEB SERVER on LAN
192.168.100.120 — IP MS WINDOWS 7 on LAN
192.168.100.1   — IP UTM on LAN

192.168.13.100 — IP SERVIDOR WEB en WAN
192.168.13.200 — IP UTM en LAN

192.168.13.202-203 — ATTACKER 1 (KALI LINUX)
192.80.190.11X — ATTACKER 2 (VPS CENTOS 6.X)

Setup UTM

hackingfortinet

A Appliance Fortinet D60 with licenses of the IPS and Antivirus activated as you can see below:

fortinet

Also, during the tests detailed below, several configuration profiles were tested as follows:

Profile “Default” activated in the IPS

hacking-fortinet

Profile “High Security” activated in the IPS

hacking fortinet

Profile “protect_http_server” activated in the IPS

hacking fortinet
Profile “default” activated in the AV

hackingfortinet

Also set within this profile (AV), the proxy mode, which allows you to capture traffic on a cache, examine it and then send it to the client.

Then to validate that the IPS is configured correctly,  we perform a basic test of SQLI to verify that blocks correctly.

hackingfortinettrying to introduce a SQLI in the web application, we see that the IPS blocks attack:

hackingfortinetAll validated, we start with the tests.

Test 1 – Session Hijacking using XSS

The first attack we tested is the “session hijacking” using stored XSS,  previously we  had proven that XSS reflected were not detected by the IPS, so that when combined with other attack, the IPS had even less likely to be detected , as it’s shown in the following:XSS

As shown, the XSS attack sent via the document.cookie” object ,  current session to an external URL http: //192.80.190.1XX/b.php

XSSThen the attacker 2 receives the string sent by the XSS stored in the web application, as follows:

hijackingAs shown, the attack result is received in the VPS Linux (attacker 2) only opening a socket connection using netcat to port 80 and the session cookie is received.

After completing the attack, let the UTM web interfase and we do not have the “Security Log / Intrusion Protection” section, that is not registered and does not block it.

fortinet

these attacks are maded in this scenario:

The attacker enters to intranet, who has an invited profile , he identifies that web application has XSS vulnerability and it stores on a common place in the web application then he deploys the malicious URL. The victim enters to intranet like whatever job day, he can review the balance of the day or some import information or maybe he could get an administrator profile.

When the victim gets to click to malicious url, the cookies are sent to attacker’s console.

the attacker can use that cookie in order to access to web application with the same victim’s profile and access all the information.

Test 2 – LFI

Including local files, allows viewing files that are not in the directory of your Web server publishing, as the following example:

fortinetIn that case we are viewing the “passwd” file in the “etc” directory of the operating system.

The attack is complete and is never detected by the IPS.

Test 3 – Reverse Shell using File Upload

It is common in Web applications has forms to upload files, whether images, documents docx, xlsx or pdfs inclusive.

However, this represents a major vector for an attacker because it allows the physical write to the server, which is a very tempting opportunity.

We will not explain  the many techniques to evade filters must have an upload form, however we will use a basic, is rename the extension to the flight, to upload your file, this file generates the reverse shell  through the web application.

Start the the process of the attack

A. Download and set up reverse shell file.
Download PHP reverse shell file and configured as follows:

fortinetAs we can see, in the variable $IP we are declaring the Linux VPS IP to which the shell is sent through the output port 1234, declared the variable $port

B. Rename to confuse evade the upload filter.
Then change the file extension to jpeg as shown below:

fortinet
C. Upload and execute file
With our shell covered in a jpeg file, we will upload
fortinetThen using a proxy as “burp suite” we will rename the file extension on flight.
fortinetSee a little more detail the change
fortinetThen, the file is uploaded, and execute in the URL where it is housed in the web server.
fortinetLater, the attack is complete, without being blocked by the UTM and the reverse shell is obtained, in the listening port 1234 of the VPS  as shown below:

fortinetfortinet

Test 4 Avoiding the perimeter Antivirus and winning remote shell in Windows 7

Context: Some of the features of all UTM is to have an antivirus perimeter, your objetive to be the first defense against the entry of infected files,  before they reach workstations of users, these attacks are best called client side attacks”.

The attack: In post past “Evading Antivirus with Shellter and Metasploitshowed how they could evade the local antivirus,

– Creating the infected file
Let’s create a Shellter infected file as follows:

hackingfortinetAs seen in the capture, it configures the IP 192.179.13.203 , will be receiving the reverse shell on port 5555, in the case that the infected file is execute in the victim.

Execute the handler in Mestasploit
Now
got one handler listening for the reverse shell
hackingfortinetAs shown, it is waiting for the reverse shell on port 5555

– Downloading the infected file on the client.
Now from the Windows, we will download the infected file, where the perimeter antivirus should react and do not allow downloading.
hackingfortinethackingfortinet11830837_10153137243563160_817221665_n
As you can see, it is possible to completely download the infected file.

Gaining remote shell
Now what follows is run the file, and get the reverse shell.

I pause to explain the following.

Peculiar behavior
When executed the first time the infected file, the reverse shell was obtained, but after repeating the process several times, it was no longer possible, the UTM detect and block the reverse shell,but again, but I repeat, then gained 2 or 3 times the previously reverse shell.

Negative behavior Obtain the shell
hackingfortinethackingfortinethackingfortinethackingfortinet
Positive behavior block shell
As shown in previous screenshots, twice the attack could be completed (the shell was obtained) but then this was no longer possible.

hackingfortinetAs you can see, the handler can not get to complete the process of obtaining meterpreter session.

And obviously the reason was because the IPS detected the attack.

hackingfortinet

Abnormal behavior Obtein the shell
We made the analysis of the packages, we could see that the shell was blocked, not at the time when Windows send the package handler, if not when, returned back to Windows (incoming packet) and at that moment, it was detected by IPS.

Because of this, we changed our configuration in file infected to send the shell to VPS Linux and this was the result :

hackingfortinetAs you can see after running the file, you may receive the connection in the VPS.

Conclusions

Juan Oliva

  • The Tests in the side of pentester were of such Gray box, not known the type of configuration in the UTM but but yes , the IP address of targets.
  • The tests are very used by computer criminals, especially when performing combinations of techniques may be more likely to succeed.
  • My opinion It’s necessary implement additional systems to monitor attacks.
  • Must be generated in the UTM custom rules for each type of situation, in the case of fortinet, this link is important.

Alexis Torres

  • In the proof of AV engine in client side, only it was made with a type of payload, “meterpreter” that is denominated in the IPS signatures as “Shell reversing” , there isn’t unique payload kind, and the target in Windows(known signature).
  • We don’t use any kind of sophisticated technique as crypter, encoder, reassemble however we use a dynamic code injector to PE, to create a malicious executable, after that in the pictures, we can see that originate a communicate channel between evilServer and the target.
  • With my experience in security projects deployments for enterprises, there is a great dependability in UTMs about their security information because they can find “all defense in one” when the reality is the first line defense perimeter in some company.
  • In addition, there aren’t enough to have firmware updated and licenses paid, in first point,  we should assure that the configuration has a good practice because it can get a great impact without much effort to attacker 😀

Finally, tests have no intention to somehow discredit a particular brand, all the opposite, have the spirit carried out with other security appliance and other brands, and improve the security of bussines applications.

For example, personally pending testing by a product of the same brand, called FortiWeb, which is a much more specialized in web attacks protection.

Waiting the new tests !!

Saludos
Juan Oliva
@jroliva

 

 

 

 

 

 

 

 

 

 

Howto Instalación Postgresql 8.3.0 sobre debian

Hace tiempo que no posteaba nada por andar un poco atareado ( solo un poco jejee) , bueno ahora posteo la instalación de postgresql 8.3.0 sobre debian etch r1 , espero que le sirva a mas de uno.

1.- Instalando dependencias generales

Desde Apt

apt-get install make gcc g++ bzip2

instalando zlib

tar -xjf zlib-1.2.3.tar.bz2
./configure
make
make install

vi /etc/locale

es_PE ISO-8859-1
es_ES ISO-8859-1
( Para mi caso, puede cambiar de acuerdo al País )2.- Instalación de postgresql 8.3.0 desde fuentes sin modulo readline

tar -xjvf postgresql-8.3.0.tar.bz2
./configure –without-readline
make
make install

Si todo salien bien hasta aqui , entonces ya temos echo lo mas dificil, ahora solo queda configurar el entorno de las bases de datos y levantar el servidor.

3.- Configuracion del entorno

– Creando usuario postgres
adduser postgres

– Creando carpetas para las bases
mkdir /usr/local/pgsql/data

– Inicializando el servidor postgresl
chown postgres /usr/local/pgsql/data
su – postgres
/usr/local/pgsql/bin/initdb -E LATIN1 -D /usr/local/pgsql/data

(Esto es muy importante si quieren inicializar las bd con formato LATIN1 , que soporta caracteres especiales)

/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &

– Cargando el lenguaje plpsql en el template1
/usr/local/pgsql/bin/createlang plpgsql template1

– Creando base de datos test
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test

– Configurando acceso local o remoto

vi /usr/local/pgsql/data/pg_hba.conf

# “local” is for Unix domain socket connections only
local   all         all                               trust
# IPv4 local connections:
#host    all         all         127.0.0.1/32          trust
# IPv6 local connections:
#host    all         all         ::1/128               trust
host    all         all          240.171.180.0 255.255.255.0     password # acceso a alguna red publica
host    all         all          10.10.4.0 255.255.255.0     password # acceso a alguna dmz
host    all         all          192.168.1.0 255.255.255.0     password # acceso a la lan
host    all         all          0.0.0.0 0.0.0.0     password # esto solo si quieren dar acceso a cualquier red
vi /usr/local/pgsql/data/postgresql.conf

listen_addresses = ‘IPADDESS’ #colocar la ip local
port = 5432
TIPS

– Iniciando el servicio
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

– Respaldo de base de datos , por ejemplo test
su – pgsql -c “pg_dump test > /usr/backups/testbd061206-1215.dump

– Restauración
/usr/local/pgsql/bin/psql -d test -f /usr/backups/testbd061206-1215.dump

Instalacion Mono sobre Centos 5

Aqui explico como instalar mono con los repositorios de AL sobre rhel5 , espero que le sirva a mas de uno.

a) Configuracion de repositorio

wget http://www.alcancelibre.org/al/AL-RPM-KEY
rpm –import AL-RPM-KEY
vi /etc/yum.repos.d/CentOS-Base.repo

[AL-Desktop]
name=Enterprise Linux $releasever – $basearch – AL Desktop
mirrorlist=http://www.alcancelibre.org/al/el5/al-desktop
gpgkey=http://www.alcancelibre.org/al/AL-RPM-KEY

 b) Instalación y configuración de mono sobre apache web server

 yum -y install mono-core mono_web xsp mod_mono
vi /etc/httpd/conf.d/mod_mono.conf

Nota: debajo de la primera linea colorar

 Alias /demo “/usr/lib/xsp/test”
AddMonoApplications default “/demo:/usr/lib/xsp/test”
<Location /demo>
  SetHandler mono
</Location>

 

#service httpd restart

 Si todo salio bien cuando ingresemos a  http://localhost/demo/
ingresaremos a los demos de .net en nuestro apache

Consideraciones: La instalacion se realizo sobre un sistema limpio , como veran se omitio la instalacion de httpd

Calcular si una carpeta(s) tiene mas de 30 dias de creada

Aqui dejo este scrip en shell, lo que hace es ver si la carpeta(s) de una ruta determinada tiene un mes de creacion o no con respecto a la fecha actual y si es asi procede a borrarla para que no ocupe espacio en el server.

Considero que no es una vercion final ya que pienso que hay muchos detalles que afinar y recortar (bueno no soy programador de formacion 😀 ) asi que son bienvenidas las aportaciones, espero que sea de utilidad.

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

#!/bin/bash
# Escrito por Juan Oliva <jroliva at gmail dot com>

#mes acual
MA=$(date +%m)
#dia actual
DA=$(date +%d)

#Variables para pasar el mes recibido
mes1=Jan
mes2=Feb
mes3=Mar
mes4=Apr
mes5=May
mes6=Jun
mes7=Jul
mes8=Ago
mes9=Sep
mes10=Oct
mes11=Nov
mes12=Dec

#path de la carpeta
carpeta=/home/minimark/public_html/entregas/ #realizar el recorido
for dir in `ls -R $carpeta`
do

#capturo el dia de creacion
DC=`ls -l $carpeta | grep $dir | cut -d ‘ ‘ -f8`
#capturo el mes de creacion
MC=`ls -l $carpeta | grep $dir | cut -d ‘ ‘ -f7`

if [[ $MC == $mes1 ]]
then
#variables para sumarle un mes al actual
MD=02
#Llamo a la funcion paso la variable
calculo $MD
fiif [[ $MC == $mes2 ]]
then
MD=03
calculo $MD
fi
if [[ $MC == $mes3 ]]
then
MD=04
calculo $MD
fi
if [[ $MC == $mes4 ]]
then
MD=05
calculo $MD
fi
if [[ $MC == $mes5 ]]
then
MD=06
calculo $MD
fi
if [[ $MC == $mes6 ]]
then
MD=07
calculo $MD
fi
if [[ $MC == $mes7 ]]
then
MD=08
calculo $MD
fi
if [[ $MC == $mes8 ]]
then
MD=09
calculo $MD
fi
if [[ $MC == $mes9 ]]
then
MD=10
calculo $MD
fi
if [[ $MC == $mes10 ]]
then
MD=11
calculo $MD
fi
if [[ $MC == $mes11 ]]
then
MD=12
calculo $MD
fi
if [[ $MC == $mes12 ]]
then
MD=01
calculo $MD
fi

#Funcion que calcula si la carpeta tiene un mes de creada
function calculo()
{
if [[ $MD == $MA ]]
then
#echo “la carpeta $dir se creo el mes $MC y el mes actual es $MA se evaluara los dias ”
if [[ $DC == $DA ]]
then
#echo “la carpeta $dir fue creada el $MC / $DC y la fecha de hoy $MA / $DA y ya tiene un mes de creacion extactamente y se borrara ahora ”
rm -r $carpeta/$dir
else
#echo “la carpeta $dir fue creada el $MC / $DC y la fecha de hoy $MA / $DA y se borrara recien en $MD / $DC ”
fi
else
#echo “La carpeta $dir nose borrar por que se creo $MC / $DC y se borrara en un mes : / $MD / $DC ”
fi
}

done
###############################################