Configuración tarjeta de RED por consola (LINUX)

Tarjeta de RED

08.04.2011 08:41
 Este tutorial explica una de las tantas formas de configurar una tarjeta de red en linux, la idea es que con editar un archivo y agregarle unas pocas lineas se pueda tener acceso a una red o simplemente tener la tarjeta lista para utilizarla. 1- Suponiento que nuestra tarjeta de red a sido...

4) Instalación y configuración Servidor FTP (UBUNTU SERVER 12.04 o SUPERIORES).

TUTORIAL 1:

La instalación y configuración de vsftpd, para algunos el servidor FTP más seguro del mundo, es muy fácil e intuitiva. El problema viene con ciertas particularidades y, sobre todo, con los errores ’500 OOPS: vsftpd: refusing to run with writable root inside chroot()’ y ’530 Login incorrect’ que no dejan conectarse con un usuario local del servidor. Vayamos por partes.

Instalación

Como en la mayoría de los programas básicos, se puede instalar mediante apt o yum según tu sistema. Yo lo he hecho en un Ubuntu Server 12.04 así que el comando sería el siguiente:

sudo apt-get install vsftpd

También puedes descargarlo de su web oficial.

Configuración

vsftpd

Vamos a abrir el fichero de configuración del vsftpd y analizar los puntos más importantes:

sudo nano /etc/vsftpd.conf

Hay muchos parámetros que podemos configurar, pero esto estaría lo básico:

listen = YES
Para que se inicie con el sistema.

anonymous_enable = NO
No permitimos que usuarios anónimos puedan conectarse a nuestro servidor. Es por seguridad, pero si tú quieres permitirlo tendrás que configurar algunos parámetros más para que no puedan trastear mucho.

local_enable = YES
Para poder conectarse con los usuarios locales del servidor donde está instalado.

write_enable = YES
Si quieres que los usuarios puedan escribir y no sólo descargar cosas.

local_umask = 022
Esta máscara hace que cada vez que subas un archivo, sus permisos sean 755. Es lo más típico en servidores FTP.

chroot_local_user = YES
chroot_list_enable = YES
Sirven para que los usuarios locales puedan navegar por todo el árbol de directorios del servidor. Evidentemente esto sólo queremos permitírselo a ciertos usuarios, para ello tenemos el siguiente parámetro.

chroot_list_file = /etc/vsftpd.chroot_list
Indicamos el fichero donde están listados los usuarios que pueden navegar hacía arriba por los directorios del servidor, lo normal es que sea el administrador del servidor y poco más.

Hay pocos parámetros más, pero si quieres échales un vistazo porque vienen bien explicados en el propio fichero.

vsftpd.chroot_list

Este fichero no suele existir así que debemos crearlo y editarlo. Aquí irán los nombres de usuarios que queremos que puedan listar todos los directorios del servidor y no sólo el suyo asignado por FTP. Esto viene bien para usuarios administradores.

sudo nano /etc/vsftpd.chroot_lsit

Este comando te abrirá un documento vacío, pon en cada línea un nombre de usuario.

Grupo FTP

Todos los usuarios que queramos utilizar para FTP deben estar albergados en el mismo grupo para así darles unos permisos especiales como no poder conectarse por SSH al servidor.

Creamos el grupo:

sudo groupadd ftp

Creamos una shell fantasma para que no puedan entrar a la consola del servidor:

sudo mkdir /bin/ftp

Abrimos la lista de shells del sistema:

sudo nano /etc/shells

Agregamos nuestra shell fantasma al final del fichero:

/bin/ftp

Usuario FTP

Lo primero es crearle una carpeta de usuario. Puedes hacerlo donde tú quieras, pero yo suelo meterles a todos en una subcarpeta del home general.

Creamos la carpeta para meter a los usuarios:

sudo mkdir /home/ftp

Creamos la carpeta del usuario particular:

sudo mkdir /home/ftp/antonio

Creamos el usuario:

sudo useradd -g ftp -d /home/ftp/antonio -c "Antonio Garcia Lopez" antonio

Explicación:

-g ftp => el usuario pertenece al grupo ftp
-d /home/ftp/antonio => el directorio principal del usuario es /home/ftp/antonio
-c “Antonio Garcia Lopez” => el nombre completo del usuario es Antonio Garcia Lopez
antonio => la última palabra será el nombre de usuario

Ahora le asignamos una contraseña:

sudo passwd antonio

Y finalmente le asignamos la shell fantasma:

sudo usermod -s /bin/ftp antonio

Este paso se podía haber hecho al crear el usuario, pero lo dejo separado por si queremos asignarle la shell fantasma o no.

Errores conocidos

530 Login incorrect

Este error es el más común con la última versión del vsftpd. Es un gran quebradero de cabeza con una solución muy simple:

sudo apt-get remove vsftpd

sudo rm /etc/pam.d/vsftpd

sudo apt-get install vsftpd

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

Este error se da porque vsftpd no permite que los usuarios puedan escribir en su carpeta raíz. Una solución es quitarle los permisos de escritura a esa carpeta. Esto hará que el usuario no pueda hacer nada en su propia carpeta, así que lo mejor es crearle otra dentro con permisos normales para que pueda utilizarla.

sudo chmod 555 /home/ftp/antonio   ( si cambio permisos por 777 me deja ver dentro de antonio)

sudo mkdir /home/ftp/antonio/documentos

sudo chown antonio:ftp /home/ftp/antonio/documentos

Con todo esto ya deberías poder acceder al servidor FTP con cualquier usuario del sistema sin ningún problema.

 

 

 

 

Tutorial 2:


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: client1
Acceso a su directorio: /var/www/dominio1
Sin shell en el sistema y en un entorno chroot

Usuario: client2
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 " client1
#useradd -g ftp -d /var/www/dominio2 -c " Cliente 2 " client2
#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
client1
client2

Afinando aún más

Dentro del fichero de configuración (vsftpd.conf) algunas opciones interesantes que también podemos controlar son las siguientes:

#opciones de transferencia
#ancho banda por usuario anónimo 5kb
anon_max_rate=5100
#ancho de banda por usuario local 5kb
local_max_rate=5100
#número máximo clientes simultáneos
max_clients=5
#máximo conexiones por ip
max_per_ip=2
#envía al sistema
syslog_enable=yes
session_support=yes

 


Cosas que tienes que saber si usas este tutorial:

 

- No por crear usuarios con contraseña tienes la certeza de estar seguro. En este tutorial se muestra como crear usuarios con contraseña pero en el momento de acceder, la contraseña viaja por internet en texto llano (no encriptado) por lo que se debe escoger desde donde conectar (redes seguras) para evitar que nos snifen la conexión. Un ejemplo de red insegura para este FTP es una red Wireless.

- Puedes incrementar la seguridad subiendo los usuarios del protocolo 'ftp' al protocolo 'sftp' (Secure FTP) siguiendo otros tutos de internet y usando el OpenSSL

- Los usuarios que accedan a tu FTP, sólo podrán acceder a partir del directorio que pusiste. Nunca podrán ir hacia atrás. Es decir, si los pusiste en /var/www/user1/, el User1 solo podrá ver cualquier cosa que haya más allá de  su carpeta, es decir /var/www/user1/ nunca podrá ver, por ejemplo, /var/www/ ni las carpetas anteriores.

- Puedes restringir aún más el uso del FTP tocando los permisos ( 'chmod' ) de las carpetas de los usuarios. 

- La mayor seguirad que podeis tener de que no os van a quitar vuestros datos, es o bien no poniendo un FTP o bien quitando los datos de las carpetas compartidas.

 

Hasta aquí, el cómo instalar el FTP. Ahora toca abrir los puertos del router (NOTA: Si no quieres que tu FTP esté accesible a través de internet, no abras los puertos del router y solo tendran acceso los PCs de dentro de tu LAN):

Para ello, tienes que meterte en tu router y abrir el puerto 21 para que todas las conexiones que estén dirigidas a ese puerto, se retransmitan directamente al PC con el servidor.

 

Y por último, el DNS:

Para que desde cualquier lugar del mundo, puedas conectar a tu FTP, tendrás que introducir la IP del router en cada momento. Para evitar memorizar la IP del router (ya q puede cambiar), necesitas crear una cuenta en un servidor DNS. Yo uso el No-IP y me va de maravilla. Puede encontrar su cliente en Synaptic aunque te recuerdo que primero tienes que registrarte (https://www.no-ip.com/).