martes, 8 de octubre de 2019

Gestor de contraseñas

Hoy en dia todo está en línea y necesitas una clave para cada cosa. Al poco andar, la conclusión es simple:
  1. Usa la misma clave para todo
  2. Usa una clave diferente para cada cosa, pero no podrás con ello sin ayuda
Claramente la única opción segura es la #2, porque si optas por usar una clave para todo (1) finalmente te van a hackear, y te van a hackear todo!
Sin embargo, si usas una clave para cada sitio (2), vas a ser un blanco más difícil de hackear, pero necesitarás apoyo, es imposible que puedas recordar todas las claves sin morir en el intento. Además, tener claves diferentes no sirve de nada si tus claves son inseguras. Necesitas generar claves seguras, cada vez que lo necesites y eso no es fácil.

¿Que necesito para tener contraseñas seguras?

Dado lo anterior, concluimos rápidamente que para tener contraseñas seguras necesitaremos poder:
  • Recordar todas tus claves
  • Generar claves seguras y diferentes constantemente
Como el ser humano no fue hecho para tal tarea, llegamos a la inevitable conclusión de que necesitaremos de un gestor de contraseñas. Estos gestores de contraseñas (o password managers) nos ayudarán en las dos tareas antes descritas: generar claves y almacenarlas en forma segura.

¿Que tener en mente al elegir un gestor de contraseñas?

Algunos de los aspectos a considerar cuando buscas un gestor de contraseñas son los siguientes:
  • Precio: evidente
  • Incluye o no generación de contraseña (la mayoría lo traen, pero no está de más verificarlo)
  • Incluye o no usarlo en varios dispositivos (computador de trabajo, computador de casa, celular, tablet, etc)
  • Autenticación de doble factor (2FA): Tiene un segundo esquema de validación, como clave y huella dactilar, por ejemplo
  • Si es pagado: tiene plan familiar? (o grupal, para varios miembros)
  • Si tiene plan familiar (o grupal) tiene como compartir contraseñas entre los miembros? 
  • Multiplataforma: Para Windows, Mac, Android, etc

Gestores de contraseña

Sin buscar hacer una lista detallada, ya hay muchas listas de gestores de contraseñas (en los links de referencia verán muchos más), he listado algunos que son destacables, por precio y funcionalidad.



Aplicación
Dispone version gratis
Versión pagada desde
Mejoras de version pagada
Plan familiar
Multiplataforma
Si
USD 3 / mes
Respaldo en linea
Si
Si
No
USD 3.99 / mes
Autentificación doble factor
Si
Si
Si
Gratis
Gratis en version personal
N/A
Si
Si
Gratis
Gratis
N/A
Si
Si
Gratis
No almacena en la nube
N/A
Si
Si
USD 11.99
Un solo pago
No
Si

Hay varios otros productos, que personalmente he descartado, como Dashlane y Keeper, por su alto costo o por las limitaciones de su versión “gratuita”.


Referencias:




miércoles, 28 de agosto de 2019

Draft, simplificando aún más el desarrollo con Kubernetes

El desafío constante: como reducir los tiempos desde que un desarrollador genera una actualización hasta que es probada.
Usualmente al desarrollar debemos seguir un proceso para desplegar nuestro código. Este proceso era muy extenso años atrás y con DevOps se ha simplificado notablemente.
Un ejemplo muy básico involucrará ingresar a un Jenkins, para construir (build) nuestra aplicación y posteriormente hacer el despliegue (deploy). En la realidad añadimos otras herramientas, haciendo este flujo algo no tan trivial. Justamente ahí es donde entra Draft, a integrar nuestro ambiente de desarrollo con Kubernetes, permitiéndonos hacer un despliegue en un par de pasos: "draft create" y "draft up", así de simple.

Con esto tendremos nuestra app desplegada en un sandbox de Kubernetes disponible con su URL publicada. Draft nos entrega entonces un gran potencial, simplificando y reduciendo los tiempos de generación de un sandbox aún más allá de lo que hemos visto en el ciclo de DevOps, dejándonos listos para ejecutar las pruebas iniciales de nuestro desarrollo.

Si quieres probar Draft, necesitarás Kubernetes evidentemente además de Draft. Sin embargo puedes usar minikube en reemplazo, que te dará lo necesario para tus pruebas de concepto.

Minikube está disponible para descargas en https://minikube.sigs.k8s.io/docs/start/windows/
Para descargar draft, puedes hacerlo con brew (brew install azure/draft/draft) o desde este link de binarios https://github.com/Azure/draft/releases
Una vez instalado, simplemente ejecutas :
  • draft init para configurar draft
  • draft create, para contenerizar tu app 
  • draft up, para desplegar tu sandbox.
Happy Sailing!


martes, 6 de agosto de 2019

Buscar los ultimos archivos modificados en Linux

Hace un tiempo pensé en publicar respecto al tópico que expongo hoy, sin embargo pensé que al ser un tema muy conocido no sería de interés. Después de un poco andar, me di cuenta que no resulta tan trivial y que puede ayudar a algunas personas que existan artículos como éste y en particular en español, por lo que decidí retomar y publicar un par de artículos, partiendo por este.
Quisiera sus comentarios, de si encuentran esta información útil o no, para ver si sigo haciendo publicaciones como ésta.

Problemática: por que buscar los últimos archivos modificados en Linux

Por diferentes razones tal vez queremos buscar los ultimos archivos modificados en Linux. Razones como, por ejemplo:
  • Instalé un programa y quiero saber que archivos modificó
  • Tengo una actualización y quiero saber el / los filesystem que está ocupando
  • Quiero identificar los archivos modificados recientemente
Cuando pensamos en buscar los ultimos archivos modificados en Linux, lo primero que se nos viene a la cabeza es usar el comando find, pero find es muy amplio y necesitamos acotar y esa es la razón de este artículo, algunas opciones que nos permitan acotar la búsqueda.

Solución: buscar los ultimos archivos modificados en Linux

En esta solución expongo dos simples opciones que combino:
  • Filtrar por tiempo
  • Filtrar directorios no relevantes

Filtrando los resultados de búsqueda: por tiempo, últimos modificados

Para filtrar por los ultimos archivos modificados en el tiempo podemos usar el parámetro cmin. cmin nos permitirá especificar una cantidad de minutos hacia atrás, buscando archivos que fueron modificados desde el momento actual hasta x minutos atrás.
Por ejemplo:

$ find . -cmin -30

En este ejemplo, find buscará archivos en el directorio actual (.) que fueron modificados hace 30 minutos (o menos)

Esto resuelve nuestro problema y podría quedar hasta ahí, pero en ocasiones, la busqueda retornará resultados de directorios que no nos interesan. Entonces iremos un paso más allá en el filtro, con la siguiente opción de búsqueda.

Filtrando los resultados de búsqueda: excluyendo directorios

Si, por ejemplo, hacemos una busqueda desde el directorio raiz (/) el resultado arrojará archivos modificados en los directorios /proc /var /sys, entre otros, que en la mayoría de los casos no son de interés ya que son directorios de sistema y no de una aplicación. Para filtrar los directorios "indeseados" usamos la opción -prune

Excluyendo un directorio

Para excluir solo un directorio ocupamos la opción prune con el flag o, como se muesta a continuación:

$ find / -path /proc -prune -o -cmin -30

Esto buscará en el directorio raiz (/) todos los archivos modificados en los últimos 30 minutos, excluyendo los que están el el directorio /proc

Excluyendo varios directorios

Para excluir varios directorios, listamos los directorios entre paréntesis, pudiendo añadir todos los directorios que queremos excluir

$find / \( -path /proc -o -path /sys -o -path /run -o -path /var \) -prune -o -cmin -30

Esto buscará en el directorio raiz (/) todos los archivos modificados en los últimos 30 minutos, excluyendo los que están el los directorios /proc , /sys , /run y /var



viernes, 22 de marzo de 2019

Como usar Atom con GitLab integrado

En un artículo anterior comentaba como configurar Atom con GitLab. Este artículo trata de como usar esa integración.
Para ello descargaremos el cliente Git, para luego clonar un repositorio localmente y finalmente configurar Atom para usar ese repositorio y actualizar Git directamente desde Atom.

Descargar cliente Git

Si no tienes un cliente Git puedes descargarlo desde https://git-scm.com/downloads. Simplemente lo descargas e instalas. Elige tu sistema operativo (ver imagen) e instálalo.

Clonar repositorio remoto

Una vez instalado el cliente Git, abres la aplicación GIT GUI y eliges clonar un repositorio.
Asumiremos que existe el repositorio sobre el cual quieres trabajar. Si no existe deberás crear un nuevo repositorio en vez de clonarlo.
Git Gui
En la pantalla de clonar el repositorio deberás ingresar la fuente remota (Source Location) y el destino local (Target Directory) en donde bajarás tu código. La imagen "Git Gui" muestra un ejemplo de estos valores.
Con las rutas elegidas, das click en Clone, lo cual tardará un tiempo dependiendo del tamaño del repositorio remoto y tu velocidad de conexión.  


Source location
Nota: Si no conoces la fuente remota (Source Location), debes ir a GitLab y ahí eliges tu proyecto, luego eliges detalles y das click en el botón derecho que dice Clone, tal como es ejemplifica en la imagen lateral: "Source Location". Usa la dirección "Clone with HTTPS" como "Source Location".




Abir el repositorio en Atom

Con el repositorio clonado, vamos a Atom finalmente elegimos File --> Add Project Folder y navegamos hasta la carpeta donde está nuestro repositorio clonado para abrirla. Con esto abriremos la carpeta donde clonamos el proyecto.
Modificaremos o agregaremos archivos (tal como lo hacemos normalmente trabajando) y cuando terminemos elegiremos del menú Packages --> GitHub --> Toggle Git Tab. Ahi veremos nuestro archivo como Unstaged, tal como se muestra en la imagen. Lo podemos añadir manualmente o simplemente elegir Stage All.
Agregamos un Commit message y damos click al botón Commit to master (o a otro branch si corresponde).
Para terminar, damos click en la opción de Publish, que está disponible en la parte inferior derecha de Atom, tal como se muestra en la imagen destacado en un cuadro rojo.

En resumen

Ahora, cada vez que deseemos actualizar el repositorio en GitLab, solo tenemos que hacer commit y publish desde Atom directamente. Dos simples pasos que nos garantizan seguir todo el proceso de branches que estemos manejando para nuestro proyecto.


GitLab con Atom integrado para devops

Usualmente buscamos herramientas livianas para el trabajo de integración del día a día en devops. Sin embargo cuando se trata de integrar con GitLab (salvo linea de comandos) todas las soluciones tienen un peso considerable, complicando el escenario. Afortunadamente hay algunas opciones, entre ellas Atom.

Atom editor

Atom es un editor de código muy bien catalogado. Está con evaluación 4.4 (de 5) en g2crowd https://www.g2crowd.com/products/atom/reviews . Además que es muy fácil de usar, es muy liviano, se integra con muchas herramientas y contiene un largo numero de paquetes, lo cual lo hace altamente customizable, o como dice Atom: Un editor de texto hackeable para el siglo 21. https://atom.io/ Otra tremenda ventaja es que es gratis. Con todo lo anterior, es mi editor preferido.

Instalar editor y acceso a GitLab


Para comenzar lo primero es tener el editor instalado. Lo puedes descargar desde el sitio de Atom. También necesitas una cuenta en GitLab. Si no tienes cuenta, puedes registrarte gratis en https://gitlab.com/users/sign_in#register-pane

Crear un token en GitLab

Un token es requerido para que Atom pueda acceder a GitLab. Es literalmente la llave de acceso. Puedes crearlo en GitLab directamente, bajo "User Settings" en "Access Tokens". O ir directo a https://gitlab.com/profile/personal_access_tokens
Este token debe incluir API, entonces selecciona SCOPES/API al momento de crearlo, tal como se muestra en la imagen lateral.
Al momento de crear este token, aparecerá un mensaje: "Make sure you save it - you won't be able to access it again." En otras palabras, debemos copiar el código del token de una vez, ya que después no será accesible. Así que cópialo y guárdalo en un lugar seguro.

GitLab integration

Ir a configuración de gitlab-integration
Uno de los tantos paquetes disponibles para Atom es justamente para la integración con GitLab, llamado tal cual: GitLab integration, disponible en https://atom.io/packages/gitlab-integration
Para usarlo, simplemente vas al link de descarga y selecciona install. El paquete se descargará y abrirá Atom editor para realizar la instalación.
Una vez instalado, vas a la configuración de Atom (File --> Settings) eliges Packages y bajo Gitlab-integration eliges Settings, como se muestra en la imagen de "Ir a configuración de gitlab-intetration".
Ingreso del token en gitlab-settings

Ya dentro de Settings aparecerá la opción "Gitlab API token", en donde podrás ingresar el token generado en GitLab, en el paso anterior, tal como se muestra en la imagen "Ingreso del token en gitlab-settings".

Con esto ya está listo, está configurado e integrado. Ahora el usarlo, lo cual es parte de mi siguiente publicación.


Notas:
- He elegido hacer publicaciones más cortas, para facilitar la lectura.
- He optado por hacer publicaciones en español, dado que aun es escaso el material en este lenguaje




miércoles, 6 de marzo de 2019

Cisco AnyConnect, generar una lista de VPNs

Introducción

Si te conectas a una VPN, es muy probable es que ya estés usando Cisco AnyConnect. De ser así, sabrás que la tienes con un perfil predeterminado y simplemente le das a conectar e ingresas tus credenciales. Todo funciona bien, hasta que te encuentras en la situación de que usas el mismo cliente para acceder a más de una VPN. Cuando tienes varias VPN a las
El objetivo de este blog es mostrarte como grabar estas direcciones y hacer tu vida un poco más fácil.
que quieres ingresar, te darás cuenta que el cliente no es muy amigable y debes cambiar manualmente la dirección a la que buscas conectarte cada vez. Si haces esto frecuentemente, entonces la situación se vuelve un poco molesta, sobre todo memorizando distintas URL de conexión.

Como configurar AnyConnect para usar una lista de perfiles

Cisco AnyConnect buscará un archivo profile.xml en la carpeta "C:\ProgramData\Cisco\Cisco AnyConnect Secure Mobility Client\Profile" Entonces, lo primero será crear el archivo profile.xml (si no existe) dentro de esta carpeta.

Es muy probable que esta carpeta (ProgramData) esté oculta, entonces debemos pegar la dirección en el finder, para ingresar en ella.
Elegimos nuestro editor preferido (puede ser notepad.exe) y editamos el archivo profile.xml dentro de esta carpeta.
Este archivo (profile.xml) puede ser muy extenso y contener variadas definiciones. Acá estamos haciendo una lista de servidores (ServerList) que tiene una serie de entradas (HostEntry). Por cada VPN que buscamos acceder, agregaremos una nueva HostEntry, como se muestra en el ejemplo.


Variables principales de profile.xml

En este ejemplo tenemos tres variables definidas para cada HostEntry:
Ejemplo de profile.xml

  • User: nombre de usuario
  • Hostname: Es un nombre cualquiera, para identificar mi VPN de la lista. Suele ser el mismo que HostAddress, aunque no es necesario
  • HostAddress: Es la URL de conexión, no es solo el nombre del host, sino que el path completo, como se ve en el ejemplo
Finalmente, con estos datos grabamos el archivo y abrimos Cisco AnyConnect. Nota: Si estaba abierto AnyConnect, debemos cerrarlo y luego abrirlo nuevamente, para que tome estos valores.