lunes, 26 de noviembre de 2007

FTP Anónimo



Tanto en Solaris 10, como en OpenSolaris hay algunos cambios en cuanto a la generación de un servidor FTP acotado para el acceso permitido de cualquier usuario sin cuenta en nuestro sistema.

Por defecto el demonio que nos permite ejecutar el servidor FTP (WU-FTP) estará activo y controlado por SMF.

# svcs -a | grep ftp
online 15:28:42 svc:/network/ftp:default

Lo primero que vamos a realizar es crear un $HOME para el usuario ftp, asi:

# mkdir -p /export/ftp/{pub,bin,dev,etc,usr/lib}

Una vez realizado, copiamos el binario del comando "ls" y le asignamos los permisos necesarios:

# cp /usr/bin/ls /export/ftp/bin
# chmod 111 /export/ftp/bin/ls

Solo nos queda copiar a ese path las librerias necesarios para le ejecución de dicho binario:

# cp /usr/lib/ld.so* /export/ftp/usr/lib
# cp /usr/lib/libc.so.1 /usr/lib/libdl.so.1 /export/ftp/usr/lib
# cp /usr/lib/libintl.so.1 usr/lib/libw.so.1 /export/ftp/usr/lib
# cp /usr/lib/nss*.so.1 /export/ftp/usr/lib
# cp /usr/lib/libnsl.so.1 /export/ftp/usr/lib
# cp /usr/lib/straddr.so /export/ftp/usr/lib

Y los correspondientes ficheros de configuración:

# cp /etc/passwd /etc/group /etc/netconfig /export/ftp/etc
# cp /etc/nsswitch.conf /export/ftp/etc

Con su asignación correcta de permisos:

# chmod 555 /export/ftp/usr/lib/*
# chmod 444 /export/ftp/etc/*
# chmod 555 /export/ftp/usr/lib
# chmod 555 /export/ftp/usr
# chmod 555 /export/ftp/bin
# chmod 555 /export/ftp/dev
# chmod 555 /export/ftp/etc
# chmod 755 /export/ftp/pub
# chmod 555 /export/ftp

Es en este momento cuando creamos el usuario ftp con acceso anónimo al sistema por este procolo TCP.

# vi /etc/passwd
ftp:x:30000:30000:Anonymous FTP:/export/ftp:/bin/false

# vi /etc/shadow
ftp:NP:6445::::

Y por ultimo securizamos todo el $HOME:

# chown -R root /export/ftp

Hemos conseguido un acceso anónimo real a nuestro servidor FTP, completamente acotado en el PATH que hemos reservado (/export/ftp) y además de forma enjaulada ya que nunca podra subir directorios por el arbol de directorios.