Configurar windows en redes linux (active directory)

Hola a todos!

Debo ser honesto, saqué esta guía de un sitio en ingles. Ademas le hago unas mejoras que simplifican mucho la vida. Deberian revisarse ese articulo, igual, porque tiene para configurar todas las cosas que sirven para una red Windows: el mail, el communicator. Yo voy a ir avanzando con esto y les voy a ir contando.

Primero debemos averiguar el kdc — el active directory server — que controla toda la bola. Desde su powershell de windows o el clasico cmd de una PC conectada a esta misma red, tipeen

PS C:\Users\PedroW> nslookup
Default Server:  dnzdc3.datacom.co.nz
Address:  172.30.0.99
>

Con esa informacion, podemos seguir paso a paso con la guia.

Ahora vuelvan a su amado linux. Corran este comando. Si somos root omitimos el sudo:

sudo apt-get install krb5-config krb5-user

Ahora nos va a pedir el “Default Kerberos version 5 realm”. No tengo la mas palida idea que es, pero creo que es un nombre que le vamos a poner al coso. Por lo pronto, en mi red datacom funciona.

Luego nos va a pedir “Kerberos server for your realm.”. Para satisfacer ese campo, usamos el contenido de lo que nos devolvio el nslookup, en mi caso dnzdc3.datacom.co.nz. Despues el otro campo nos va a pedir un administrative server. Como no tenemos ni idea que es eso, le ponemos dnzdc3.datacom.co.nz tambien.

Por lo pronto la instalacion va a terminar, y estariamos listos para conectarnos a la red. Si no llenamos los datos correctamente, podemos corregir nuestros errores editando el archivo /etc/krb5.conf

Luego, ejecutamos el comando

root@pc~:# kinit <usuario>

en mi caso, mi usuario en windows es DATACOM\PedroW. En el kinit, se espera exactamente ‘PedroW@DATACOM.CO.NZ’. Notesen las mayusculas y tambien notese que tuve que agregar el dominio completo y no solo DATACOM

Entonces, usando comillas simples, y respetando las mayusculas:

root@pc~:# kinit 'PedroW@DATACOM.CO.NZ'

Y listo, tenemos internet!

Hay tres errores que obtuve, y cada uno tiene su obscuro significado:

  • kinit: Client not found in Kerberos database while getting initial credentials – este significa que el usuario esta mal.
  • kinit: KDC reply did not match expectations while getting initial credentials – este significa que el usuario esta bien, y el dominio esta bien, pero el servidor esta respondiendo algo distinto a lo que el cliente espera y este esta fallando. Mi solucion fue hacer que el dominio sea DATACOM.CO.NZ en lugar de DATACOM. Las mayusulas son escenciales.
  • kinit: Preauthentication failed while getting initial credentials – la contrase;a esta mal

Les deseo suerte. Si quieren su communicator, su mail, y demas cosas funcionando en Windows, los remito a este articulo.

Un abrazo,
Pedro

VIM como ide de Python

¡Hola a todos!

Vim es un editor de texto que corre en BASH. GVim es su contraparte con interfaz gráfica. Últimamente me encontraba en la situación de querer programar en mi pentium 4, pero la mayoría de las IDEs son muy exigentes respecto al hardware. Quizás sea necesario, ya que las IDEs hacen muchas cosas interesantes, pero la verdad es que muy en el fondo todos sabemos que programar es cuestión de editar texto, y decirme que necesito mas de 1GB de RAM para editar texto… Además, no siempre va a tener uno la posibilidad de tener una PC así ( si está viajando o algo por el estilo. )

Ahora, no solo necesito editar texto. Necesito auto indentación, un fondo oscuro, y algo que me sirva para browsear los archivos. Así se ve mi Gvim:

Ese es un programa que estoy haciendo que obtiene información de la API de twitter en python para mi trabajo en brandigital :)

Si quieren descargarse el código para hacer que su vim se vea así, tienen que instalar moria y nerdtree. Mis archivos de configuración están en un repositorio público en bitbucket, solo tienen que ponerlos en su directorio home.

Un abrazo grande,
Pedro

Como usar south

¡Hola a todos!

Escribo este post para la empresa en la que ahora trabajo ( Brandigital ), como para documentar un poco el proceso que implica poner nuestra base de datos bajo control de versiones usando mercurial y #django-south. El proceso es relativamente sencillo. Este tutorial supone que tenemos una base de datos ya creada, y que ya leimos el manual de south respecto a la instalación, su uso y como convertir una aplicación ya creada a south.

Comprendiendo lo básico

South tiene 2 comandos que debemos saber: schemamigration y migrate. Sus usos mas comunes son los siguientes:

# identificar todos los cambios hechos en los modelos y escribirlos al disco duro.

root@alice# python manage.py schemamigration app_name --auto
 - Deleted field nombreTrue on web.CategoriaWidget
Created 0005_auto__del_field_categoriawidget_nombreTrue.py. You can now apply this migration with: ./manage.py migrate web

# aplicar los cambios

root@alice# python manage.py migrate app_name
Running migrations for web:
 - Migrating forwards to 0005_auto__del_field_categoriawidget_nombreTrue.
 > web:0005_auto__del_field_categoriawidget_nombreTrue
 - Loading initial data for web.

Aplicando cambios en los modelos en una versión y reflejándolos en el resto

Como primer paso tenemos que hacer un cambio en los modelos en este caso, quité un field llamado nombreTrue del modelo CategoriaWidget. Una vez hecho esto, debemos decirle a south que por favor nos reconozca los cambios

root@alice# python manage.py schemamigration web --auto
 - Deleted field nombreTrue on web.CategoriaWidget
Created 0005_auto__del_field_categoriawidget_nombreTrue.py. You can now apply this migration with: ./manage.py migrate web

Esto hace que los cambios se apliquen en el disco duro y sean vistos por nuestro sistema de control de versiones. Una vez hecho esto, tenemos que envíar nuestros cambios al repositorio. Nosotros usamos mercurial.

root@alice# hg add 
root@alice# hg commit -m 'testeando south'
root@alice# hg push

Una vez hecho esto, nos conectamos por ssh a la pc bob, y obtenemos la información desde el repositorio.

root@bob# hg pull 
root@bob# hg update 

Los cambios que tendrían que hacerse en la PC de Alice son los mismo que en la de bob, por lo que solo tenemos que aplicar los cambios que ha calculado el schemamigrate de Alice.

root@alice# python manage.py migrate web
Running migrations for web:
 - Migrating forwards to 0005_auto__del_field_categoriawidget_nombreTrue.
 > web:0005_auto__del_field_categoriawidget_nombreTrue
 - Loading initial data for web.

De esta misma manera podemos llevar los cambios a staging / producción.

¡Espero que les sirva! En realidad es bastante sencillo, y me parece que nos puede llegar a servir bastante.

Un abrazo,
Pedro

Vulnerabilidades masivas y persistentes

Hola a todos.

Este es un bloc de notas personal en el que voy a guardar vulnerabilidades que funcionan en cualquier instalación de determinado software y que debido a sus características es probable que perdure en el tiempo. Este post tiene finalidades educativas y esta destinado exclusivamente para mi. Usted no está autorizado a leerlo :) y mucho menos utilizarlo.

Voy a ir actualizando esta lista a medida que pase el tiempo. Si supiera de que se trata, hubiera incluido un link a esto.

Un abrazo,
Pedro

Utilizar GPG desde consola

—–BEGIN PGP SIGNED MESSAGE—–
Hash: SHA1

¡Hola a todos! un tutorial para usar gpg desde consola.

Importando las llaves

Suponiendo que queremos descargar la clave privada desde un servidor ftp donde la tenemos guardada, lo haríamos asi:

$ wget ftp://USUARIO:CONTRASENA@ftp.google.com/pedro_private.asc

Listo, ahora tenemos nuestra clave privada en el current working directory. Es bastante importante que ejecutemos

$ history -c

para eliminar la contraseña del history de bash. Procedemos a importar la clave privada.

$ gpg --import pedro_private.asc
gpg: key EC5D3913: "droope <pedro@worcel.com>" not changed
gpg: key EC5D3913: already in secret keyring
gpg: Total number processed: 2
gpg:              unchanged: 1
gpg:       secret keys read: 1
gpg:  secret keys unchanged: 1

En mi caso ya la tenía importada por lo que no pasó nada. Después necesitamos importar la llave pública de nuestro receptor. El procedimiento es el mismo. Si no tenemos su llave, podemos intentar buscarla con –search-keys

$ gpg --import bob_public.asc
$ gpg --search-keys "bob perez"

Encriptando un mensaje

Para encriptar y firmar un mensaje, el comando básico es

$ gpg -sea -r bob

You need a passphrase to unlock the secret key for
user: "droope <pedro@worcel.com>"
1024-bit DSA key, ID EC5D3913, created 2010-06-29

Enter passphrase:

el parámetro -r indica el receptor, Podemos usar su nombre, su apellido, su email, o el ID de su llave supongo. -s es para firmar, -e es para encriptar y -a es para que el texto aparezca en ascii y no en binario. ( I think, aunque -a viene de armor y no de ascii )

Escribimos la contraseña y comenzamos a escribir un mensaje. Es un poco incómodo para empezar, porque no podemos navegar el texto excepto con el backspace, y no podemos subir las líneas ni nada por el estilo. Una vez terminada la edición del texto presionamos Ctrl + D una o dos veces para terminar la edición. Esto es estandar en bash, no recuerdo exactamente, pero creo que es la forma estandar de insertar un caracter EOF ( end of file ). Sirve también para cuando queremos envíar mails desde consola utilizando el comando `mail`. Vale la pena recordarlo ;) es muy util.

Fácil, eh? Y mucho mas práctico que cualquier cliente de X. El próximo manual mas información sobre como usar un mejor editor a la hora de editar el texto. ( nano ftw ).

Para encriptar un archivo

gpg -sea -r bob archivo.txt

Desencriptar un mensaje

Para desencriptar un mensaje de consola, el comando es

$ gpg -d
# pegamos el texto a desencriptar
- -----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (GNU/Linux)

hQEOA84lsilnu8zVEAQAtD6gz9Ug2CvD1yLpbTrg+3TFRjSyF/mD3sbximxX1hju
v7Kw7UPcVcWMx/jT4ORdlDqzRSVqHnXxOFXm8QSy+aJinxYoEtIGuIqJL/2Pi9KL
Rc5qz2JULX2Ux5I17tDXJCrDBttMBCwpMFcwYZ33KIgikPFpLeWEXzXStzNx9oUD
/Rsjqnlph5EcPHlbMtYH37eqA8DvopCZs4GFFuqcLdbvsJDLJlsgm3WD6WefVHmj
RB8f/BnF1XKQcwApLROSh0SBx5IqtzmL657QlJm0yNwmcW9M31R/xF8G96QnxHud
mvvwYKfT/CTIOJux45FNFDjgW+CkO/scAqzksrdqH7Ty0pUBf8oK0vVT2ndtZVOr
eODDy0i94cdtddE7EeU6+g1/E+V9730gKY23rmDphBXKHdY6dHcoExwWaErpl9Wc
L1QAA9PdR4ELfwFU92lko3VxtvgTLb7Kxme21VXShcfz6NUAB8HHdcNWYz8Oq6Wn
ivjCRYZQvbXXFiCeKBp1b0A2fbxXlLsXd6jLgwqvewOd6fLATCIskw==
=GbH7
- -----END PGP MESSAGE-----
You need a passphrase to unlock the secret key for
user: "droope <pedro@worcel.com>"
1024-bit ELG-E key, ID 67BBCCD5, created 2010-06-29 (main key ID EC5D3913)

Enter passphrase:

Apretamos CTRL + D una o dos veces y aparecerá el texto desencriptado

Si queremos desencriptar un archivo, lo podemos hacer

$ gpg -do archivo_desencriptado archivo_encriptado.txt.asc

Firmar un mensaje en texto claro

Para hacer una firma como la que tiene este post, lo podemos hacer

$ gpg --clearsign

¡Espero que les sea de utilidad!
Un abrazo grande,
Pedro
—–BEGIN PGP SIGNATURE—–
Version: GnuPG v1.4.11 (GNU/Linux)

iEYEARECAAYFAk4xTIsACgkQ1LYwDexdORPJAwCgyPie6a19omWPZzCsEmpWz82I
zRUAoKFb0hy/j/keEEZU799mEKeD9wl3
=DNQr
—–END PGP SIGNATURE—–

Compilado de enlaces

¡Hola gente!

Escribo para agregar un compilado de enlaces. Estan muy buenos.

¡Espero que guste!
Un abrazo,
Pedro

Compilado de enlaces

¡Hola gente!

Vengo a compartir con ustedes unos muy buenos enlaces, que espero que disfruten.

Un saludo,
Pedro

Como hackear páginas web ( en serio )

Las webs hoy en día son cada día mas seguras. ¿O no? Como intento demostrar frecuentemente en twitter, tal vez no sea asi.

Hay muchas herramientas hoy en día para encontrar vulnerabilidades en una web. Si una web utiliza una versión vieja de un CMS, cosa que podemos determinar utilizando una herramienta como Wappalizer o WhatWeb, la cuestión es mas sencilla. Es muy importante hoy en día mantener actualizado nuestro software. En caso contrario, un atacante podría buscar en el changelog de nuestro CMS todo lo referente a correcciones de vulnerabilidades en versiones posteriores a la que nosotros tenemos actualmente.

También hay otras herramientas para hackeear webs, pero yo hoy voy a optar por explicar que tipo de vulnerabilidades se pueden encontrar una web de una manera mas “artesanal”. Este artículo no plantea demostrar un tipo de vulnerabilidad nueva, ni pretende ser la demostración de un conocimiento muy avanzado. Simplemente es una explicación básica de algunos tipos de vulnerabilidades que pueden encontrarse en una web y como un atacante explotaría de ellas. Básicamente, se trata de:

  • Inyecciones SQL
  • Cross Site Scripting ( Javascript injection )
  • Local file inclusion / Remote file inclusion

Para todos los ejemplos, usaremos código de Damn Vulnerable Web App. Te podés descargar esta aplicación para practicar los ejemplos que planteo acá. Todos los ejemplos estan hechos con la seguridad en low. Una vez instalado el app, andá a DVWA Security y elegí “low”.

Leer el resto de esta entrada »

Compilado de enlaces

¡Hola gente!

Les dejo un compilado de enlaces. Espero que lo disfruten, esta muy bueno

¡Espero que les guste!

Un abrazo,
Pedro

Enlaces recomendados programación

¡Hola Gente!

A continuación un listado de artículos sobre programación  que están interesantes:

  • Mongly – Un tutorial que nos enseña lo mas básico de mongoDB de manera rápida y fácil.
  • Como desarrollar para android – Un tutorial paso a paso sobre como desarrollar aplicaciones para android
  • ¿Cuando tráfico puede soportar tu sitio web? – Una guía que nos muestra cuanto tráfico debería poder llegar a soportar nuestra web, dependiendo del tipo de tráfico que tiene.
  • Fallback en mysql – una solución que utiliza exclusivamente mysql para evitar el clásico if(id_exists), update } else {  insert.

¡Espero que les sea de utilidad! Son todos muy interesantes. Recomiendo sobre todo el primero, el tercero y el último.

Un abrazo,
Pedro

« Entradas más antiguas

Seguir

Get every new post delivered to your Inbox.

Únete a otros 345 seguidores