Copy Link
Add to Bookmark
Report
3x04 Seguridad en sistemas Unix / Linux (parte 1)
~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^
kSh kSh kSh kSh kSh kSh kSh
~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^
--------------------------------------
| SEGURIDAD EN SISTEMAS |
| UNIX / Linux (parte I) |
-------------------------------------- by Kralj Killer
Contenido
----------
1. INTRODUCCION
2. PERMISOS DE LOS ARCHIVOS
2.1 Tipos de Archivos en UNIX.
2.2 Asignando y Cambiando los Permisos de los Archivos.
2.2.1 /etc/passwd
2.2.2 $HOME
3. EL ARCHIVO PASSWORD
3.1 Usuarios Especiales.
3.2 Como se Encripta el fichero /etc/passwd
3.3 Algunos Problemas de Seguridad con el fichero /etc/passwd
3.3.1 cuentas con contrase¤as debiles.
3.3.2 cuentas sin contrase¤as.
3.3.3 cuentas del sistema.
3.3.4 los UID.
3.3.5 los permisos.
3.4 Escogiendo una Contrase¤a Segura.
4. EL ARCHIVO SHADOW PASSWORD
5. EL ARCHIVO DIAL-UP PASSWORD
6. EL ARCHIVO GROUP
7. CONTROL DE LAS CONTRASE¥AS
7.1 Valores de Caducidad de las Contrase¤as.
8. DESPEDIDA
============================
----- 1. INTRODUCCION -----
============================
En esta primera parte, tratare de informar primero que todo al Administrador
de Sistemas, la importancia de estos ficheros Password. Como tambien la
importancia de colocarle permisos a los archivos mas importantes del sistema.
En muchas ocasiones, la manera mas facil de ingresar un intruso en un sistema,
es por la NO informacion que dan los administradores a sus usuarios de la
importancia de cambiar la clave periodicamente, como tambien del ponerle los
permisos correspondientes a los archivos.
Como puedes ver la informacion es muy basica, asi que si ya tienes esto claro
lo mejor es que dejes de leer este documento.
=======================================
----- 2. PERMISOS DE LOS ARCHIVOS -----
=======================================
Los Permisos en los archivos de los sistemas UNIX, vienen en 9 bits, que se
reparten en 3 grupos de 3 bits.
Los 3 bits son los permisos que se le pueden dar a los archivos, y estos
permisos son:
- read (r) -> lectura.
- write (w) -> escritura.
- execute (x) -> ejecucion.
Los 3 grupos, son los usuarios del sistema, a los cuales se les dan permisos
por el archivo creado o existente. Los 3 grupos son:
- El 1 es el Due¤o del Archivo (UID).
- El 2 es el grupo al cual pertenece el due¤o del archivo (GID).
- El 3 al resto de usuarios del sistema.
Resumiendo esto, vamosnos con un ejemplo:
-rwxr-x--x
||_||_||_|
| | | |
| | | |__ El ultimo grupo de 3 bits, son los permisos que tienen los
| | | demas usuarios del sistema con el archivo. Como podemos ver
| | | solo tienen permiso de ejecucion.
| | |
| | |__ El siguiente grupo de 3 bits, son los
| | permisos que tiene el grupo con este archivo.
| | Como podemos ver tiene permiso de lectura y ejecucion.
| |
| |__ Estos 3 primeros, son los permisos del due¤o del archivo.
| Como podemos ver tiene permisos de lectura, escritura y ejecucion.
|
|__ El primer guion, quiere decir el tipo de archivo, en este caso como tiene
un guion (-), es un archivo Normal, pero tambien pudo tener una (d), una
(b), una (c), una (l), o una (p). Segun esto, como podemos ver hay varios
tipos de archivos en UNIX, pero la verdad es que solo hay un tipo de
archivo, y al resto de archivos se les dice especiales.
------------*---------------------*---------------------*-------------------*--
| NoTA |
| ====== |
| El ROOT, tiene permisos de lectura/escritura/ejecucion de todos lo archivos |
| del sistema. |
------------*---------------------*---------------------*----------------------
2.1 Tipos de Archivos en UNIX
----------------------------------------------------------
| Archivo Descripcion |
| ------- ----------- |
| (-) Archivo Normal |
| (d) Directorio |
| (b) Archivo de dispositivo de bloque |
| (c) Archivo de dispositivo de caracter |
| (l) Vinculo Simbolico |
| (p) Conducto designado |
|________________________________________________________|
============================================================
| 2.2 Asignando y Cambiando los Permisos de los Archivos |
============================================================
Es muy importante Asignarles permisos, a los archivos que creamos en nuestro
sistema, ya que a nadie le gustaria que le observaran las cifras financieras
de la empresa, etc...
Para este caso, tendremos que asignarle permisos a ese archivo, y para hacerlo
es muy importante tener en cuenta la siguiente tabla.
______________________________
| Octal | Permisos |
=============|================
| 0 | --- |
| 1 | --x |
| 2 | -w- |
| 3 | -wx |
| 4 | r-- |
| 5 | r-x |
| 6 | rw- |
| 7 | rwx |
|____________|_______________|
Asi que para agregarle los permisos a un archivo, jugamos con el programa
CHMOD, el cual tiene la siguiente sintaxis:
chmod <permiso para los 3 grupos> <archivo>
Ejemplo:
---------
Si tenemos el archivo cuentasfinancieras, podemos aplicarle los siguientes
permisos:
chmod 700 cuentasfinancieras
chmod 777 cuentasfinancieras
Como podemos ver, en el primer ejemplo le esta dando permisos de rwx para el
due¤o del archivo, y ningun permiso para el grupo y el resto de usuarios del
sistema.
Ya en el segundo archivo, vemos que a todos los usuarios del sistema le esta
dando permisos de rwx.
=====================================================================
| Cambiando los permisos de nuestro sistema, para mayor Seguridad |
=====================================================================
_______________________
2.2.1 El /etc/passwd
=======================
Ya como aprendimos a ponerles permisos a los archivos del sistema, ahora lo
mejor es empezar a cambiar los permisos de los archivos importantes del
sistema para impedir que los intrusos accedan a ellos.
El archivo mas importante, es el /etc/passwd, pero afortunadamente para los
intrusos, hay administradores que dejan este fichero con los permisos que
viene por default.
Comunmente este archivo, viene de la siguiente manera:
-rw-r--r--
Como vemos este archivo, tiene permisos de lectura para cualquier usuario del
sistema, no es sino entrar al sistema con la cuenta de cualquier usuario por
FTP y darle un get al archivo y listo, ya con un crackeador de password, y el
sistema estaria en peligro.
Para que esto no ocurra, podemos cambiarle los permisos al archivo de la
siguiente manera:
chmod 700 /etc/passwd
El archivo quedaria de la siguiente manera
-rwx------
O tambien podemos emplear el siguiente:
chmod 600 /etc/passwd
y quedaria asi
-rw-------
_________________
2.2.2 El $HOME
=================
Otro fichero, bastante importante en nuestro sistema, es el directorio de
entrada a nuestra cuenta.
Si algun intruso se da cuenta de que no tenemos permisos en este directorio,
puede entrar y llegar a borrar todos los datos que tengamos en ella, como
tambien puede instalar un troyano en ella, para que cada vez que entremos
nos llegue a capturar algun password.
El procedimiento de permisos es igual que los anteriores:
chmod 700 $HOME
chmod 711 $HOME
------------*---------------------*---------------------*-------------------*-
| NoTA |
| ====== |
| Como puedes ver, el tema de los permisos es bien importante para un |
| sistema, asi que lo mejor es transmitirle la informacion a los usuarios de |
| tu sistema para que este no se vea en blanco de los intrusos... |
------------*---------------------*---------------------*---------------------
================================
----- 3. EL ARCHIVO PASSWORD -----
================================
La estructura del archivo /etc/passwd, es la siguiente:
username:password:UID:GID:comentario:home:shell
Ejemplo:
kralj:jTKl5hR9scV1Pt:1002:100:Kralj Killer:/home/kralj:/bin/sh
| | | | | | |
| | | | | | |__ El shell, es para
| | | | | | que los usuarios
| | | | | | interactuen con el
| | | | | | sistema.
| | | | | |
| | | | | |__ El Home, es el directorio en
| | | | | el que se coloca al usuario
| | | | | al registrarce.
| | | | |
| | | | |__ Contiene informacion del usuario.
| | | |
| | | |__ Grupo al Cual pertenece el usuario.
| | |
| | |__ Identificacion del usuario en el sistema.
| |
| |__ Password Encriptado.
|
|__ Identifica al usuario ante el sistema, este es el Login.
Cada parte del archivo /etc/passwd, se encuentra separada por puntos, lo que
nos queda mas facil para distinguir cada parte del archivo.
En la parte del password encriptado, hay sistemas en los cuales se puede
encontrar que en esa seccion hay una (x) o un (*), esto quiere decir que el
password esta shadow, esto lo explicare mas adelante.
===============================
| 3.1 Usuarios Especiales |
===============================
En los sistemas UNIX, hay unos usuarios que realizan ciertas tareas especiales
en el sistema, y normalmente estan al comienzo del fichero /etc/passwd, ademas
tienen un UID en concreto que no sobre pasa de 100.
Estos usuarios especiales son:
root:yTBn07Mnv40oPz:0:0:Administrador:/root:/bin/bash
daemon:*:1:1:System Background Account:/sbin:
bin:*:2:2:System Librarian Account:/bin:
adm:*:3:4:Administration Subsystem:/var/adm:
lp:*:4:7:Line Printer Subsystem:/var/spool/lpd:
ftp:*:5:50:FTP:/home/ftp:
mail:*:8:12:Mail:/var/spool/mail:
news:*:9:13:News:/var/spool/news:
uucp:*:10:14:UNIX UNIX copy:/var/spool/uucp:
operator:*:11:0:operador:/root:
guest:oCvRT821Nnxc9:15:15:guest:/var/spool/pc:/bin/date
nobody:*:99:99::/tmp
====================================================
| 3.2 Como Se encripta el fichero /etc/passwd |
====================================================
Al principio, el fichero de password venia en archivo de texto, asi que cuando
el administrador del sistema, editaba el archivo, se creaba una copia la cual
quedaba a merced de todos los usuarios del sistema.
Para solucionar este problema, se creo un metodo de encriptacion de contrase¤as
que usa un algoritmo llamado crypt(3) quien fue implementado por Robert Morris
y Ken Thompson.
Cuando un usuario se registra en un sistema UNIX, hay un programa llamado getty
el cual le pide el login y ejecuta el programa de conexion, al pedirle la
contrase¤a, esta no se descifra sino que se compara con la que se encuentra en
el fichero /etc/passwd, si las contrase¤as comparadas son iguales, entonces
quiere decir que el usuario tiene acceso al sistema.
El algoritmo crypt(3) esta basado en el (DES), establecido por el instituto
Nacional de Estandares y Tecnologia (NIST).
El password introducido por el usuario al registrarce se encripta una y otra
vez hasta 25 veces, cuando termina los 64 bits resultantes se separan en once
caracteres imprimibles y despues se guardan en el archivo de contrase¤as.
Por tal motivo NO se conoce ningun metodo por el cual la contrase¤a encriptada
pueda verse en solo texto.
Al ver que la contrase¤a encriptada podria llegar a ser amenazada con los
grandes avances de Hardware, Robert y Ken implementaron una tecnica la cual
se llego a conocer como salt, el salt utiliza 12 bits que va desde 0 a 4,095
que se implementa con la contrase¤a encriptada, por tal motivo hay 4,096 formas
de que una contrase¤a quede encriptada. Esto quiere decir que pueden haber muchos
usuarios con la misma contrase¤a, pero al encriptarla el fichero que de distinto.
El salt esta basado a la hora en la cual se encripta la contrase¤a, ademas
podemos reconocer cual es el salt en una contrase¤a encriptada, ya que son los
dos primeros caracteres de la contrase¤a.
Ejemplo
--------
p7iJKl9rEsv6xC
Los caracteres p7 es el salt de la contrase¤a encriptada, asi que cuando un
usuario accede a un sistema, lo que se hace es que la contrase¤a que ingresa
el usuario se le aplica el salt de la contrase¤a que esta en el fichero /etc/passwd
y si al encriptarla coinciden, se le da acceso.
======================================================================
| 3.3 Algunos Problemas de Seguridad con el fichero /etc/passwd |
======================================================================
Veremos algunos problemas que se pueden llegar a encontrar en el fichero /etc/passwd
y que pueden llegar a comprometer la seguridad de su sistema.
Es importante que usted como administrador, verifique los problemas que se citaran
aqui y solucione los problemas en su makina.
3.3.1 Cuentas con contrase¤as debiles
--------------------------------
Intente Crackear el fichero /etc/passwd de su sistema y dece cuenta de las
contrase¤as que son faciles de adivinar, hagalo lo mas pronto posible, antes
de que un Cracker lo haga por usted y comprometa la seguridad de su sistema.
3.3.2 Cuentas sin Contrase¤as
------------------------
Esto es verdaderamente peligroso para su sistema, una cuenta sin contrase¤a
es el camino para que cualquier persona entre a su sistema.
Verifique en el fichero /etc/passwd si alguna cuenta NO tiene contrase¤a.
3.3.3 Cuentas del Sistema
--------------------
Hay alguna cuentas que vienen ya predeterminadas con los sistemas UNIX, que
son las cuentas especiales que vimos hace un rato arriba.
Es importante que verifique que estas contrase¤as tenga un (*) en el lugar
de la contrase¤a, si no es asi edite el fichero /etc/passwd y hagalo cuanto
antes. Si alguna persona se entera de que estas cuentas no tienen contrase¤as
puede acceder a su sistema a traves de ellas y poner en peligro su makinita.
3.3.4 Los UID
--------
Los UID es la identificacion de usted con la maquina, asi que pongase a
pensar si un usuario llegara a tener el mismo UID del root osea el UID 0.
Pues tendria los mismos privilegios que el administrador del sistema y
tendria la makina a su entera disposicion. Verifique en el fichero /etc/passwd
que esto no suceda.
3.3.5 Los Permisos
-------------
Como se dijo anteriormente, los permisos son tambien importantes en su sistema
y depende de ellos que sus archivos no se vean comprometidos. Vea la primera
parte de este articulo donde ya hable de los permisos...
============================================
| 3.4 Escogiendo una Contrase¤a Segura |
============================================
Es muy importante para su makina que usted escoja una buena contrase¤a como
root, y ademas usted deberia de capacitar a sus usuarios para que igualmente
escojan una buena contrase¤a y no se vea afectada la seguridad de su sistema.
Asi que le dare 5 indicaciones para una correcta eleccion de su contrase¤a.
1. Escoja una contrase¤a bastante larga, cuanto mas larga sera mas dificil
de adivinar.
2. NO anote la contrase¤a en ningun medio, ya sea electronico o impreso. Lo
mejor es que escoja una que la pueda recordar, pero NO la ande divulgando.
3. Escoja una contrase¤a con letras minusculas y mayusculas, ademas incluya
caracteres y numeros, que vayan en una posicion intermedia.
Ej: piL{Xo7[
4. NO escoja contrase¤as que tengan que ver con su nombre, apellido, identificacion
o alguna otra informacion suya, estas son las primeras que utilizan los intrusos
para entrar en su cuenta.
5. NO escoja palabras faciles de recordar, ni variaciones de ellas y ademas
que esten incluidas en cualquier diccionario.
------------*---------------------*---------------------*-------------------*--
| NoTA |
| ====== |
| Si usted es un administrador de algun sistema de computo, lo primero que |
| tendria que hacer para la verificacion de la seguridad de su sistema, es |
| la de tomar el papel de Cracker, e intentar romper la seguridad de su |
| sistema, ya sea buscando bugs o intentando descifrar las claves con un buen |
| diccionario y un crackeador de claves. |
------------*---------------------*---------------------*----------------------
=====================================
----- 4. EL ARCHIVO SHADOW PASSWORD -----
=====================================
Cuando las contrase¤as estan shadow, es porque en el archivo /etc/passwd hay
una (x) o una (*) en la parte de las contrase¤as. Asi que para ver las contrase¤as
cifradas nos tenemos que dirigir al fichero /etc/shadow, donde realmente estan
las contrase¤as de los usuarios pero logicamente encriptadas.
El archivo Shadow Password, es de solo lectura por el administrador del sistema
asi que esto solo nos da una minima parte de seguridad a nuestra makina.
El archivo /etc/shadow es igual al archivo /etc/passwd, solo que el shadow tiene
el nombre del usuario, la contrase¤a encriptada y la informacion de caducidad de
las contrase¤as.
El archivo /etc/shadow, seria algo asi:
root:GYtC0uvTrAQio:8899:0:0::
ftp:i7YtUoMAvb:8657::::
Este archivo solo puede ser creado por el root, mediante el comando pwconv, en
los sistemas SCO como en los SVR4.
=====================================
----- 5. EL ARCHIVO DIALUP PASSWORD -----
=====================================
Muchos sistemas UNIX ofrecen el acceso UUCP anonimo, lo que puede provocar la
entrada de un vandalo al sistema y poner en peligro este, ya que puede tener acceso
al archivo de contrase¤as.
Por tal motivo la opcion que han tomado los sistemas UNIX para permitir el acceso
a traves de marcado, es hacerlo con un terminal que soporte la autentificacion del
usuario. De esta manera todo el que quiera entrar al sistema usando el discado,
tendra que validarse ante el terminar para que le permita el acceso a la red.
La proteccion de contrase¤a de acceso telefonico se controla con los archivos:
/etc/dialups y /etc/d_passwd.
El archivo /etc/dialups contiene una lista de los puertos seriales protegidos por
la contrase¤a de acceso telefonico.
El archivo es algo asi:
# /etc/dialups
/dev/tty2A
#
El archivo /etc/d_passwd se usa para identificar el shell de login al cual corresponde
una contrase¤a dada.
El archivo es algo asi:
# /etc/d_passwd
/bin/sh::
/usr/lib/uucp/acceso::
#
Como ven hay dos campos, y estan limitados por puntos (:). El primer campo identifica
al shell, y el segundo campo la contrase¤a. En este ejemplo ninguno de ellos
tiene contrase¤a, asi que no le pedira contrase¤a al momento de registrarce.
La contrase¤a para acceso telefonico se agrega mediante la opcion (-m) en el
comando passwd. La sintaxis seria asi:
passwd -m shell
Donde shell, es una shell especifica en el archivo de contrase¤as de acceso telefonico.
Ahora si somos root, y queremos que los que ingresen por acceso telefonico accedan
a traves de passwd, tomamos la sintaxis anterior, y hacemos lo siguiente:
Ej:
# passwd -m /bin/sh
Setting modem password for login shell: /bin/sh
please enter new password:
modem password: xxxxxx
Re-enter password: xxxxxx
#
Como podemos ver, el administrador le asigno una contrase¤a de acceso telefonico
al shell /bin/sh, asi que todos los usuarios que tengan este shell y vallan a
ingresar al sistema telefonicamente, tendran que digitar la contrase¤a que introdujo
el root. Al hacer esto el comando passwd modifica el archivo /etc/d_passwd e incluye
la nueva contrase¤a:
# /etc/d_passwd
/bin/sh:UTv68XcsI3:
/usr/lib/uucp/acceso::
#
El shell /bin/sh, ya tiene contrase¤a...
===============================
----- 6. EL ARCHIVO GROUP -----
===============================
Los grupos se almacenan en un archivo que es el /etc/group. El formato de este
archivo es algo asi:
nombre_del_grupo:password:GID:lista_de_usuarios
Ej:
area_de_sistemas:*:178:cabezon,pardillo,carabelin
Como podemos ver el archivo /etc/group controla los usuarios para que pertenecen
a determinados grupos. Esto es bastante importante ya que a usted NO le gustaria
que los de la seccion de ventas entren a los archivos de los de la seccion financiera.
Como vimos al principio en la seccion de permisos, lo que se hace cuando un usuario
quiere ver un archivo es ver si este tiene el UID del que creo el archivo para
aplicarle los permisos de dicho archivo, sino verifica el GID para verificar si
pertenece al grupo de la persona que creo el archivo para aplicarle los respectivos
permisos, si no es asi pues le aplica los permisos del resto de los usuarios del
sistema.
========================================
----- 7. CONTROL DE LAS CONTRASE¥AS -----
========================================
La informacion de la caducidad de las contrase¤as se almacena junto con la
contrase¤a encriptada, como una serie de caracteres imprimibles. Los controles
se incluyen despues de la contrase¤a, precedidos por una coma. Los caracteres
despues de la coma representan la siguiente informacion:
- El numero de semanas en que es valida la contrase¤a.
- El numero minimo de semanas en las cuales el usuario no puede cambiar su
contrase¤a.
- La ultima modificacion de la contrase¤a.
__________________________________________________________________________
| 7.1 Valores de Caducidad de las Contrase¤as |
==========================================================================
| Caracter Valor en Semanas Caracter Valor en Semanas |
| . 0 / 1 |
| 0 2 1 3 |
| 2 4 3 5 |
| 4 6 5 7 |
| 6 8 7 9 |
| 8 10 9 11 |
| A 12 B 13 |
| C 14 D 15 |
| E 16 F 17 |
| G 18 H 19 |
| I 20 J 21 |
| K 22 L 23 |
| M 24 N 25 |
| O 26 P 27 |
| Q 28 R 29 |
| S 30 T 31 |
| U 32 V 33 |
| W 34 X 35 |
| Y 36 Z 37 |
| a 38 b 39 |
| c 40 d 41 |
| e 42 f 43 |
| g 44 h 45 |
| i 46 j 47 |
| k 48 l 49 |
| m 50 n 51 |
| o 52 p 53 |
| q 54 r 55 |
| s 56 t 57 |
| u 58 v 59 |
| w 60 x 61 |
| y 62 z 63 |
--------------------------------------------------------------------------
Asi que vamosnos a un ejemplo para entender un poco esto:
kralj:UvIJn4sAv89X9z,T5:302:120:Kralj Killer:/users/kralj:/bin/sh
Mirando despues de la coma vemos que hay un T5, esto quiere decir que tengo 31
semanas antes de que dicha contrase¤a expire. y tengo 7 semanas minimas antes
de que la pueda cambiar.
Cada vez que yo entre a la cuenta, se verifica la fecha de caducidad, para ver
si yo e cumplido con los parametros que se han establecido ahi.
Para un mayor control del sistema, usted puede obligar a un usuario a que cambie
la contrase¤a la proxima vez que ingrese al sistema, o puede hacer de que el
sistema no le permita cambiar la contrase¤a, para eso, hacemos lo siguiente:
-> Para que cambie la contrase¤a la proxima vez que ingrese:
kralj:UvIJn4sAv89X9z,./:302:120:Kralj Killer:/users/kralj:/bin/sh
-> Para que NO pueda cambiar la contrase¤a:
kralj:,..:302:120:Kralj Killer:/users/kralj:/bin/sh
========================
----- 8. DESPEDIDA -----
========================
Espero de que esto haya sido de utilidad para las personas que se inician en
esto de la seguridad de los sistemas, mas que todo en las makinas UNIX.
Para la proxima salida del kSh espero realizar la segunda parte algo mas tecnica,
solo espero que los interesados en esto de la seguridad y a los cuales les gusto
o NO le gusto esta primera entrega me escriban y me ayuden a mejorarla.
No es mas, solo espero que sigan leyendo el kSh ezine. Un saludo para todo el Team.
Ah y no se les olvide visitar la web de kSh...
Salu2
-=Kralj Killer=-
kraljkiller@kshezine.org
http://www.kshezine.org
--> kSh Team Security <--
~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^
kSh kSh kSh kSh kSh kSh kSh
~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^~^