CONFIGURACIÒN DE SERVIDOR PROFTPD EN LINUX

En esta nueva entrada veremos un manual con el que configuraremos un servidor ftp con uno de los software mas estables y seguros según el sitio oficial, con Licencia Pública General,

Comenzamos instalando el paqute de proftpd

debian:/home/sena# apt-get install proftpd

al descargar nos pregutara de que modo deseamos que corra, le especificamos que lo haga standalone ó (independiente) ya que con esta opción el administrador decide cuando arrancar el servidor y cuando detenerlo.


debian:/home/sena# cat /etc/passwd
utilizando este comando veremos que se ha agregado un usuario llamado “FTP” que es el que nos crea ProFTPD al instalarlo, en esa lista nos aseguramos que su shell sea:
/bin/bash/ de este modo podra loguearse con el usuario ftp
Creamos el usuario ftp como usuario del sistema si no se encuantra con el comando anterior, lo haremos de la siguiente forma:

debian:~# adduser ftp -s /bin/bash

si no esta creado el grupo haremos:
debian:~# addgroup ftp

añadimos el usuario ftp a al grupo ftp
debian:~# adduser ftp ftp


tenemos en este momento la cuenta de login para ftp. Crearemos dos directorios llamados upload y download en el directorio /home/ftp donde se realizarán las subidas y las descargas respectivamente.-


debian:/home/ftp# mkdir upload debian:/home/ftp# mkdir download

le damos los permisos correspondientes

debian:/home/ftp# chmod a+rw -R upload (ejecución, lectura y escritura para todos)
debian:/home/ftp# chmod 755 -R download
(todo los permisos para root y ejecucuion y lectura para otros)

cambiamos el propietario para los directorios:

debian:/home/ftp# chown ftp upload
debian:/home/ftp# chown ftp download


con la siguiente linea nos aseguramos que el servidor ftp "escucha" en el puerto 21, así que la siguiente orden nos confirmará la ejecución correcta como demonio en el servidor:



debian:/home/ftp#netstat -an|grep LISTEN|grep 21

debera aparecer en la pantalla algo parecido a esto:

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN



En las siguientes lineas especificaremos los parametros de proftpd según nuestras necesidades, dejandolas en sintesis de la sigueinte forma, ingresamos:

debian:/etc# pico /etc/proftpd/proftpd.conf


#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#

# Includes DSO modules
Include /etc/proftpd/modules.conf

# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6 off


ServerName "nuevoftp" (indicamos el nombre del servidor)
ServerType standalone (se encuentra independiente)
DeferWelcome on (retrasamos la aparición de mensajes de bienvenida)
MultilineRFC2228 on (habilitar extenciones de seguridad de la RFC 2228.)
DefaultServer on (usar (VirtualHost))
ShowSymlinks off (muestra los ficheros que se encuentren dentro del área designada para losusuarios)
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
(los siguientes parámetros son temporizadores de la conexión, vienen dados ensegundos. Desconectan al usuario transcurrido cierto tiempo si no se produce ninguna transferencia, si no llegan datos o si el usuario está inactivo, respectivamente)

DisplayLogin welcome.msg
DisplayFirstChdir .message (mensajes de bienbenida para los usuarios)

ListOptions "-l" (opciones al hacer un ls.)
DenyFilter \*.*/

# Port 21 is the standard FTP port. ( puerto por el que escuchara)
Port 21

MaxInstances 30 (maximo de visitas en le servidor)

User proftpd
Group nogroup
(usuario y grupo para que el servidor corra)
ServerIdent on "bienvenido al nuevoftp"
AccessGrantMsg "ACCESO CORRECTO"
AccessDenyMsg "ACCESO INCORRECTO"
(respectivamente mensajes de bienbenida ingreso y logueo)

AuthUserFile "/etc/passwd"
AuthGroupFile "/etc/group"
(direcciona a la shell que usara para ejecutar comandos)

Umask 022 022 (definen los permisos de los ficheros)

AllowOverwrite on (permitimos que se sobreescriban los ficheros)

DefaultRoot /home/ftp (enjaula usuario en este directorio)

# Uncomment this if you are using NIS or LDAP to retrieve passwords:
# PersistentPasswd off

# Be warned: use of this directive impacts CPU average load!
#
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
# UseSendFile off


TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log


EN ESTAS ULTIMAS LINEAS INDICAREMOS LOS PERMISOS QUE TENDRAN LOS USUARIOS EN LOS DIRECTORIOS:

Directory /home/ftp
Limit WRITE
DenyAll
Limit
Directory

# indico que el directorio upload es de lectura y escritura
Directory /home/ftp/upload
Umask 077
AllowOverwrite off
Limit READ
DenyAll
Limit
Limit WRITE CWD
AllowAll
Limit
Directory


# indico que el directorio download es de solo lectura

Directory /home/ftp/download
Umask 774
Limit READ
AllowAll
Limit
Directory
#
# Anonymous
#VirtualHost 192.168.0.10
#VirtualHost

NOTA MUY IMPORTANTE: al momento de subir la entrada al blog hay problemas con el editor, tengo que suprimir los Caracteres ><, por que los confunde con Etiquetas HTML y no las muestra (en el archivo proftpd.conf se muestra como y donde irian).


Guardamos el archivo que acabamos de modificar

(Control+O) y salimos (Control+X)




Para finalizar reiniciaremos el servicio para que los cambios realizados tengan efecto:

debian:/etc# /etc/init.d/proftpd stop
Stopping ftp server: proftpd.

para luego teclear esto otro:

debian:/etc#debian:/etc# /etc/init.d/proftpd start

Stopping ftp server: proftpd.
Starting ftp server: proftpd.


Ingresando desde el navegador bastara con ingresar la ip en la barra de navegación ftp://192.168.70.10 nos pedira el usuario (ftp) y la contraseña (ftp) “para nuestro caso”


podremos probarlo tambien ingrasando a él desde la consola de la sigueinte manera:


debian:/home# ftp 192.168.70.10

Connected to 192.168.70.10.
220 bienvenido al nuevoftp
Name (192.168.70.10:root): ftp (nos loguearemos como ftp)
331 Password required for ftp
(contraseña ftp como dada al crear el usuario)
230 ACCESO CORRECTO
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful
150 Opening ASCII mode data connection for file list
drwxr-xr-x 2 (?) root 1024 Jul 30 16:05 download
drwxrwxrwx 2 (?) root 1024 Jul 30 14:17 upload
226 Transfer complete.


Hemos probado que el ervidor se encuentra corriendo correctamente, se recuerda que para lograr explotar sus funciones al maximo, es necesario seguir la documentación original de sitio oficiales.

SERVIDOR WEB APACHE2 (hosting virtual)



Una de las funciones que nos ofrece apache2 son los “hosting-virtual” permitiendo que un servidor web aloje varios sitios web, emulando un servidor por cada sitio, cuando en realidad es un mismo servidor que direcciona las paginas web a los directorios respectivos.

Para implementar este servicio comenzamos instalando apache2

#apt-get install apache2

Para posibles pruebas y no trabajar directamente en la red con DNS agregamos al archivo /etc/hosts el nombre del sito web y la dirección del localhost.

#pico /etc/hosts

127.0.0.1 (nombre del sitio web)

Creamos los directorios que contendrán los sitios web

#mkdir /var/www/sitio1 (nombre de la carpeta que contiene las paginas del sitio)

#mkdir /var/www/sitio2

Concedemos permisos de ejecución y lectura a los directorios y sus archivos

#chmod –R 755 sitio1

#chmod –R 755 sitio2


CREAMOS UN SITIO POR ENCABEZADO DE HOST

Procedemos a crear el archivo de configuración para el nuevos host virtual, copiando el archivo default de sites-available de esta manera:

#cp /etc/apache2/sites-available/default default1 (nombre del nuevo archivo para sitio1)

Ingresamos al nuevo sitio (default1) y nos aseguraremos de que las siguientes líneas queden de la forma indico:

VirtualHost*:80 (puerto por omisión)

ServerName www.sitio1.com (nombre del servidor para este sitio web)

DocumentRoot /var/www/sitio1 (ruta donde se encontrara este sitio web)

Directory /var/www/sitio1(esta es la misma ruta del Documentroot)

Agregamos la línea que define la primera página (home) que se abrirá al dirigirnos a ese sitio desde un explorador

DirectoryIndex index.htm (este nombre es el home de la pagina no necesariamente index.htm)

Documentamos la línea que nos llevaría por defecto al index de apache que nos mostraria algo como “sitio en construcción” asegurándonos que quede de esta forma:

# RedirectMatch…….

Guardamos los cambios, salimos del fichero y a continuación procedemos a enlazar este nuevo archivo de configuración con el directorio que habilita las políticas para el servidor, procedemos con el siguiente comando:

# a2ensite default1 (nombre del archivo de configuración)


IMPLEMETAR UN SEGUNDO SITIO POR IP

Procedemos a crear el archivo de configuración para el nuevo host virtual, copiando el archivo default de sites-available de esta manera:

#cp /etc/apache2/sites-available/default default2 (nombre del nuevo archivo para sitio2)

Ingresamos al nuevo sitio (default2) y nos aseguraremos de que las siguientes líneas queden de la forma correcta:

192.168.0.10:80(IP por donde recibirá las peticiones http)

DocumentRoot /var/www/sitio2 (ruta donde se encontrara este sitio web)

Directory /var/www/sitio2(esta es la misma ruta del Documentroot)

Agregamos la línea que define la primera página (home) que se abrirá al dirigirnos a ese sitio desde un explorador

DirectoryIndex index.htm (este nombre es el home de la pagina no necesariamente index.htm)

Documentamos la línea que nos llevaría por defecto al index de apache que nos mostraria algo como “sitio en construcción” asegurándonos que quede de esta forma:

# RedirectMatch…….

Guardamos los cambios, salimos del fichero y a continuación procedemos a enlazar este nuevo archivo de configuración con el directorio que habilita las políticas para el servidor procedemos con el siguiente comando:

# a2ensite default1 (nombre del archivo de configuración)

Al momento de implementar varios hosting-virtual por IP será necesario crear sub-interfaces, las cuales se crean de la siguiente forma:

# ifconfig eth0:1 172.16.0.10 netmask 255.255.0.0 (de esta forma podría crearse una sub-interfaz indicando la ip y la mascara de red)

Reiniciamos o recargamos el servicio para que tome los cambios realizados

# /etc/init.d/apache2 restart

Siguiendo la configuración del manual el servidor web debe estar ahora trabajando

Ingresamos al explorador y en la barra de navegación pondremos

http://www.sitio1.com que nos direccionara internamente al directorio de ese nombre

http://192.168.0.20 que nos llevaría a sitio2, directorio alojado para esa página

GUIA PARA CONFIGURAR VSFTP Linux-debain(usarios fantasmas)



En esta guía veremos como instalar y configurar un servidor ftp; como función adicional y medida de seguridad crearemos usuarios con acceso al servidor que no pertenezcan al sistema, enjaulandolos y permitiéndoles solo el acceso a determinados directorios.

Comenzamos descargando e instalando la última versión de vsftpd.


Observamos que el puerto por el que corre por omisión ftp se encuentre “escuchando”
#netstat -an|grep LISTEN|grep 21

De encontrarse activo muestra la línea del puerto:

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN


Creación y configuración de las bases de datos

Lo primero será la instalación, si no lo tenemos ya, del soporte para las bases de datos que usemos como almacenamiento de los usuarios, las mas utilizadas han sido Berkeley Database o MySQL. En este caso se usara Berkeley DB instalaremos el soporte que nos ofrece el paquete db4.4-util.

#apt-get install db4.4-util.


Para crear una base de datos contra la que se autenticaran los usuarios “fantasmas del ftp” crearemos un archivo de texto plano donde quedara para cada usuario, una línea con su nombre y otra con su contraseña, en este orden, para 2 usuarios veriamos algo así:

usuario1 pasword1 usuario2 pasword2

El archivo los guardamos con el siguiente nombre:
users_db

Transformamos el archivo al formato de Berkeley DB y negamos cualquier acceso al fichero que no sea el del usuario root
# db4.4_load -T -t hash -f users_db /etc/vsftpd/users.db # chmod 600 users.db

Configuración de PAM

PAM (modulos de autenticación) servirá a VSFTP para dirigirse hacia la base de datos con la que se autenticaran los “usuarios fantasmas” creados.
El archivo de configuración de PAM para vsftpd se encuentra en /etc/pam.d/vsftpd y para nuestro caso deberá quedar de esta manera:
#%PAM-1.0 auth required /lib/security/pam_userdb.so db=/etc/vsftpd/users account required /lib/security/pam_userdb.so db=/etc/vsftpd/users

Configuración de vsftpd

Para proceder a editar el fichero de configuración de vsftpd según nuestras necesidades ingresaremos con la siguiente línea

#pico /etc/vsftpd.conf

Para una mejor comprensión de lo que se hace a continuación puede leerse las distintas opciones de configuración ofrecidas mediante la orden

#man vsftpd.conf.

En este momento ya están creadas las bases de datos y los “usuarios fantasmas” del servidor ftp, ahora dejaremos vsftpd habilitado para bloquear a los usuarios del sistema y permitir el logueo de los usuarios virtuales (agregados en las bases de datos).

Dentro de /etc/vsftpd/vsftpd.conf en síntesis quedaran una serie de parámetros de la siguiente forma (las líneas documentadas (#) son una breve explicación que se podrá ampliar en los diferentes manuales “man vsftpd”):


anonymous_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO
#Estas opciones impiden el acceso a cualquier usuario anónimos y del
#sistema al servidor.

listen=YES listen_port=21

#indicamos a vsftpd que arranque en modo directo (standalone) y "escuche"
#en el puerto indicado.

local_enable=YES
#permitiremos que los usuarios locales puedan hacer login en el servidor.
#Esto nos servirá para tener un usuario virtual que pueda autenticarse.

max_clients=60 max_per_ip=20
#Establecemos el número máximo de clientes, totales y por dirección IP.
pam_service_name=vsftpd
#este parámetro igualado al nombre con el que hemos guardado nuestro
#archivo de configuración de PAM dentro de /etc/pam.d .

guest_enable=YES
#permitimos el logueo de varios usuarios virtuales igualando a YES este
#parametro.

guest_username=somnus
#Si se incluye, este parámetro ha de igualarse a un nombre de usuario real
#hacia el cual se mapearán todos los usuarios virtuales creados.
#Este usuario tendrá como (home) el directorio por defecto que queramos
#usar como raíz (/). creamos un usuario llamado somnus con un directorio en
#/home/ftp/pub, teclearíamos en la consola lo siguiente
# useradd -d /home/ftp/pub somnus
#El directorio /home/ftp/pub ya está creado en algunas distribuciones, así
#que tendremos que cambiarlo de propietario con el comando chown, sino
#creamos el directorio pub):
# mkdir /home/ftp/pub # chown ftp:nougrup
virtual_use_local_privs=YES
#para que los usuarios virtuales tengan los mismos privilegios que los
#usuarios locales igualamos este parámetro a YES.

user_config_dir=/etc/vsftpd/users**
chroot_local_user=YES
#Igualamos a YES para "enjaular" a los usuarios locales en sus respectivos
#directorios.

local_umask=022
#Establecemos el valor de umask de los ficheros que se creen mediante el
#servidor de ftp.
xferlog_enable=YES xferlog_file=/var/log/vsftpd.log
#Activan el log del servidor y lo establecen a un archivo determinado.

idle_session_timeout=180 data_connection_timeout=120
#Establecemos los tiempos de conexión sin actividad y con ella,
#respectivamente.

ftpd_banner=Welcome to ftp Server
#Establecemos un saludo del servidor cuando se produzca una conexión al
#mismo.



** user_config_dir. Igualaremos este parámetro al directorio que contendrá los permisos de cada usuario en un fichero por separado.
Creamos un fichero de texto plano que contendrá los parámetros de vsftpd a disposición de los “usuarios fantasmas”. Por ejemplo para el usuario “usuario1”, creamos el directorio que contendrá otros ficheros del vsftpd
# mkdir /etc/vsftpd
Creamos el directorio que contendrá los archivos de los permisos
# mkdir /etc/vsftpd/users
Y creamos los archivos correspondientes a la configuración de los permisos de “usuario1”
#touch /etc/vsftpd/users/usuario1
con estas lienas, permitimos la escritura y la subida de archivos y establecemos la raíz a partir de la cuál tendrá acceso dicho usuario:

dirlist_enable=YES
download_enable=YES
local_root=/home/ftp/pub/usuario1 (esta es la casa del usuario1)
write_enable=YES
anon_upload_enable=YES
virtual_use_local_privs=YES




CREAR VARIO SITIOS FTP EN LINUX


Podemos tener varios sitios ftp en linux con vsftpd, cada sitio debe tener su propio archivo de configuración vsftpd.conf que podremos encontrar en:

#/etc/vsftpd/vsftpd.conf

Copiamos el archivo de configuracion para nuestros nuevo sitio:

# cp /etc/vsftpd/vsftpd.conf vsftpd.sitio2.conf

Modificamos el archivo según nuestras necesidades

#pico /etc/vsftpd/vsftpd.sitio2.conf (archivo nuevo de configuración)

Indicamos la dirección IP por la que escuchara el nuevo sitio, esto lo hacemos agragando el el vsftpd.conf la sigueinte linea:

Listen-address=(Direccion IP)

Para iniciar el otro sitio FTP

#/usr/sbin/vsftpd /etc/vsftpd/vsftpd.sitio2.conf
Ahora tenemos dos sitios FTP en servidor.