Category Archives: FTP

Instalación de Ubuntu Server

Voy a explicar cómo instalar un sistema operativo, que a mí, personalmente me gusta bastante. Ideal para instalarlo en algún PC algo antiguo que tengamos en casa, para usarlo de servidor FTP o HTTP por ejemplo. Me refiero a Ubuntu Server. Este sistema es una versión similar a la Desktop que todos conocemos pero sin interfaz gráfica. El hecho de que carezca de interfaz gráfica implica un menor consumo de recursos, y por lo tanto, mayor rendimiento. A la hora de administrar nuestro servidor, podremos hacerlo desde una consola de comandos similar a la de cualquier Linux/Debian.

A mí me gusta más administrar el servidor mediante una conexión telnet desde otro PC. Ya explicaré en otro tutorial cómo se hace esto.

Como he comentado antes, Ubuntu Server está basado en Debian, y por lo tanto podremos hacer uso de los repositorios de Ubuntu para instalar software así como también instalar paquetes .deb, y por supuesto, compilar otro software.

Hasta ahora, la versión más actualizada que hay es la 13.04, y es la que voy a usar para este tutorial. Aún así, cabe destacar que llevo varias versiones instaladas de Ubuntu Server, y la instalación es muy parecida, por lo que dudo que pueda cambiar mucho de aquí a un futuro próximo.

Requisitos mínimos

Procesador: 300 Mhz
RAM: 128 MB
Disco duro: 1 GB
Tarjeta de red
Tarjeta gráfica con resolución de 640×480
Unidad de CD

Como podemos ver, los requisitos son irrisorios. En cualquier máquina, podremos hacer funcionar Ubuntu Server. La tarjeta de red no es indispensable, pero ya que vamos a instalar un servidor, por lo menos que tenga conexión aunque sea a una red local LAN. Yo voy a instalarlo bajo VirtualBox. Comencemos pues.

Metemos el CD ( 🙂 ) y si tenemos preparado el arranque automático desde CD-ROM en BIOS, veremos esta pantalla:

1

En caso de no tener el arranque automático, bastaría con entrar en BIOS y cambiar la secuencia de arranque para que inicie desde la unidad de CD. Bueno, elegimos el idioma que queramos y pulsamos intro. Ahora, nos dará una serie de opciones:

2Por defecto nos viene marcada la opción de Instalar Ubuntu Server. Esta será la opción que elegiremos pulsando intro. Las demás opciones son para realizar una instalación diferente a la estándar, comprobar errores en el disco de instalación o en la memoria RAM, continuar con el arranque normal de nuestra máquina o recuperar otra instalación anterior de Ubuntu Server. Una vez elegida la primera opción, veremos:

3En esta ventana elegimos nuestra ubicación y pulsamos intro. En mi caso España.

4Aquí nos preguntará si queremos detectar nuestro tipo de teclado, le decimos que no porque lo seleccionaremos de forma manual en la ventana siguiente.

5Seleccionamos el país de nuestro teclado, generalmente es también nuestro país.

6Una vez seleccionado el país de nuestro teclado, elegiremos una de sus variantes en el caso de haberlas. Yo he elegido el teclado estándar en español.

7Si tenemos nuestra máquina conectada a la red, cosa que es muy probable, el sistema comenzará a descargar unos paquetes actualizados. Si nuestro equipo no está conectado a internet, el instalador de Ubuntu Server omitirá ese paso.

8Unos minutos después…

9Aquí nos pedirá un nombre que identificará a nuestro servidor en la red. Yo le he dado el nombre de server1, lo he hecho pensando en futuros tutoriales sobre balanceo de carga o almacenamiento redundante en MySQL. Le podéis dar el nombre que queráis, pero recomiendo evitar caracteres extraños en el nombre, tales como %&$ por ejemplo.

10Aquí ponemos nuestro nombre de usuario, yo he elegido administrador. Este no es el nombre para iniciar sesión, así que podemos poner nuestro nombre completo si nos apetece.

11Aquí sí escribimos el nombre que usaremos para iniciar sesión en nuestro equipo. Yo he elegido el mismo, pero puede ser otro cualquiera.

12Y aquí una contraseña para el usuario, nos la pedirá de nuevo para confirmarla. Yo he usado también, la palabra administrador. Aquí si es recomendable usar caracteres extraños, mezclado con mayúsculas, minúsculas y números.

13Ahora nos preguntará si deseamos cifrar la carpeta personal de nuestro usuario, para mayor seguridad podemos elegir sí. Os dejo a vuestra elección.

14Aquí nos preguntará (no sé por qué lo hace en inglés) sobre la zona horaria en la que nos encontramos. Nos ofrecerá una, en caso de que sea correcta, le decimos que sí, si no lo es, le damos a no y la seleccionamos en la siguiente ventana.

15En mi caso selecciono Madrid, que es la zona horaria correspondiente a mi país.

16Ahora el instalador empezará a detectar el hardware del equipo, este proceso suele ser rápido, apenas unos segundos.

17Aquí llegamos a la parte más interesante de la instalación. El particionado del disco duro. El instalador nos ofrece varias opciones. A mí personalmante me gusta más hacer el particionado manual, de forma que yo elijo el tamaño de las particiones y los puntos de montaje. Voy a explicar cómo se haría de forma manual. Seleccionamos esa opción.

18Nos situamos sobre nuestro disco. En mi caso, he creado en VirtualBox un disco de 8,6 GB y pulsamos intro para particionar todo el disco.

19Ahora el instalador nos preguntará si deseamos crear una nueva tabla de particiones. Le decimos que sí y continuamos.

20Una vez creada la tabla de particiones en el disco, nos situamos sobre el espacio libre y pulsamos intro para comenzar el particionado.

21Elegimos Crear una partición nueva.

22Aquí seleccionamos el tamaño. La partición que voy a crear será sólo para la carpeta personal de los usuarios del sistema, en este caso, administrador.

23Aquí, seleccionamos primaria. Cabe destacar, que un disco duro sólo puede albergar 4 particiones primarias. De forma que si vamos a tener más de 4 particiones en nuestro sistema, tendremos que crear 3 particiones primarias, y a partir de ahí, crearlas de tipo lógico. El número de particiones lógicas que podemos tener, es el que queramos. Las particiones lógicas se crean dentro de un tipo de partición primaria especial, llamada partición extendida.

24Podemos seleccionar dónde queremos ubicar la partición a nivel físico. Esto realmente no suele afectar mucho al rendimiento a no ser que tengamos muchísimas particiones.

25Esta ventana es muy importante, ya que desde aquí será desde dónde configuremos todo lo referente a la partición. El instalador por defecto, nos ofrece como sistema de archivos, el sistema Ext4. Este sistema es la versión 4 del sistema de archivos extendido de Linux. Este sistema es la versión más actualizada del mismo, muy robusto y potente. Dedicaré un futuro artículo a la historia de Ext. Si nos situamos sobre el sistema de archivos y pulsamos intro, podremos ver los tipos de sistemas de archivos que nos ofrece el instalador.

26Aquí podemos ver los diferentes tipos de sistemas de archivos de los que disponemos. Tenemos varias versiones de Ext, dependiendo del kernel de nuestro sistema operativo, soportará un sistema Ext u otro. La versión del kernel que trae Ubuntu Server 13.04 soporta perfectamente Ext4. Yo voy a usar ese sistema. Pulsamos intro y volvemos a la ventana anterior.

25Vamos a cambiar el punto de montaje, de forma que en esta partición de 2 GB, sólo se almacenen los datos de los usuarios del sistema.

27Tenemos varios puntos de montaje definidos por defecto. Como por ejemplo /home, que es el que vamos a usar en este caso. En otro caso, usaremos el que más nos convenga o incluso introduciremos un punto de montaje manual para cualquier directorio del sistema que nos interese.

28Las demás opciones las dejamos tal y como están. Nos situamos en Se ha terminado de definir la partición y pulsamos intro.

29Ahora nos mostrará el estado del proceso de particionado. El espacio libre pasa a ser ahora de 6,6 GB. Vamos a crear dos particiones más una de 6 GB y otra de 600 MB. La partición de 6 GB la usaremos para el sistema operativo, así que usaremos como sistema de archivos el Ext4, como punto de montaje, seleccionaremos /, que es para el sistema de ficheros raíz y también pondremos la opción de marca de arranque en activado. Para la otra partición, la de 600 MB, lo único que seleccionaremos es el sistema de archivos de área de intercambio. Esta partición se usará para hacer swapping. Este método consiste en alternar parte de la memoria RAM con el disco duro, eso se hará en esta partición, también llamada partición swap.

30Una vez creadas las 3 particiones, debemos verlo más o menos como en la imagen.

30Nos situamos en Finalizar el particionado y escribir los cambios en el disco y pulsamos intro. 31Nos pedirá una confirmación para finalizar el particionado, si estamos conformes con lo que hemos hecho, pulsamos sí para escribir los datos en la tabla de particiones. En caso de que queramos modificar algo, le damos a no y volvemos hacia atrás.

32Aquí vemos como comienza a particionar el disco.

33Una vez finalizado el particionado, el instalador comenzará a copiar archivos al disco duro. Este proceso puede durar varios minutos.

34La instalación continúa preparando el kernel para la instalación.

35Aquí nos preguntará si la red a la que estamos conectados tiene algún proxy, de ser así introducimos los datos referentes a este de la misma forma que nos muestra el instalador: http://usuario:contraseña@servidor:puerto. Si no disponemos de proxy, como por ejemplo es mi caso, pues pulsamos tabulador para marcar la opción Continuar y pulsamos intro para continuar con el proceso de instalación.

36Si estamos conectado a internet, el instalador descargará una serie de paquetes necesarios, si no lo estamos, este proceso se omitirá.

37El instalador nos preguntará qué tipo de política de actualización queremos para nuestra máquina. Elegimos la que más nos convenga. A mí personalmente me gusta ejecutar las actualizaciones de forma manual, por lo que voy a elegir la primera opción.

38Aquí nos dará la opción de instalar al mismo tiempo que el sistema operativo, algún que otro servicio. Yo quiero una instalación limpia, por lo que no elijo ningún servicio. Si queremos seleccionar algún servicio a instalar, lo seleccionamos y pulsamos espacio para marcarlo, después pulsamos tabulador para situarnos sobre Continuar y pulsamos intro para continuar.

39El instalador terminará de copiar ficheros y configurar el sistema. Esto puede tardar varios minutos.

40Antes de finalizar la instalación, el sistema nos preguntará si deseamos instalar el cargador de arranque GRUB. Este cargador nos permitirá elegir entre distintos sistemas operativos que tengamos instalados en nuestro equipo, así como arrancar Ubuntu Server con otra versión de kernel diferente. Elegimos sí, y finalizamos la instalación.

41Por último, extraemos el CD de nuestro equipo, y elegimos Continuar para reiniciar nuestra máquina.

42Una vez reiniciada nuestra máquina, el sistema operativo nos pedirá un usuario y una contraseña. Iniciamos sesión con el usuario que hemos definido durante la instalación.

43Una vez con la sesión iniciada, tendremos el control del sistema. Obviamente, no con permisos de administración por defecto, para administrar y hacer cambios importantes en el sistema hay que hacer uso del comando sudo. Si nos fijamos, dice que hay 16 actualizaciones disponibles, de las cuales, 12 de ellas son de seguridad. Para actualizar basta con ejecutar:

sudo apt-get update && sudo apt-get upgrade

Con esto, tendremos un Ubuntu Server 13.04 en una instalación limpia y actualizada. Este sistema operativo es bastante usado para servicios de internet tales como FTP, HTTP o proxy-caché. Es una alternativa bastante buena (yo diría que mejor) a los sistemas de pago como por ejemplo Windows Server. Incluso lo podemos usar a nivel empresarial con la variante de Active Directory para Linux, LDAP.

Servidor FTP bajo un host virtual basado en IP

Hola a todos, hoy vamos a a configurar un servidor FTP bajo un host virtual basado en IP. Usaremos ProFTPd en Ubuntu.

Hace tiempo creamos host virtuales basados en IP para Apache, en este caso lo haremos para ProFTPd. No debemos de tener problemas para hacerlo ya que es muy parecido.

Introducción

Para crear nuestro servidor FTP seguiremos las siguientes pautas:

  1. Estará sobre una interfaz de red virtual.
  2. Será de sólo lectura para los usuarios anónimos y admitirá a los usuarios de sistema.
  3. Los usuarios de sistema no podrán salir de su «home».
  4. Los usuarios anónimos no podrán salir de su directorio por defecto.

Vamos a proceder.

Creando la interfaz de red virtual

Para crear una interfaz de red virtual, debemos saber cómo se llama nuestra interfaz física. Para saberlo, abrimos un terminal y tecleamos:

ifconfig

Como podemos ver marcado en la imagen, nuestra interfaz física de red se llama eth2. Vamos a crear una interfaz de red virtual a partir de la interfaz física. Desde un terminal tecleamos:

sudo ifconfig eth2:1 172.16.100.10 netmask 255.255.0.0

Bien, ya tenemos la interfaz creada. Ahora toca configurar nuestro VirtualHost para ProFTPd.

Configurando nuestro VirtualHost

Pasemos ahora a configurar el host virtual para ProFTPd. En un terminal tecleamos:

sudo gedit /etc/proftpd/proftpd.conf

Nos vamos al final del archivo y añadimos lo siguiente:

<VirtualHost 172.16.100.10>
     RequireValidShell     on
     TransferLog           /var/log/proftpd/virtual
     DefaultRoot           ~

     <Limit LOGIN>
          AllowAll
     </Limit>

     <Anonymous /var/ftp/descargas>
          User            ftp
          UserAlias       anonymous     ftp
          RequireValidShell    off
          <Limit LOGIN>
               AllowAll
          </Limit>
          <Limit WRITE>
               DenyAll
          </Limit>
     </Anonymous>
</VirtualHost>

Explicación del código:

En primer lugar se crea la directiva VirtualHost a la que se le asigna la dirección IP de la interfaz de red virtual que creamos anteriormente. Dentro de la directiva VirtualHost, se añaden una serie de parámetros de configuración, el primero RequireValidShell se establece a on para impedir que a nuestro FTP entren usuarios con shell falsa.

El parámetro TransferLog sirve para indicar cual será el archivo de log que registrará el movimiento de archivos en nuestro FTP. DefaulRoot es el directorio por defecto del que no podrá subir el usuario, en este caso, el directorio por defecto es el home de cada usuario y se indica con ~.

La directiva Limit LOGIN junto al parámetro AllowAll indica que todos los usuarios tendrán autorizado hacer login en nuestro FTP. Si quisiéramos denegar el login a todos los usuarios, pues tendriamos que cambiar el parámetro AllowAll por DenyAll.

A continuación nos encontramos con la directiva Anonymous, a esta directiva se le asigna el directorio del que no podrán subir los usuarios anónimos. En el parámetro User, indicamos que realmente se va a acceder al FTP con un usuario que existe en el sistema, ese usuario se llama ftp.

UserAlias nos sirve para definir un alias a nuestro usuario ftp, ese alias será anonymous y lo usaremos para entrar al FTP. En este caso RequireValidShell se pone en off para permitir que sí entren usuarios con shell falsa. Ahora nos queda la directiva Limit WRITE, que en este caso está limitada sólo a los usuarios anónimos mediante el parámetro DenyAll.

Bien, ya tenemos nuestro VirtualHost configurado, ahora tenemos que reiniciar el servicio. Desde un terminal tecleamos:

sudo service proftpd restart

Verificando el funcionamiento

Vamos ahora a verificar que todo está correcto. Para ello usaremos FileZilla. En un tutorial anterior explico cómo instalar FileZilla.

Bien, abrimos FileZilla (Aplicaciones / Internet / FileZilla FTP client) y nos logeamos con un usuario anónimo.

Bien, nos lleva a nuestro directorio FTP, ubicado en /var/ftp/descargas. Vamos a ver qué ocurre al logearnos como un usuario de sistema.

Al entrar al FTP con un usuario de sistema, nos redirige a su directorio home. Los usuarios de sistema sí tienen permisos de escritura en su home, vamos a probar a subir un archivo.

Como se ve en la imagen, el archivo revista.pdf ha sido correctamente subido.

Comprobemos ahora los propios logs de ProFTPd. En un terminal escribimos:

sudo less /var/log/proftpd/proftpd.log

Como se ve en la imagen, primero inició sesión un usuario anónimo, después lo hizo el usuario tardes. Comprobemos ahora el log propio de nuestro VirtualHost. En el terminal escribimos:

sudo less /var/log/proftpd/virtual

En ese log quedó registrada la subida del archivo revista.pdf.

Configurar ProFTPd para usuarios anónimos

Muy buenas a todos, hoy vamos a configurar ProFTPd para que sólo puedan acceder a nuestro FTP usuarios anónimos. También limitaremos a los usuarios para que no puedan navegar por el sistema, y sólo lo hagan por el directorio que nosotros indiquemos en la configuración de ProFTPd. Empecemos.

Creando el directorio por defecto

Vamos a empezar definiendo el directorio que va a usar nuestro FTP. Ya que va a ser un directorio genérico para que los usuarios anónimos descargen contenido, no tiene sentido crearlo dentro de /home. Podemos por ejemplo establecer el directorio en:

  • /var/ftp/descargas

Una vez tenemos el directorio decidido, procedemos a crearlo. Desde un terminal escribimos:

sudo mkdir -p /var/ftp/descargas

Vale, una vez creado el directorio de nuestro FTP, vamos a indicar en la configuración de ProFTPd que ese es el directorio por defecto. En un terminal escribimos:

sudo gedit /etc/proftpd/proftpd.conf

Una vez con el documento abierto, añadimos esta línea al final del documento:

DefaultRoot /var/ftp/descargas

Guardamos los cambios en el archivo y vamos ahora a limitar el acceso a todos los usuarios excepto a los anónimos.

Configurando permisos

Vamos ahora a configurar los permisos. Queremos que únicamente se puedan conectar al FTP los usuarios anónimos. Para hacer esto debemos editar el mismo fichero que antes y añadir al final el siguiente bloque de código:

<Limit LOGIN>
   DenyAll
</Limit>

<Anonymous /var/ftp/descargas>
   User                   ftp
   UserAlias              anonymous    ftp
   RequireValidShell      off

   <Limit LOGIN>
      AllowAll
   </Limit>
</Anonymous>

Ahora vamos a hacer dueño al usuario ftp del directorio /var/ftp/descargas. Nos vamos a un terminal y escribimos:

sudo chown -R ftp /var/ftp/descargas

Para que los cambios se guarden, debemos reiniciar el servicio. Desde un terminal:

sudo service proftpd restart

Verificando el funcionamiento

Vamos a intentar entrar con el usuario tardes.

En la imagen podemos ver que el usuario tardes no se ha podido conectar.

Ahora vamos a hacerlo con un usuario anónimo.

Un usuario anónimo sí puede hacer login en el FTP y tiene acceso a los archivos del servidor, en este caso una canción y una película. Aunque como se puede ver a continuación, tiene permisos de escritura ya que no puede subir ningún archivo al FTP.

Como vemos en el log de ProFTPd, el usuario tardes no se ha podido conectar ya que tiene el acceso limitado. Sin embargo, un usuario anónimo sí puede conectarse sin problemas.

Bibliografía

  • Apuntes de clase.

Instalación y configuración de ProFTPd en Ubuntu

Hola a todos, volviendo a la rutina de las clases, hoy toca instalar y configurar ProFTPd.  Vamos a instalarlo bajo Ubuntu. Así que vamos a la tarea.

Protocolo FTP

El protocolo FTP (en inglés File Transfer Protocol), es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red con protocolo TCP (Transmission Control Protocol). Está basado en la arquitectura cliente-servidor. Desde un equipo cliente, nos podemos conectar a un servidor, ya sea para descargar archivos de él o para enviarlos, todo esto independientemente del sistema operativo que usemos.

¿Qué es ProFTPd?

ProFTPd es un servidor FTP bajo licencia GPL y multiplataforma, aunque no está para Microsoft Windows. ProFTPd puede ser fácilmente configurable, siendo sus archivos de configuración muy parecidos a los de Apache. Puede ser enjaulado independientemente del sistema de archivos sobre el que trabaje y soporta IPv6.

Instalando ProFTPd

Para instalar ProFTPd en Ubuntu, podemos buscarlo en Synaptic, o abrir un terminal y teclear:

sudo aptitude install proftpd

Una vez el proceso haya concluido, tendremos instalado ProFTPd en nuestra máquina.

Configurando ProFTPd

Vamos a pasar ahora a la configuración de ProFTPd.

Definiendo los mensajes

Para definir los mensajes de ProFTPd editamos el archivo de configuración, este archivo es /etc/proftpd/proftpd.conf. Vamos a editarlo, en un terminal escribimos:

sudo gedit /etc/proftpd/proftpd.conf

Ahora nos vamos al final del archivo, y añadimos estas dos líneas:

AccessGrantMsg    "¡Bienvenido al FTP!"
AccessDenyMsg    "¡Imposible entrar!"

Si conseguimos entrar correctamente, el cliente FTP nos responderá con el primer mensaje, si por el contrario, nuestro acceso es denegado nos responderá con el segundo mensaje.

Creando los usuarios con shell falsa

Para comprobar que esos mensajes van a aparecer, vamos a crear dos usuarios en el sistema. Ambos usuarios usarán una shell falsa y sólo autorizaremos a un usuario el acceso al FTP. Antes de crear el usuario, vamos a crear su carpeta personal, para ello, desde un terminal tecleamos:

sudo mkdir /home/zapatero

Una vez tenemos creada su carpeta personal, pasamos a crear el usuario en sí. Para crear un usuario con shell falsa, desde un terminal y tecleamos:

sudo useradd -d /home/zapatero -s /bin/false zapatero

Bien, ya tenemos creada la carpeta personal del usuario zapatero. Vamos ahora a hacerle dueño de su carpeta personal, en un terminal tecleamos:

sudo chown -R zapatero /home/zapatero

Bien, ya tenemos creado el primer usuario. Ahora repetimos los mismos pasos para crear el segundo usuario.

Creamos su carpeta personal:

sudo mkdir /home/rajoy

Lo añadimos al sistema:

sudo useradd -d /home/rajoy -s /bin/false rajoy

Ahora le hacemos dueño de su carpeta:

sudo chown -R rajoy /home/rajoy

Antes de proceder a establecer los permisos, necesitamos crear una contraseña para cada usuario. Así que abrimos un terminal y tecleamos:

sudo passwd zapatero

Y del mismo modo para rajoy:

sudo passwd rajoy

Estableciendo permisos

Vamos ahora a configurar ProFTPd para que sólo permita el acceso al usuario zapatero. Nos vamos a un terminal, y volvemos a abrir el fichero proftpd.conf.

sudo gedit /etc/proftpd/proftpd.conf

Ahora nos vamos de nuevo al final del archivo, y debajo de las líneas que habíamos introducido antes, añadimos lo siguiente:

<Limit LOGIN>
   AllowUser zapatero
   DenyAll
</Limit>
RequireValidShell   off

La última línea que hemos introducido, es para que se puedan conectar al FTP usuarios con shell falsa. Esta línea aparece comentada más arriba, podemos quitar el comentario o escribirla al final.

Verificando el funcionamiento

Bueno, vamos a ver si zapatero puede acceder a nuestro FTP. Antes de nada, para conectarnos al FTP, necesitamos un cliente, así que vamos a instalar FileZilla. En un terminal escribimos:

sudo aptitude install filezilla

Vamos ahora a abrir FileZilla. Aplicaciones, Internet, FileZilla.

Cuando tenemos FileZilla abierto, nos conectamos al servidor FTP.

Introducimos la dirección IP de nuestra máquina, en mi caso tengo una dirección IP especial porque estoy bajo una máquina virtual. También introducimos el nombre del usuario, su respectiva contraseña y pulsamos intro.

Como podemos ver en el log de FileZilla, la conexión se ha realizado correctamente.

Pero, ¿qué ocurriría al intentar acceder con el usuario rajoy?

Justo lo que queriamos, hemos denegado el acceso a rajoy y se lo hemos permitido a zapatero.

También podemos comprobarlo en el log de ProFTPd, este log se encuentra en /var/log/proftpd/proftpd.log. Tecleamos en un terminal:

sudo less /var/log/proftpd/proftpd.log

Algo así será lo que veamos:

Bibliografía