sábado, 21 de julio de 2012

Instalar y configurar ProFTPD en Ubuntu

Este pequeño tutorial nos va a servir para instalar y configurar un FTP en Debian y derivados como nuestro querido y popular Ubuntu.

Instalación:
Sencilla, a traves de nuestro amado apt-get:

sudo apt-get install proftpd

Creación de usuario para FTP:
El ProFTPd nos crea un usuario por defecto llamado, justamente, ftp lo cual a nosotros nos nos gusta y no lo usaremos. Vamos a crear uno un poco menos obvio. Para ello escribimos:

sudo adduser nuestrouserftp

Está claro que hay que sustituir "nuestrouserftp" por el usuario que queramos utilizar.
Después de ingresar esa línea nos pedirá que le asignemos una pass y una serie de datos como Nombre Completo, etc que no hace falta ni que sean reales ni completar, podemos darle todo ENTER.

Cambiar password de usuario:
Si algun día, por alguna razón, necesitamos darle los datos de acceso a alguien tenemos después la posibilidad de modificar la contraseña de nuestro usuario ftp. Para hacerlo escribimos en una terminal:

sudo passwd nuestrouserftp

A continuación editamos el archivo /etc/passwd y vemos que /home tiene asignado nuestro usuario. Aparecerá algo así:

nuestrouserftp:x:1002:1002:Usuario FTP,,,:/home/nuestrouserftp:/bin/false

Ahí nos indica que nuestra home será /home/nuestrouserftp (la x es nuestra contraseña que no aparece por estar encriptada). Debemos asegurarnos que al final diga /bin/false en lugar de /bin/bash. En caso de que aparezca esto último debemos cambiarlo.

Si fuese necesario cambiarlo deberiamos verificar en /etc/shells que aparezca la shell falsa /bin/false. Escribimos en una terminal:

sudo nano /etc/shells

Y si en ningún lado aparece /bin/false lo agregamos al final.
Ahora procedemos a darle los permisos a nuestra carpeta. Escribimos en terminal:

chown -R nuestrouserftp /home/nuestrouserftp/

El parámetro -R es para hacer recursivo el comando, con lo cual si vamos a crear carpetas dentro de /home/nuestrouserftp nos conviene primero crear las carpetas y después ejecutar la línea.

Para evitar que los usuario se logueen por FTP editamos /etc/ftpusers:

sudo nano /etc/ftpusers

Seguramente ya figuran algunos usuarios, podemos añadir clásicos como root,anonymous y ftp. Todos los usuarios que figuren en este archivo NO podrán loguearse. Mas adelante explico una forma de denegar el acceso de todos excepto a "nuestrouserftp".

Para ver el log de Proftpd:

sudo nano /var/log/proftpd/proftpd.log

Aquí nos aparecerán todos los intentos de login.

Ahora procedemos a la configuración del FTP para ello editamos el archivo proftpd.conf:

sudo nano /etc/proftpd/proftpd.conf

Vamos a configurar algunas cosas esenciales. A continuación vemos las lineas de ese archivo:

ServerName  "Nombre_del_servidor_ftp"   #De mas está decir que acá va el nombre del servidor =)
ServerType   standalone/inetd      #Nosotros usaremos standalone.
DeferWelcome      off/on  #Elegimos off para no mostrar mensaje de entrada.

MultilineRFC2228   on/off   #Elegimos on, esto hará a nuestro ftp compatible con casi todos los clientes ftp.
DefaultServer        on/off   #Elegimos on, toma las opciones default de un servidor ftp.
ShowSymlinks         on/off    #Elegimos on, podremos ver los links, si el link esta fuera de nuestro home no tendremos acceso a él.

TimeoutNoTransfer   <numero>  #Número máximo de segundos que puede estar un cliente en el ftp sin  transferir nada. Por defecto 600 seg.
TimeoutStalled      <numero>  #Número máximo de segundos que puede estar el cliente-servidor sin recibir información de una transferencia. Por defecto 600 seg.
TimeoutIdle         <numero>  #Número máximo de segundos que puede estar  un usuario sin hacer nada. Por defecto 1200 seg. 

DenyFilter          \*.*/      #Es un filtro de protección para el ProFTPd.

DefaultRoot     /home/usuarioftp #Para mi, vital. Acá le decimos a que carpeta va a acceder. Si no lo configuramos accede a todas, si configuramos por ejemplo /home accede a todos los /home. En este caso tendrá acceso solo a su /home.

Port  <numero> #Acá va el puerto al que conecta nuestro servidor, por defecto el 21.

MaxInstances      <numero>     #Cantidad máxima de conexiones al FTP que se pueden hacer a la vez.

AllowOverwrite on     #Elegimos on para sobreescribir ficheros existentes.

TransferLog /var/log/proftpd/xferlog  #Loguea las transferencias que se realicen en el FTP.

SystemLog   /var/log/proftpd/proftpd.log #Se guardan los intentos de login.

Por último, y como indique anteriormente, si queremos denegar el acceso de todos, excepto del usuario usuarioftp añadimos esto al final del archivo de configuración:

<Limit LOGIN> #Limitamos a quienes intentan loguearse en el FTP.
AllowUser usuarioftp  #Allow es para indicar a quienes vamos a aceptar.
DenyAll    #Deny es para indicar a quienes denegamos el ingreso. Podemos poner los usuarios y separarlos por comas o, como en este caso, podemos elegir DenyAll e impedir el acceso de todos excepto del que figura en Allow.
</Limit>
RequireValidShell   off

Administrar el FTP:
Tenemos 2 comandos que nos serán de gran utilidad:

ftptop
ftpwho

ftptop nos indica en tiempo real quienes están conectados a nuestro FTPftpwhonos sirve para ver en un momento determinado quien está conectado.

Para cerrar el servidor y mostrar un mensaje con el motivo por el cual se encuentra inaccesible podemos usar la herramienta ftpshut:

sudo ftpshut now "En este momento se están realizando tareas de mantenimiento, disculpe las molestias"

Después deberán ejecutar ftpshut -R para hacerlo accesible nuevamente.

Por último, para reiniciar el servicio ProFTPd:

sudo /etc/init.d/proftpd restart

Si queremos detenerlo debemos escribir stop en lugar de restart.
Eso fue todo por hoy, espero que les haya sido útil =)

Referencias: WikiLearning y The bit Developer

lunes, 27 de febrero de 2012

Como apagar Ubuntu desde consola

Para los que no estén usando entorno gráfico (por ejemplo en servidores), simplemente estén usando la consola en ese momento, o quieran ser los más 1337-geeks.

Para apagar el sistema tenemos tres comandos distintos (halt, poweroff y shutdown), el tercero bastante configurable.
$ sudo halt
$ sudo poweroff
shutdown tiene distintas opciones, por ejemplo podemos decirle que lo apague ahora mismo:
$ sudo shutdown -h now
o en x tiempo, siendo x el número de minutos que tiene que esperar para apagarlo, por ejemplo en 5 minutos:
$ sudo shutdown -h +5
También podemos decirle que se apague a una hora determinada (reloj en sistema de 24 horas, es decir, de 0 a 23), por ejemplo a las 22:30:
$ sudo shutdown -h 22:30
Para reiniciar el sistema tenemos dos: reboot y de nuevo shutdown, con todas las opciones mencionadas antes sólo que en lugar de usar el argumento -h (de halt), usaremos el -r (de reboot). Manteniendo los mismos ejemplos de antes:
$ sudo reboot
$ sudo shutdown -r now
$ sudo shutdown -r +5
$ sudo shutdown -r 22:30
Estos comandos son imprescindibles a la hora de gestionar un ordenador remotamente por SSHpara reiniciar o apagar la máquina. También podemos jugar a programar el propio ordenador para que se apague o reinicie cuando queramos sin que hagamos uso de las tareas programadas (crones).
Extraido de Tuxpepino.