jueves, 22 de agosto de 2013

Generador Masivo de certificados



Soy noooormal!!! gritaba en un bar hace unos días con unos colegas, mentira cochina xD....buenos días gente decente e indecente, el otro día tuve que hacerme unos scripts en bash para el curro con el fin de generar certificados de forma masiva, me parece algo bastante útil, ya que son comandos que ejecutas 1 vez o 2 como mucho y te olvidas...

No es nada del otro mundo, simplemente ahorra tiempo aquí os dejo el repositorio del susodicho:

https://github.com/padajuan/Cert-nerator

bueno, realmente es un poquito mas que eso, es un bundle que básicamente se nutre de un archivo de configuración externo al del sistema, registra aquellos certificados expedidos y firmados dentro del fichero index.txt, con el fin de llevar un seguimiento.

Necesitas un par de pasos previos para generar la Key y la CA, pero después ya le puedes dar candela. 

Las instrucciones están en el README.md del propio repo, con un poco de suerte incluso a alguien le puede ser útil :)

También quiero agradecer a fmartingr ese cable de ultima hora ;), ty bitch

martes, 20 de agosto de 2013

Entrada Flash - Como saber que CA hay cargadas en un Balanceador con cifrado SSL

Hola gente!, os traigo un comandillo útil que os puede venir bien si necesitáis saber las CAs que hay cargadas en un balanceador/servidor/w/e y conectáis con el a través de un certificado emitido por esa CA:

 openssl s_client -connect  ip:puerto

La salida es bastante grande, pero lo importante es lo que viene despues de esto:
  Acceptable client certificate CA names

Espero que os haya servido ;)

lunes, 29 de julio de 2013

Entrada Flash - Openssl

Buenas a todos queridos televidentes...;), a modo de recordatorio un par de comandos utiles de OpenSSL:

Extraer la Key privada de un PFX
- openssl pkcs12 -in CertPKCS12.pfx -nocerts -out Cert.key

Extraer el Certificado de un PFX
- openssl pkcs12 -in CertPKCS12.pfx -clcerts -nokeys -out Cert.pem

Quitar el Password de una Key:
- openssl rsa -in Cert.key -out Cert_1.key

Espero que os sea util...esto lo encuentras por los internets facilmente pero como siempre se me olvida, me sirve para ubicarlo facilmente ;).

martes, 12 de marzo de 2013

Entradas Flash

A las buenas, voy a crear este tipo de entrada para agregar comandos, utilidades y demas cosas que me vaya encontrando por ahi que puede ser util para vosotros, aqui os dejo la primera:

cat access.log | awk '{print $1}' | sort |uniq -dc

En un access.log donde el campo 1 es la ip de origen te dice el numero de peticiones que tiene cada ip de origen, es una chorrada util ;)

jueves, 12 de enero de 2012

Como montar un Cluster de MongoDB con 4 Nodos

Bueno, después de una temporada con mucho curro vuelvo con cositas nuevas y frescas, voy a explicaros como montar un cluster de MongoDB para entornos de producción.
Para empezar vamos a contar con 4 nodos a los que vamos a llamar Frodo, Sam, Pipin y Merry...si exacto soy un jodido friki xDD. Para hacer mas fácil levantar los servicios y demás lo mejor es usar configuración de demonios basada en archivos viene a ser mas o menos lo mismo que el comando en crudo, pero de esta manera alguien que no tenga mucha idea, puede levantar los servicios mientras tu te rascas la parte baja de los genitales xD.

Vamos a empezar con el Replica Set, que en resumen es, un cluster Maestro-esclavo inteligente, si se cae un nodo, hace otro de ellos se hace maestro y toma el control de la situación. Se van a llamar Agny y Rudra...que si que soy un puto friki...xDD

Frodo
mkdir -p /var/lib/mongo/agny /var/lib/mongo/rudra
mongod --dbpath /var/lib/mongo/agny --port 10000 --replSet agny
mongod --dbpath /var/lib/mongo/rudra --port 11000 --replSet rudra --oplogSize 1


Pipin
mkdir -p /var/lib/mongo/agny
mongod --dbpath /var/lib/mongo/agny --port 10000 --replSet agny


Sam
mkdir -p /var/lib/mongo/agny /var/lib/mongo/rudra
mongod --dbpath /var/lib/mongo/agny --port 11000 --replSet agny --oplogSize 1
mongod --dbpath /var/lib/mongo/rudra --port 10000 --replSet rudra

Merry
mkdir -p /var/lib/mongo/rudra
mongod --dbpath /var/lib/mongo/rudra --port 10000 --replSet rudra

Con estas instrucciones puestas cada una en su correspondiente servidor, lo que hacemos es preparar el terreno, estamos organizando el espacio donde se va a dejar los archivos de la DB, y despues levantamos los correspondientes demonios en cada servidor.

Ahora vamos a conectarnos a Frodo para cargarle la configuración..


mongo Frodo:10000/admin

> rs.initiate({"_id" : "agny", "members" : [
... {"_id" : 0, "host" : "Frodo:10000"},
... {"_id" : 1, "host" : "Pipin:10000"},
... {"_id" : 2, "host" : "Sam:11000", arbiterOnly : true}]})

Y ahora a Sam...

mongo Sam:10000/admin

> rs.initiate({"_id" : "rudra", "members" : [
... {"_id" : 0, "host" : "Sam:10000"},
... {"_id" : 1, "host" : "Merry:10000"},
... {"_id" : 2, "host" : "Frodo:11000", arbiterOnly : true}]})


Tarda unos segundos y ale ya tienes tu Set de hobbits replicados, lo bueno que tiene esta configuración es que los que actúan de árbitros hacen que en caso de caída no se pierda funcionalidad en la aplicación, ademas de que no vas a tener 2 maestros concurrentes en ningún servidor nunca.

Ahora las Shards, vamos a montar 2 y vamos a volcar la configuracion en Sam, Pipin y Merry


Pipin
mkdir /var/lib/mongo/config
mongod --dbpath /var/lib/mongo/config --port 20000

Sam
mkdir /var/lib/mongo/config
mongod --dbpath /var/lib/mongo/config --port 20000

Merry
mkdir /var/lib/mongo/config
mongod --dbpath /var/lib/mongo/config --port 20000
mongos --configdb Pipin:20000,Sam:20000,Merry:20000 --port 30000

Ahora nos conectamos al puerto 30000 de Merry y configuramos la Shards

> mongo Merry:30000/admin

> db.runCommand({addshard : "agny/Frodo:10000,Pipin:10000"})
{ "shardAdded" : "agny", "ok" : 1 }
> db.runCommand({addshard : "rudra/Sam:10000,Merry:10000"})
{ "shardAdded" : "rudra", "ok" : 1 }

Ale a correr, ya tenemos el cluster montado, ahora vuestra aplicación debe apuntar al proceso mongos, bueno realmente lo mejor es montar un proceso mongos por nodo de aplicación y que así apunten a Localhost:puerto.

Espero que os haya servido de ayuda, esta info la he sacado de un par de libros y de el blog http://www.snailinaturtleneck.com/blog.

miércoles, 6 de julio de 2011

MRTG facil, sencillo y para toda la familia...

Buenas, vamos con MRTG, se trata un sistema de monitorización basado en el protocolo SNMP y basicamente monitoriza la I/O de datos en una interfaz de red, es bastante facil de configurar y da buen resultado.

Para habilitar el protocolo SNMP en Switches y Firewalls generalmente hay que entrar en la interfaz de administración y activarlo, también hay que definir que Ip's pueden realizar dicha monitorización, es decir, tu servidor donde tengas puesto tu MRTG, en caso del Firewall es una Policy configurable.

Esto esta basado en entornos Debian, aqui vamos:


# Instalación de paquetes mrtg
apt-get install mrtg*

#Hay que crear las carpetas dentro de /var/www/mrtg para volcar ahí los datos generados por la configuración

mkdir -p /var/www/mrtg/Switch1

# Con esto se genera el archivo de configuración mrtg Switch1
cfgmaker --ifref=name,descr --ifdesc=descr,ip --global "workdir: /var/www/mrtg/switch1" --global "Options[_]: bits,growright" --output /etc/mrtg-Switch1.cfg public@IP-DEL-Switch

# Con esto generas los dibujicos y los vuelca en el workdir
mrtg /etc/mrtg-Switch1.cfg

# Esto genera un index.html con tu archivo de configuración
indexmaker --output /var/www/mrtg/Switch1/index.html /etc/mrtg-Switch1.cfg


Después de esto hay que reiniciar Apache y si quieres mas comodidad dar de alta el nombre de tu maquina en un DNS. Si quieres hacerlo un poco bien puedes currarte un Vhost con acceso limitado por Ips y demas, eso lo dejo a elección del administrador....

Bueno, espero que os sea util....

Logs, logs y mas logs

Buenas, seguimos con el tema de los logs, esos grandes desconocidos...bueno básicamente es una función que lo que hace es listar todos los logs debajo de un árbol de carpetas y se muestra la modificacion en tiempo real:



tail -c0 -f `find /var/log/ -type f`



Espero que os sea util....