Montaje de un Servidor Ciego con Debian Lenny (7.-FTP con PROFTPD)

Para subir y bajar archivos remotamente vamos a usar el software Proftpd y configuraremos algo de él. Empezaremos la instalación de Proftpd arrancando nuestro servidor. Nos logeamos como root y pasamos a instalar:

#apt-get install proftpd

Durante la instalación nos preguntará algunas cosas:

proftpd

los archivos del servidor son:

/usr/bin/proftpd
El propio servidor de FTP.

/usr/bin/ftpwho
Una utilidad que muestra información sobre los procesos de cada usuario actualmente conectado al servidor.

/usr/bin/ftpcount
Utilidad que muestra el número de conexiones actuales.

/usr/bin/ftpshut
Orden para apagar el servidor, sólo funciona en modo “standalone”.

/var/log/proftpd/proftpd.log
Fichero con la información sobre los “logs” en el servidor, habría que decidir qué política de rotación se desea seguir.

/etc/proftpd/proftpd.conf
El fichero donde configuraremos las diversas opciones que nos ofrece el servidor, en él nos centraremos a continuación, es realmente el único que manipularemos.

Luego por razones de seguridad vamos a crear un shell falso para el acceso de ftp para esto vamos a agregar una linea en el archivo /etc/shell:

#nano /etc/shells

Y agregamos la siguiente línea al final del archivo:

/bin/false

Esto evitará que cualquier usuario que utilice el ftp pueda accesar a nuestra consola de comandos. Ahora visualizaremos el archivo /etc/passwd:

#cat /etc/passwd

Con ello veremos que se ha agregado un usuario llamado “FTP” que es el que nos crea ProFTPD al instalarlo. Este será el usuario para el login al servicio de FTP. Si deseamos que además tenga un password (como es lógico) haremos como root:

#passwd ftp

y le agregaremos la contraseña. En lo listado antes por el terminal, chequeamos que su shell sea /bin/false/ puesto que si es /bin/bash podrá acceder y ejecutar comando bash no solo por el puerto 21 sino por el 22 de ssh por ejemplo y hacer estragos.

Ahora añadimos el usuario ftp al grupo ftp

#adduser ftp ftp

si no esta creado el usuario ftp haremos

#adduser ftp -s /bin/false

si no esta creado el grupo haremos:

#addgroup ftp

Con esto ya tenemos configurada la cuenta de login. Para ser un poco mas ordenado en el directorio /home/ftp/ crearemos dos directorios llamados upload y download donde se realizarán las subidas y las descargas respectivamente.-

#mkdir upload
#mkdir download

le damos los permisos correspondientes

#chmod 755 /home/ftp

#chmod 755 /home/ftp/download

#chmod 777 /home/ftp/upload

cambiamos de dueño:

#chown ftp:ftp upload
#chown ftp:ftp download

Ahora si, a editar el proftpd.conf. Primero haremos una copia por si las moscas..

#cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.confOK

Y ahora si editamos:

#nano /etc/proftpd/proftpd.conf

Y modificamos el archivo dejándolo así:

# Para aplicar los cambios tienes que reiniciar el servidor FTP

AllowOverwrite on

AuthAliasOnly on

# Escoge aqui un alias para tu usuario de FTP

UserAlias usuarioftp ftp

ServerName “nombredelservidor

ServerType standalone

DeferWelcome on

MultilineRFC2228 on

DefaultServer on

ShowSymlinks off

TimeoutNoTransfer 600

TimeoutStalled 100

TimeoutIdle 2200

DisplayFirstChdir .message

ListOptions “-l”

RequireValidShell off

TimeoutLogin 20

RootLogin off

# Aqui creamos los archivos de logs que son de mucha utilidad en caso de fallos

ExtendedLog /var/log/ftp.log

TransferLog /var/log/xferlog

SystemLog /var/log/syslog.log

#DenyFilter *.*/

#No vamos a utilizar el archivo /etc/ftpusers file

#(sirve para colocar adentro los usuarios que no queremos que se conecten)

UseFtpUsers off

# Permitir reiniciar una descarga (muy util en caso de que se caiga la conexion)

AllowStoreRestart on

#El puerto 21 es el estandar para FTP,

#es bueno cambiarlo por razones de seguridad

#aqui escogi el XXX puedes escoger el que quieras

Port XXX

#Configuracion detras de un servidor NAT

MasqueradeAddress ippublicadelservidor

# Para evitar ataques de DoS (negacion de servicio), se recomienda

# colocar un maximo de 30 procesos hijos. Si necesitas mas conexiones

# que esta simplemente aumenta este valor. Esto solo funciona con el

# servidor en modo standalone

MaxInstances 8

# Coloca el usuario y el grupo al que el servidor normalmente funciona

User nobody

Group nogroup

# Umask 022 es un buen valor por defecto para evitar que nuevos archivos y directorios

# sean escribibles por todo el mundo o por el grupo.

Umask 022 022

PersistentPasswd off

MaxClients 8

MaxClientsPerHost 8

MaxClientsPerUser 8

MaxHostsPerUser 8

# Despliega un mensaje despues de que ingresa un usuario

AccessGrantMsg “Bienvenido a ……

# Este mensaje es mostrado por cada intento de ingreso sea bueno o no

ServerIdent on “Estas en ……

# Coloca a /home/ftp como el directorio principal (home)

DefaultRoot /home/ftp

# Bloquea a todos los usuarios al directorio home que definimos

DefaultRoot ~

MaxLoginAttempts 5

#Ingresos validos solo permitimos a ftp

<Limit LOGIN>

AllowUser ftp

DenyALL

</Limit>

#Definimos los permisos de los directorios que creamos para el FTP

<Directory /home/ftp>

Umask 022 022

AllowOverwrite off

<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>

DenyAll

</Limit>

</Directory>

<Directory /home/ftp/download/*>

Umask 022 022

AllowOverwrite off

<Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>

DenyAll

</Limit>

</Directory>

<Directory> /home/ftp/upload/>

Umask 022 022

AllowOverwrite on

<Limit READ RMD DELE>

DenyAll

</Limit>

<Limit STOR CWD MKD>

AllowAll

</Limit>

</Directory>

Configurarlo así nos permite evitar algunos problemas de seguridad. En primer lugar evitamos que el usuario root se pueda logear. En segundo estamos impidiendo que una vez conectados por ftp se pueda navegar por directorios superiores al estipulado /home/ftp/. En tercer lugar, unicamente se permite el acceso a un usuario, en nuestro caso ftp, al que modificamos el alias en el archivo de configuración. Ningún otro usuario se podrá conectar. Por último, modificamos el puerto 21 por defecto para FTP por otro diferente (recordad que al modificarlo aquí deberemos abrirlo también en el Router, de lo contrario no podrá haber acceso). Ahora reiniciamos proftpd:

#/etc/init.d/proftpd restart

Y ya lo tendríamos preparado.

Si no hubiésemos añadido la opción de MasqueradeAddress con la ip pública de nuestro servidor (la podemos obtener en la pagina de no-ip.com) al conectarnos desde cualquier cliente FTP habríamos observado que el servidor responde con su ip privada, pudiendo llegar a impedirnos enroutar con él y perder la conexión. A pesar de que este problema se puede solventar desde el mismo cliente FTP, diciéndole en opciones que ignore la ip privada, es mejor configurar el archivo proftp.conf para evitar otros problemas.

2 Respuestas a “Montaje de un Servidor Ciego con Debian Lenny (7.-FTP con PROFTPD)”


Añade un Comentario