You are on page 1of 13

INGENIERIA DE

OSCAR EDUARDO PEREZ PAREDES SISTEMAS

“AÑO DEL CENTENARIO DE MACHU PICCHU PARA EL MUNDO”

INSTITUTO IDAT - PIURA

PROGRAMA DE COMPUTACIÓN E INFORMÀTICA

SISTEMAS OPERATIVOS III

Docente: Oscar E. Pérez Paredes

2011

PROGRAMA DE COMPUTACIÓN E INFORMÁTICA

INGENIERIA DE

OSCAR EDUARDO PEREZ PAREDES SISTEMAS INSTALACIÓN Y CONFIGURACIÓN DE UN SERVIDOR FTP EN LINUX Estimado alumno, la presente es una guía práctica auto-instructiva y complementaria a lo realizado en clase para su consulta al momento de implementar un servidor de archivo FTP. Configurar ProFTPd

Introducción:
Un servidor de tipo FTP, tiene su campo de acción principalmente en la Internet. Hoy en día para el mundo globalizado en el que vivimos, la “información” propiamente dicha es uno de los recursos más importante y valioso, es por ello que el uso adecuado de herramientas informáticas para la comunicación y seguridad de la misma, se ha tornado en algo indispensable. Es por ello que aprenderemos a implementar un servidor FTP teniendo como base el sistema operativo Linux, y utilizaremos la herramienta ProFTPd por ser de licencia GPL y ser un robusto programa en cuanto a la versatilidad y seguridad que nos brinda.

1.Software e Instalación:
A la hora de instalar el servidor FTP, tenemos 2 formar de instalar dicho programa: 1.- Instalando a partir de la herramienta “apt”. Procedemos a descargar e instalar con el siguiente mandato:
apt-get install proftpd … seguidamente empezará la descarga e instalación de forma automática Leyendo lista de paquetes... Hecho Creando árbol de dependencias... Hecho Se instalarán los siguientes paquetes extras: libmysqlclient15off libpq4 mysql-common Paquetes sugeridos: proftpd-doc Se instalarán los siguientes paquetes NUEVOS: libmysqlclient15off libpq4 mysql-common proftpd 0 actualizados, 4 se instalarán, 0 para eliminar y 0 no actualizados. Necesito descargar 2923kB de archivos. Se utilizarán 6893kB de espacio de disco adicional después de desempaquetar. //el sistema te preguntará si deseas continuar con la instalación. PROGRAMA DE COMPUTACIÓN E INFORMÁTICA

INGENIERIA DE

OSCAR EDUARDO PEREZ PAREDES SISTEMAS
¿Desea continuar [S/n]? s Des:1 http://ftp.rediris.es etch/main mysql-common 5.0.32-7etch5 [53,9kB] Des:2 http://ftp.rediris.es etch/main libmysqlclient15off 5.0.32-7etch5 [1794kB]Des:3 http://ftp.rediris.es etch/main libpq4 8.1.11-0etch1 [277kB] Des:4 http://ftp.rediris.es etch/main proftpd 1.3.0-19 [798kB] Descargados 2923kB en 39s (73,7kB/s) Preconfigurando paquetes ... Seleccionando el paquete mysql-common previamente no seleccionado. (Leyendo la base de datos ... 76612 ficheros y directorios instalados actualmente.) Desempaquetando mysql-common (de .../mysql-common_5.0.327etch5_all.deb) ... Seleccionando el paquete libmysqlclient15off previamente no seleccionado. Desempaquetando libmysqlclient15off (de .../libmysqlclient15off_5.0.327etch5_i386.deb) ... Seleccionando el paquete libpq4 previamente no seleccionado. Desempaquetando libpq4 (de .../libpq4_8.1.11-0etch1_i386.deb) ... Seleccionando el paquete proftpd previamente no seleccionado. Desempaquetando proftpd (de .../proftpd_1.3.0-19_i386.deb) ... Configurando mysql-common (5.0.32-7etch5) ... Configurando libmysqlclient15off (5.0.32-7etch5) ...

Sobre la mitad de la Instalación, te preguntara como quieres configurar el servidor. Se recomienda configurarlo como Independiente por lo ya indicado en clase. Configurando libpq4 (8.1.11-0etch1) ...

PROGRAMA DE COMPUTACIÓN E INFORMÁTICA

INGENIERIA DE

OSCAR EDUARDO PEREZ PAREDES SISTEMAS
Configurando proftpd (1.3.0-19) ... Adding system user `proftpd' (UID 108) ... Adding new user `proftpd' (UID 108) with group `nogroup' ... Not creating home directory `/var/run/proftpd'. Adding system user `ftp' (UID 109) ... Adding new user `ftp' (UID 109) with group `nogroup' ... Creating home directory `/home/ftp' ... «/usr/share/proftpd/templates/welcome.msg» -> «/home/ftp/welcome.msg.proftpd-new» Starting ftp server: proftpd - IPv6 getaddrinfo 'virtdebian.benidebian address associated with hostname

…y listo, ya tenemos el proftpd descargado e instalado en nuestro Linux, luego veremos la configuración necesaria.

2.- Descargando el programa e instalándolo de manera manual. Primero descargaremos desde ProFTPd source: las sources (o archivos fuente) del servidor que vamos a usar. Una vez descargado deberemos de desempaquetar el programa y configurarlo: # tar xvfz proftpd-1.2.8p.tar.gz # cd proftpd-1.2.8p # ./configure –withmodules=mod_auth:mod_core:mod_log:mod_ls:mod_cap:mod_ls:mod_readme:mod_rewrite

# make # make install

2. Configuración:
El ProFTPd se configura mediante la edición del archivo proftpd.conf que se encuentra en dos sitios: /usr/local/etc/proftpd.conf o /etc/proftpd.conf. En nuestro caso que utilizamos Debian, se encontrará en /etc/proftpd/ Luego tendremos que escoger como queremos ejecutar el ProFTPd standalone o inetd, en nuestro caso escogeremos standalone. Ahora deberemos de crear el directorio donde vamos a tener el ftp, nosotros usaremos el directorio /home/ftp. Si además se quiere usar una carpeta donde los usuarios puedan subir cosas al ftp usaremos el directorio /home/ftp/subit. Recordar que cada uno puede usar el que quiera, pero recordar también que el directorio de subir debe de estar dentro del directorio del ftp, o como máximo ser el directorio de ftp el directorio de subida(esto se suele usar para ftp de subida únicamente):

PROGRAMA DE COMPUTACIÓN E INFORMÁTICA

INGENIERIA DE

OSCAR EDUARDO PEREZ PAREDES SISTEMAS # mkdir /home/ftp # mkdir /home/ftp/subir # chmod 755 /home/ftp # chmod 777 /home/ftp/subir Ahora deberemos de configurar el archivo proftpd.conf: # nano /etc/proftpd/proftpd.conf El archivo de configuración que usaremos será el siguiente: ServerName "Nombre_del_servidor_ftp" #Pondremos el que queramos, Servidor FTP es un ejemplo ServerType standalone #Nosotros usaremos standalone en vez de inetd

DeferWelcome off/on #En nuestro caso pondremos off ya que no queremos mostrar ningún mensage de entrada ServerIdent on/off "nombre" que tendrá tu servidor FTP #Usaremos on "nombre", que viene a ser el nombre

MultilineRFC2228 on/off #Usaremos on, ya que esto hará que nuestro servidor ftp sea compatible con casi todos los clientes ftp DefaultServer on/off #Usaremos on, toma las opciones defualt de un servidor ftp ShowSymlinks on/off #Usaremos on, podremos ver los links, si el link esta fuera de nuestro home no tendremos acceso a él AllowOverwrite on/off #Usaremos off, permite sobrescribir ficheros existentes

TimeoutNoTransfer <numero> #el número es el máximo numero de segundos que puede estar un cliente en el ftp, sin transferencia de información ej: 600 TimeoutStalled <numero> #el numero máximo de segundos que puede estar clienteservidor sin recibir información de una transferencia (atascado) ej: 90 TimeoutIdle <numero> #el numero máximo de segundos que puedes estar un usuario sin hacer nada ej: 200 DenyFilter \*.*/ #Es un filtro de protección para el ProFTPd
PROGRAMA DE COMPUTACIÓN E INFORMÁTICA

INGENIERIA DE

OSCAR EDUARDO PEREZ PAREDES SISTEMAS Port <numero> #Usaremos el 21, ya que es el numero de puerto predeterminado

MaxInstances <numero> #numero de conexiones al ftp que se pueden hacer a la vez (cuidado con los DOS) ej: 2 User nobody Group nogroup #lo dejamos por defecto #lo dejamos por defecto

AccessGrantMsg "mensage" #El mensaje que será mostrado si la conexión del usuario ha sido correcta(el user y password ha sido el correcto) AccessDenyMsg "mensage" #El mensaje que será mostrado si la conexión del usuario ha sido incorrecta, usar un mensaje "amenazador" LogFormat default "%h %l %u %t \"%r\" %s %b" #Con LogFormat [nombre_formato] "formato", el nombre_formato se lo ponemos nosotros LogFormat auth ExtendedLog LogFormat "%v [%P] %h %t \"%r\" %s" #para ser usado después con

write "%h %l %u %t \"%r\" %s %b"

TransferLog /var/log/proftpd/transfer #Loguea las transferencias que se realice con el servidor ExtendedLog /var/log/proftpd.down_up_log WRITE,READ write para loguear con una serie de características #ExtendedLog es

ExtendedLog /var/log/proftpd.auth_log AUTH auth #ExtendedLog [lugar_donde_se_guarda_el_log] [Que_logear] [nombre_formato] ExtendedLog /var/log/proftpd.paranoid_log ALL default #WRITE(escritura),READ(lectura),AUTH(autentificacion, logging) y ALL(todo) DefaultRoot ~ #Con esto hacemos chroot en el home de nuestro usuario, es decir, no permitiremos que pueda subir mas directorios AuthUserFile "/etc/passwd" #Le decimos donde tenemos el archivo de los usuarios AuthGroupFile "/etc/group" #Le decimos donde tenemos el archivo de los grupos

MaxClients <numero> "mensage" #Máximo numero de clientes que pueden estar a la vez en el servidor ej: MaxClients 6 "Max %m usuarios" MaxClientsPerHost <numero> "mensage" #Máximo numero de clientes por Host(ip) ej: MaxClientsPerHost 2 "Solo 2 conexiones por HOST"
PROGRAMA DE COMPUTACIÓN E INFORMÁTICA

INGENIERIA DE

OSCAR EDUARDO PEREZ PAREDES SISTEMAS MaxClientsPerUser <numero> "mensage" #Máximo numero de clientes por usuario ej: MaxClientsPerUser 2 "Solo 2 conexiones por usuario" #El mensaje aparece cuando superamos el numero permitido RequireValidShell "autentica" off #los usuarios no requieren, ni deben, de tener una shell

Hasta aquí hemos configurado las opciones del servidor, pero aún no le hemos dicho donde esta el directorio del ftp, y que permisos tenemos sobre ese directorio. Antes de ello tenemos que decidir si deseamos tener un ftp únicamente anónimo, un ftp con cuentas privadas o un ftp con cuentas privadas y la cuenta de anónimo. Yo no recomiendo usar la cuenta anónimo, ya que, si la habilitas cualquier persona de fuera podrá acceder a él, claro esta, si no usamos un firewall, como por ejemplo las iptables. También podemos decirle al ftp de quien puede aceptar conexión o de quien no. Una vez decidido, seguimos con la edición del archivo proftpd.conf: Denegar acceso a ciertas ip, esto es opcional: <Limit LOGIN> #Limitamos a quienes pueden intentar loguearse en el servidor

Order deny,allow #en esta etiqueta le decimos el orden de lectura de la información, 1ºleere a quien denegamos y 2º a quien aceptamos Deny from .pepito.com, xxx.xxx.xxx.xxx queremos rechazar separados por una coma #La etiqueta Deny marca los host que

Allow from all #La etiqueta Allow es de quien vamos aceptar, en este caso all que representa a todas las ip's </Limit> Ahora decidiremos si queremos un ftp anónimo, privado o anónimo y privado.

PROGRAMA DE COMPUTACIÓN E INFORMÁTICA

INGENIERIA DE

OSCAR EDUARDO PEREZ PAREDES SISTEMAS

2.1Configuracion FTP privado:
Si hemos decidió esta opción deberemos de crear las cuentas de usuario antes. Las cuentas se crean como un usuario cualquiera de linux, es decir: # su # adduser <usuario> # passwd <usuario> #ej: adduser pepito #ej: passwd pepito => pepitopassword

A continuación deberemos de editar el archivo /etc/passwd y modificar la línea que hace referente al usuario pepito: # nano /etc/passwd Al editar el fichero, en el final de este nos aparecerá una línea como esta(siguiendo el ejemplo anterior): pepito:x:1007:100::/home/pepito:/bin/bash Deberemos de modificarlo para que quede de así: pepito:x:1007:100::/home/ftp:/bin/false Es decir, le decimos que su carpeta personal es donde tenemos el ftp, y su shell es una shell falsa y no tendrá acceso a loguearse a una terminal (/bin/false). El password como verás aparece con un x, esto quiere decir que el password esta en el archivo /etc/shadow con una encriptación MD5 (mucho mas seguro que si ponemos el pasword en texto plano). Así lo haremos con todos los usuarios que queramos añadir. Una vez listo los usuarios, continuaremos por donde nos hemos quedado con la edición del archivo proftpd.conf: <Directory /home/ftp/> #Le decimos que el directorio del ftp es /home/ftp y a continuación le damos unas características Umask 077 077 AllowOverwrite </Directory> off

#Si además queremos tener nuestra carpeta de subida deberemos de añadir, debajo de </ Directory> lo siguiente: <Directory /home/ftp/subir> /home/ftp/subir Umask 077 077 #nuestro directorio de subida se encontrara en

PROGRAMA DE COMPUTACIÓN E INFORMÁTICA

INGENIERIA DE

OSCAR EDUARDO PEREZ PAREDES SISTEMAS AllowOverwrite on <Limit READ WRITE STOR> #El directorio tendrá acceso de lectura, escritura y grabacion para todos(Allow All), en estos caso es muy recomendable AllowAll #usar dentro del limit el order, denny y allow para que solo ciertos usuarios pueden tener este privilegio, igual que cuando en… </Limit> #aceptavamos o denegabamos permisos a ciertas ip's </Directory> Con esto ya tendríamos el ProFTPd listo para funcionar.

2.2 Configuración FTP Privado y anónimo:
Para configurar el ftp de esta forma hemos de haber seguido todos los pasos del punto 2 y el punto 2.1. Una vez hecho esto deberemos de editar al final del fichero proftpd.conf unas nuevas líneas: <Anonymous /home/ftp> AccessGrantMsg "mensage" User ftp Group nogroup UserAlias anonymous ftp RequireValidShell off MaxClients <numero> MaxClientsPerHos <numero> MaxClientsPerUser <numero> <Limit LOGIN> #Cualquier persona podrá loguearse con la cuenta anónima aunque le hayamos denegado el acceso arriba, ya que… AllowAll #...la cuenta anónima tiene unas características muy peculiares, si queremos que el efecto sea el mismo en la cuenta… </Limit> #...anónima también, deberemos de denegar aquí a las ip's que no queramos que puedan ser logueadas con anonymous <Directory /home/ftp/> #Le decimos que el directorio del ftp es /home/ftp y a continuación le damos unas características Umask 077 077 AllowOverwrite off </Directory> <Directory /home/ftp/subir> ftp/subir Umask 077 077
INFORMÁTICA

#nuestro directorio de subida se encontrara en /home/

PROGRAMA DE COMPUTACIÓN E

INGENIERIA DE

OSCAR EDUARDO PEREZ PAREDES SISTEMAS AllowOverwrite on <Limit READ WRITE STOR> #El directorio tendrá acceso de lectura, escritura y grabación para todos(Allow All), en estos caso es muy recomendable AllowAll #usar dentro del limit el order, denny y allow para que solo ciertos usuarios pueden tener este privilegio </Limit> </Directory> </Anonymous>

Como me imagino que te has dado cuenta, la cuenta anónima es muy especial, ya que muchas de las características de esta cuenta, ahí que ponerlas dentro de la etiqueta <Anonymous> </Anonymous>.

2.3 FTP únicamente anónimo:
Deberemos de haber seguido todos los pasos anteriores pero omitiendo el punto 2.1. A continuación deberemos de usar una etiqueta limit, arriba de la etiqueta anonymous: <Limit LOGIN> DenyAll </Limit> Con esta etiqueta denegaremos cualquier intento de loguearse de cualquier usuario que este creado en /etc/passwd. Cuidado que no lleve a confusiones, en la etiqueta pone que deniega a todos los usuarios la posibilidades de loguearse, pero el motivo de que la cuenta anonymous si se pueda, es debido a que dentro de esta, tenemos la etiqueta <Limit LOGIN> AllowAll </Limit>, ya que la cuenta anónima es independiente. 2.4 Mejoras de apariencia en el archivo proftpd.conf: Si recordamos en pasos anteriores, fíjate en las opciones donde pone "mensage" cuando pongo ejemplos pongo en algunos sitios %X siendo X una letra. Esto son opciones del FTP. Entre muchas de las posibilidades que tenemos voy a destacar las siguientes:
• • •

%m: numero de usuarios conectados al ftp %u: nombre del usuario que se ha logueado %t: fecha/hora a la que se logueo el usuario

3.Carga de ProFTPd en el inicio y arrancar el demonio:
Para que el ftp se cargue en el arranque de nuestra maquina deberemos de seguir los siguientes pasos:
PROGRAMA DE COMPUTACIÓN E INFORMÁTICA

INGENIERIA DE

OSCAR EDUARDO PEREZ PAREDES SISTEMAS

Si hemos compilado (instalado de forma manual) el proftpd deberemos de introducir el script de carga, ya sea el /etc/init.d/proftpd o en /usr/local/sbin/proftpd donde corresponda, dependiendo de nuestra distribución. En debian deberemos de poner lo siguiente: # ln -s /etc/init.d/proftpd /etc/rcX.d/S20proftpd Siendo X nuestro runlevel (nivel de arranque), si tenemos dudas de cual es nuestro runlevel, poner lo siguiente: # cat /etc/inittab | grep id El resultado será algo parecido a esto(siendo la X el numero de nuestro runlevel): id:X:initdefault: Para arrancar el servidor sin reiniciar deberemos de escribir lo siguiente: /etc/init.d/proftpd start Para parar el servidor deberemos de introducir lo siguiente: /etc/init.d/proftpd stop Para restaurar y volver a cargar una nueva configuración en proftpd.conf deberemos de poner lo siguiente: /etc/init.d/proftpd restart

PROGRAMA DE COMPUTACIÓN E INFORMÁTICA

INGENIERIA DE

OSCAR EDUARDO PEREZ PAREDES SISTEMAS

4.Como administrar el ftp:
Para ver que usuarios están conectados, que esta haciendo en este momento y desde cuando están conectados bastará con poner cualquiera de las siguientes ordenes: ftpwho ftptop Cada una tiene una característica, que dependiendo de gusto, le gustara mas una u otra. ftpwho es mas cuando queremos ver en un instante de tiempo, mientras que ftptop es mas un monitor que te informa en tiempo real de los cambios en tu servidor ftp, por lo que este es recomendable usarlo en una terminal aparte. Para cerrar el servidor y no permitir que ningún usuario puede acceder al él y mostrar un mensaje con el motivo del cierre, podemos usar la herramienta ftpshut (para mas información pueden leer el manual integrado ejecutando: man ftpshut ) ftpshut now "El servidor se encuentra cerrado por motivos técnicos" Para expulsar a un usuario de nuestro servidor, sobrara con mirar el numero de proceso en el que esta y matar el proceso: # ps aux | grep proftpd Un ejemplo seria el siguiente: # ps aux | grep proftpd Usuario PID pepito 4299 0.0 0.9 4432 2388 ? S 23:07 0:00 [proftpd] fulanito 4319 0.0 0.9 5432 3563 ? S 23:57 0:00 [proftpd] tontito 4681 0.0 0.9 6124 4341 ? S 01:16 0:00 [proftpd] Obtendremos una lista de todos los procesos (usuarios) que están conectados y a su derecha su PID(en este ejemplo vamos a expusar a pepito): # kill -9 4299 Para saber mas información acuérdate de usar los log's del servidor que están en /var/log/.

PROGRAMA DE COMPUTACIÓN E INFORMÁTICA

INGENIERIA DE

OSCAR EDUARDO PEREZ PAREDES SISTEMAS CONCLUSIONES Y RECOMENDACIONES. Hasta aquí, ya tenemos los conocimientos necesarios para poder implementar un buen servidor de tipo FTP, si tienes alguna duda o aportación la puedes compartir en clase o a través del grupo del curso creado. Recuerda que de ti depende que tanto provecho le saques al tema, la vida es una continua competencia y no podemos quedarnos atrás.

¡ÉXITOS…!

PROGRAMA DE COMPUTACIÓN E INFORMÁTICA