Mostrando las entradas con la etiqueta Servidor. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Servidor. Mostrar todas las entradas

jueves, 16 de noviembre de 2023

Instalar Servidor FTP en Raspberry Pi 4 - vsftpd

En esta entrada quiero registra el paso a paso del proceso de instalar y configurar un Servidor FTP en una Raspberry Pi 4, esto lo hago porque hace parte de un proyecto personal que estoy desarrollando en donde requiero de un servidor FTP para cargar archivos.

Actualmente ya tengo una Raspberry Pi 4 configurada con una versión de Linux Ubuntu Server 22.04.2 LTS (64-bit), pueden consultar el paso a paso de este proceso en mi anterior entrada:


Luego de explorar documentación y otros blogs en internet, finalmente pude realizar una instalación y configuración exitosa en mi Raspberry Pi 4, en los primeros intentos estaba teniendo algunos problemas al momento de conectarme usando un Cliente FTP como FileZilla, por alguna razón, la autenticación era exitosa pero la conexión se quedaba haciendo múltiples intentos en listar el directorio del usuario autenticado, al final del proceso encontré la solución solo agregando un atributo en el archivo de configuración del Servidor vsftpd.

El objetivo de esta entrada es documentar el proceso de una configuración básica para un entorno de desarrollo, existen configuraciones adicionales que hay que agregar como una capa extra de seguridad en el caso de hacer una instalación y configuración en un entorno de producción.

No voy entrar en detalles sobre qué es FTP o SFTP, tampoco quiero entrar en detalles sobre los protocolos involucrados o capas de seguridad de encriptación de datos SSL. Creo que para obtener información detallada existe la documentación oficial, y no es relevante para el objetivo de esta entrada. Quiero compartir una guía rápida y práctica, lista para usar.

Cabe mencionar que los pasos a seguir en esta entrada también se pueden aplicar a una Raspberry Pi 3 y, en general, a una distribución Linux Ubuntu Server 22.04.2 LTS (64 bits).


Prerrequisitos:

  • Raspberry Pi 4/3
  • Linux Ubuntu Server 22.04.2 LTS (64-bit)


Paso 0: Actualizar Paquetes de Ubuntu Server

sudo apt update
sudo apt upgrade


Paso 1:  Instalar vsftpd

sudo apt install vsftpd

Cuando la instalación termine, lo primero que debemos hacer en el siguiente paso es realizar una copia del archivo de configuración de vsftpd antes de continuar con la configuración en los siguientes pasos.


Paso 2: Backup de vsftpd.conf

sudo cp /etc/vsftpd.conf /home/pi/Backup/vsftpd.conf


Paso 3: Habilitar el Firewall

Aquí debemos habilitar el Firewall y permitir las conexiones a los puertos correspondientes que usa el protocolo FTP, en este caso, las conexiones entrantes en los puertos 20, 21 y 990.

  • Verficar el estado del Firewall:

sudo ufw status


Nos debe mostrar algo similar a esto:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

  • Abrir los puertos:

sudo ufw allow 20,21,990/tcp

  • Abrir puertos en un rago para conexiones pasivas:

sudo ufw allow 40000:50000/tcp

  • Verficar el estado del Firewall:

sudo ufw status


Nos debe mostrar algo similar a esto:

Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
20,21,990/tcp              ALLOW       Anywhere
40000:50000/tcp            ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
20,21,990/tcp (v6)         ALLOW       Anywhere (v6)
40000:50000/tcp (v6)       ALLOW       Anywhere (v6)


Paso 4: Crear Usuario FTP

En este paso, vamos a crear un usuario dedicado únicamente para tener acceso mediante FTP al servidor. Esa será la única función de este usuario, con un directorio dedicado y solo con acceso a dicho directorio. Estará aislado del resto del sistema.

  • Crear Usuario:

sudo adduser ftpi

  • Crear Directorio Aislado:

sudo mkdir /home/ftpi/public

  • Modificar el propietario del directorio aislado:

sudo chown nobody:nogroup /home/ftpi/public

  • Remover permisos de escritura sobre el directorio aislado:

sudo chmod a-w /home/ftpi/public

  • Verificar permisos:

sudo ls -la /home/ftpi/public


Nos debe mostrar algo similar a esto:

Output
total 8
dr-xr-xr-x 2 nobody nogroup 4096 Nov 15 17:20 .
drwxr-x--- 3 ftpi ftpi  4096 Nov 15 17:20 ..

  • Crear un directorio dedicado a la carga de archivos:

sudo mkdir /home/ftpi/public/uploads

  • Asignar como propietario al usuario:

sudo chown ftpi:ftpi /home/ftpi/public/uploads

  • Verificar permisos:

sudo ls -la /home/ftpi/public


Nos debe mostrar algo similar a esto:

Output
total 12
dr-xr-xr-x 3 nobody nogroup 4096 Nov 15 17:20 .
drwxr-x--- 3 ftpi ftpi  4096 Nov 15 17:20 ..
drwxr-xr-x 2 ftpi ftpi  4096 Sep 14 20:30 uploads

  • Finalmente creamos un archivo de prueba en el directorio uploads:

echo "vsftpd test file" | sudo tee /home/ftpi/public/uploads/test.txt


Paso 5: Configurar Acceso FTP

Usar cualquier editor de texto, en este caso vamos a usar nano:

sudo nano /etc/vsftpd.conf

Cuando tenemos acceso al archivo de configuración desde nano, debemos buscar y modificar las siguientes variables, en caso de no existir alguna variable se crea como nueva al final del archivo:

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
user_sub_token=$USER
local_root=/home/$USER/public
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO

  • Finalmente agregar el usuario a: /etc/vsftpd.userlist

echo "ftpi" | sudo tee -a /etc/vsftpd.userlist

  • Verificar el archivo /etc/vsftpd.userlist

cat /etc/vsftpd.userlist


Paso 6: Inhabilitar Acceso al Shell

Este paso es opcional si queremos bloquear el acceso al shell del usuario, de esta forma podemos bloquear el acceso al shell cuando el usuario se conecta por ssh, es una medida básica y simple de inhabilitar el acceso al shell de un usuario, mas no es la forma más segura.

  • Crear un archivo script:

sudo nano /bin/ftponly

#!/bin/sh
echo "This account is limited to FTP access only."

  • Agregar permisos de ejecucion al archivo:

sudo chmod a+x /bin/ftponly

  • Abrir la lista de shell's validas:

sudo nano /etc/shells

  • Agregar al final del archivo y guardar:

/bin/ftponly

  • Actualizar el Shell del usuario:

sudo usermod ftpi -s /bin/ftponly

  • Ahora cuando el usuario intente hacer un login mediante ssh:

ssh ftpi@your_server_ip

Obtendra el siguiente mensaje:

This account is limited to FTP access only.
Connection to 203.0.113.0 closed.


Paso 7: Probar el Acceso FTP con FileZilla

  • Finalmente solo queda reiniciar el servicio vsftpd:

sudo service vsftpd restart

  • Y desde una maquina externa probar el acceso FTP a nuestra Raspberry Pi 4 usando el programa FileZilla:

Usando los datos de acceso del Usuario FTP nos conectamos a nuestra Raspberry Pi 4:

Acceso FTP FileZilla

Cuando la conexión sea exitosa podemos ver en el panel del sitio remoto el directorio de uploads donde podemos cargar y descargar archivos:

Sitio Remoto FTP

Dentro del directorio uploads podemos ver que existe el archivo de prueba que habíamos creado previamente durante la configuración:

Archivo de prueba FTP




Listo, con esto terminamos y verificamos que nuestro Servicio FTP está funcionando y listo para usar.


Para concluir, quiero mencionar nuevamente que el objetivo de esta guía es realizar una instalación básica en un entorno de desarrollo. Hay otras configuraciones adicionales que se deben considerar, especialmente en temas de seguridad, cuando se implementa en un entorno de producción. Sin embargo, para un servidor básico en casa o en un entorno de desarrollo donde la seguridad no es la prioridad principal, esta solución es adecuada.



Esto es todo lo que quería compartir en esta entrada. Espero poder publicar una próxima entrada lo más pronto posible.



lunes, 31 de julio de 2023

Instalar Ubuntu Server en Raspberry Pi 4

Hola, creo que publicando esta nueva entrada he cumplido con la meta que me propuse al final de la entrada anterior: Ensamble e instalación de Raspberry Pi 4.

Esta entrada hace parte de la serie de entradas para documentar el proceso, desde el ensamble, la instalación y la configuración de la Raspberry Pi 4 como servidor, hasta el despliegue de una aplicación backend para exponer un servicio de API REST que podré consumir desde el mundo exterior haciendo uso del servicio Cloudflare Tunnel.

En esta entrada, a diferencia de la entrada anterior, voy a documentar un paso a paso usando capturas de pantalla del proceso de Instalar Ubuntu Server en Raspberry Pi 4. Uno de los objetivos con esta serie de entradas para documentar los procesos es hacerlo de la forma más simple posible y de forma concreta, sin profundizar en detalles técnicos, haciendo una documentación lo más simple posible que pueda ser fácilmente interpretada.


Requerimientos:
  • Tarjeta de memoria SD Clase 10 A1, con lector de memoria SD a USB

En la construcción del paso a paso de esta entrada, estoy usando como sistema operativo host un Linux Ubuntu Desktop 22.04.2 LTS.



Paso 1:

Desde la aplicación Raspberry Pi Imager, debemos seleccionar la opción "Choose OS". Aquí vamos a tener múltiples opciones, y para el caso específico de esta serie de entradas, vamos a seleccionar la opción "Other general-purpose OS".



Paso 2:

En la siguiente lista de opciones, debemos seleccionar "Ubuntu" como sistema operativo de propósito general.



Paso 3:

Para el propósito de esta guía, debemos seleccionar como sistema operativo "Linux Ubuntu Server 22.04.2 LTS (64-bit)", el cual tiene soporte extendido para Raspberry Pi 4.



Paso 4:

Debemos conectar previamente nuestra tarjeta de memoria SD con lector de memoria SD a USB a nuestro equipo y seleccionar la opción "Choose Storage". Se recomienda el uso de una tarjeta de memoria SD Clase 10 A1 de 32GB o superior.



Paso 5:

En la lista de dispositivos de almacenamiento, debemos seleccionar el correspondiente a nuestra tarjeta SD. En tu caso, que tienes conectada una tarjeta SD de 128GB, selecciona esa opción.



Paso 6:

Seleccionar "Configuración avanzada" en la opción del icono con forma de engranaje es una de las ventajas de usar la herramienta Raspberry Pi Imager.

A través de esta opción, podremos ajustar ciertos parámetros del sistema operativo antes de su instalación. La mayor ventaja es que no necesitaremos un monitor externo para conectar la Raspberry Pi 4 y hacer los ajustes necesarios. En cambio, podremos acceder a nuestra Raspberry Pi 4, que estará conectada a la red local, desde un cliente SSH en algún equipo externo que también esté conectado a la misma red local.







Paso 7:

Finalmente, seleccionamos el botón "Write" para iniciar el proceso de instalación. Este proceso puede llevar un tiempo, ya que primero descarga la imagen del sistema operativo y luego la instala en la tarjeta SD con la configuración previamente definida.




Listo, eso es todo, al final del proceso podemos extraer la tarjeta SD de nuestro equipo para posteriormente instalar la tarjeta SD en nuestra Raspberry Pi 4.

En la próxima entrada voy a documentar los primeros pasos, en el proceso de configuración inicial, una vez nos conectemos mediante un cliente SSH a nuestra Raspberry Pi 4.



Espero publicar mi próxima entrada lo más pronto posible y no hasta el próximo año.

martes, 18 de julio de 2023

Ensamble e instalación de Raspberry Pi 4

Año 2023, diez años después de haber publicado mi primera entrada en el blog de Idea Falaz y 2 años después de haber publicado mi última entrada en el blog, voy a dedicar un poco de mi tiempo para escribir una serie de entradas relacionadas con el uso de la Raspberry Pi 4.

Mi objetivo al escribir esta serie de entradas consiste en documentar el proceso, desde el ensamble, la instalación y la configuración de la Raspberry Pi 4 como servidor, hasta el despliegue de una aplicación backend para exponer un servicio de API REST que podré consumir desde el mundo exterior haciendo uso del servicio Cloudflare Tunnel.


Requerimientos:

Estos son todos los componentes mínimos necesarios para poder ensamblar e instalar una Raspberry Pi 4. Para el objetivo de esta guía, estoy utilizando una Raspberry Pi 4 de 8 GB de RAM y una tarjeta SD de 128 GB.

  • Raspberry Pi 4


  • Acrylic Case


  • Disipadores


  • Adaptador de Corriente de 5 voltios a 3 Amperes, tipo C


  • Tarjeta de memoria SD con lector de memoria SD a USB


  • Cable HDMI a Micro HDMI



El proceso de ensamblaje es bastante sencillo, y para documentar el proceso, he creado un video paso a paso:




Mi recomendación es adquirir un kit que incluye todos los componentes requeridos. En mi caso, yo adquirí uno desde la tienda de AliExpress:



Listo, esta entrada es bastante corta y el video resume todo el proceso paso a paso de lo que se debe hacer para ensamblar una Raspberry Pi 4.

En las siguientes entradas, publicaré información sobre la instalación y la configuración de la Raspberry Pi 4 como servidor, utilizando una imagen de Linux Ubuntu Server. Luego, llegaré hasta el despliegue de una aplicación backend para exponer un servicio de API REST que podré consumir desde el mundo exterior, haciendo uso del servicio Cloudflare Tunnel.

Espero publicar mi próxima entrada lo más pronto posible y no hasta el próximo año.

Update:


👇

martes, 26 de abril de 2016

Servidor LAMP Linux Apache PHP MySQL PhpMyAdmin en Ubuntu 16.04 LTS Xenial Xerus

Bueno en esta entrada quiero compartir como instalar un Servidor LAMP en un Sistema Operativo tipo Linux basado en Debian como Ubuntu 16.04 LTS Xenial Xerus.

Cuando queremos aprender el desarrollo de Aplicaciones Web necesitamos las siguientes herramientas de software instaladas en nuestro equipo que vamos a usar para desarrollo, los programas que se requieren son los siguientes:

  • Apache
  • PHP
  • MySQL
  • PhpMyAdmin (Opcional)

El acrónimo LAMP surge de la combinación de palabras Linux Apache PHP MySQL por eso en Internet podemos encontrar información adicional de como instalar un Servidor Web LAMP.


NOTA: En esta entrada sólo se da a conocer los programas a instalar y su proceso de instalación, en el mundo real es necesario después de instalar realizar el proceso de configuración de cada programa en cuanto a los aspectos de seguridad de los mismos.



Seguir los siguientes pasos de instalación:



  • Paso 1usuario@linux~$ sudo apt-get install apache2
Al terminar la instalación de Apache se crea un directorio raíz para el localhost donde podemos crear proyectos web, este directorio es /var/www/html

Cuando ingresamos desde un navegador web al directorio raíz de apache desde la siguiente URL http://localhost/ nos muestra una pagina con información de la instalación de Apache.

Apache
Apache

  • Paso 2usuario@linux~$ sudo apt-get install php
Cuando finaliza la instalación de PHP podemos probar si funciona correctamente invocando la función phpinfo(); desde un archivo .php que debemos guardar en el directorio raíz de Apache, el archivo debe contener el siguiente código:


<?php phpinfo(); ?>



  • Paso 3usuario@linux~$ php -v
Verificar la versión de php que tenemos instalada en el sistema, la versión mas reciente al momento de escribir esta entrada es la versión 7 de php.




  • Paso 4usuario@linux~$ sudo apt-get install libapache2-mod-php7.0
Instalar el modulo php versión 7 para el servidor Apache.

Cuando se ejecuta el archivo desde localhost de Apache en un Navegador Web se muestra una pagina con información sobre la versión de PHP que se ha instalado ademas de información del Servidor Web.


php7
PHP Versión 7

  • Paso 5usuario@linux~$ sudo apt-get install mysql-server
Durante la instalación de MySQL el sistema nos pregunta si deseamos configurar una contraseña para el usuario root, esto es opcional, si queremos podemos dejarlo en blanco, claro que en el mundo real debemos darle una contraseña.


  • Paso 6usuario@linux~$ sudo apt-get install phpmyadmin php-mbstring php-gettext
Cuando se realiza la instalación de PhpMyAdmin nos pregunta por la contraseña del usuario root de MySQL para poder ingresar desde un Navegador Web en la aplicación web de PhpMyAdmin.

Se deben Activar  las extensiones de php mcrypt y mbstring en PHP:

usuario@linux~$ sudo phpenmod mcrypt
usuario@linux~$ sudo phpenmod mbstring

Para hacer uso de PhpMyAdmin desde un navegador web debemos ingresar localmente a la siguiente URL http://localhost/phpmyadmin/ donde nos solicita el usuario y contraseña que tenemos configurado en MySQL.


phpmyadmin
PhpMyAdmin


Sugerencia
:

Cuando ya han terminado de instalar todos los programas para un Servidor LAMP cada vez que se crean archivos en el directorio raíz de Apache /var/www/html/ es necesario tener permisos de administrador ya que el propietario del directorio html es el usuario root, podemos modificar esto cambiando el propietario del directorio html a nuestro usuario, de esta forma podemos crear y modificar archivos sin necesidad de tener permisos de usuario root.


Solucionar Error Pagina en Blanco PHP7 en Linux Ubuntu 16.04 LTS Xenial Xerus

En esta entrada quiero compartir como solucionar el error de pagina en blanco después de instalar la versión 7 de PHP en Linux Ubuntu 16.04 LTS.

Este problema me surgió al instalar un servidor LAMP y luego de crear un archivo de php con llamado a la función phpinfo(); como se muestra a continuación:

<?php phpinfo(); ?>

Trato de ejecutar el archivo php que debe estar ubicado en la raiz del DocumentRoot de Apache /var/www/html/ la pagina que visualizo en el navegador web es una Pagina en Blanco.

En una entrada anterior pueden encontrar mas detalles de como [Instalar un Servidor LAMP en Ubuntu Linux].


Para Solucionar este error, desde una terminal debemos instalar el modulo php versión 7 para el servidor Apache:

usuario@linux~$ sudo apt-get install libapache2-mod-php7.0

Con esto el servidor Apache queda configurado para PHP7 y podemos finalmente ejecutar archivos php en nuestro servidor.


php7
PHP Versión 7


domingo, 27 de abril de 2014

Instalar Apache MySQL PHP phpMyAdmin En Linux Ubuntu Debian



Para cierto trabajo de desarrollo web, requiero hacer uso de un servidor web, por lo que tengo la necesidad de instalar en mi maquina con SO Ubuntu algunos programas que se usan usualmente en un servidor web, ademas de ser más practico trabajar localmente un proyecto web antes de subir a un entorno de producción.


Los programas que requiero instalar son los siguientes:
  • Apache
  • MySQL
  • PHP
  • phpMyAdmin

Estos programas los requiero instalar en una maquina que corre un sistema operativo Linux basado en Debian, mas exactamente Ubuntu 14.04 LTS, algunas personas en la web le llaman a esto "Instalación de servidor web LAMP" (Linux Apache MySQL PHP)


NOTA: En esta entrada sólo se da a conocer los programas a instalar y su proceso de instalación, en el mundo real es necesario después de instalar realizar el proceso de configuración de cada programa en cuanto a los aspectos de seguridad de los mismos, espero hacer otra entrada donde mencione algunos.


En una terminal o consola de linux ejecutar los siguiente comandos:

  • Apache
prompt:~$ sudo apt-get install apache2

  • PHP
prompt:~$ sudo apt-get install php5

  • MySQL
prompt:~$ sudo apt-get install mysql-server mysql-client

  • phpMyAdmin
prompt:~$ sudo apt-get install phpmyadmin



Al instalar Apache se crea un directorio en el cual podemos crear los proyectos web, este directorio es:

/var/www/html/


El directorio pertenece al usuario root por lo que debemos cambiar el propietario a nuestro usuario:

prompt:~$ sudo chown -R sebaxtian /var/www/html/


El anterior comando asigna como propietario del directorio /var/www/html/ y de forma recursiva -R a los archivos y subdirectorios al usuario sebaxtian.

Para probar que la instalación de PHP funciona correctamente podemos crear un archivo info.php en el directorio /var/www/html/ que tenga la siguiente linea de código:

<?php phpinfo(); ?>

La cual muestra información sobre la versión de php que se ha instalado.


Ahora para probar que todo se ha instalado correctamente, en un navegador web accedemos a las siguientes URL:

  • Apache

  • phpMyAdmin

  • PHP



Listo eso seria todo, ya tenemos instalados los programas básicos para que podamos empezar a desarrollar nuestros proyectos web en nuestro servidor local.

El siguiente vídeo muestra el proceso: