Configuración proftpd (Ayar Pardo)

20
1 Universidad San Jorge Administración de servidores Practice 2 Ayar Pardo Moreno

description

Configuración de servidores proftpd

Transcript of Configuración proftpd (Ayar Pardo)

Page 1: Configuración proftpd (Ayar Pardo)

1

Universidad San Jorge

Administración de servidores

Practice 2

Ayar Pardo Moreno

Page 2: Configuración proftpd (Ayar Pardo)

2

Primero observamos todos los paquetes y expansiones relacionados con el servicio ftpd:

Lo próximoserá instalar el servidor ftp proftpd:

P.1.

¿Qué implicaciones / para qué se utiliza cada una de ellas?

En la instalación aparecerá una ventana que nos preguntará en que modo queremos instalar proftpd: "inetd" o "servidor independiente", la diferencia es la velocidad de ejecución y en la

carga que soportará nuestro servidor:

Inetd: En cada conexión nueva que realicemos al servidor, será el daemon inetd quien lance

elservidor (crea un nuevo proceso), cerrándolo una vez deje de necesitarse, solo se carga en

memoria cuando existan peticiones.

Servidor independiente (standalone): Cada conexión se ejecuta como un proceso

independiente del mismo, siempre activo y permanentemente en memoria.

Por defecto, proftpd crea un usuario llamado "ftp" y un directorio en el que almacenaremos los

archivos para compartir, en "/home/ftp/".

¿Se puede modificar este comportamiento en el fichero de configuración de proftpd? ¿Cómo?

El archivo de configuración de proftpd se llama "proftpd.conf" y se encuentra en "/etc/proftpd/proftpd.conf".

Si, en el parámetro dentro del archivo de configuración que determina el método con que va a ejecutarse el proftpd es "ServerType", poniendo “standalone” o “inetd”.

Page 3: Configuración proftpd (Ayar Pardo)

3

Podemos ver el protocolo, datos recibidos, puerto e IP de escucha así como el puerto e IP de la conexión que se permite, si es una conexión que ya está establecida o no, PID, etc.

Para comprobar que se ha abierto el puerto 21 en el sistema, uso “sudo netstat -anp”

Como se ve en la siguiente imagen tengo el puerto 21 abierto en el programa proftpd.

Page 4: Configuración proftpd (Ayar Pardo)

4

Compruebo que es posible establecer una conexión con el servidor ftp desde la misma

máquina.

Reinicio el servicio por medio de los scrips de gestión convencionales situados en /etc/init.d:

Reviso los ficheros del log, en este caso uno de los más importantes

“/var/log/proftpd/proftpd.log”:

Observo los ficheros relacionados con la configuración de protfpd y sus posibles módulos:

Por medio de la directiva <Limit> podríamos denegar la conexión al servidor ftp a ciertos usuarios.

Page 5: Configuración proftpd (Ayar Pardo)

5

La etiqueta “Allow from” marca las ip’s quequeremos aceptar separados por una coma, si

usamos la etiqueta “Allow from all” aceparemos a todos.

La etiqueta “Denyfrom”marca las ipsa quienes vamos a rechazar,en este caso “Deny from all” que representa a todas las ip's.

La etiqueta DenyUser especifica los usuarios alos que queremos restringir el acceso.

La etiqueta AllowUser especifica los usuarios a los que queremos permitir el acceso.

¿Qué pasa ahora si te intentas registrar con ese usuario?

No nos permitirá logearnos.

También se puede detallar por ejemplo que los usuarios se puedan conectar únicamente desde ciertas máquinas.

Descomento la sección Anonymous (elimino únicamente el primer carácter “#” de cada línea)

Page 6: Configuración proftpd (Ayar Pardo)

6

Una vez hecho reinicio el servidor,observo cómo es posible registrase como usuario anónimo.

Page 7: Configuración proftpd (Ayar Pardo)

7

Ahora usando el comando “sudo tail -f /var/log/proftpd/proftpd.log” puedo observar como se ha iniciado la sesión anónima (las ultimas):

1

P.2.

¿Con qué nombre se identifica el usuario anónimo?

Lo especificamos nosotros con el UserAlias en el fichero, en nuestro caso será anonymous y no

necesitaremos password pero el usuario realmente será ftp creado anteriormente por el programa proftpd.

¿Puedes descargarte ficheros?

Page 8: Configuración proftpd (Ayar Pardo)

8

Si pero podemos hacer que no tengan permisos de descarga o más genéricamente de lectura si

dentro de anonymous y el directorio que usara anonymous limitamos la lectura con “Limit

READ” o la descarga con “Limit RETR”, el comando que deberíamos usar si no quisiéramos que pudieran descargar seria:

<Anonymous ~ftp>

# Limitar la escritura en cualquier lugar del chroot anónimo.

<Limit READ> # Limita la lectura

DenyAll # Deniega la lectura a todos los anonymous

</Limit>

</Anonymous>

¿Puedes subir ficheros?

No se pueden subir archivos esto es debido a la siguiente parte de código que se encuentra dentro de anonymous, si escribimos AllowAll en vez de DenyAll permitiremos subir archivos.

<Limit WRITE>

DenyAll

</Limit>

Los permisos que podemos limitar son:

CWD: Cambiar de Directorio.

DIRS: Conocer el contenido de un directorio.

READ: Lectura

WRITE: Escritura

MKD: Crear Directorios

RMD: Borrar Directorios

DELE: Borrar ficheros.

STOR: Enviar ficheros al servidor.

RETR: Recuperar ficheros del servidor.

¿Por qué en el fichero de log se indica que se hace un chroot al directorio “/home/ftp”?

Para el caso de un FTP anónimo el servidor utiliza una funcionalidad llamada “entorno

protegido” o chroot, que se encarga de encerrar al usuario en directorios específicos. Si damos

acceso al usuario anónimo dentro de “/home/ftpd”, este directorio será tomado como directorio raíz, el usuario no podrá recorrer los directorios superiores, no podrá subir más arriba de la raíz,

por tanto no tendrá acceso al“/home” ni a cualquier otro directorio que esté por encima de ese en el sistema.

¿Cómo podrías hacer que los usuarios se pudieran loguear de forma anónima, utilizando también como username “desconocido”, además de “anonymous”?

Esto lo podemos hacer en el UserAlias, solo nos hace falta poner el username que queramos:

UserAlias username ftp

Page 9: Configuración proftpd (Ayar Pardo)

9

Podemos limitar en número de conexiones que se establecen con el siguiente código, en mi

caso pongo el límite en 2 para realizar la comprobación másrápido:

Podemos limitar el número de clientes de varias formas:

MaxClients<numero> "mensage"

Número de clientes que pueden estar conectados a lavez en el servidor. “Mensaje” es el texto que apareceen el programa cliente si no permite la conexión.

MaxClientsPerHost<numero> "mensage"

Número de sesiones por Host (ip) que se puedenconectar al servidor. “Mensaje”es el texto

queaparece en el programa cliente si no permite laconexión.

MaxClientsPerUser<numero> "mensage"

Número de sesiones por usuario. “Mensaje” es eltexto que aparece en el programa cliente si no

permitela conexión.

En la siguiente imagen podemos ver como nos deniega la conexión cuando se supera el número

de clientes marcado.

Page 10: Configuración proftpd (Ayar Pardo)

10

P.3.

¿Qué sucede si se añade la directiva “TimeoutIdle 10” dentro de la sección anonymous? ¿Y si se realiza la modificación en la sección general?

Si estamos 10 segundos sin hacer nada el sistema nos expulsa.

TimeoutIdle <número>

Es el número de segundos que puede estar un cliente sin hacer nada.Si se reciben datos en

cualquiera de las conexiones, el temporizador de inactividad se pone a cero.

En anonymous no surge ningún efecto, pero este comando en la sección general desconecta a

todos los usuarios anonymous y registrados.

Page 11: Configuración proftpd (Ayar Pardo)

11

P.4

Examinando la documentación de las directivas: Limit (LOGIN), AllowAll y DenyAll, indica cómo habría que modificar el fichero de configuración por defecto para conseguir que únicamente se

tuviera disponible un servidor de ftp anónimo (inhibiendo los accesos a través de nombre de usuario y contraseña).

Añadimos lo siguiente en la sección general:

<Limit LOGIN>

DenyAll

</Limit>

Y añadimos lo siguiente en la sección anonymous:

<Limit LOGIN>

AllowAll </Limit>

Ahora solo nos dejara conectarnos si somos anonymous.

Si lo que deseamos es denegar la conexión de ciertos usuarios, podremos utilizar AllowUser

<Limit LOGIN>

DenyUser usuario1,usuario2... </Limit>

Si lo que deseamos es permitir la conexión de solo ciertos usuarios, podremos utilizar AllowUser <Limit LOGIN>

AllowUser usuario1,usuario2...

DenyUser all </LIMIT>

Page 12: Configuración proftpd (Ayar Pardo)

12

En el interior de una directiva LIMIT, ProFTPD examina en primer lugar las autorizaciones

explicitas, y después las prohibiciones explicitas. Si una conexión no responde a ninguno de los

2 criterios es autorizada. Es posible cambiar este comportamiento usando la orden “Order deny,allow”. Si esta orden está presente, el servidor primero examinara los comandos Deny y

luego los comandos Allow, y prohibirá toda conexión que no corresponda estos patrones.

Tenemos dos formas para indicar de forma general el acceso: AllowAll(acceso todas las ip’s) y

DenyAll(deniegas a todas las ip’s).

P.5.

La directiva “<Directory ruta_a_directorio>” permite especificar también comportamientos

detallados dentro de un directorio concreto. Indica cómo se realizaría la configuración para que

los usuarios anónimos pudieran acceder a un directorio llamado “ficheros_subidos” en el que:

• Todos los usuarios puedan descargarlos archivos que hay en él.

• Sólo aquellos que se conecten desde máquinas que pertenezcan al laboratorio virtual puedan subir y bajar archivos, además de crear nuevos directorios.

• Ningún usuario pueda borrar archivos.

Si lo que queremos es que en el directorio "ficheros_subidos" solo tenga derechos de descarga

lo que tendremos que añadir dentro de la directiva <Anonymous></Anonymous>:

<Directory /var/ftp/ficheros_subidos> <Limit RETR>

AllowUser all

</Limit> </Directory>

Si lo que queremos es que los que se conecten desde el laboratorio virtual puedan subir y bajar

archivos, además de crear nuevos directorios lo que tendremos que añadir dentro de la

directiva <Anonymous></Anonymous>:

<Directory /var/ftp/ficheros_subidos> <Limit MKD STOR RETR>

Allow from 10.1.1. </Limit>

</Directory>

Si lo que queremos es que ningún usuario pueda borrar archivos lo que tendremos que añadir

dentro de la directiva <Anonymous></Anonymous>:

<Directory /var/ftp/ficheros_subidos>

<Limit DELE> DenyUser all

</Limit> </Directory>

Page 13: Configuración proftpd (Ayar Pardo)

13

P.6.

Para establecer un usuario invitado, únicamente es necesario combinar el uso del contexto

Anonymous con el de la directiva AnonRequirePassword

• ¿Cómo se haría entonces la configuración para que un usuario de este tipo, llamado

“invitado.xxxxx” se pudiera loguear vía ftp en el sistema como un usuario invitado?

El acceso sin restricciones al servidor que proporcionan las cuentas de usuario implica

problemas de seguridad, lo que ha dado lugar a un tercer tipo de acceso FTP denominado

invitado.

Este tipo de usuario podemos definirlo usando anonymous y usando “AnonRequirePassword

off”, poniendo “off” en vez de “on” hacemos que no necesiten contraseña. En UserAlias definimos que podemos usar invitado.08315 para referirnos al invitado.

Estamos creando a un cliente anónimo pero dándole ciertas restricciones, a este conjunto de

restricciones de anonymous le llamamos invitado.

Descomentamos la siguiente línea para que los usuarios no puedan acceder a otrosniveles

de directorios, esto puede ser útil si no queremos que los usuarios registrados salgan de su

carpeta de usuario.

DefaultRoot ~

• ¿Es necesario que ese usuario exista en el sistema?

Si es necesario porque estamos definiendo un usuario y su carpeta en la configuración, igual

que los usuarios anónimos necesitan al usuario registrado ftp los invitados necesitan un usuario

registrado, en este caso invitado.

• ¿Qué diferencias hay entre este tipo de usuario y uno que se loguea con sus credenciales (sin

estar declarado dentro de un bloque Anonymous?

Page 14: Configuración proftpd (Ayar Pardo)

14

El usuario invitado tiene acceso a un entorno restringido no se puede mover libremente por el

sistema mientras un usuario logueado no tiene acceso restringido, puede moverse libremente

por el sistema

Se trata de permitir que cada usuario conecte a la máquina mediante su login y su password,

pero evitando que tenga acceso a partes del sistema de archivos que no necesita para realizar su trabajo, de esta forma accederá a un entorno restringido, algo muy similar a lo que sucede

en los accesos anónimos, pero con más privilegios.

P.7.

Para que mi servidor actué como tres servidores distintos uso VirtualHost, creare tres servidores virtuales distintos. Se podrán distinguir porque cada uno usara un puerto distinto, en el primero

usare el 1026, en el segundo uso el 1028 y en el tercero el 1030, la distancia entre los puertos

es de dos ya que los puertos siguientes (1027, 1029 y 1031) son tomados para la salida de datos, los puertos que uso son a partir del 1024 ya que los anteriores son para otros usos.

En el archivo “/etc/hosts” pondré las IPs que corresponden a los nombres, en estos casos los tres nombres se cambiaran por mi IP.

En el primer caso, con la sección de Limit LOGIN de la parte general, permitiré que sea accesible para cualquier dirección de la red 10 (10.x.x.x), para que sea accesible para todos los

usuarios menos para invitado.08315, creo al tipo invitado pero luego en su Limit LOGIN deniego

a cualquier ip que quiera loguearse como invitado.

Page 15: Configuración proftpd (Ayar Pardo)

15

En la siguiente imagen podemos ver como me permite loguearme ya que lo hago desde la 10.1.1.46 como usuario registrado.

En la siguiente imagen podemos ver como le es denegado el acceso al usuario invitado.08315

En el siguiente servidor virtual permitiremos el acceso al usuario invitado.08315 y lo denegaremos al resto, una vez ya dentro del anónimo invitado es donde marco que solo podrán

loguearse como invitado las IPs del laboratorio virtual 10.1.1.x, dentro del invitado también

indicaremos que en el directorio “/var/ftp-08315-dir” podremos subir archivos, bajar archivos y crear directorios con los comandos STOR, RETR y MKDrespectivamente y AllowAll dará

permisos a todas las IPs.

Page 16: Configuración proftpd (Ayar Pardo)

16

En la siguiente imagen podemos ver como siendo el usuario invitado y conectándonos desde

una IP del laboratorio virtual si que se nos permite el acceso.

En la siguiente imagen podemos ver como pedimos permiso al servidor virtual con su puerto y

después al no ser invitado.08315 se nos deniega loguearnos.

Page 17: Configuración proftpd (Ayar Pardo)

17

Ahora configuro el tercer servidor virtual, en este servidor se les deniega a todos los usuarios

registrados el acceso denegando todas las IPs. A los usuarios anónimos se los permitirá el

acceso desde anónimo.08315, con el comando “Limit LOGIN” de dentro del anónimo especificamos que la IPs con derecho a acceso serán las de los compañeros y la 10.1.1.167.

En la primera línea donde definimos al anónimo ya indicamos cuál será su directorio raíz del cual no podrá subir “/var/ftp-08315-dir”. Después con “<Directory *>” indicaremos que en

todos sus directorios aplicamos lo de dentro en nuestro caso “Limit RETR” y “AllowAll” hará que

podamos descargar de todos sus directorios, en este caso con el comando MaxClients en la parte del anónimo marcaremos que solo puede haber tres clientes como máximo.

Aquí pruebo si funciona solo con anonimo.08315, dejando que mi IP sea una de las permitidas aunque finalmente no será una de las permitidas.

En la siguiente imagen pruebo que cualquier otro usuario que no sea anonimo.08315 de

invitado no es aceptado, dejando que mi IP sea una de las permitidas aunque finalmente no será una de las permitidas.

Page 18: Configuración proftpd (Ayar Pardo)

18

También pruebo que no podrán acceder más de tres clientes en el sistema con anonimo.08315,

dejando que mi IP sea una de las permitidas aunque finalmente no será una de las permitidas.

Una vez configurado las IPs que son aceptadas (los compañeros y la 10.1.1.167) no podre

acceder ya que solo es aceptado anonimo.08315 de invitado y a este solo se le dejara entrar desde las IPsde los compañeros y de la 10.1.1.167 pero no desde la mía.

P.8.

Considerando todo esto y utilizando la documentación existente sobre el servicio, realiza una configuración sencilla mediante la cual:

• Se exporte el directorio home del usuario alu.xxxxx, permitiendo el acceso únicamente al

mismo usuario alu.xxxxx (con permisos de lectura/escritura) y a dortega (sólo lectura)

Page 19: Configuración proftpd (Ayar Pardo)

19

• Se exporte el directorio /tmp a usuarios invitados (sin credenciales)

Para las dos configuraciones he tenido en cuenta lo siguiente:

Lo primero sera[nombreDescriptivoDelRecursoCompartido]

Directiva Valor Accion

encryptpasswords yes | no Esta directiva indica si las contraseñas serán cifradas cuando el

usuario se autentique

invalidusers usuario | grupo Lista a los usuarios o grupos a los cuales les negara el acceso

validusers usuario Lista a los usuarios a los cuales el servidor les dará acceso

adminusers usuario Lista a los usuarios que asumiran el rol de administrador

readlist usuario Lista a los usuarios que solo podran leer el recurso compartido

writelist usuario Lista a los usuarios que podran escribir en el recurso compartido

guest ok yes | no Define si se permitirá el acceso como usuario invitado o no

comment Comentario En esta seccionpodras poner un comentario acerca del recurso

que estas compartiendo

path /ruta/del/recurso En esta secciondeberas especificar la ruta del recurso que

compartes

browseable yes | no Define si el recurso podrá ser visible o no

Una vez introducida la configuración en “/etc/samba/smb.conf” reiniciaremos para que los

cambios surtan efecto con el comando “/etc/init.d/samba restart”

Page 20: Configuración proftpd (Ayar Pardo)

20

Bibliografía:

http://www.linuxparatodos.net/web/comunidad/base-de-conocimiento/-/wiki/Base+de+Conocimiento/Servidor+Samba?p_p_auth=S9dGXdGD&_36_pageResourcePrimKey=54783

http://www.redes-linux.com/manuales/ftp/proftpd.pdf

http://asdpicas.blogspot.com.es/2009/01/estoy-pensando-en-no-pensar-y-no.html