Sie sind auf Seite 1von 13

SEGURIDAD EN LINUX

1.- INTRODUCCIÓN Y ASPECTOS GENERALES

SOBRE LA SEGURIDAD EN UN SISTEMA INFORMÁTICO

1.1 Seguridad Física

1. Uso del equipo por personal autorizado.


2. Solo podrá tener acceso al equipo aquel personal que cuente con conocimientos
mínimos sobre computación.
3. Poder contar con mas de un servidor de base de datos lo cual asegure la
integridad total de la información.
4. Ubicación de las instalaciones que cumplan con normas internacionales de
calidad (ISO 9000).
5. Control de alarma la cual notifique en todo momento sobre la integridad física
del sistema.

1.2 Seguridad Lógica

1. Construcción de contraseñas en diversos niveles del sistemas donde permita solo


el acceso en base a niveles de seguridad de usuarios con permiso.
2. En base al sistema operativo que use como plataforma, algoritmos que generen
claves para poder encriptar los archivos de contraseñas dentro del sistema lo
cual me permita mayor seguridad en un entorno de red.
3. Generar un módulo del sistema para la emisión de reportes para el administrador
del sistema en donde se muestre tablas de uso del sistema así como los usuarios
y los niveles de acceso por parte de los tales para poder determinar el uso y
acceso al sistema.
4. También es necesario contar con el diseño de módulos que ejecuten un Control
de alarma la cual notifique en todo momento sobre la integridad de la
información del sistema.

1.3 Conducta del usuario

1. Establecer campañas constantes sobre la funcionalidad y logros que se


alcanzaran con el sistema los cuales creen una conciencia en el usuario y logren
forman en el un interés en el uso del sistema.
2. Análisis del uso y trayecto del sistema por parte de los usuarios para poder
detectar fugas de información y posibles problemas con los datos accesados del
sistema.

2.- PASOS PARA DETERMINAR SI UNA RED HA SIDO HACKEADA

1. Examina los ficheros de log buscando conexiones desde lugares inusuales o


cualquier actividad fuera de lo normal. Por ejemplo, mira el ultimo log, "process
accounting", todos los logs creados por syslog, y otros logs de seguridad. Si tu
firewall o tu router escriben logs en lugares distintos de donde los escribe el
sistema estudiado, recuerda chequear también esos logs. Esta no es una garantía
completa a no ser que "los logs se escriban en un append-only media"; muchos
intrusos editan los ficheros de log para intentar ocultar su actividad.
2. Busca los ficheros con los bits setid y setgid activados (especialmente los setuid
de root) en todo el sistema. Los intrusos suelen dejar copias de programas
como /bin/sh o /bin/time con el bit "setuid" activado para permitirles acceso a
root mas tarde. Se puede usar el programa de UNIX find(1) para encontrar
ficheros con setuid y/o setgid activados.
3. Comprueba los binarios del sistema para asegurarte de que no han sido
alterados. Hay intrusos que cambian programas en sistemas UNIX tales como
login, su, telnet, netstat, ifconfig, ls, find, du, df, libc, sync, cualquier binario
referenciado en /etc/inetd.conf, y otros programas de red y del sistema críticos
así como librerías de objetos compartidas.
4. Ten cuidado a la hora de confiar en los backups; tus backups pueden contener a
su vez caballos de Troya.
5. Comprueba que en tu sistema no existan programas no autorizados de
monitorizacion de red, comúnmente llamados sniffer "packet sniffer". Un
intruso puede usar un sniffer para capturar información de la cuenta y password
de un usuario.
6. Examina todos los ficheros que son ejecutados por cron y at. Hay intrusos que
dejan puertas traseras en ficheros ejecutados por cron o enviados a at pues
permiten al intruso volver al sistema.
7. También, verifica que todos los ficheros/programas referenciados por los jobs de
cron y at, y los ficheros del job en si mismos, no tienen permisos de escritura
para todo el mundo.
8. Comprueba que no haya servicios no autorizados. Inspecciona el /etc/inetd.conf
buscando cambios no autorizados. Busca entradas que ejecuten un programa
shell, y verifica todos los programas especificados en /etc/inetd.conf para
comprobar que son correctos y que no han sido reemplazados por un caballo de
Troya.
9. También chequea servicios legítimos que hayas comentado en el /etc/inetd.conf.
Algún intruso puede haber habilitado un servicio que previamente habías
deshabilitado o sustituir el programa inetd por un caballo de Troya.
10. Examina el fichero /etc/passwd y comprueba las modificaciones de dicho
fichero. Verifica que no haya nuevas cuentas creadas sin autorización, cuentas
sin password, o cambios en el UID (especialmente UID 0).
11. Comprueba que no existan entradas no autorizadas en los ficheros de
configuración de red y del sistema. En particular, busca entradas con '+' y
nombres de hosts externos no apropiados en el fichero /etc/hosts.equiv,
/etc/hosts.lpd, y en todos los ficheros .rhosts. Estos ficheros no deben tener
permisos de escritura para todo el mundo. Además, confirma que estos ficheros
existían previamente a ninguna intrusión y que no han sido creados por el
intruso.
12. Busca por todo el sistema ficheros raros u ocultos, pues estos ficheros pueden
usarse para ocultar herramientas e información.
13. Examina todas las maquinas de la red local cuando busques señales de una
intrusión. Si la seguridad de un host se ha visto comprometida, la seguridad de
otros en la red también.

3. CUOTAS
Las cuotas permiten especificar limites en dos aspectos del almacenamientoen disco: El
numero de inodos que puede poseer un usuario o un grupo; y el numero de bloques de
disco que puede ocupar un usuario o un grupo. La idea que se esconde detrás de las
cuotas es que se obliga a los usuariosa mantenerse debajo de su limite de consumo de
disco, quitándoles su habilidad de consumir espacio ilimitado de disco en un sistema.

Las cuotas se manejan en base al usuario y al sistema de ficheros. Si elusuario espera


crear ficheros en mas de un sistema de ficheros, las cuotas deben activarse en cada
sistema de ficheros por separado.

4.- DETECCION DE INTRUSOS MEDIANTE ANALISIS DE HUELLAS

4.1 Ficheros que guardan registros:

utmp: Guarda un registro (log) de los usuarios que estan tilizando el sistema mientras
estan conectados al sistema. Directorios: /var/adm/utmp y /etc/utmp

wtmp: Guarda un log cada vez que un usuario se introduce en el sistema o sale del
sistema. Directorios: /var/adm/wtmp y /etc/wtmp

lastlog: Guarda un log del momento exacto en que un usuario entro por ultima vez.
Directorio: /var/adm/lastlog

acct o pacct: Registra todos los comandos ejecutados por cada usuario (aunque no
registra los argumentos con que dichos comandos fueron ejecutados). Directorio:
/var/adm/acct

4.2 Comandos que permiten ver el estado del sistema:

who y users: Permite saber quien esta conectado al sistema en el momento en que
ejecutamos el comando.

finger: Lo mismo que el comando who, con el añadido de que podemos saber que
usuarios estan conectados a una determinada maquina en el momento en que ejecutamos
el comando.

last: Muestra la ultima vez que se conecto un usuario. Last toma la informacion que
saca en pantalla del fichero wtmp.

ps: Permite saber que procesos estan siendo ejecutados por el sistema y que usuarios los
ejecutan.

accton: Activa un proceso llamado accounting, que es el que proporciona informacion


al fichero acct.

lastcomm: Permite saber que comandos han ejecutado los usuarios.Lastcomm toman la
informacion que sacan por pantalla del fichero acct.
Por lo tanto, si queremos borrar nuestras huellas del sistema, bastar con borrar cualquier
log relativo a nuestro usuario de los ficheros utmp, wtmp y acct. Esto se puede hacer de
dos formas:

4.3 Eliminar huellas de utmp y wtmp

1. No borramos los ficheros pero los dejamos con cero bytes.


2. Editar los ficheros con un ‘zapper’ que pueden borrar los datos relativos a un
usuario en particular de estos ficheros dejando el resto de los datos intacto.

4.4 Eliminar huellas de acct

Es bastante complicado borrar nuestras huellas de este fichero, de hecho no se pueden


borrar del todo, aunque se pueden reducir a una minima parte nuestra presencia en el
sistema.

4.5 Mas sistemas de log:

• Syslog: Mediante el syslog se puede configurar de tal forma que determinados


programas, procesos o aplicaciones generen mensajes que son enviados a
determinados ficheros donde quedan registrados dichos mensajes.Este fichero si
puede ser editado en modo texto y puede ser analizado para ver dónde hemos
ido dejando rastros y posteriormente borrar esas huellas, aunque por supuesto,
necesitamos ser root para poder hacerlo.
• TCP-Wrapper: Se trata de una aplicacion que proporciona una serie de
mecanismos para el registro y filtro de aquellos servicios invocados o llamados a
traves del inetd (internet daemon). Con esta herramienta el administrador posee
un control absoluto de las conexiones hacia y desde su maquina y es informado
en todo momento de las conexiones que se han hecho desde su maquina y hacia
su maquina.

5.- SISTEMAS DE CONTRASEÑAS EN LINUX

5.1 Sistema de cifrado de passwords

El estandar DES transforma la informacion de texto llano en datos encriptados llamado


texto cifrado mediante el uso de un algoritmo especial y valor semilla llamado clave. En
el sistema crypt(3) el texto llano se encripta en un grupo de ceros, posteriormente el
texto cifrado resultante es encriptado de nuevo con el password del usuario como clave,
repitiendose este proceso 25 veces. Una vez finalizado, los 64 bits se dividen en 11
caracteres y se guardan en el archivo /etc/passwd.

Para "animar" un poco mas la cosa se utiliza lo que se denomina en criptologia como un
"grano de sal". Se trata de un valor de 12 bits que se utiliza para modificar el resultado
de la funcion DES, esto es, un valor que puede variar de 0 a 4095. Asi que para cada
contraseña posible existen 4096 formas de encriptacion y almacenamiento.

Cuando utilizamos el programa /bin/passwd para introducir una nueva contraseña, dicho
programa utiliza un "grano de sal" basado en la hora del sistema, la cual es utilizada
para la funcion de calculo de la contraseña encriptada. Esta sal es guardada junto a la
contraseña en el archivo /etc/passwd. Asi que los dos primeros caracteres de una
contraseña encriptada son en realidad el "grano de sal".

Asi pues, un password una vez encriptado no se puede desencriptar. Pero esto no quiere
decir que el password este seguro y no se pueda averiguar.

5.2 ¿ Donde va la clave que tecleo cuando el sistema me pide "password" ?

Va al fichero /etc/passwd, salvo que tengamos Shadow Password en esta forma:

rcano : xkHrjur : 501 : 1000 : Roberto Cano,,, : /home/rcano : /usr/bin/zsh

Cada línea de este fichero representa a un usuario del sistema y contiene informacion
sobre el, repartida en 7 campos separados por ":", a saber:

• login del usuario rcano


• password encriptada xkHrjur
• Clave cifrada UID del usuario 501
• GID del grupo del usuario 1000
• Nombre Completo Roberto Cano
• Home directory /home/rcano
• SHELL por defecto /usr/bin/zsh

Si en tu sistema tienes "Shadow Password", en vez de una clave cifrada verás una "x".
Si no tienes nada es que ese usario no tiene clave asignada. Si hay un "*" esa cuenta esta
deshabilitada.

5.3 ¿Como puedo adivinar la clave de un usuario?

El fichero /etc/passwd tiene permisos de lectura para todo el mundo, con lo cual todo el
mundo puede leer la clave encriptada de todo el mundo. Podemos ver la clave, pero esta
cifrada según un método ( estándar de encriptación DES ) con lo que es practicamente
imposible averiguar la clave original.

El problema es que es tremendamente fácil dedicarse a encriptar palabras de un fichero


y ver si coinciden con la clave encriptada.

Tambien podemos usar programas de adivinacion de claves. Estos programas usan


diccionarios de claves, que son simplemente archivos con miles y miles de logins y
passwords diferentes. Diccionarios en Internet hay de todos los idiomas conocidos y
algunos por conocer, asi como ficheros con nombres famosos, grupos de musica,
actores, etc. Es posible que tengas incluso un fichero-diccionario en tu sistema busca
en /usr/dict/spanish ó /etc/dictionary. Los programas buscadores de contraseñas son
facilmente diseñables, en realidad uno sencillo puede crearse en menos de 30 lineas de
codigo.

Esta forma de buscar claves válidas se conoce como el método de la fuerza bruta y si no
tomamos precauciones puede ser muy efectivo.
Para mantener una seguridad decente en tu sistema Linux, en lo concerniente a la
entrada al sistema, dos son las medidas basicas a adoptar:

• Elegir passwords "resistentes"


• Usar un sistema con "Shadow Password"

5.4 Como elegir una clave segura.

• Nunca elegir como clave la misma palabra que el "login" ( es lo primero que
prueban los programas de crackeo).
• Nada de elegir una "palabra clave" recuerda que hay diccionarios de todos los
idiomas, asi como de nombres propios o apellidos, de personas y cosas famosas
etc. La clave no debe ser una palabra!
• Tampoco vale una palabra modificada fácilmente, los programas de crackeo
descritos permiten incluso atacar combinaciones de palabras con prefijos y
sufijos, Mayusculas-minúsculas, orden inverso... etc.
• Elige pues, una combinación de letras ( a ser posible mayúsculas y minúsculas,
recuerda que son diferentes ) y números o signos de puntuación ( comas, puntos
guiones ... )
• No elijas cosas obvias como tu fecha de cumpleaños, el nombre de tu
perro/novia/mujer/hijo la matrícula de tu coche, tu número de teléfono.. Ah! y
no la apuntes en un POST-IT en tu monitor!! ;)

5.5 ¿Como cuanto de segura?

Un programa de "cracking" puede ensayar y comparar 10.000 combinaciones por


segundo. El tiempo máximo que tardaría un cracker en encontrar una clave de 8
caracteres que use minusculas, mayusculas, numeros y simbolos seria de ¡¡19.329
AÑOS!!

Por el contrario, si un usuario elige una clave de 6 caracteres, todas letras minúsculas. A
10.000 combinaciones por segundo, su clave sería encontrada en ¡¡8 horas y media!!

5.6 Shadow Password.

Claves en la sombra. Los sistemas modernos ya no depositan la clave encriptada en


/etc/passwd, sino en otro llamado /etc/shadow al que solo tiene acceso el root. En el
lugar de la clave encriptada, en el fichero /etc/passwd se coloca una "x" :

rcano : x : 501 : 1000 : Roberto Cano,,, : /home/rcano : /usr/bin/zsh

El paquete Shadow proporciona más características adicionales de seguridad, como por


ejemplo:

• Fichero de configuración para establecer opciones para el "login" (


/etc/login.defs )
• Utilidades para añadir, modificar y borrar cuentas de usuarios y grupos
• Claves con fecha de "caducidad"
• Expiración de claves y bloqueo de cuentas
• Mejor control sobre la elección de las claves de los usuarios ( no nos dejará
elegir cualquier clave sencilla de adivinar )

Al administrador del sistema le queda la tarea de comprobar que todo el mundo tiene
una clave mínimamente resistente, para lo cual tendrá que probar alguno de los
programas de crackeo de claves descritos sobre su mismo sistema.

6.- INTRODUCCIÓN A PGP

6.1 ¿Qué es PGP?

PGP es "Pretty Good Privacy" o en castellano "Intimidad Bastante Buena", y es un


programa para cifrado del correo electrónico (y para todo tipo de información) que
reune tres características: Es rápido, seguro y gratis.

6.2 ¿Para qué me puede servir?

1. Nadie leerá el correo electrónico (e-mail) salvo su destinatario. Es decir tendrá


"intimidad" mediante cifrado o encriptado de su mensaje.
2. Nadie podrá suplantar su identidad en Internet y enviar mensajes trucados, así
como retocar o alterar los suyos originales (Autentificación mediante firma
digital).

Esto se consigue a través de un potente mecanismo conocido como "Criptografía de


clave pública" del que hablaremos más adelante y que ha provocado no pocos
problemas legales a su autor.

7.- EMAIL BOMBING Y SPAMMING

7.1 Descripción

El email bombing es consecuencia de mandar repetidamente mensajes a una dirección


particular.

El email spamming es una variante del bombing; envía email a cientos o miles de
usuarios. Puede dañar aún más si los destinatarios contestan ese email, causando que
todas las direcciones originales reciban esa contestación.

El email bombing y el spamming puede combinarse con el spoofing, el cual altera la


identidad de la cuenta que manda el email, haciendo más difícil saber de dónde viene el
mensaje.

7.2 Detección

Si tu email es lento o no parece que sea enviado ni recibido, la razón puede ser que el
sistema está intentando procesar un número alto de mensajes.

7.3 Reacción
1. Identifica el origen del email bombing o spamming y configura tu router para
prevenir prevenir la llegada de paquetes de esa dirección.
2. Revisa las cabeceras de los email para determinar el verdadero origen del email.
Contacta con el sistema que has identificado para alertarle de la acción.

7.4 Prevención

Desafortunadamente, en este momento, no hay ninguna forma de prevenir el email


bombing y spamming (excepto desconectarte de Internet), y es imposible predecir el
origen del próximo ataque.

1. Crea tus propias herramientas que te ayuden a reconocer y a responder el email


bombing y spamming y, de esta forma, minimizar el impacto de esta actividad.
Estas herramientas deberían incrementar las capacidades de entrada y chequear y
alertar de los mensajes entrantes/salientes que salen de un mismo usuario o sitio
en un corto espacio de tiempo.
2. Si tu proveedor tiene pocos servidores de correo, puedes configurar tu firewall
para asegurarte de que las conexiones SMTP desde fuera de tu firewall pueden
ser hechas sólo a tu servidor central de correo y a ninguno de los otros sistemas.
3. Aunque no prevenga el ataque, minimiza el número de máquinas desprotegidas
frente a los intrusos ante un ataque basado en el SMTP controlando el SMTP de
alguna manera. Con esto, sólo tienes un pequeño número de sistemas--el
servidor principal de correo y algún otro de copia de seguridad--que configurar.
4. No propagues el problema siguiendo con (o respondiendo) el masivo envío de
correo.

8.- SPOOFED/FORGED EMAIL

8.1 Descripción

El email spoofing puede ocurrir de distintas formas, pero todas tienen el mismo
resultado: un usuario recibe un email que parece haber sido enviado de un cierto sitio,
pero realmente ha sido remitido desde otro. Es a menudo un intento de engañar al
usuario para que revele información sensible (por ejemplo, el password) o dañina.

Ejemplos de email spoofing que pueden afectar la seguridad del sistema son:

• mensajes remitidos por el administrador del sistema obligando a los usuarios a


cambiar su password por otro que se les proporciona, suspendiendo su cuenta si
no se hace.
• mensajes remitidos por una persona de la "autoridad" obligando a los usuarios a
enviarle una copia del archivo de password o de otro tipo de información
sensible.

8.2 Reacción

1. Revisa toda la información (cabeceras de los email y los archivos de estado del
sistema) relacionados con el email spoofing, siguiendo las políticas y
procedimientos de tu organización.
2. Examina los archivos de estado del tcp_wrapper, ident y sendmail para
averiguar el origen del email spoofing.
3. La cabecera del email trae a menudo un completo registro de los saltos que ha
dado hasta llegar al destino. La información en la cabecera (el Received: y el
Message-ID), junto con los archivos de estado (logs), deberían ayudarte a
determinar cómo el mensaje ha alcanzado tu sistema.

8.3 Prevención (Disuasión)

1. Usa firmas criptográficas (por ejemplo, PGP "Pretty Good Privacy" u otra
tecnología para encriptar) para intercambiar mensajes autentificados. je.
2. Configura tu demonio de correo para prevenir que nadie se conecte a tu puerto
SMTP y haga email spoofing.
3. Considera un único punto de entrada de email a tu sistema. Puedes hacer esto
configurando tu firewall para que las conexiones SMTP desde el exterior deban
ir a través de un servidor central de correo.

Seguridad en Linux
Bien ahora vamos a empezar con la seguridad en linux, y previamente como hackearlo,
muy bien empezamos. Nada mas conectarse por defevto tienes todos los puertos
habiertos, lo que tienes que hacer es lo siguiente: Edita el archivo /etc/inetd.conf y pon
un '#' delante de todos los servicios que no ofrezcas. Recuerda que esto se refiere los
servicios que quieres DAR no a los que quieres ACCEDER, o sea que para entrar en un
ftp no necesitas tener abierto el puerto ftp.

Truco: Lo que no sepas que hace ciérralo!


Truco: Puedes cerrar absolutamente todo. (Para entrar en algunas redes de IRC es
necesario abrir el puerto auth)
Truco: Algunos ataques automatizados, tipo nukes y otros, buscan siempre el mismo
puerto, por ejemplo el 139 (net-bios). Si te ves obligado a dar este tipo de servicios no
seria una mala idea cambiar el puerto por defecto, esto se consigue modificando en el
/etc/services la linea correspondiente al servicio, en nuestro caso podríamos substituir:

netbios-ssn 139/tcp nbssn

por:

netbios-ssn 140/tcp nbssn

Con esto pasamos a dar el servicio de net-bios por el puerto 140 y el 139 se cierra.
Cuidado! Es muy probable que tengas que modificar los programas que usan net-bios
para que sigan funcionando.

El passwd :

En concreto /etc/passwd. Este es el archivo mas ansiado (junto con el de los passwords
para internet) por los hackers, así que lo mejor será protegerlo.
Asegúrate que sus permisos son:

-rw-r--r-- 1 roto roto 239 Oct 31 1997 passwd

Instala el paquete shadow-utils, este paquete protege los passwords encriptándolos en


otro archivo al que sólo tiene acceso roto, por lo que hacerse con el /etc/passwd no sirve
de nada. Ademas para los pies a la mayoría de crakeadores de passwords. Aunque
parezca una tontería, usar shadow passwords es una de las protecciones mas eficaces
contra logins indeseados.

Truco: Elige passwords difíciles de averiguar, que contengan letras, números y


caracteres, y si puede ser que la palabra no tenga sentido en ningún idioma. Por ejemplo
mAKew3t$ es un buen password.

Truco: Usa el programa John The Ripper para testear la seguridad de tus passwords, si
es capaz de crakearlos en pocas horas es que tu password no es seguro.

Limitando el acceso de roto:

El usuario roto es siempre un peligro potencial. El sistema considera que roto sabe
perfectamente lo que hace por lo que ni siquiera pedirá confirmación si por error
formateamos el disco, imaginaos el desastre ...
Reduciendo las vías de acceso de roto al sistema minimizamos riesgos a la vez que nos
forzamos a nosotros mismos a dejar de trabajar con roto.

Edita el archivo /etc/securetty y deja solo las consolas en las que quieres que roto pueda
entrar. Este archivo contiene una lista de terminales (tty) en las que puede entrar roto,
una por linea. Eliminando las lineas que no deseemos evitamos el acceso de roto a ese
terminal.

Conozco sistemas en los que roto no puede hacer ningún login y la única manera que
tiene de entrar al sistema es mediante el comando "su" que además solo puede ser
ejecutado por un grupo muy reducido de usuarios. Sin llegar a este extremo, algo
recomendable es dejar por ejemplo las tres primeras consolas para el acceso de roto.

Lo mejor seria que nunca se hiciese login como roto, en lugar de esto podemos usar el
comando su para tener privilegios de roto momentáneamente, cambiar lo que haga falta
y teclear exit para volver a ser usuario normal sin peligro de estropear nada.

Truco: Nunca, nunca, nunca, dejes acceso por telnet a roto, elimina todas las entradas
con ttyp?
Truco: Estas restricciones no protegen contra el uso del comando su!

Tcp_wrappers:

Para esto necesitas tener instalado el paquete tcp_wrappers, lo puedes encontrar en


Cualquier ftp de linux y seguramente en el CD de tu distribución ya compilado y pre-
configurado.
Este software permite filtrar todas las peticiones de acceso a tu máquina y permitirlas o
no en función de unas reglas que tu mismo pones.
Es importante saber que el puerto permanece abierto, lo que se cierra son las conexiones
no autorizadas, por lo que tcp_wrappers no nos protegerá contra ataques como nukes ni
esconderá el puerto ante un escaneado.

Uso de tcp_wrappers: para filtrar un puerto a través de tcp_wrappers debes definir ese
puerto en el /etc/inetd.conf con una linea parecida a esta:
ftp stream tcp nowait roto /usr/sbin/tcpd ftpd

Las reglas que permiten o no el acceso se definen en /etc/hosts.allow (para las


conexiones aceptadas) y /etc/hosts.deny (para las rechazadas).
La sintaxis es muy simple: puerto: host: comando

Ejemplo:
ftpd: ALL: spawn ( /bin/echo -e " Intruso %a %n en %d" ; wave -l10 -d1 -f2000 ) &
Esta linea, en el /etc/hosts.allow filtra los accesos al puerto ftp (ftpd) de todo el mundo
(ALL) y después de permitirle el acceso realiza los siguientes comandos (spawn):
/bin/echo -e " Intruso %a %n en %d": Saca por pantalla un mensaje indicando los datos
del intruso y el puerto atacado.
wave -l10 -d1 -f2000: Emite un sonido por si no estas atento al mensaje.

Otro ejemplo (un sistema cerrado a lo bestia):


ALL: ALL: twist ( /usr/local/bin/teardrop %a ) &
Explicación: a los accesos a Cualquier puerto (ALL) por parte de Cualquier persona
(ALL) deniega el acceso (twist) y lanza un teardop al curiosillo de turno.

Muchísima mas información en man inetd.conf, man tcpd, man hosts.allow

El orden en que se definen las reglas es importante, ya que tcp_wrappers las va


examinado una a una desde la primera a la ultima hasta encontrar una regla que se
cumple, momento en el que ejecuta el comando indicado. Por eso es necesario que las
reglas estén ordenadas de mas permisivas a mas restrictivas, por ejemplo si en
hosts.allow ponemos en la primera linea ALL: ALL: todas las conexiones serán
aceptadas independientemente de que en lineas posteriores filtremos ciertos o no,
captáis? si no e-mail me :)

Truco: Define en /etc/hosts.allow los puertos a los servicios que quieras ofrecer y pon
en /etc/hosts.deny ALL: ALL
Truco: Los parámetros permiten hacer cosas al intruso usando spawn ( programa %a ) ...
deja volar tu imaginación.
Truco: La linea ALL: PARANOID detecta los intentos de spoof y similares

services:

Este archivo, localizado en /etc/services es una base de datos que contiene información
sobre los puertos.

Es importante remarcar que no indica si un puerto esta abierto o cerrado, es solo una
guía para que los programas sepan localizar los servicios y como responder a las
peticiones. Por lo tanto en principio no debemos tocar nada de este archivo. El archivo
donde se abren o cierran puertos es inetd.conf.
De forma "extraoficial" podemos comentar lineas para cerrar los puertos que definen.
Atención! Este no es un método correcto y solo lo recomiendo en el caso de que el
puerto implicado no sea definido en el inetd.conf y no podamos usar un firewall para
protegerlo.

Podemos ver mas información en man services.

Nuevos puertos/servicios:

Juntando todo lo aprendido hasta aquí sobre servicios y puertos ya estamos en


disposición de crear nuestros propios puertos con sus respectivos servicios.

Como sencillo ejemplo voy a crear un nuevo servicio en el puerto 22 que será atendido
por un demonio telnet. Para distinguirlo del telnet normal (puerto 23) le llamaremos
telnet2. Tenemos que modificar los siguientes archivos:

/etc/services: aquí añadimos el servicio, definiendo el puerto que usa y su nombre:

telnet2 22/tcp telnet2 # Telnet 2

/etc/inetd.conf: aquí definimos las opciones y el demonio que atiende al nuevo servicio:

telnet2 stream tcp nowait roto /usr/sbin/tcpd in.telnetd2

Usar in.telnetd2 en lugar de in.telnetd es un truquillo para poder distinguir fácilmente


los dos servicios y poderlos configurar por separado, no olvides hacer un link de
in.telnetd a in.telnetd2

/etc/hosts.allow: por supuesto, el nuevo servicio puede ser filtrado por tcp_wrappers
para delimitar su accesibilidad:

in.telnetd2: ALL: twist ( echo -e "Acceso de %a en %d" > /dev/tty11 )


&

El firewall:

El firewall es uno de los sistemas de protección mas potente junto al uso de


tcp_wrappers. Para usarlo necesitaremos soporte firewall en el kernel, esto se consigue
fácilmente activando la casilla de
[*] Network firewalls
[*] IP firewalling
durante la configuración del kernel. Básicamente es solo esto Aunque dependiendo de
cada uno pueden hacer falta activar otras opciones (soporte ethernet ...)
Compaginar un firewall con la herramienta ipchains añade otro nivel de seguridad a
nuestro sistema. Recordad que los puertos protegidos por firewall no se ven con un
escaneado de puertos ni son sensibles a nukes ni exploits (algunos scanners como nmap
son capaces de reconocer puertos protegidos por firewall) puesto que toda la
información que se les envía es sencillamente eliminada.

Para usar ipchains pon estas lineas en tu /etc/rc.d/rc.local:


/sbin/ipchains -F
/sbin/ipchains -I input -p tcp -s 127.0.0.1
/sbin/ipchains -A input -p tcp -d 0.0.0.0/0 515 -j DENY

Esto nos permite acceso total a nuestra propia maquina y limita los accesos al puerto
515 (el de la impresora) cosa que no podíamos hacer con tcp_wrappers.
Gracias a Javi Polo por esto.

A partir de aquí las posibilidades de configuración son casi infinitas: detectar spoof,
seleccionar los protocolos de entrada, salida, definir rangos de IPs "amigas" ... sean
cuales sean tus necesidades hay una forma de cubrirlas con ipchains. Lee el ipchains-
howto y el man ipchains para mas información.

En el caso de usar antiguos kernels de la serie 2.0.x se utiliza la herramienta ipfwadm, si


este es tu caso pon estas lineas en tu /etc/rc.d/rc.local:

/sbin/ipfwadm -I -f
/sbin/ipfwadm -I -a a -S 127.0.0.1
/sbin/ipfwadm -I -a d -P tcp -D 0.0.0.0/0 515

Truco: Un firewall permite tener control sobre puertos no definidos en el inetd.conf y


por lo tanto fuera del alcance de tcp_wrappers.

Actualizate!:

Mantener un sistema actualizado previene contra el ataque de exploits provocados por


bugs en el software.
Actualiza el kernel siempre que aparezca una nueva versión estable, por ejemplo el
kernel 2.0.34 no es sensible a ninguno de los nukes conocidos a la hora de realizar este
documento. Si tu kernel es anterior estudia seriamente la posibilidad de actualizarlo.
Actualiza los demonios de todos los servicios que ofrezca tu máquina para evitar
sorpresas. La web de RootShell es un buen sitio donde mantenerse informado.

Truco: Por algún motivo el IMAP y el sendmail son especialmente sensibles a exploits.
Si usas alguno de los dos asegúrate de tener siempre la ultima versión disponible.

Truco: Si te ves obligado a recibir conexiones por telnet estudia la posibilidad de


substituir este servicio por el SSH (Sechure SHell) mucho mas seguro y con muchas
posibilidades que el telnet tradicional.

Das könnte Ihnen auch gefallen