enero 02, 2008

Instalando Servidor FTP seguro en Ubuntu.

Un servicio muy habitual es el ftp, sobre todo si tenemos montado un
servidor Web para que los diseñadores y webmasters puedan dejar allí sus
creaciones sin molestar a los administradores, nosotros. Con este
objetivo, vamos a montar un servidor ftp.

Usuario: cliente_01
Acceso a su directorio: /var/www/dominio1
Sin shell en el sistema y en un entorno chroot

Usuario: cliente_02
Acceso a su directorio: /var/www/dominio2
Sin shell en el sistema y en un entorno chroot

Usuario: webmaster
Acceso a su directorio: /var/www
Sin shell en el sistema y en un entorno chroot

Preparación del sistema

Antes de instalar el servidor ftp vamos a crear los usuarios y
securizarlos para que tengan los mínimos permisos y sólo puedan hacer lo
que nosotros definamos.

Crearemos un grupo llamado ftp al cual asociaremos los usuarios.

# groupadd ftp

Creamos los usuarios con sus correspondientes características.

#useradd -g ftp -d /var/www/dominio1 -c ” Cliente 1 ” client_01
#useradd -g ftp -d /var/www/dominio2 -c ” Cliente 2 ” client_02
#useradd -g ftp -d /var/www -c ” webmaster ” webmaster

Les asignamos un password a los usuarios con el comando passwd. Si no
tiene password no funcionará.

Ahora creamos una shell fantasma en el directorio correspondiente.

#mkdir /bin/ftp

Editamos el fichero /etc/shells y la añadimos en la ultima línea y
continuación editamos el fichero /etc/passwd y buscamos las líneas donde
están definidos los usuarios que hemos creado antes y les añadimos el
shell falso:

client1:x:1005:1005: Cliente 1 :/var/www/dominio1:/bin/ftp
client2:x:1006:1005: Cliente 2 :/var/www/dominio2:/bin/ftp
webmaster:x:1007:1005: webmaster :/var/www:/bin/ftp

Instalación del servidor

Ahora es cuando realmente vamos a realizar la instalación del servidor
con el comando apt-get.

#apt-get install vsftpd

Esto descargará los paquetes y los dejará ordenados en sus directorios
correspondientes junto a los scripts de arranque y parada del servicio.

Configuración del servidor

El fichero de configuración del servidor se encuentra
en /etc/vsftpd.conf. Lo editamos para configurarlo a nuestro gusto y
objetivo. El contenido es algo parecido, buscamos las líneas indicadas y
las modificamos:

# Example config file /etc/vsftpd.conf
#Escuchando
listen=YES
#
………………………………………..

# Desactivamos el acceso anónimo

anonymous_enable=NO
#
# Descomentamos la línea para que se puedan conectar
local_enable=YES
#
# Permitimos a usuarios locales escribir
write_enable=YES
#
# APLICA CONFIGURACIÓN UMASK
local_umask=003
#Mensajes welcome
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
……………………….
#
# You may override where the log file goes if you like. The default is
shown
# below.
xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog
format
xferlog_std_format=YES
# Se descomenta esto para crear una jaula
chroot_local_user=YES
# You may specify an explicit list of local users to chroot() to their
home
# directory. If chroot_local_user is YES, then this list becomes a list
of
# users to NOT chroot().
#chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list
#
# Debian customization
# secure_chroot_dir=/var/run/vsftpd
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
# This option specifies the location of the RSA certificate to use for
SSL
# encrypted connections.
#rsa_cert_file=/etc/ssl/certs/vsftpd.pem
userlist_enable=YES
tcp_wrappers=YES
userlist_deny=NO

A continuación creamos el fichero vsftpd.chroot_list el cual tendrá la
lista de usuarios que no tendrán acceso al servidor:

# touch /etc/vsftpd.chroot_list

Volcamos los datos a este fichero desde etc/password con el comando.

# cat /etc/passwd | awk -F: ‘{ print $1 }’ > /etc/vsftpd.chroot_list

Esto nos genera un fichero con los login de usuarios del sistema del
cual quitamos los que si queremos que tengan acceso y los ponemos en el
fichero /etc/vsftpd.user_list.

Ejemplos de ficheros:

vsftpd.chroot_list

# usuarios con no acceso
root
daemon
bin
sys
sync
games
man
lp
mail
news

vsftpd.user_list

#usuarios con acceso
webmaster
client_01
client_02

Despues solo ejecutamos el comando:

# sudo /etc/init.d/vsftpd restart

Y Listo, Ya tenemos nuestro Servidor FTP operativo.

No hay comentarios: