martes, 26 de marzo de 2013

Crear una lista de programas instalados en Linux

Al realizar copias de seguridad de un sistema Linux una de las prácticas que deberíamos llevar a cabo es hacer un respaldo de los programas instalados en el sistema. Esto lo haremos con el fin de que si tenemos que restaurar por algún problema el sistema sepamos que programas estaban instalados y podamos volver a instalarlos.

Ahora explicaremos cómo poder hacer esta lista desde la consola de Linux tanto para sistemas basados en Debian (Ubuntu, Debian, etc.) como para sistemas basados en RPM (Fedora, Red Hat, CentOS, Suse, etc).

Si estamos usando Debian o Ubuntu podemos realizar esta lista con un simple comando dpkg y redireccionar la salida a un fichero de texto:
#dpkg --get-selections > /backups/software_instalado.log

En caso de estar usando una distribución basada en RPM usamos el comando rpm y nuevamente redireccionamos la salida a un fichero de texto:
#rpm -qa > /backups/software_instalado.log

Con esto ya tendremos, además del respaldo de los ficheros del sistema, una lista de los programas instalados.

En caso de que tengamos que volver a instalar los programas tras una restauración del sistema debemos de usar  el siguiente comando para Debian:
#dpkg --get-selections < /backups/software_instalado.log

Una vez que se ha realizado la importación de los programas pasamos a instalarlos con dselect:
#dselect

Para instalarlos seleccionamos la opción i.

Estos son los comandos de restauración para los sistemas basados en RPM:
#LIST="$( cat /backups/software_instalado.log )"

Si usas yum:
#for s in $LIST; do yum -y install $s; done
#yum -y install $(cat /backups/software_instalado.log)

 Saludos curiosos.

miércoles, 20 de marzo de 2013

Instalación y configuración de Mailgraph para monitorizar un servidor de correo

Si trabajas habitualmente con Postfix como servidor de correo os habrá surgido la misma pregunta que nos surgió a nosotros: ¿Cómo puedo monitorizar los mensajes enviados y recibidos que llegan al servidor de correo?

Pues si trabajamos con entorno gráfico hay muchas aplicaciones que nos pueden ayudar a realizar esta tarea. Pero: ¿qué hay si no lo tenemos? ¿Podríamos tener algún tipo de script o aplicación que nos mostrara en tiempo real estadísticas sobre el servidor de correo sin necesidad de usar entorno gráfico?

La respuesta es que sí y se llama Mailgraph. Este es un sistema de estadísticas que utiliza como frontend RRDtool y permite recolectar de forma gráfica el número de correos enviados y recibidos en gráficos diarios, semanales, mensuales y anuales. La estructura de la aplicación es un script en perl corriendo en el servidor, que se encarga de recolectar los datos, y por otra parte un script cgi a través del cual se generan y se visualizan los gráficos vía web.

Instalación de Mailgraph

Como hemos mencionado anteriormente Mailgraph requiere tener instalado RRDtool y el módulo de perl File::Tail. RRDtool se puede instalar tanto desde el gestor de paquetes de Linux como compilándolo.
#aptitude install rrdtool.i386

El módulo de perl lo podemos instalar desde cpan:
cpan&gt; install File::Tail

Descargamos y descomprimimos la última versión del programa desde el sitio web oficial:
# wget http://mailgraph.shweikert.ch/pub/mailgraph-1.14.tar.gz
# tar -xzvf mailgraph-1.14.tar.gz
# cd mailgraph-1.14

Ahora nos vamos al fichero por defecto de Mailgraph y lo configuramos de la siguiente manera:
MAIL_LOG=/var/log/mail/mail.log
IGNORE_LOCALHOST=true

En la primera línea le indicamos cual es la ruta del log del servidor de correo. Y en la segunda le decimos a que ignore cualquier correo que tenga como origen o destino localhost.

Ahora pasamos a iniciar Mailgraph con el siguiente comando:
#/etc/init.d/mailgraph start

Con esto ya tendremos Mailgraph funcionando en nuestro servidor y podremos ver la actividad de postfix. Lo que muestra es algo parecido a esto con la información diaria, semanal, mensual y anual:



Si queréis ver un ejemplo real podéis acceder a este enlace. Saludos curiosos.

miércoles, 13 de marzo de 2013

Crakeo con John the Ripper 2/3: Instalación y configuración

La instalación de John the Ripper es bastante sencilla ya que podemos hacerlo descargándolo directamente desde los repositorios de Linux con un simple APT-GET. Pero lo cierto es que con este método a veces no descargamos la última versión, por lo que nosotros aconsejamos que lo descarguéis desde la web oficial y realizar una instalación manual  y su posterior configuración que pasamos a detallar:

Instalación

Descarga y descomprime la última versión del programa con el comando:

Ahora nos debemos colocar en la carpeta src del programa que es la que posee los archivos fuente:

Posteriormente debemos de compilar el programa para poder ejecutarlo con el comando make. En este apartado podemos realizar o bien la instalación genérica con make clean generic o bien indicar sobre que sistema se va a instalar con make clean . Está última es se usa para realizar una instalación en un sistema determinado en caso de que se desee distribuir el programa para una plataforma determinada. Las opciones de se obtiene en la ayuda del comando make. Como para nosotros esto no es necesario vamos a realizar la instalación genérica:

Con esto ya tendríamos el programa instalado en nuestro sistema. Ahora para poder ejecutarlo solo tendríamos que colocarnos en el directorio run y desde allí ejecutar el siguiente comando:

También podríamos usar un test para asegurarnos de que se ha instalado correctamente. Para ellos solo hay que ejecutar el siguiente comando:

Con esto ya tendríamos a John instalado y funcionando en nuestro sistema.

Configuración de John

John the Ripper posee un fichero de configuración donde se establecen las opciones generales de las características del programa. Estás pueden ser definición de diccionarios de passwords, modos de ejecución, reglas en el orden de diccionarios, rutas de ejecución, etc.
Este fichero se es john-1.7.9/run/john.conf, veamos algunas de sus principales características:

Opciones
En esta sección se definen los valores generales de ejecución. Estos son los siguientes:

Wordlist: Indica la ruta del diccionario de claves a utilizar en el proceso de crakeo, esta opción es útil al utilizar el modo diccionario. Como podemos ver John posee por defecto un diccionario de claves débiles aunque no es muy extenso, por lo que para un mayor rendimiento se recomienda el poseer uno de mayor tamaño.
Idle: Si está definida como "Y" indica que el programa solamente utilizará ciclos ociosos del procesador, reduciendo el impacto en la ejecución de otros procesos del sistema.
Save: Es el intervalo de tiempo en segundos en que se genera un punto de guardado de sesión. Cuando un proceso de John es interrumpido por alguna razón, se genera un fichero que incluye información sobre la sesión; de este modo se pude seguir realizando el proceso desde el último punto guardado.
Beep: Si lo definimos a "Y" John generará un pitido "Beep" cuando se logre descifrar una contraseña válida.

Modo diccionario y singles
La sección del modo diccionario se declara con: [List:Rules:Wordlist] y la sección de modo single es declarada con esta sección [List:Rules:Single]. En ellas se definen algunas reglas para el proceso de crakeo y determinan características tales como clases de caracteres, constantes numéricas y variables, comandos de cadenas, comandos de control de longitud, comandos de conversión de juegos de caracteres, etc.

Modo incremental
Se define con: [Incremental:tipo_de_modo], donde tipo_de_modo es simplemente un nombre predefinido que permite separar modos incrementales para cada juego de caracteres:
File: Es el fichero donde se encuentra el juego de caracteres a utilizar.
MinLen: Indica el número mínimo de caracteres para la longitud de password, por defecto es 1.
MaxLen: Indica el número máximo de caracteres para la longitud de la password, por defecto es 8.
CharCount: Permite limitar el número de caracteres que serán utilizados, de este modo John nunca intentará utilizar caracteres raros y utilizarlos en las combinaciones.

Modo externo
La sección destinada al modo externo, que como se comento en la anterior entrada, tiene la utilidad de definir rutinas escritas en C, para que John las ejecute, se define con: [List.External:tipo_de_modo] donde tipo_de_modo es cualquier texto indicativo que defina la rutina.
Algunas funciones que se pueden definir son:
init(): Se invoca en el inicio del programa, se encarga de inicializar variables globales.
filter(): Se invoca para cada palabra tratada, de esta forma se pueden filtrar algunas. Se recomienda no utilizar este método cuando se utiliza con el propio generate(). Es mejor modificar generate() para generar palabras que podrían ser filtradas.
generate(): Se invoca para generar la siguiente palabra a tratar.
restore(): Se invoca cuando se restablece una sesión interrumpida.
Además de esto el modo externo tienen la facilidad de ser compatible con todos los otros modos simplemente utilizando la opción -make-charset.

En el próximo artículo de la serie veremos cómo usar el programa para atacar contraseñas reales usando los distintos modos que explicamos anteriormente. Saludos curiosos.

miércoles, 6 de marzo de 2013

Generar claves y CSR en Apache para un certificado de seguridad

En multitud de ocasiones tenemos el problema de que poseemos una web que realiza pagos online y lo normal es que esas zonas estén protegidas con certificados de seguridad.

Para poder obtener este tipo de certificados es necesario que una entidad certificadora oficial nos lo proporcione. Hay muchas que se dedican a esto VeriSign, GeoTrust, GlobalSign, etc...

Ahora para que la empresa nos genere el certificado es necesario que nosotros tengamos nuestras claves privadas y públicas en el servidor. La petición de firma del certificado (CSR) es lo que le enviaremos a la entidad certificadora para que nos genere el certificado.

Vamos a ver cómo generar las claves para obtener el certificado.

En nuestro caso estamos trabajando con el servidor Apache bajo Linux, pero los comandos son igualmente aplicables para Windows Server.

1º Generar el par de claves

Para poder realizar está tarea tenemos la herramienta OpenSSL que nos permite generar las claves y el CSR. Normalmente está instalado por defecto.
Pasamos a generar la clave privada con el siguiente comando:
#openssl genrsa -des3 -out www.dominioaproteger.com.key 2048

En caso de que no queramos poner una contraseña para proteger el par de claves podemos prescindir del atributo: -des3 pero no tendremos protegidas el par de claves.

2º Generar el CSR

Para generar el CSR utilizamos el siguiente comando:
#openssl req -new -key www.dominioaaproteger.com.key -out www.dominioaproteger.com.csr

Si anteriormente usamos el comando -des3 para proteger la clave con contraseña nos pedirá que volvamos a introducirla.

Ahora nos pide información acerca del certificado:
País: Código del 2 dígitos del país.

Estado/Provincia: Provincia o estado donde se encuentra la organización.

Localidad: Localidad donde se encuentra la organización.

Organización: Nombre de la organización o empresa que pide el certificado.

Unidad organizativa: Nombre del departamento de la empresa que gestiona el certificado.

Nombre Común: La URL completa que se vaya a proteger. En nuestro caso www.dominioaproteger.com

El resto de campos no es necesario rellenarlos.
Con esto ya tendríamos listo todo lo necesario para poder contratar el certificado de seguridad para nuestro domino. Saludos curiosos.

viernes, 1 de marzo de 2013

Crakeo con John the Ripper 1/3: Conceptos básicos

John the Ripper es una utilidad que permite crakear diferentes tipos de hashes para obtener passwords en base a distintas técnicas como ataques por diccionario o por fuerza bruta. Tiene versiones tanto para Windows como para Linux.

Se utiliza bajo línea de comandos. Se ejecuta en distintos modos en función de la necesidad que se haya creado.

Modos de John de The Ripper

Los modos son el mecanismo empleado por el programa para realizar el proceso de craqueo sobre un fichero de hashes. El modo definido define la forma con la que se va a intentar obtener las credenciales encriptadas.

Modo diccionario

Es el modo más común en los ataques. Consiste en realizar el craqueo pasando un diccionario de claves (fichero) y usando una técnica de prueba y error. El proceso a nivel de cómputo es costoso, pero es una técnica muy efectiva si se tiene un diccionario con un gran número de claves y siempre y cuando la fortaleza de la clave almacena en el hash no se excepcionalmente alta.

Modo single

En este modo JtR utilizará un amplio números de reglas predeterminadas. Aquí lo que hace es usar la información del nombre de inicio de sesión, apellidos e información del usuario combinada.
Este modo solo es efectivo cuando ya se ha comprometido el sistema en cuestión y el atacante ya tiene una cuenta limitada en el sistema y pretende conseguir una cuenta de administrador. Es más rápido que el modo diccionario pero depende de la información recolectada, si está no se tiene la probabilidad de fracaso es desgraciadamente excesivamente alta.

Modo incremental

Es el modo más completo y potente que posee JtR. Consiste en combinar todos los caracteres existentes para sacar la password. El mayor problema es que dependiendo de la fortaleza y la longitud de la contraseña este proceso podría llegar a ser eterno. Entonces ¿cuál es el beneficio de su uso? Pues que con él podemos especificar un juego de caracteres y una longitud de la contraseña por lo que tardará mucho menos el proceso.

Modo externo

Consiste en usar un programa externo, escrito en C y definir un conjunto de funciones que son compiladas y utilizadas por John.

Como vemos es un programa muy versátil, que podemos usar como queremos.
Posteriormente explicaremos su instalación y configuración. Saludos curiosos.

Install Drupal 8 in CentOS

Drupal is an open source, flexible, highly scalable and secure Content Management System (CMS) which allows users to easily build and create...