Archive

You are currently browsing the Jose Antonio Cely Saidiza blog archives for noviembre, -0001.

Nov

30

Cliente de Google Drive en Debian Jessie

By Jose Antonio Cely Saidiza

Recientemente me v? obligado a configurar un cliente de archivos para Google Drive, digo obligado por que tengo que liar d?a a d?a con Dropbox, OwnCloud y One Drive debido a que cada usuario usa su tecnolog?a de turno, lo cual si trabajo con ellos me demandar? tiempo en configuraci?n de clientes y sus trabas tales como, que cambio el API, que cambi? la autenticaci?n, que lo uno, que lo otro? Convencer al usuario de una tecnolog?a o la otra casi siempre se me sale del alcance contratado. Tambi?n se sale del alcance de este art?culo exponer cual puede ser la mejor, eso es muy amplio y depende mucho del contexto. As? pues este art?culo solo documenta como instalar el cliente de Google Drive en Debian Jessie a modo de nota personal que a futuro me servir? de referencia.

El paquete obsoleto Grive en Debian Jessie

La primera b?squeda en google me lleva al paquete oficial debian ?Grive? en?https://packages.debian.org/jessie/grive?no sirve puesto despu?s de investigar est? obsoleto debido a que fue programado para un API de google anterior (Usa el ?Document List API? la cual Google termin?). No se debe instalar o si se tiene instalado borrelo con el siguiente comando (como root):

# apt-get remove -f grive

Instalando Grive2 en Debian Jessie

Buscando alternativas al obsoleto Grive, encontr? Grive2?http://yourcmc.ru/wiki/Grive2?el cual es un Fork del antiguo Grive, pero usa la ?Drive REST API?, tal vez en un par de a?os cuando Google se cambie a la tecnolog?a de turno este art?culo tambi?n quedar? obsoleto.
Para su instalaci?n primero instalamos las dependencias necesarias (como root):

# apt-get install git cmake build-essential libgcrypt11-dev libyajl-dev libboost-all-dev libcurl4-openssl-dev libexpat1-dev libcppunit-dev binutils-dev git

Luego bajamos el c?digo fuente, compilamos e instalamos (como root):

# mkdir /opt/grive2
# cd /opt/grive2
# git clone https://github.com/vitalif/grive2
# mkdir build
# cd build
# cmake ..
# make -j4
# make install

Uso de Grive2

Como su usuario de trabajo se debe crear una carpeta para contener la sincronizaci?n. En mi caso de ejemplo cre? ?GoogleDrive?

# mkdir ~/GoogleDrive

Luego se debe ejecutar grive por primera vez dentro de la carpeta con el argumento ?-a? el cual sirve para solicitar los token de autorizaci?n, es decir que el comando se ejecuta y nos entrega una direcci?n web la cual debe pegarse en un navegador, una vez autorizado en el navegador nos retornar? un c?digo de autorizaci?n el cual debe pegarse de vuelta en el terminal completando de este modo la autenticaci?n por ?nica vez, si todo es correcto entonces comenzar? la sincronizaci?n. A continuaci?n los comandos con ejemplos de salida:

# cd ~/GoogleDrive

Tuve un error de ejecuci?n por que no encontraba el archivo ?.griveignore? por lo tanto debe crearse manualmente o fallar? la ejecuci?n ( supongo es un bug temporal)
# touch .griveignore

Iniciamos la sincronizaci?n:

# grive -a

Copio la URL en un navegador la cual nos llevar? a una p?gina t?pica de autorizaci?n

Despu?s de aceptar nos retorna un c?digo:

Pegamos el c?digo en el terminal y comenzar? la sincronizaci?n, la siguiente captura de terminal resume el proceso:

El uso diario de grive sencillamente es ejecutar el comando dentro de la carpeta GoogleDrive, lo cual se puede hacer manualmente o automatizar mediante un CRON, que en mi caso cre? una entrada para que se ejecute cada 30 minutos:

*/30 * * * * cd ~/GoogleDrive && grive >/dev/null 2>&1

El siguient es un ejemplo de CRON que genera un log con lo que sucede en cada ejecuci?n en el archivo ?/tmp/grivelog?:

*/30 * * * * cd ~/GoogleDrive && grive > /tmp/grivelog

Hay m?s t?cnicas como detectar cambios autom?ticos (soportados en otras aplicaciones), manejo de m?ltiples cuentas, etc.

??

Dudas, comentarios, sugerencias?

Sigueme en twitter?@josecely

Abr

25

Protecci?n contra ataques de fuerza bruta mediante fail2ban en Debian Jessie

By Jose Antonio Cely Saidiza

Fail2ban ( http://www.fail2ban.org/ ) es una aplicaci?n que se usa para bloquear conexiones remotas despu?s de una cantidad de intentos fallidos. El funcionamiento de Fail2ban es muy simple, comprueba archivos de log y si detecta registros de intentos fallidos, ejecuta autom?ticamente los comandos de IPTables para bloquear al host que esta intentando realizar la conexi?n. Fail2ban soporta muchos servicios como lo son ftp, apache, imap, pop, etc; incluso tambi?n aplicaciones web.
Para este caso documentar? el t?pico escenario, donde tenemos un servidor Linux conectado a internet permanente y por cuestiones administrativas tenemos el servicio SSH abierto a cualquier IP (!!!). Un servidor de este tipo es muy atacado por robots o creckers con t?cnicas de fuerza bruta, usando sencillamente un script que mediante un diccionario de claves o generador de palabras intenta frecuentemente autenticarse como usuario root.
Por ejemplo viendo los logs de un servidor personal que mont? hace poco, v? como tengo miles de intentos de login remoto. Por ejemplo viendo los ?ltimos intentos de login mediante el comando:

# tail /var/log/auth.log

Veo como un hijo de puta con la direcci?n IP 116.31.116.28 se est? intentando conectar como root. Por los tiempos de diferencia entre cada conexi?n de pocos segundos seguramente es un robot. As? pues, a instalar fail2ban!.

Instalaci?n y configuraci?n

Los siguiente comando se ejecutan como usuario root en el servidor. Si usa sudo antepongalo a los comandos.

Instalamos el paquete est?ndar de Debian Jessie estable:

# apt-get install fail2ban

Una vez instalado copiamos el archivo de configuraci?n para crear una configuraci?n local:

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Ahora editamos el archivo recientemente copiado /etc/fail2ban/jail.local, el archivo es extenso y viene casi listo y documentado. Un par?metro t?pico por ejemplo para cambiar es ?bantime?, que es el tiempo que el host remoto tardar? bloqueado hasta que nuevamente fail2ban permita el intento de conexi?n, en mi caso lo edit? para 1200 segundos, es decir, 20 minutos:

bantime = 1200

Por otro lado, confirm? que el servicio SSH este activado y en el caso de esta versi?n de Jessie viene activado por default la supervisi?n:

[ssh]
enabled = true

Si hicimos alg?n cambio, se puede reiniciar fail2ban mediante el comando:

# service fail2ban restart

Esto es todo, failban inciar? a supervisar y bloquear los servicios que hemos definido. Por ejemplo en la siguiente captura realic? tres intentos intencionalmente fallidos al servidor y vemos como en el tercer intento me bloquea:

Ante este caso solo queda esperar el ?bantime? para poder volver intentar a conectarme. Como vemos muy facilmente se puede aumentar la seguridad de nuestros servidores.

??

?Dudas, comentarios, sugerencias?

Sigueme en twitter?@josecely