Manual Servidor

INSTITUTO POLITÉCNICO NACIONAL Escuela Superior de Cómputo Administración de Servicios en Red Soto Ramos Manual Alejand

Views 48 Downloads 2 File size 1014KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

INSTITUTO POLITÉCNICO NACIONAL Escuela Superior de Cómputo

Administración de Servicios en Red Soto Ramos Manual Alejandro titulo Servidor FTP Manual de Servidor 4CV4 Equipo No: 8 Integrantes: Montes Izazaga Jorge Montiel Guerrero Christian Omar Valencia Rangel Michael Jordan 23 de marzo de 2019

Índice general 1. Investigación 1.1. Selección de sistema operativo . . . . 1.2. Selección de servidor FTP . . . . . . . 1.3. VSFTPD Servidor FTP . . . . . . . . . 1.3.1. Características del servidor . . 1.3.2. Licencia . . . . . . . . . . . . . . 1.3.3. Funcionamiento . . . . . . . . . 1.3.3.1. Servidor . . . . . . . . 1.3.3.2. Cliente . . . . . . . . . 1.3.4. Soporte (Empresa/fabricante) 1.3.5. Impacto en el mercado . . . . . 1.3.6. Sistemas Operativos . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

2. Manual de servidor 2.1. Requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Instalación y Configuración . . . . . . . . . . . . . . . . . . . . . . 2.2.1. Instalación de Vsftpd . . . . . . . . . . . . . . . . . . . . . . 2.2.2. Configuración Inicial . . . . . . . . . . . . . . . . . . . . . . 2.2.3. Creación de los usuarios . . . . . . . . . . . . . . . . . . . 2.3. Acceso al recurso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1. Configuración de puerto . . . . . . . . . . . . . . . . . . . . 2.3.2. Limite de usuarios concurrentes . . . . . . . . . . . . . . 2.3.3. Tiempo máximo de conexión . . . . . . . . . . . . . . . . . 2.4. Restricciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1. Restringir acceso al recurso por dirección IP del cliente 2.4.2. Restringir acceso al recurso por usuario . . . . . . . . . 2.4.3. Restringir acceso al recurso por grupo de usuarios . . . 1

. . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . .

3 3 4 6 6 7 7 7 7 8 8 9

. . . . . . . . . . . . .

10 10 10 10 11 16 17 17 20 20 20 21 21 23

2 2.5. Servidor de aplicación utilizando el protocolo seguro para la transferencia de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.1. Definición de certificados de operación . . . . . . . . . . . . 2.6. Implementación de de jaulas para diferentes usuarios . . . . . . . 2.6.1. Jaulas para usuarios . . . . . . . . . . . . . . . . . . . . . . . . 2.7. Configuración de los sistemas de registro de acceso al sistema . . 2.7.1. Configurar los diferentes niveles de operación de las bitácoras 2.7.2. Especificación de los parámetros de bitácora solicitados . 2.8. Resumen de operación del servidor (Recursos consultados/editados, usuario, tipo de operación realizada) . . . . . . . . . . . . . . . 2.8.1. Resúmen de Operación . . . . . . . . . . . . . . . . . . . . . . 2.8.2. Resúmen de Operación por Usuario . . . . . . . . . . . . . . 2.8.3. Resúmen de Errores . . . . . . . . . . . . . . . . . . . . . . . .

26 26 28 28 30 30 31 31 40 40 43

Capítulo 1 Investigación 1.1.

Selección de sistema operativo

Se tomaron en cuenta dos sistemas operativos para esta selección, Ubuntu y Debian. A continuación se muestra una tabla comparativa de estos dos sistemas operativos.

Figura 1.1: Tabla comparativa sistemas operativos

Después de realizar el análisis de ambos sistemas, llegamos a la conclusión, de que el sistema operativo ideal para nuestro servidor era Debian, en este 3

4 caso decidimos utilizar Debian Jessie, ya que era el que mejor se acoplaba a nuestras necesidades y con el que estamos más familiarizados. Para la utilización de dicho sistema operativo se utilzará la herramienta ’Vagrant’. Vagrant es una herramienta para la creación y configuración de entornos de desarrollo virtualizados. Originalmente se desarrolló para VirtualBox y sistemas de configuración tales como Chef, Salt y Puppet. Sin embargo desde la versión 1.1 Vagrant es capaz de trabajar con múltiples proveedores, como VMware, Amazon EC2, LXC, DigitalOcean, etc. Aunque Vagrant se ha desarrollado en Ruby se puede usar en multitud de proyectos escritos en otros lenguajes, tales como PHP, Python, Java, C y JavaScript.

1.2.

Selección de servidor FTP

Para la selección del servidor ftp se tomaron en cuenta tres opciones, ProFTPD, Pure-FTPd y vsftpd. A continuación se muestra una tabla comparativa de dichos servidores.

5

Figura 1.2: Comparación de servidores web

6 Con respecto a su uso en el mercado actual en el mundo de los servidores ftp gratuitos se listan los siguientes: PrpFTPd Pure-FTPd vsftpd Con respecto a las características que se mencionaron anterior mente, llegamos a la conclusión de que la mejor opción para nosotros era VSFTP, no solo por lo dicho anteriormente, si no que es el servidor con el que estamos más familiarizados y es el que tiene un poco mas de documentación, lo que puede facilitar su uso.

1.3. 1.3.1.

VSFTPD Servidor FTP Características del servidor

vsftp (Very Secure FTP Daemon). Es un servidor FTP seguro y extremadamente rápido distribuido bajo la licencia GPL, para sistemas Unix incluido GNU/Linux. Configuración de direcciones IP Virtuales Usuarios Virtuales Operación por medio de Inetd o Standalone Poderosa configuración por usuario Control de ancho de banda Limite de conexiones IP por usuario Encriptación por medio de SSL A diferencia del FTP por sí mismo, VSFTPD proporciona cifrado a través de TLS/SSL, con lo que adquiere la característica de ser muy seguro.

7

1.3.2.

Licencia

GPL VSFTPD es un servidor FTP de sistema UNIX licenciado con la General Public License (GPL). Esta licencia se caracteriza por ser anti-propietario, es decir, fue pensada para asegurar que el software fuera libre y no dejara de ser lo, en tanto que una licencia BSD puede permitir la integración del software en un proyecto de propietario, volver a empaquetarse y no dar ningún tipo de compensación por el trabajo (como si fuera propiedad intelectual originaria del propietario).

1.3.3.

Funcionamiento

1.3.3.1.

Servidor

Un servidor FTP es un programa especial que se ejecuta en un equipo servidor normalmente conectado a Internet (aunque puede estar conectado a otros tipos de redes, LAN, MAN, etc.). Su función es permitir el intercambio de datos entre diferentes servidores/ordenadores. Por lo general, los programas servidores FTP no suelen encontrarse en los ordenadores personales, por lo que un usuario normalmente utilizará el FTP para conectarse remotamente a uno y así intercambiar información con él. Las aplicaciones más comunes de los servidores FTP suelen ser el alojamiento web, en el que sus clientes utilizan el servicio para subir sus páginas web y sus archivos correspondientes; o como servidor de backup (copia de seguridad) de los archivos importantes que pueda tener una empresa. Para ello, existen protocolos de comunicación FTP para que los datos se transmitan cifrados, como el SFTP (Secure File Transfer Protocol). 1.3.3.2.

Cliente

Cuando un navegador no está equipado con la función FTP, o si se quiere cargar archivos en un ordenador remoto, se necesitará utilizar un programa cliente FTP. Un cliente FTP es un programa que se instala en el ordenador del usuario, y que emplea el protocolo FTP para conectarse a un servidor FTP y transferir archivos, ya sea para descargarlos o para subirlos. Para utilizar un cliente FTP, se necesita conocer el nombre del archivo, el ordenador en que reside (servidor, en el caso de descarga de archivos), el ordenador al que se quiere transferir el archivo (en caso de querer subirlo nosotros al servidor), y

8 la carpeta en la que se encuentra. Algunos clientes de FTP básicos en modo consola vienen integrados en los sistemas operativos, incluyendo Microsoft Windows, DOS, GNU/Linux y Unix. Sin embargo, hay disponibles clientes con opciones añadidas e interfaz gráfica. Aunque muchos navegadores tienen ya integrado FTP, es más confiable a la hora de conectarse con servidores FTP no anónimos utilizar un programa cliente.

1.3.4.

Soporte (Empresa/fabricante)

vsftpd tiene un sitio web propio para dar soporte a los usuarios que tengan problemas con la instalación o que tengan inconvenientes a la hora de hacer configuraciones acontinuación se dejara el link de dicha pagina. https://security.appspot.com/vsftpd/vsftpd_conf.html

1.3.5.

Impacto en el mercado

La siguiente lista incluye algunos de los sitios más críticos de internet que utilizan vsftpd estos datos son a apartir del 2004. ftp.redhat.com ftp.suse.com ftp.debian.org ftp.freebsd.org ftp.gnu.org ftp.gnome.org ftp.kde.org ftp.kernel.org rpmfind.net ftp.linux.org.uk ftp.gimp.org

9 ftp-stud.fht-esslingen.de gd.tuwien.ac.at ftp.sunet.se ftp.ximian.com ftp.engardelinux.org ftp.sunsite.org.uk ftp.isc.org

1.3.6.

Sistemas Operativos

Es un servidor FTP para Linux y otros sistemas operativos UNIX. VSFTPD es el servidor FTP por defecto de las distribuciones de: Ubuntu CentOS Fedora NimbleX Slackware RHEL Linux.

Capítulo 2 Manual de servidor 2.1.

Requerimientos

Para poder asegurar el funcionamiento de una forma correcta de nuestro servidor recomendamos las siguientes características, tanto de software como de hardware. Hardware 1. Memoria RAM de 4 GBs 2. Procesador igual o superior a intel Celeron de 1.90 GHz de doble núcleo. 3. Espacio libre de almacenamiento en el disco duro mínimo de 20 GBs. Software 1. Debian 8.0 (jessie) 64 bits. 2. Filezilla. 3. Navegador web.

2.2. 2.2.1.

Instalación y Configuración Instalación de Vsftpd

Antes de empezar la instalación de nuestro Servidor FTP debemos actualizar los repositorios de nuestro sistema operativo. Esto lo hacemos abriendo una 10

11 consola y ejecutamos los siguientes comandos. sudo apt-get update sudo apt-get upgrade Después procedemos a instalar nuestro Servidor FTP el cual va a ser VSFTPD y hacemos la instalación con el siguiente comando: sudo apt-get install vsftpd Una vez que haya terminado la instalación procedemos a verificar la versión instalada de nuestro servidor FTP. Esto lo hacemos con el siguiente comando. /usr/sbin/vsftpd -version Lo que nos debe salir es lo siguiente.

Figura 2.1: Versión de vdftpd

Cuando se haya verificado la versión de nuestro servidor FTP, esto quiere decir que se instalo correctamente, procedemos a hacer la configuración necesaria para nuestra práctica.

2.2.2.

Configuración Inicial

Previo a la configuración del servidor, se deben inicializar los directorios y archivos con los que trabajará el servidor. Primero se crea el directorio del servidor. Esto lo hacemos con el siguiente comando. sudo mkdir /var/log/Serv Una vez creado dicho directorio, procedemos a la creación del archivo de configuración de nuestro servidor; para esto, ejecutaremos el siguiente comando: sudo nano /etc/vsftpd.conf

12 Posteriormente se deben crear los siguientes archivos de configuración que será usado más adelante. Con estos archivos, se declaran los usuarios que pueden acceder a nuestro servidor, así como los usuarios con permisos chroot. sudo touch /etc/vsftpd.user_list sudo touch /etc/vsftpd.chroot_list El primer punto a modificar es el archivo de configuración del servidor. Para esto se ejecuta el siguiente comando. sudo nano /etc/vsftpd.conf Una vez dentro de este archivo, debemos agregar los siguientes comandos; es importante mencionar que estos comando La configuración por defecto de este archivo se muestra a continuación.

13

Figura 2.2: Configuración por default del archivo vsftpd.conf

14 Como previamente creamos un nuevo archivo de configuración vacío, lo que prosigue es agregar la configuración requerida para el servidor. Para facilitar el proceso, es recomendable que dicho archivo se encuentre como se muestra a continuación. #Configuracion del Servidor FTP local_umask=022 dirmessage_enable=YES xferlog_enable=YES use_localtime=YES #Puerto connect_from_port_20=YES #listen_port=2020 #USUARIOS ANONIMOS anonymous_enable=NO #ACCESO A USUARIOS LOCALES local_enable=YES #PODER EDITAR ARCHIVOS write_enable=YES #CONFIGURACION GENERAL PARA BITACORAS syslog_enable=NO dual_log_enable=YES #BITACORAS log_ftp_protocol=NO vsftpd_log_file=/var/log/Serv/Conexiones.log #LIMITE DE TIEMPO DE ESPERA EN SEGUNDOS data_connection_timeout=300 #LIMITE DE USUARIOS CONECTADOS SIMULTANEAMENTE

15 max_clients=30 #VELOCIDAD MAXIMA DE TRANSFERENCIA EN BYTE/S local_max_rate=20000 #JAULAS PARA LOS USUARIOS #chroot_local_user=YES #chroot_list_enable=YES #user_sub_token=$USER #local_root=/home/$USER/FTP #LISTA DE USUARIOS QUE PUEDEN ENTRAR A CUALQUIER DIRECTORIO chroot_list_file=/etc/vsftpd.chroot_list #CONEXION SEGURA rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.key #ssl_enable=YES #force_local_data_ssl=NO #force_local_logins_ssl=NO #ssl_tlsv1=YES #ssl_sslv2=YES #ssl_sslv3=YES require_ssl_reuse=NO ssl_ciphers=HIGH #MENSAJE DE BIENVENIDA ftpd_banner=Bienvenido a nuestro servidor FTP #LISTAS DE USUARIOS #userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO listen=YES

16

2.2.3.

Creación de los usuarios

A continuación se muestran los pasos para la creación de usuarios del servidor FTP.

1. Creación del nuevo usuario de nuestro servidor, ala ejecutar el siguiente comando nos pedirá introducir una nueva contraseña para el usuario, así como también algunos datos mas. sudo adduser user2 2. Creación de el directorio FTP para el nuevo usuario. sudo mkdir /home/user2/FTP 3. Cambiar los permisos para el nuevo directorio creado. sudo chmod a+w /home/user2/FTP/ 4. Se cambia el propietario del nuevo directorio. sudo chown user2:user2 /home/user2/FTP/ 5. Por ultimo, se agrega el nuevo usuario a la lista de usuarios de FTP. sudo nano /etc/vsftpd.user_list

Figura 2.3: Agregar al usuario al archivo

Ya como paso para corroborar que podemos acceder a nuestro nuevo usuario desde el servidor FTP lo hacemos de la siguiente manera.

17 ftp -p 192.168.33.10 Después de introducir el anterior comando nos pide los datos de usuario y contraseña en este caso son usuario:user2 y la contraseña es password:password. Lo cual nos arroja lo siguiente, esto es con acceso desde la terminal.

Figura 2.4: Acceso al usuario desde la terminal

En caso de que se requira otro usuario, solo se repiten los pasos que se siguieron para crear el primero.

2.3. 2.3.1.

Acceso al recurso Configuración de puerto

Para poder acceder desde nuestro navegador debemos primero saber la ip de nuestro servidor y tambien tenemos que habilitar la escucha por el puerto que deseemos se hace con los siguientes comandos. ifconfig En nuestro caso la ip es 192.168.33.10. NOTA: En ocasiones ’ifconfig’ no está configurado en todos los sistemas Debian; otro comando con el que se puede conocer la dirección IP, es el siguiente. ip addr

18 Para habilitar el puerto de escucha lo hacemos desde el archivo vsftpd.conf y se debe agregar y/o modificar el siguiente comando. connect_from_port_20=YES listen_port=2020

Figura 2.5: Habilitar el puerto de escucha

19 Para acceder al directorio de archivos desde un navegador, se debe de realizar lo siguiente:

ftp://X.X.X.X:X Las primeras ’X’ son la dirección IP del servidor, mientras que la última, es el puerto en el que está trabajando. En este caso, quedaría de la siguiente manera: ftp://192.168.33.10:2020/

Figura 2.6: Acceso desde navegador

Para poder acceder al directorio de archivos desde la consola se debe ejecutar esto en la consola. ftp -p X.X.X.X X Las primeras ’X’ son la dirección IP del servidor, mientras que la última, es el puerto en el que está trabajando. En este caso, quedaría de la siguiente manera: ftp -p 192.168.33.10 2020

20

Figura 2.7: Acceso desde consola

2.3.2.

Limite de usuarios concurrentes

Para limitar la cantidad de usuarios que pueden acceder al mismo tiempo a nuestro servidor, se debe editar el archivo de configuración del servidor (vsftpd.conf ) agregando/modificando el siguiente comando. max_clientes=2

Figura 2.8: Máximo de clientes

2.3.3.

Tiempo máximo de conexión

Para la configuración del tiempo máximo de sesión de un usuario, , se debe editar el archivo de configuración del servidor (vsftpd.conf ) agregando/modificando el siguiente comando. data_connection_timeout=300 En este caso el valor que se asigna se encuentra en segundos.

2.4. 2

Restricciones

21

Figura 2.9: Máximo tiempo de conexión

2.4.1.

Restringir acceso al recurso por dirección IP del cliente

Para poder restringir el acceso por IP al servidor FTP se debe agregar o editar la siguiente linea de comando en nuestro archivo vsftpd.conf tcp_wrappers=YES

Figura 2.10: habilitar tpc wrappers

Una vez que dicho comando está habilitado se deben añadir o quitar las direcciones IP que se van a a permitir para el uso de el servidor FTP, para esto se deben editar los siguientes archivos del Sistema Operatico. sudo nano /etc/hosts.deny sudo nano /etc/hosts.allow Se debe agregar en cada archivo los siguientes comandos. vsftpd : ALL vsftpd : 192.168.33.10 (cliente) Una vez que se guarda dicha configuración, el usuario con la IP que se inrodujo no podrá acceder al servidor o a sus recursos.

2.4.2.

Restringir acceso al recurso por usuario

Para poder restringir el acceso por nombre de usuario se debe agregar o editar el siguiente comando en el archivo de configuración.

22

Figura 2.11: Acceso denegado al cliente por IP

Figura 2.12: habilitación de lista de usuarios

userlist_enable=YES Ahora se quita al usuario al cual se le va a restringir el acceso al recurso, esto se logra abriendo el archivo. sudo nano /etc/vsftpd.user_list

23 En nuestro caso quitaremos al usuario user4

Figura 2.13: lista de usuarios

Ahora, como prueba, se intenta acceder al recurso con el usuario 4.

Figura 2.14: lista de usuarios

Como se puede apreciar en la figura, el acceso al usuario fue denegado.

2.4.3.

Restringir acceso al recurso por grupo de usuarios

En esta sección se muestra la forma para restringir el acceso al recurso de un grupo de usuarios (en la sección anterior se mostró la manera manueal de

24 hacerlo a cada uno de los usuarios). El primer paso a realizar es la creación de un nuevo grupo. sudo groupadd 'Nombre de grupo'(en nuestro caso será usersss) Para agregar un usuario a dicho grupo, se debe agregar de la siguiente manera. sudo adduser username groupname En este caso, el comando queda de la siguiente manera. sudo adduser user1 usersss En este caso se agrega a los usuarios user1 y user2 al grupo. Para verificar que los usuarios fueron agregados correctamente al grupo, debemos ejecutar lo siguiente: groups user1 groups user2 También se realiza con el usuarios user3 para verificar que dicho usuario no está en ningún grupo. groups user3 Con lo cual nos tiene que aparecer de la siguiente manera. Para restringir el acceso a los usuarios que no pertenezcan a un cierto grupo se debe agregar el siguiente comando en el archivo /etc/pam.d/vsftpd. auth required pam_succeed_id.so quiet user ingroup usersss Para corroborar esto se puede acceder desde consola como el usuario user1 y el usuario user3. Se puede observar en la figura 2.18 que al user3 ingresó los datos de manera errónea, sin embargo, esta es la forma de FTP, de mostrarle a un usuario que no puede acceder a un recurso, en caso de que user3 se agregue al grupo usersss, el acceso se habilitará nuevamente.

25

Figura 2.15: usuarios con grupo usersss

Figura 2.16: acceso autorizado a user1

26

Figura 2.17: acceso denegado a user3

2.5.

Servidor de aplicación utilizando el protocolo seguro para la transferencia de archivos

2.5.1.

Definición de certificados de operación

Para realizar la asignación de certificados de seguridad a nuestro servidor, se deben realizar una serie de pasos. El primero, es la creación de la llave, dicha llave se contendrá toda la información del certificado, para su creación se debe ejecutar el siguiente comando. sudo openssl req -x509 -nodes -keyout ,→ /etc/ssl/private/vsftpd-selfsigned.pem -out ,→ /etc/ssl/private/vsftpd-selfsigned.pem -days 365 -newkey rsa:2048 Es importante recalcar, que al ejecutar este comando, tanto el certificado como la llave se guardarán en el mismo archivo. Una vez que se ejecute, se le realizarán una serie de preguntas para completar el certificado, a continuación se muestra un ejemplo. Previo a que se realicen cambios en el archivo de configuración de vsftpd, se debe abrir el puerto 990 de nuestro ordenador, para esto se ejecuta el siguiente comando. firewall-cmd --zone=public --add-port=990/tcp --permanent firewall-cmd --reload

27

Figura 2.18: Creación de usuario User2.

Una vez configurado el puerto 990 en el dispositivo, se procede a realizar las debidas modificaciones en el archivo de configuración de vsftpd, para abrir dicho archivo, se ejecuta lo siguiente. sudo nano /etc/vsftpd/vsftpd.conf Una vez dentro del archivo de configuración, debemos modificar y/o agregar los siguientes comandos. ssl_enable=YES ssl_tlsv1_2=YES ssl_sslv2=NO ssl_sslv3=NO rsa_cert_file=/etc/ssl/private/vsftpd-selfsigned.pem rsa_private_key_file=/etc/ssl/private/vsftpd-selfsigned.pem Los últimos dos comandos son utilizados por el servidor para localizar el certificado SSL y la llave. Una vez realizados estos pasos, solo procederemos a reiniciar el servidor. service vsftpd restart

28

2.6.

Implementación de de jaulas para diferentes usuarios

2.6.1.

Jaulas para usuarios

Para crear para los usuarios del servidor FTP, el primer comando que se debe ejecutar es: sudo nano /etc/vsftpd/vsftpd.conf Esto debe abrir el archivo de configuración del servidor, dentro de dicho archivo, se deben de modificar y/o agregar los siguientes elementos como se indica a continuación: anonymous_enable=NO local_enable=YES chroot_local_user=YES allow_writeable_chroot=YES Estos comandos, van a bloquear el acceso de los usuarios a otras carpetas que no sean las de su raíz, sin embargo, podrán realizar modificaciones a todos los archivos dentro de las carpetas que este contenga. Para que dichos cambios tomen efecto, debemos reiniciar el servicio, para esto se debe ejecutar el siguiente comando: sudo service vsftpd restart Posteriormente, se verifica si el servidor está funcionando de una manera correcta, ejecutando: ftp -p X.X.X.X Siendo cada valor de X, la dirección IP del servidor, para este caso es la siguiente 192.168.33.10, por lo que el comando debe ser ejecutado de la siguiente manera. ftp -p 192.168.33.10

29 En caso de que todo funcione correctamente, lo siguiente que se debe hacer es crear la carpeta compartida que el usuario va a compartir con otros usuarios. su - user2 cd /home/user2 mkdir Shared exit Estos comandos, crean una carpeta llamada ’Shared’, dentro del directorio de user2, pero aún no está compartiéndose, para esto se debe crear un grupo. cd /var/ftp mkdir shared chmod 766 shared/ chgrp ftp shared/ chown ftp shared/ Esto crea un grupo denominado ’ftp’ y la carpeta que se compartirá dentro de este grupo es "shared", posteriormente se ejecuta este comando. mount -o bind /var/ftp/shared /home/user2/FTP Esto permite al sistema la vinculación de las dos carpetas, y si en alguna de las dos se realiza algún cambio, la otra recibe el mismo cambio. Nuestro usuario aún no se encuentra dentro del grupo ’ftp’ que acabamos de crear, por lo se debe ejecutar el siguiente comando. usermod -a -G ftp user2 Este proceso se debe repetir para todos los usuarios que se quieran agregar a la carpeta compartida.

30

2.7.

Configuración de los sistemas de registro de acceso al sistema

2.7.1.

Configurar los diferentes niveles de operación de las bitácoras

Para habilitar el uso de bitácoras en VSFTP, se deben modificar las siguientes directivas en el archivo de configuración, con el fin de obtener un bitácora con más información. Primero se habilitan las dos bitácoras con las que cuenta VSFTP. #Habilitar ambas bitacoras dual_log_enable=YES Se habilita xferlog, que permite brinda información adicional sobre las cargas y descargas de archivos. #Activar bitacora de descargas/subidas xferlog_enable=YES Habilitar el registro de todos los comandos y respuestas del servidor. #Mostrar mas informacion en cada registro log_ftp_protocol=YES La directiva anterior requiere que se deshabilite el formato estándar de xferlog. #No usar el formato estandar de XferLog xferlog_std_format=NO Por último, se cambia el archivo donde se guarda la bitácora a /var/log/Serv/ y la bitácora se llamará Conexiones.log. #Cambiar la ruta donde se guarda la bitacora vsftpd_log_file=/var/log/Serv/Conexiones.log Se reinicia el servidor para que los cambios entren en efecto. sudo service vsftp restart

31 Se modifican los permisos de la bitácora para poder leerla sin ser root. sudo chmod a+r /var/log/Serv/Conexiones.log

2.7.2.

Especificación de los parámetros de bitácora solicitados

Un registro en la bitácora tiene el siguiente formato. Thu Mar 21 09:13:17 2019 [pid 3150] [user2] OK LOGIN: Client "192.168.100.26" Thu Mar 21 09:13:17 2019 [pid 3152] [user2] FTP response: Client "192.168.100.26", "230 Login successful." Thu Mar 21 09:13:17 2019 [pid 3152] [user2] FTP command: Client "192.168.100.26", "CWD /home/user2/FTP" DiaNombre Mes DiaNumero HH:MM:SS AÑO [pid 0000] [USUARIO] Estado OPERACION: Client "XXX.XXX.XXX.XXX" Thu Mar 21 09:13:17 2019 [pid 3152] [user2] FTP response: Client "192.168.100.26", "230 Login successful." Thu Mar 21 09:13:17 2019 [pid 3152] [user2] FTP command: Client "192.168.100.26", "CWD /home/user2/FTP"

2.8.

Resumen de operación del servidor (Recursos consultados/editados, usuario, tipo de operación realizada)

Se crea el siguiente programa para generación de reportes, se guarda en el archivo /var/log/Serv/report.py.

32 from __future__ import print_function import sys import re

from flask import Flask, render_template, jsonify

def normalize(op): '''Normalizar y traducir el codigo de operacion''' op = op.lower() traductor = { 'download': 'Descarga', 'rename': 'Modificación', 'upload': 'Carga', 'login': 'Inicio de Sesión', 'delete': 'Eliminación', } # Si es un codigo de error lo regresa tal cual op = traductor.get(op, op) return op

def splitter(reg, prev): '''Separar cada registro en las partes que nos son útiles para la administración.''' day, month, day_n, time, year, rest = reg.split(' ', 5) rest = re.compile(r'\[\w+\]').split(reg)[1] user = re.compile(r'\[\w+\]').findall(reg)[0][1:-1] # Mantener un lista de usuarios unicos users.add(user) info = re.compile(r'\"[\w\d.,\(\) \-\/\_]+\"').findall(rest) ip = info[0][1:-1]

33

if len(info) > 1: resource = info[1][1:-1] else: resource = "" if 'FTP command:' in reg: print("Skip logging, avanced stats.") return None if 'FTP response:' in reg: print('Checar por errores.') if len(info) != 2: print("Skip error logging, unkown description of error.") return None error_code = info[1][1:-1].split(' ', 1)[0] error_desc = info[1][1:-1].split(' ', 1)[1] if not error_code.startswith('5'): return None op = error_code resource = error_desc status = "FAIL" elif '] OK' in reg: print("Logging OK log") op, rest = rest[4:].split(': Client ') status = "OK" elif '] FAIL' in reg: print("Logging FAIL log") op, rest = rest[6:].split(': Client ') status = "FAIL" else: print("this should never happen") stat = { 'date': day_n + " " + month + " " + year, 'time': time,

34 'user': user, 'operation': normalize(op), 'client-ip': ip, 'resource': resource, 'status': status } return stat

def get_logs(log_file): '''Funcion para parsear la bitacora de VSFTP''' prev = {} with open(log_file) as logs: for log in logs: if len(log) > 10: # print() # print(re.compile(r'\[pid \d+\] \[\w+\]').split(log)) # print(re.compile(r'\[pid \d+\] \[\w+\]').findall(log)) if len(re.compile(r'\[pid \d+\] \[\w+\]').findall(log)) == 0: print("Skip logging") else: stat = splitter(log, prev) if stat is not None: stats.append(stat) prev = stat stats = list() users = set() # Por defecto la bitacora deberia estar en /var/log/Serv/Conexiones.log log_file = "/var/log/Serv/Conexiones.log" PORT = 9000 app = Flask(__name__)

35 @app.route('/') def index(): '''API para enviar la información de resúmen como JSON''' # Leer bitacora get_logs(log_file) # return render_template('/etc/apache2/logs/accesslog.html', stats=stats) return jsonify(stats)

@app.route('/report') def report(): '''Mostrar el resúmen como tablas en html''' # Leer bitacora get_logs(log_file) return render_template('access.html', names=list(stats[0]), stats=stats, users=list(sorted(list(users))))

if __name__ == '__main__': if len(sys.argv) == 2: log_file = sys.argv[1] # Iniciar Servidor Web app.run(host='0.0.0.0', port=PORT, debug=True) Se crea el directorio y el archivo donde se va a almacenar la página web que se va a servir para mostrar los reportes. sudo mkdir /var/log/Serv/templates sudo touch /var/log/Serv/templates/report.html El contenido de report.html es el siguiente.

Resúmen de Operación por Usuario {% for u in users%}

37 Usuario: {{ u }}

{% for s in stats if s['status']=='OK' and s['user']==u%} {% for n in names if n != 'status' and n != 'time' and n != 'user'%} {% endfor %} {% endfor %}
Fecha Operación Dirección del Cliente Recurso
{{ s[n] }}

{% endfor %} Resúmen de Operación {% for s in stats if s['status']=='OK' and s['operation']!='LOGIN'%} {% for n in names if n != 'status'%} {% endfor %} {% endfor %}
Fecha

38 Hora
Usuario Operación Dirección del Cliente Recurso
{{ s[n] }}

Resúmen de Errores

39 {% for s in stats if s['status']=='FAIL'%} {% for n in names if n != 'status'%} {% endfor %} {% endfor %}
Fecha Hora Usuario Operación Dirección del Cliente Recurso
{{ s[n] }}

Se modifican los permisos de report.html y de report.py para poder manipularlos. sudo chown -R $USER:$USER /var/log/Serv/templates sudo chown $USER:$USER /var/log/Serv/report.py sudo chmod u+xw,g+xw /var/log/Serv/report.py Para iniciar el Servidor Web, el cual corre en el puerto 9000, que mostrará los reportes se debe ejecutar. cd /var/log/Serv/ python3 report.py Conexiones.log

40

2.8.1.

Resúmen de Operación

En la Figura 2.19, se muestra una parte de la tabla de resúmen de operación.

Figura 2.19: Tabla de Operación Global, se muestran los primeros 5 registros.

2.8.2.

Resúmen de Operación por Usuario

En la Figura 2.20, se muestran los primeros 5 registros de la tabla de resúmen de operación del Usuario user1.

41

Figura 2.20: Tabla de Operación por Usuario, se muestran los primeros 5 registros.

42 En la Figura 2.21, se muestran los primeros 5 registros de la tabla de resúmen de operación del Usuario user2.

Figura 2.21: Tabla de Operación por Usuario, se muestran los primeros 5 registros.

En la Figura 2.22, se muestran los primeros 5 registros de la tabla de resúmen de operación del Usuario user3.

Figura 2.22: Tabla de Operación por Usuario, se muestran los primeros 5 registros.

43

2.8.3.

Resúmen de Errores

Figura 2.23: Tabla de Errores, se muestran los primeros 5 registros.

Bibliografía [1] samehttps://www.ecured.cu/ProFTPD [2] samehttps://www.sergio-gonzalez.com/personales/ingenieria_informatica/ sistemas_informaticos/documentacion/pureftpd/pureftpd.pdf [3] samehttps://www.ecured.cu/Vsftpd [4] samehttps://security.appspot.com/vsftpd.html [5] samehttps://help.ubuntu.com/community/vsftpd [6] samehttps://security.appspot.com/vsftpd/vsftpd_conf.html [7] samehttp://88.25.0.186/files/1520346909_manual_para_configurar_ servicio_ftp_con_vsftpd1-96.pdf [8] samehttps://serverfault.com/questions/577393/ vsftpd-limit-connection-to-a-set-of-ip-addresses [9] samehttps://serverfault.com/questions/931127/ftp-pam-setup-for-vsftpd [10] samehttp://www.ite.educacion.es/formacion/materiales/85/cd/linux/m1/ administracin_de_usuarios_y_grupos.html

44