martes, 25 de diciembre de 2007

Sticky Bit

El permiso sticky bit (t) nos sirve para establecer que un determinado usuario solo pueda borrar los archivos que le pertenecen en un directorio.

Comúnmente en los ambientes de programación y desarrollo necesitamos que varios usuarios trabajen sobre el mismo directorio, pero como podemos hacer para mantener la integridad y que puedan manejar sus archivos sobre el mismo directorio.

Con sticky bit podemos establecer esto, teniendo así que ningún usuario podrá borrar ficheros que pertenezcan a algún otro usuario, veamos como hacer esto.

Primero echemos un vistazo a los permisos del directorio en cuestión (prueba)

rooter@rooterlap:~$ ls -l

total 188

drwx------ 3 rooter users 4096 2007-12-17 15:03 Desktop

drwxr-xr-x 2 rooter users 4096 2007-10-03 21:06 Documents

drwxr-xr-x 3 rooter users 4096 2007-10-13 14:27 coding

drwxrwxrwx 3 rooter users 4096 2007-12-25 14:21 prueba

drwxr-xr-x 5 rooter users 4096 2007-12-17 14:51 security exposed

rooter@rooterlap:~$ cd prueba

rooter@rooterlap:~prueba$ ls -l

total 8

-rw-r--r-- 1 root root 0 2007-12-25 14:14 bit.txt

-rw-r--r-- 1 tux users 0 2007-12-25 14:21 carta.txt

-rwxr--r-- 1 rooter users 18 2007-10-28 13:15 file

-rw-r--r-- 1 root root 0 2007-12-25 14:14 hola.txt

drwxr-xr-x 2 rooter users 4096 2007-12-17 15:49 homie

-rw-r--r-- 1 tux users 0 2007-12-25 14:21 libro.txt

-rw-r--r-- 1 root root 0 2007-12-25 14:15 shellcode.txt

Aquí podemos ver que en el directorio de prueba hay varios archivos que pertenecen a 3 usuarios en especificos (root, rooter y tux).

Pero que tal si el usuario tux decide borrar algunos archivos, veamos.

tux@rooterlap:/home/rooter/prueba$ rm carta.txt file hola.txt

rm: remove write-protected regular file `file'? y

rm: remove write-protected regular empty file `hola.txt'? y

tux@rooterlap:/home/rooter/prueba$ ls -l

total 4

-rw-r--r-- 1 root root 0 2007-12-25 14:14 bit.txt

drwxr-xr-x 2 rooter users 4096 2007-12-17 15:49 homie

-rw-r--r-- 1 tux users 0 2007-12-25 14:21 libro.txt

-rw-r--r-- 1 root root 0 2007-12-25 14:15 shellcode.txt

Con esto el usuario tux borro el archivo carta.txt que le pertenecía a él, pero no solo eso también borro el archivo file que era del usuario rooter, pero lo peor de todo es que pudo borrar incluso el archivo hola.txt que era propiedad del usuario root, como podemos ver esto es algo muy peligroso, que nos puede llegar a ocurrir si no tenemos los permisos adecuados.

Ahora veamos que pasa al establecer el permiso del sticky bit con chmod

rooter@rooterlap:~$ chmod +t prueba/

rooter@rooterlap:~$ ls -l

total 188

drwx------ 3 rooter users 4096 2007-12-17 15:03 Desktop

drwxr-xr-x 2 rooter users 4096 2007-10-03 21:06 Documents

drwxr-xr-x 3 rooter users 4096 2007-10-13 14:27 coding

drwxrwxrwt 3 rooter users 4096 2007-12-25 14:30 prueba

drwxr-xr-x 5 rooter users 4096 2007-12-17 14:51 security exposed


El ultimo carácter del directorio prueba cambio de x a t, esto quiere decir que el sticky bit fue establecido.

Ahora veamos otro intento del usuario tux para borrar algunos archivos

tux@rooterlap:/home/rooter/prueba$ ls -l

total 4

-rw-r--r-- 1 root root 0 2007-12-25 14:14 bit.txt

drwxr-xr-x 2 rooter users 4096 2007-12-17 15:49 homie

-rw-r--r-- 1 tux users 0 2007-12-25 14:40 libro.txt

-rw-r--r-- 1 rooter users 0 2007-12-25 14:40 php.txt

-rw-r--r-- 1 root root 0 2007-12-25 14:15 shellcode.txt


tux@rooterlap:/home/rooter/prueba$ rm libro.txt

tux@rooterlap:/home/rooter/prueba$ rm php.txt

rm: remove write-protected regular empty file `php.txt'? y

rm: cannot remove `php.txt': Operation not permitted

tux@rooterlap:/home/rooter/prueba$ rm shellcode.txt

rm: remove write-protected regular empty file `shellcode.txt'? y

rm: cannot remove `shellcode.txt': Operation not permitted


tux@rooterlap:/home/rooter/prueba$ ls -l

total 4

-rw-r--r-- 1 root root 0 2007-12-25 14:14 bit.txt

drwxr-xr-x 2 rooter users 4096 2007-12-17 15:49 homie

-rw-r--r-- 1 rooter users 0 2007-12-25 14:40 php.txt

-rw-r--r-- 1 root root 0 2007-12-25 14:15 shellcode.txt

Nuestro usuario tux pudo borrar el archivo libro.txt ya que era de su propiedad, pero ahora no pudo borrar ningún otro archivo perteneciente a otro usuario.

Así que debemos de establecer los permisos adecuados para tener un buen uso de los ficheros en el sistema.

lunes, 29 de octubre de 2007

Montar usb en OpenBSD

Bueno esto lo escribo rápidamente, ya que lo utilice para obtener unos archivos de una maquina virtual en la cuál tengo OpenBSD.
Para este ejemplo hay que tener una carpeta donde se va a montar el dispositivo, en mi caso esta es /mnt/kingston/ para montar la memoria basta con introducir el siguiente comando:

mount -t msdos /dev/sd0i /mnt/kingston/

y con esto tendremos ya la memoria lista para empezar a trabajar.

domingo, 28 de octubre de 2007

Permisos en ficheros y directorios en GNU/Linux (Slackware)

Primero que nada hay que decir que los permisos nos va a permitir determinar que restricciones se tienen a la hora de acceder o modificar un archivo. Como sabemos GNU/Linux maneja todo como si fuera un archivo, de ahi que se tenga mucha importancia para determinar los permisos adecuados.

Primero para poder ver los permisos que tiene un determinado archivo lo hacemos con un ls -l

rooter@rooterlap:~/prueba$ ls -l
-rwxr--r-- 1 rooter users 18 2007-10-28 13:15 file*

Vamos a explicar esta linea
-rwxr--r-- son los permisos
1 # de enlaces duros
rooter propietario
users grupo al que pertenece
18 2007-10-28 13:15 fecha de la ultima modificacion
"file" nombre del fichero

Nosotros nos enfocaremos a los permisos dividiendolos en 4 partes -rw-r--r--
- este primer caracter nos indica - (fichero normal), d (directorio), l (enlace), p (pipe o tuberia)
rwx los 3 elementos siguientes nos indican los permisos que tiene el propietario
r-- los 3 elementos siguientes nos indican los permisos que tiene el grupo
r-- los 3 elementos siguientes nos indican los permisos que tienen otros

Existen otros permisos ademas de r (lectura), w (escritura) y x (ejecución) aqui vamos a incluir un resumen:

Tipo de permiso Valor octal Letra correspondiente
"sticky" bit 1 t
set user id 4 s
set group id 2 s
lectura 4 r
escritura 2 w
ejecución 1 x

Vamos a comenzar cambiando algunos de los permisos de este archivo, como pudimos observar en la parte superior al realizar el ls -l los permisos que tiene son lectura, escritura y ejecución para
el propietario y solo lectura para el grupo y para otros.

Mediante el comando chmod nosotros podemos cambiar el valor de los permisos de algún fichero.

Ejemplos:

1.- Los modificaremos mediante su valor en letras
rooter@rooterlap:~/prueba$ chmod ugo-r file
rooter@rooterlap:~/prueba$ ls -l
total 4
--wx------ 1 rooter users 18 2007-10-28 13:15 file*

Lo que hicimos fue a través del comando chmod especificar los permisos para el usuario, grupo y otros (ugo) y retirarle el permiso de lectura a todos (-r).

Ahora vamos a asignar de nuevo los permisos de lectura y escritura para todos

rooter@rooterlap:~/prueba$ chmod ugo+rw file
rooter@rooterlap:~/prueba$ ls -l
total 4
-rwxrw-rw- 1 rooter users 18 2007-10-28 13:15 file*

Ahora podemos ver que el archivo puede ser visto y modificado por todos pero solo ejecutado por el propietario.
También podemos asignar los permisos mediante su numero en octal, tomando en cuenta que el permiso final para cada sector (propietario, grupo y otros) será la suma de los permisos un ejemplo de esto queda así:

Vamos a establecer los permisos para que el propietario pueda realizar todo y los demas solo puedan leer el fichero; tomaremos en cuenta de la tabla anterior (r = 4, w = 2, x =1)

rooter@rooterlap:~/prueba$ chmod 744 file
rooter@rooterlap:~/prueba$ ls -l
total 4
-rwxr--r-- 1 rooter users 18 2007-10-28 13:15 file*

En el ejemplo superior el primer 7 significa que tendremos establecidos los permisos de rwx ("r=4 + w=2 + x=1" = 7), por lo tanto los otros dos que siguen 44 corresponden solamente al valor de solo lectura "r".

Todo esto se aplica de la misma forma a los directorios
rooter@rooterlap:~/prueba$ mkdir homie
rooter@rooterlap:~/prueba$ ls -l
total 8
-rwxr--r-- 1 rooter users 18 2007-10-28 13:15 file*
drwxr-xr-x 2 rooter users 4096 2007-12-17 15:49 homie/

domingo, 21 de octubre de 2007

Busqueda de archivos en GNU/Linux

Bueno antes de pasar a algo sobre umask quiero hacer unos ejemplos de busqueda de archivos en GNU/Linux (Slackware) para poder localizar lo que necesitemos, pues en fin aqui esta.
Pondre cada comando una breve descripcion y un ejemplo.
1) which
Se utiliza para encontrar programas rapidamente, lo que hace es buscar en el PATH y regresa la primera instancia que encuentra, asi como el path para este.
Ejemplo:
rooter@rooterlap:~$ which perl
/usr/bin/perl

2) whereis
Funciona de manera similar a which, pero ademas puede encontrar paginas man y archivos fuente.
Ejemplo:
rooter@rooterlap:~$ whereis perl
perl: /usr/bin/perl /usr/X11R6/bin/perl /usr/bin/X11/perl /usr/X11/bin/perl /usr/man/man1/perl.1.gz /usr/share/man/man1/perl.1.gz /usr/X11/man/man1/perl.1.gz

3) find
Permite realizar busquedas en el sistema de archivos con un amplia gama de parametros de busqueda (fechas, permisos, nombres, etc). Sirve para realizar busquedas mas especificas si se ejecuta como usuario normal nos mostrara alertas sobre los directorios a los cuales no puede acceder por falta de permisos.
Ejemplos:
root@rooterlap:/usr/local/src# find / -name kismet
/var/log/kismet
/usr/local/share/kismet
/usr/local/src/kismet-2007-01-R1b/scripts/kismet
/usr/local/bin/kismet
En el ejemplo anterior buscamos un archivo en especifico y en el siguente buscaremos archivos que tengan el bit sXid establecido.
root@rooterlap:/usr/local/src# find / \( -perm -02000 -o -perm -04000 \) -ls
558065 4 drwxrwsrwt 3 news news 4096 Feb 2 2006 /var/spool/slrnpull/out.going
558066 4 drwxrwsrwt 2 news news 4096 Feb 2 2006 /var/spool/slrnpull/out.going/rejects
............
4) slocate
Este comando realiza una busqueda en el sistema de archivos parecido a find, pero este busca en una base de datos en lugar del actual sistema de archivos.
Ejemplos
rooter@rooterlap:~$ slocate kismet
slocate: warning: database /var/lib/slocate/slocate.db' is more than 8 days old
/home/rooter/.kismet
/home/rooter/.kismet/ssid_map
/home/rooter/.kismet/ip_map
/var/log/kismet
.....................
Como podemos observar nos marca un warning sobre la base de datos que ya tiene 8 dias sin actualizarse, para actualizarla tenemos que ejecutar como root
root@rooterlap:/usr/local/src# updatedb

Asi ya no se muestra el mensaje
rooter@rooterlap:~$ slocate kismet
/home/rooter/_internet/Programas/Herramientas/kismet

Bueno por el momento es todo ya que hay que estudiar.

miércoles, 17 de octubre de 2007

Agregar windows en el fstab

Hoy tuve un little problema con mi PC, lo que sucedio fue que al pasar el antivirus (Norton) encontro segun el unos virus en mi maquina, los cuales son los cotidianos ya que trabajo con ellos (detectaba algunos como nc, cain y abel, sql.exe etc) que en su totalidad no son virus, son herramientas, pero en fin, el resultado fue que le dije bueno, algunos no los modifiques y otros mandalos a cuarentena, el resultado fue que ya no pude entrar a Windows se reinicia sin entrar a la pantalla de inicio, no entra ni a modo seguro, practicamente a nada, claro eso no es problema porque mi ArchLinux trabaja de maravilla, el detalle es que esa maquina la comparto y los demas quieren acceder a su Windows, en fin como aun no habia configurado Arch para que montara la particion de Windows pues fue hora de hacerlo por lo que ahora lo publicare.

Por lo tanto lo unico que debemos hacer es entrar en una consola como root y ponemos algo como esto
root@rooterlap:/home/rooter# emacs /etc/fstab
La linea que tenemos que agregar es la siguiente:
/dev/hda1 /windows ntfs ro,umask=0222 0 0
Recordemos que en la primer columna /dev/hda1 es su particion donde se encuentra windows puede ser tambien /dev/sda1, para estar mas seguros podemos hacer un cat /proc/partitions y ahi nos muestra todas las particiones en nuestro disco duro con sus respectivos size.
La segunda columna /windows es la carpeta donde va a montar la particion (recuerden crear la carpeta mkdir /windows), la tercer columna es el tipo de particion en este caso ntfs, la cuarta columna es una lista de las opciones que aplicara al sistema de archivos que monte (solo lectura ro y es para todos los usuarios umask=0222) y las 2 ultimas columnas son usadas por fsck (que sirve para revisar y reparar un sistema de archivos Linux) en este caso 0 0.

Bueno aqui les dejo la muestra de mi archivo para que tengan una idea

rooter@rooterlap:~$ cat /etc/fstab
/dev/hda5 swap swap defaults 0 0
/dev/hda6 / ext3 defaults 1 1
/dev/hda1 /windows ntfs ro,umask=0222 0 0
/dev/cdrom /mnt/cdrom auto noauto,owner,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
proc /proc proc defaults 0 0


Despues espero publicar algo sobre la umask, ahora si como veran y esto probablemente sea muchas veces, mezclo palabras con el idioma ingles esto es porque ahora publico desde mi lap (no tengo algunos caracteres ya que esta en ingles) y no le cambio el idioma al teclado porque se pierde mucho la configuracion de las teclas, por lo tanto algunos post seran de esta forma.

domingo, 14 de octubre de 2007

Bases

Bueno aquí les pongo unos link para comenzar empezaremos con Kriptopolis un portal donde se habla de criptografía y seguridad, desde mi punto de vista es uno de los mejores sitios en español que he encontrado y pues también para recomendarles algunas distribuciones de GNU/Linux y BSD que utilizo estás son:

1.- Slackware una de las mejores distribuciones, tal vez no sea tan sencilla de utilizar, pero yo me inicie en este mundo del Software Libre con esta distribución y despues de pasar por muchas otras (Mandrake, SuSe, Red Hat, Fedora, etc) regrese a utilizarla ya que te brinda mucho aprendizaje y un buen control sobre el SO(sistema operativo), de hecho aquí aprendí a utilizar los comandos de GNU/Linux.

2.- ArchLinux que es una distribución muy buena optimizada para i686, desde mi punto de vista es muy sencilla de utilizar, flexible y de un gran rendimiento.

3.- OpenBSD es un gran SO, para la seguridad ni hablar, es realmente muy bueno aunque a su vez también requiere varios aspectos a tomar en cuenta para su instalación en conjunto con otros SO.

Bueno por el momento creo que es todo, después comenzare a implementar algo de programación y el uso de algunas herramientas de seguridad.

También les dejo por el momento unas referencias de libros y videos, para los que están interesados en la seguridad informática un poco más.

a) "Hackers 4 Secretos y soluciones para la seguridad en redes" S. McClure, J. Scambray y G. Kurtz
b) "Programación de Linux al descubierto" Kurt Wall
c) "TCP/IP Network Administration" Craig Hunt
d) "Super Utilidades Hackers", K. J. Jones, M. Shema y B. C. Johnson

Videos
a) Los Piratas del Silicon Valley
b) Enigma
c) Documental Codigo Linux
d) Hackers 2

sábado, 13 de octubre de 2007

No se fracasa si existe un comienzo

Esta es una muy buena frase de uno de mis grupos favoritos Control Machete, bueno en su época cuando seguía Fermin, en fin, así como lo menciona este es el inicio, en este blog publicaré varias cosas relacionado todo o casi todo hacia la seguridad informatica que es algo que me gusta mucho. Tal vez la mayoría de los casos no ponga acentos o mi lenguaje no sea tan amplio, pero estoy tratando de recuperarme en ese aspecto, finalmente espero encuentres algo aquí que sea tu agrado, te sirva ó tal vez te muestre un panorama en ámbitos informaticos.
También quiero agregar un comentario para la mujer de mi vida, lo mas preciado para mi en este mundo, recuerda Ceci que eres todo para mi "TE AMO".