viernes, 25 de enero de 2008

FSTAB

Hola, una de las grandes ventajas de Linux es la posibilidad de utilizar distintos tipos de sistemas de ficheros, desde los variados sistemas de Linux ( desde Ext2 a Ext3 paasndo por ReiserFS y XFS ), los sistemas de ficheros de red ( NFS o SMB ), los de Windows ( Vfat o NTFS ) e incluso los de otros tipos de Unix como por ejemplo el sistema UFS de los BSD.

Para poder trabajar con estos sistemas de ficheros es necesario tener el núcleo del sistemas preparado para ello, ya sea integrando estos sistemas de ficheros en el kernel o agregándolos como módulos.

Montar estos sistemas de ficheros puede ser algo tedioso, no es muy agradable tener que teclear mount y sus opciones cada vez que necesitamos montar un sistema, especialmente si es un sistema que utilizaremos con frecuencia. Es por ello que nos viene muy bien conocer fstab.

Fstab es un fichero que está alojado en el directorio /etc y que posee las configuraciones de los distintos sistemas de ficheros de nuestro sistema operativo, así como el lugar donde se montan y las opciones que se aplican a ellos. Configurar /etc/fstab es necesario para tener un acceso rapido a nuestros datos de Windows, así como para que dicha partición se monte automáticamente al iniciar nuestro Linux. Este artículo se dedicará a explicarnos cual es la estructura de dicho fichero y como configurarlo a nuestro gusto.

Antes que nada veremos mi /etc/fstab y explicaré una por una las columnas, su significado y su uso, para visualizarlo simplemente ejecutamos cat /etc/fstab en consola:

debian:/home/slack# cat /etc/fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/sda1 / ext3 defaults,errors=remount-ro 0 1
/dev/sda2 /mnt ext3 defaults,errors=remount-ro 0 1
/dev/sda3 none swap sw 0 0
/dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0


La siguiente es la salida de ejecución del mismo comando anterior, pero con mas opciones para la esta explicación:

/dev/hda7 swap swap defaults 0 0
/dev/hda5 / ext3 defaults 1 1
/dev/hda2 /mnt/windows ntfs umask=0 0 0
/dev/hda6 /mnt/datos vfat user,umask=0 0 0
/dev/hdd /mnt/cdrom iso9660 noauto,user 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,umask=0,user 0 0
devpts /dev/pts devpts gid=5 0 0
proc /proc proc defaults 0 0
/dev/sda1 /mnt/usb vfat noauto,rw,umask=0,user,sync 0 0
none /sys sysfs defaults 0 0
/dev/hda3 /mnt/freebsd ufs umask=0,user,noauto 0 0
/dev/hda8 /boot ext3 defaults 1 1

Como puede apreciarse cada linea consiste en un sistema de ficheros configurado mediante 6 columnas, procedo ahora a realizar una descripción de cada una de las columnas:

Primer campo

Es el dispositivo o sistema de ficheros que se montará, normalmente sera un fichero ( en Linux todo es un fichero ) del directorio /dev. Con hda se denota el disco duro maestro IDE seguido de un número que indica el número de partición de dicho disco duro.
Para lso dispositivos USB suele usarse sda, tal como puede apreciarse en la linea 9 de mi fstab.
Hay que destacar que devpts y none se utilizan para los sistemas de ficheros que usa internamente Linux.

Segundo campo

Es el directorio en el cual se montará el sistema del primer campo. Hay que destacar que si no hemos creado ese directorio fallará el montaje de dicho sistema.

Tercer campo

Indica el tipo de sistema de ficheros. Como indicaba al principio del documento el núcleo de Linux admite multitud de sistemas de ficheros, tanto para el propio uso e instalación de nuestro sistema operativo como para sistemas auxiliares ( particiones vfat ) o sistemas de ficheros de red.
Muestro aquí una pequeña tabla con ejemplos de algunos de ellos:

EXT2 Sistema de ficheros sin registro para Linux
EXT3 Sistema de ficheros con registro para Linux
VFAT Sistema de Windows ( versión 95, 98 )
NTFS Sistema de Windows ( versión NT, 2000, XP )
NFS Sistema distribuido de Sun
ISO9660 Sistema estándar para CD-ROM
JFS Sistema de ficheros con registro de IBM
REISERFS Sistema de ficheros con registro para Linux
SWAP Espacio de intercambio para Linux
XFS Sistema de ficheros con registro de Silicon Graphics
UFS Sistema de ficheros de los Unix BSD

Los sistemas de ficheros que tiene compilado el núcleo pueden verse en el fichero /proc/filesystems.

Cuarto campo

Son opciones que se aplican a los sistemas de ficheros, haremos un recorrido por ellas por orden alfabético.

Async.
Las escrituras se hacen asíncronamente
Auto. Se monta automáticamente, o con el comando mount -a.
Defaults. Esta opción reune las siguientes: async, auto, dev, exec, nouser, rw y suid.
Dev. Significa que el dispositivo es local al sistema.
Exec. Permite la ejecución de programas.
Gid. Establece el identificador de grupo del sistema de ficheros al identificador numérico del grupo.
Noauto. No se monta automáticamente. Ideal para medios extraibles.
Nouser. El sistema de ficheros solo puede ser montado por el administrador del sistema.
Owner. El dueño del sistema de ficheros se fija al usuario que lo monta.
Ro. Modo solo lectura ( read-only ).
Rw. Modo lectura escritura ( read-write ).
Suid. Permite que se ejecuten los bits setuid, no se debe aplicar a sistemas que no administremos nosotros mismos, ya que es un riesgo potencial de intrusiones al sistema.
Sync. Las escrituras se hacen síncronamente.
Uid. Establece el identificador de usuario del sistema de ficheros montado.
Umask. Establece una máscara. Esto es util para que a este sistema pueda acceder un usuario que no tenga privilegios, por ejemplo para montar un sistema y que puedan acceder a él todos los usuarios ponemos umask=0.

Quinto campo

Puede tener valor 0 o 1. Si vale 1 el programa de copias de seguridad del sistema Dump guarda el sistema de ficheros.

Sexto campo


Lo utiliza el inspector de consistencia. Si vale 1 se comprueba la consistencia del sistema de ficheros al reiniciar el sistema operativo. Si vale 0 fsck no comprueba el sistema de ficheros.

Saludos y suerte !!

Escaneo de Servidores Web

Hola, una buena forma de asegurar un servidor web es probar a romper su seguridad. Para ello es vital utilizar una herramienta que permita sacar la mayor cantidad posible de información sobre un sitio web, una es Nikto, poco conocido pero eficiente.

Nikto es una potente aplicación que buscará la existencia de ficheros en el servidor y de posibles vulnerabilidades del mismo. La información que genera es enorme, luego ya es trabajo nuestro sacar la paja y quedarnos con lo importante.

Vamos a ver un ejemplo práctico, ejecutamos en cosola "nikto -h google.cl" y observamos la salida, que he recortado para ver solo unas cuantas lineas:

debian:/home/slack# nikto -h google.cl
---------------------------------------------------------------------------
- Nikto 1.35/1.35 - www.cirt.net
+ Target IP: 216.239.59.104
+ Target Hostname: google.cl
+ Target Port: 80
+ Start Time: Fri Jan 25 14:13:19 2008
---------------------------------------------------------------------------
- Scan is dependent on "Server" string which can be faked, use -g to override
+ Server: gws
+ Server does not respond with '404' for error messages (uses '301').
+ This may increase false-positives.
+ Not found files redirect to: http://www.google.cl/Nikto-1.35-QEstv6apsGao.htm
+ The root file (/) redirects to: http://www.google.cl/
+ All CGI directories 'found', use '-C none' to test none
+ / - Redirects to http://www.google.cl/ , Default Jrun 2 server running.
+ / - Redirects to http://www.google.cl/ , Cisco VoIP Phone deafult web server found.
+ / - Redirects to http://www.google.cl/ , Default Sybase Jaguar CTS server running.
+ / - Redirects to http://www.google.cl/ , Default Jrun 3 server running.
+ / - Redirects to http://www.google.cl/ , Default Lantronix printer found.
+ / - Redirects to http://www.google.cl/ , Default IBM Tivoli Server Administration server is running.
+ / - Redirects to http://www.google.cl/ , Default Jrun 4 server running.
+ / - Redirects to http://www.google.cl/ , Default Xerox WorkCentre server is running.
+ /admin/config.php - Redirects to http://www.google.cl/admin/config.php , PHP Config file may contain database IDs and passwords.
+ /adm/config.php - Redirects to http://www.google.cl/adm/config.php , PHP Config file may contain database IDs and passwords.
+ 20.access - Redirects to http://www.google.cl/ , Contains authorization information
+ 20.cobalt - Redirects to http://www.google.cl/ , May allow remote admin of CGI scripts.
+ 20.htaccess.old - Redirects to http://www.google.cl/ , Backup/Old copy of .htaccess - Contains authorization information
+ 20.htaccess.save - Redirects to http://www.google.cl/ , Backup/Old copy of .htaccess - Contains authorization information
+ 20.htaccess - Redirects to http://www.google.cl/ , Contains authorization information
+ 20.htaccess~ - Redirects to http://www.google.cl/ , Backup/Old copy of .htaccess - Contains authorization information
+ 20.htpasswd - Redirects to http://www.google.cl/ , Contains authorization information
+ 20.namazu.cgi - Redirects to http://www.google.cl/ , Namazu search engine found. Vulnerable to CSS attacks (fixed 2001-11-25). Attacker could write arbitrary files outside docroot (fixed 2000-01-26). CA-2000-02.
+ 20.passwd - Redirects to http://www.google.cl/ , Contains authorization information
+ 20 - Redirects to http://www.google.cl/ , Directory indexing of CGI directory should be disabled.
+ 20addbanner.cgi - Redirects to http://www.google.cl/ , This CGI may allow attackers to read any file on the system.

+ Over 20 "Moved" messages, this may be a by-product of the
+ server answering all requests with a "302" or "301" Moved message. You should
+ manually verify your results.

Es probable que en algunas distribuciones basadas en Slackware como Zenwalk o VectorLinux este paquete no funcione, para debian no existe problema, si al ingresar el comando anterior la consola nos responde con un command not found, tendremos que verificar si tenemos acceso a instalar este programa:

debian:/home/slack# nikto -h google.cl
bash: nikto: command not found

verificamos si tenemos acceso a instalar el programa desde nuestro repositorio:

debian:/home/slack# apt-cache search nikto
nikto - web server security scanner

y lo instalamos:

debian:/home/slack/programas/jboss-portal-2.4.1# apt-get install nikto
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Se instalarán los siguientes paquetes extras:
libwhisker-perl
Se instalarán los siguientes paquetes NUEVOS:
libwhisker-perl nikto
0 actualizados, 2 se instalarán, 0 para eliminar y 7 no actualizados.
Necesito descargar 249kB de archivos.
Se utilizarán 1167kB de espacio de disco adicional después de desempaquetar.
¿Desea continuar [S/n]? S
Des:1 http://debian.ubiobio.cl etch/main libwhisker-perl 1.8-1 [79,5kB]
Des:2 http://debian.ubiobio.cl etch/main nikto 1.35-1.1 [170kB]
Descargados 249kB en 11s (21,6kB/s)
Seleccionando el paquete libwhisker-perl previamente no seleccionado.
(Leyendo la base de datos ...
141813 ficheros y directorios instalados actualmente.)
Desempaquetando libwhisker-perl (de .../libwhisker-perl_1.8-1_all.deb) ...
Seleccionando el paquete nikto previamente no seleccionado.
Desempaquetando nikto (de .../nikto_1.35-1.1_all.deb) ...
Configurando libwhisker-perl (1.8-1) ...
Configurando nikto (1.35-1.1) ...

Ya instalado podemos ejecutar el escaneador apuntando a una url...

Saludos y suerte !!