Carlos Reig Matut

Freelance web Developer

Page 2 of 2

Mi primer parche en Drupal 8

Drupal 8 logo

Para quien no conozca Drupal, se trata de un CMS muy completo para hacer páginas web de cualquier tipo: desde un blog hasta una revista online. Sin embargo, a pesar de ser un software de gran calidad y muy usado por la comunidad de desarrolladores, el principal activo de Drupal es la comunidad de personas que lo envuelve.

Mi primer contacto con la comunidad de Drupal fue aproximadamente hace un año y medio, por medio de David Hernández. Y tengo que confesar que desde entonces he quedado prendado. Procuro involucrarme lo máximo posible e ir a todos los eventos que mis obligaciones me permiten (¡incluso formé parte de la organización de una DrupalCamp!).

Pues bien, después de estar un tiempo asistiendo a eventos y escuchando sobre las bondades de colaborar en proyectos de software libre, la semana pasada me decidí a experimentarlo en primera persona y ¡envié mi primer parche al core de Drupal 8!

Aunque el parche no es gran cosa, sirve para arreglar un enlace que estaba roto, esta experiencia me ha servido para conocer de primera mano lo fácil que es colaborar activamente en Drupal. Además, me ha proporcionado la motivación y el ánimo para que mi próxima colaboración sea algo más gorda.

Si alguien está interesado en colaborar con su tiempo al proyecto de Drupal, tiene bastantes alternativas. La forma que yo recomendaría es buscar un evento Drupal Ladder cerca de donde vivas. El próximo Drupal Ladder en Valencia será el día 24 de octubre y ¡estás invitado!

Configurar VSFTPD con SSL (2/2)

Despué de seguir la primera parte de la guía sobre como configurar un servidor VSFTPD sobre SSL tenemos un servidor configurado para que cualquier usuario del grupo ftp-user pueda subir archivos a su directorio home.

Sin embargo, todavía no hemos configurado nada para que esta conexión funcione sobre SSL. En esta segunda parte de la guía vamos a ver los pasos necesarios para que el servidor solo acepte conexiones que vayan sobre SSL.

Creamos un certificado

Lo primero que tenemos que hacer para que el servicio de FTP funcione sobre SSL es crear el certificado que usaremos. En esta guía vamos a crear un certificado que tenga validez de 365 días y de tipo autofirmado. Si quieres saber más sobre certificado, puedes visitar la página de la Wikipedia donde está muy bien explicado.

Para crear el certificado ejecutamos el siguiente comando:

[sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem]

Después de este comando tendremos el nuevo certificado creado en /etc/ssl/private/vsftpd.pem.

Configurando VSFTPD para usar funcionar sobre SSL

Ya tenemos el certificado creado. Ahora lo que vamos a hacer es añadir a la configuración de VSFTPD las opciones necesarias para que las conexiones se hagan sobre SSL. Para ello tenemos que editar el archivo /etc/vsftpd.conf con nuestro editor favorito.

sudo vim /etc/vsftpd.conf

En el archivo tenemos que localizar la línea:

rsa_cert_file=/etc/ssl/private/vsftpd.pem

Esta línea no hay que modificarla, solo localizarla y añadir las siguientes líneas debajo de ella:

rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH

Guardamos el archivo y reiniciamos el servicio:

sudo /etc/init.d/vsftpd restart

¡Pues ya está! Ya tenemos nuestro servidor de FTP configurado.

¡Espero que te sea útil el post! No dudes en comentar si encuentras algún problema.

Un saludo,
Carlos

Configurar VSFTPD con SSL (1/2)

Información importante

Antes de empezar a leer esta entrada tienes que saber que el protocolo FTP es inseguro. Por lo tanto, si puedes evitar usarlo, hazlo. Como alternativa, yo recomendaría usar SFTP.

En cambio, a veces es necesario tener FTP instalado. Si este es tu caso, en esta guía vamos a aprender a configurar VSFTPD, uno de los servidores de FTP más conocidos del mercado. Una de las principales características de VSFTPD es que es muy fácil configurarlo para que funcione sobre SSL, lo que disminuye considerablemente la inseguridad de FTP.

¿Qué vamos a hacer?

Los pasos que se dan en esta guía te proporcionan un camino para obtener un servidor VSFTPD 2.3.5 configurado de la siguiente manera:

  • Los usuarios que pueden acceder al servicio serán usuarios del sistema que pertenecen a un grupo concreto.
  • Los usuarios solo podrán acceder al árbol de archivos que esté debajo de su directorio home.
  • Los usuarios podrán subir y eliminar archivos.
  • El servidor solo aceptará conexiones que vayan sobre SSL

Empecemos

Configurar cualquier tipo de servidor nunca es una tarea sencilla. Hay que tener mucho cuidado con no meter la pata porque, a parte de que queremos que las cosas funcionen bien, uno de los principales agujeros de seguridad que se encuentran en todos los equipos son servidores mal configurados.

En esta guía vamos a seguir los siguientes pasos:

  1. Instalación y configuración básica (sin SSL)
  2. Restringir el acceso al servicio a un grupo de usuarios determinado
  3. Comprobar que todo funciona bien
  4. Crear un certificado
  5. Configurar el servicio para usar SSL

Instalando y configurando VSFTPD

En esta guía vamos a configurar VSFTPD para funcionar sobre Debian. Si tú también estás usando Debian o alguna distribución derivada (Ubuntu o Linux Mint, por ejemplo) puedes utilizar el siguiente comando para instalar el servicio:

sudo apt-get install vsfptd

Una vez termine la ejecución del comando, tendrás instalada en tu máquina la versión más reciente que haya en el repositorio de tu distribución. La versión de VSFTPD utilizada en esta guía es 2.3.5.

Ahora que tenemos instalado el servicio, vamos configurarlo para que se comporte como hemos expuesto anteriormente. Para eso, tenemos que editar el archivo de configuración que se encuentra en /etc/vsftpd.conf. Por lo tanto, lo abrimos con nuestro editor favorito:

vim /etc/vsftpd.conf

En el archivo de configuración encontraremos muchas opciones pero en nuestro caso solo nos interesa modificar unas pocas:
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES

Nota: Alguna de estas opciones aparecerá con el valor correcto pero comentada (comentada es cuando la línea comienza con #). En ese caso, simplemente hay que quitar la almohadilla.

Una vez hayamos terminado de editar el archivo, lo guardamos y reiniciamos el servicio para que utilice la nueva configuración:

sudo /etc/init.d/vsftpd restart

¡Y ya está! Ya tenemos nuestro servidor de FTP instalado y configurado

Restringir el acceso al servicio a un grupo de usuarios determinado

Ahora mismo tenemos el servidor configurado de manera que cualquier usuario del sistema puede hacer uso de él. Sin embargo, normalmente tenemos muchos usuarios que no necesitan para nada acceder por FTP. Por eso, en esta parte vamos a restringir el acceso a un grupo de usuarios específico. De esta forma, si un usuario que no pertenece a este grupo intenta acceder al FTP, el servicio rechazará la conexión aunque los credenciales sean correctos.

Lo primero que vamos a hacer es crear el grupo al que tienen que pertenecer los usuarios para conectarse al servidor. A este grupo lo vamos a llamar ftp-user:

sudo groupadd ftp-user

Ahora que tenemos el grupo creado, vamos a modificar el archivo que utiliza VSFTPD para comprobar si un usuario está validado para entrar o no. Por suerte, VSFTPD utiliza PAM (Pluggable Authentication Module) por defecto para esta tarea, lo que hace que sea muy fácil modificarlo para que se comporte como queremos.

En primer lugar, abrimos con nuestro editor favorito el archivo /etc/pam.d/vsftpd:

vim /etc/pam.d/vsftpd

Y añadimos la siguiente línea al final del archivo:

auth    required        pam_succeed_if.so       quiet   user    ingroup ftp-user

Guardamos el archivo y ¡ya lo tenemos!

Prueba que todo funcione

Si has llegado hasta aquí deberías tener un servidor FTP funcionando que solo te permita el acceso para los usuarios del grupo ftp-user. Ahora solo tienes que probar a conectarte a tu servidor con algún usuario que pertenezca al grupo ftp-user y otro que no para probar que todo vaya bien.

En la siguiente parte de la guía veremos como configurarlo para que funcione sobre SSL y así tener mayor seguridad en la conexión.

Un saludo a todos!

Problemas comunes

No te olvides de acceder con un usuario del grupo ftp-user

Hemos configurado el servidor FTP para que solo permita el acceso a usuarios del grupo ftp-user. Por lo tanto, si el usuario con el que quieres acceder se llama perico_el_de_los_palotes, tendrás que ejecutar el siguiente comando para añadirlo al grupo ftp-user:

sudo groupmod -G ftp-user perico_el_del_los_palotes

Error: vsftpd: refusing to run with writable root inside chroot()

Este problema es debido a que, como medida de seguridad extra, el comando chroot (el que limita el acceso de los usuarios a lo que hay dentro de su directorio home) no permite ejecutarse a un directorio con permisos de escritura.

Esto se puede solucionar creando un directorio con permisos de escritura dentro del home del usuario y luego, quitando los permisos de escritura del directorio home. Suponiendo que nuestro usuario siga siendo perico_el_de_los_palotes  sería algo así:
sudo -u perico_el_de_los_palotes mkdir /home/perico_el_de_los_palotes/files;
sudo chmod a-w /home/perico_el_de_los_palotes

Cambio de trabajo

Esta semana he dejado la empresa en la que he trabajado los últimos 3 años y he empezado con uno nuevo completamente diferente. En este post me gustaría explicar de la forma más constructiva posible, qué situaciones se han producido en la empresa que estoy dejando para que haya decidido marcharme.

Mi marcha no ha sido una decisión basada en comparar las condiciones laborales. Aunque es verdad que las nuevas condiciones son bastante mejores que las antiguas, este no ha sido el principal motivo. Básicamente, lo más importante es que me he sentido profundamente desmotivado.

La desmotivación de un trabajador es algo que se va cociendo poco a poco. No aparece de un día para otro y normalmente viene fomentado tanto por la parte de dirección como por la parte del trabajador. Sintetizando mucho, los motivos más importantes han sido:

  • Sensación de estancamiento técnico: Desde que empecé hasta el día que me he marchado, hemos utlizado las mismas tecnologías y metodologías proyecto tras proyecto. Nada de TDD (¡no teníamos tests en nuestros proyectos!), ni pair programming, ni librerías estándares en casi todos los proyectos del mismo sector. ¡Ni siquiera conseguí que cambiáramos de svn a git!
  • Pocas perspectivas de futuro: Al tratarse de una empresa muy pequeña no había forma de promocionar ni económicamente (o eso te hacía entender la dirección) ni profesionalmente. La sensación que tenía yo es que si me quedaba allí nunca progresaría.
  • Negación al cambio: No solo había problemas para cambiar la forma de trabajar en la parte técnica. Siempre me choqué con una pared cuando planteé teletrabajar algún día a la semana, gestionar algún proyecto con SCRUM, meter tests en los proyectos, hacer una guía de estilos para todo el equipo, investigar con Oculus Rift, etc. Por no conseguir, no conseguí ni usáramos Trello como herramienta de comunicación de tareas.
  • Formación nula: Todos los eventos a los que he ido para intentar estar al día  han salido todo de mi bolsillo y de mis días de vacaciones. Cero facilidades.
  • Falta de reconocimiento: La he dejado para el final porque creo que es la más importante. En todo el periodo en el que he estado trabajando no he escuchado un “Gracias, buen trabajo” por parte de la dirección. Ni un “Gracias por quedarte a apagar el fuego” cuando te quedabas hasta que las problemas se resolvían. Cada día de esos me quedaba con una cara de panoli de cuidado. Sintiéndome un pringado.

Esa ha sido mi experiencia estos últimos años. Quiero compartirla para intentar mejorar la situación de muchos pequeños equipos en los que estoy seguro que se repiten estas situaciones. A los trabajadores os diría que hay mucha vida fuera de las empresas en las que estéis, aunque dé vértigo. Y a los equipos de dirección, que lo más importante para que los proyectos informáticos salgan bien, es tener a la gente que los construye motivada.

Lo que me llevo bueno de este tiempo es un muy buen recuerdo del equipo con el que he trabajado. Gente muy válida con la que estoy seguro me vuelva a encontrar en un futuro.

 

 

Presentación

Hola,

Este post tiene como objetivo presentarme. Me llamo Carlos Reig Matut. Estudié ingeniería informática superior e ingeniería técnica de telecomunicaciones en la Universidad de Valencia. En el momento que estoy escribiendo este post, tengo 25 años y vivo en Valencia.

¿De qué quiero que hable el blog? Como te podrás imaginar por mi perfil académico, en principio, quiero que esté dirigido a gente técnica.

Vale, y… ¿qué objetivo tengo? Básicamente quiero que sea una herramienta que me ayude a aprender más y mejor sobre mi campo. Y también para que ayude a otra gente a hacerlo. Aunque también me gustaría contar experiencias profesionales que no tengan que ver con la parte técnica, sino con la social.

En definitiva, lo que quiera que acabe siendo esto ya lo iremos construyendo juntos.

¡Un saludo!

Newer posts »

© 2017 Carlos Reig Matut

Theme by Anders NorenUp ↑