Академический Документы
Профессиональный Документы
Культура Документы
Este documento es una vista general sobre asuntos relativos a la seguridad a los que
tiene que enfrentarse un administrador de sistemas Linux. Cubre algo de filosofia
generica sobre seguridad asi como ejemplos especificos de como hacer que su
sistema Linux sea mas seguro frente a los intrusos. Tambien se incluyen punteros a
documentacion y programas relacionados con la seguridad. Las mejoras, criticas
constructivas, aportaciones y correcciones son aceptadas con agrado. Si desea
ponerse en contacto con los autores, puede hacerlo mediante correo electronico,
poniendo la frase “Security HOWTO” en el asunto del mensaje.
Resumen del Contenido
1. Introduccion
1.1 Nuevas versiones de este documento
1.2 Contacto con los autores
1.3 Garantia
1.4 Informacion de copyright
2. Vista preliminar
2.1 ¿Por que se necesita seguridad?
2.2 ¿Que tan seguro es “seguro”?
2.3 ¿Que es lo que se intenta proteger?
2.4 Desarrollando una politica de seguridad
2.5 Formas de asegurar su sistema
2.5.1 Seguridad basada en la maquina
2.5.2 Seguridad de red
2.5.3 Seguridad a traves de la oscuridad
2.6 Organizacion de este documento
3. Seguridad fisica
3.1 La “cerradura” de los ordenadores
3.2 La seguridad del BIOS
3.3 Seguridad del gestor de arranque
3.4 xlock y vlock
3.5 Detectando compromisos en la seguridad fisica
4. Seguridad local
4.1 Creando nuevas cuentas
4.2 La seguridad de Root
6. Contraseñas y encriptacion
6.1 El PGP y la criptografia de llave publica
6.2 SSL, S-HTTP, HTTPS y S/MIME
6.3 Implementaciones IPSEC para Linux
6.4 SSH (secure shell) y stelnet
6.5 PAM - modulos de autentificacion
6.6 Encapsulacion criptografica del protocolo IP (CIPE)
6.7 Kerberos
6.8 Shadow Passwords.
6.9 “Crack” y “John the Ripper”
6.10 CFS - Cryptographic File System y TCFS - Transparent Cryptographic File
System
6.11 X11, SVGA y la seguridad de la pantalla
6.11.1 X11
6.11.2 SVGA
6.11.3 GGI (Generic Graphics Interface project)
7. Seguridad en el Kernel
7.1 Opciones de compilado para kernels 2.0.x
7.2 Opciones de compilado para kernels 2.2.x
7.3 Dispositivos del Kernel
8. Seguridad de red
8.1 “Packet Sniffers”
8.2 Servicios del sistema y los “tcp_wrappers”
8.3 Verifique su informacion DNS
8.4 Identd
8.5 SATAN, ISS y otros Scanners de red
8.5.1 Detectando un escaneo de puertos
8.6 Sendmail, qmail y los MTA’s
8.7 Ataques de denegacion de servicio
8.8 Seguridad NFS (Network File System)
8.9 NIS (Network Information Service) (antiguamente YP).
8.10Cortafuegos (firewalls)
8.11 IP Chains - Cortafuegos de los kernels de Linux 2.2.x
8.12VPN’s - Virtual Private Networks
14. Conclusion
15. Agradecimientos
1. Introduccion
Este documento aborda algunos de los principales temas que afectan a la seguridad
bajo Linux. Se tratan temas de seguridad genericos asi como recursos nacidos de la
propia red Internet.
Otros HOWTOW’s tratan tambien algunos temas relativos a la seguridad, y se le
remitira a ellos cuando sea apropiado.
Este documento no pretende ser un listado de “exploits” de actualidad. En el se
trataran algunos metodos genericos que le haran menos vulnerable a dichos “exploits”,
asi como se mencionaran otras fuentes de informacion donde podra encontrar tales
listas de “exploits” de actualidad.
1.3. Garantia
(N. del T: mis conocimientos legales no llegan para poder traducir esto)
This document is copyrighted ©1998,1999 Kevin Fenzi and Dave Wreski, and
distributed under the following terms:
tjbynum@metalab.unc.edu
2. Vista preliminar
Este documento tratara de explicar algunos procedimientos y software comunmente
utilizado para ayudar a que su sistema Linux sea mas seguro. Es importante discutir
primero algunos conceptos basicos, y tener claros los fundamentos antes de continuar.
En primer lugar, tenga siempre en mente que ningun sistema informatico puede ser
“completamente seguro”. Todo lo que se puede hacer es ir incrementando la dificultad
con la que un intruso puede comprometer su sistema. Para el usuario domestico
medio de Linux, no se necesita demasiado para mantener a raya a los crackers
casuales. Los usuarios de sistemas Linux orientados a negocio (bancos, compañias de
telecomunicaciones, etc) tendran mucho mas trabajo.
Otro factor que debe tener en consideracion es que cuanto mas seguro sea su
sistema, mas intrusiva sera su seguridad. Debe decidir el punto de equilibrio entre la
facilidad de uso y la seguridad que necesita. Por ejemplo, puede hacer que para que
alguien pueda establecer una conexion remota sea su sistema el que les llame a casa,
pero si alguien no esta alli no podra conectarse. Tambien puede configurar su sistema
Linux para que no realize ninguna conexion a Internet, pero esto limitaria su utilidad.
Cree una politica simple y generica para su sistema, de forma que sus usuarios
puedan entenderla y seguirla con facilidad. Esta politica deberia proteger los datos y
tambien la privacidad de los usuarios. Algunas cosas que debe considerar son: ¿quien
tiene acceso al sistema? (¿puede un amigo usar mi cuenta?), ¿a quien le esta
permitido instalar software en el sistema? ¿quien es el responsable de que datos, de
recuperar la maquina de un desastre, o de que el sistema sea utilizado
apropiadamente?
Una politica de seguridad generalmente aceptada se resume con la frase:
Este documento tratara varios metodos con los cuales puede usted proteger los
recursos por los que ha trabajado tan duro: su maquina local, sus datos, sus usuarios,
su red e incluso su reputacion: ¿que le pasaria a su reputacion si un intruso borrase
los datos de uno de sus usuarios, o deformase su pagina web, o hiciese publicos los
planes comerciales de su compañia para el proximo semestre? Si esta planeando
instalar una red, hay muchos factores que debe tener en cuenta antes incluso de
instalar la primera maquina.
El que solo tenga una conexion PPP a una cuenta, o un sistema pequeño, no significa
que los intrusos no vayan a estar interesados en usted. Las maquinas grandes y
conocidas no son el unico objetivo: muchos intrusos simplemente desean introducirse
en el mayor numero posible de sistemas, independientemente de su tamaño. Ademas,
pueden usar un agujero de seguridad en su sistema para conseguir acceso a otros a
los que este usted conectado.
Los intrusos tienen un monton de tiempo en sus manos, y pueden evitar el tener que
averiguar como ha protegido usted su sistema simplemente probando todas las
posibilidades. Hay tambien una serie de razones por las que un intruso podria estar
interesado en sus sistemas, que seran expuestas mas tarde.
Tal vez el area de la seguridad en la que mas concentran sus esfuerzos los
administradores es la seguridad basada en la maquina (“host-based security” en el
documento original). Esto normalmente implica asegurarse de que nuestro propio
sistema es seguro, y confiar en que el resto de los administradores de las maquinas de
nuestra red hagan lo mismo. Elegir buenas contraseñas, asegurar los servicios locales
de red de nuestra maquina, mantener un buen registro de la actividad del sistema y
actualizar los programas que tengan agujeros de seguridad conocidos son algunas de
las responsabilidades del administrador local encargado de la seguridad. Aunque esto
es absolutamente necesario, puede convertirse en una tarea excesivamente laboriosa
a medida que su red crezca y deje de estar compuesta por unas pocas maquinas.
3. Seguridad Fisica
El primer nivel de seguridad que debe ser tenido en cuenta es la seguridad fisica de
sus sistemas informaticos. ¿Quienes tienen acceso fisico a su maquina? ¿deberian
tenerlo? ¿puede proteger las maquinas de sus manipulaciones? ¿deberia hacerlo?
La cantidad de seguridad fisica que necesita para su sistema depende en gran medida
de su situacion y/o de sus medios.
Si es usted un usuario domestico, posiblemente no necesite demasiado (aunque
podria necesitar proteger su maquina contra la manipulacion por parte de niños y
similares). Si se trata de un laboratorio, usted seguramente necesite una seguridad
fisica considerablemente mayor, pero sus usuarios deberan poder seguir haciendo su
trabajo con las maquinas. Muchas de las secciones siguientes pueden ayudar. Si esta
usted en una oficina, puede o no necesitar asegurar su maquina fuera de horas o
mientras usted esta ausente. En algunas empresas, abandonar su puesto sin asegurar
la consola (hacer log-out o ejecutar un protector de pantalla que pida una contraseña)
es causa de despido.
Metodos obvios de seguridad fisica tales como cerraduras en las puertas, cabinas
cerradas, y video-vigilancia son buenas ideas, pero se escapan del objeto de este
documento.
El BIOS es el software que manipula o configura su hardware x86 al mas bajo nivel.
LILO y los demas metodos de arrancar Linux acceden al BIOS para determinar como
arrancar su sistema Linux. Otros tipos de hardware soportado por Linux poseen algun
sofware similar (el OpenFirmware de los Macintosh y las maquinas SUN man
recientes, las PROM de arranque de SUN, etc). Usted puede usar su BIOS para
prevenir que algun atacante pueda reiniciar su maquina y manipular su sistema Linux.
Muchos BIOS de PC permiten establecer una contraseña de arranque. Esto no
proporciona una excesiva seguridad ( el BIOS puede resetearse, o eliminarse si
alguien puede acceder al interior de la carcasa), pero puede ayudar (por ejemplo,
llevaria tiempo y quedarian rastros de la manipulacion). De forma similar, en S/Linux
(Linux para maquinas con procesadores SPARC), su EEPROM puede ser configurada
para pedir una contraseña al arrancar. Esto podria retrasar a los atacantes.
Muchos bios de PC permiten tambien especificar algunas otras opciones buenas para
la seguridad. Consulte el manual de su BIOS o echele un vistazo la proxima vez que
arranque el sistema. Por ejemplo, algunos BIOS permiten deshabilitar el arranque
desde disquete o pedir una contraseña para acceder a algunas opciones del BIOS.
Nota: Si posee usted un servidor, y establece una contraseña para el arranque, su
maquina no arrancara adecuadamente estando desatendida.
Recuerde que sera mecesario acceder fisicamente a la maquina y suministrar
la contraseña en el caso de un fallo del suministro electrico. ;(
(N. del T: Si pretende habilitar la proteccion mediante password que impida acceder al
propio programa de configuracion del BIOS, asegurese primero de que sabe cual es el
“jumper” para borrar la memoria no-volatil o escriba el “password” en un lugar seguro,
ya que si lo olvida, tendra graves problemas cuando desee modificar la configuracion
del “hardware”).
(N. del T: Precauciones basicas a tomar son evitar escribir los passwords en lugares
visibles y protegerse del viejo “vistazo por encima del hombro” que permite a una
persona con acceso fisico a nuestro lugar de trabajo ver como tecleamos la
contraseña. Tampoco debe olvidarse que los equipos informaticos en funcionamiento
emiten señales radioelectricas que pueden llegar hasta varios cientos de metros: ojo
con las furgonetas con antena grande aparcadas durante dias en la acera de enfrente
:-) .
La primera cosa a la que debe usted estar atento es cuando ha sido reiniciada su
maquina. Como Linux es un sistema operativo robusto y estable, solamente es
necesario reiniciarlo para cambiar el kernel u otro software vital, modificar la
configuracion del hardware, etc. Si su maquina ha sido reiniciada sin su conocimiento,
esto puede ser un signo de que un intruso ha estado alli. Muchos de los
procedimientos por los cuales su maquina puede verse comprometida requieren que el
intruso la apague o la reinicie.
Busque signos de manipulacion en la carcasa y alrededor del ordenador. Aunque
muchos intrusos eliminan los rastros de su presencia de los archivos de registro, es
una buena idea revisarlos y detectar cualquier discrepancia.
Tambien es una buena idea guardar los datos de registro en un lugar seguro, como un
servidor dedicado en su bien protegida red. Una vez que una maquina ha sido
comprometida, los registros locales son de poca utilidad ya que lo mas seguro es que
hayan sido modificados por el intruso.
El demonio syslogd puede configurarse para que envie automaticamente la
informacion de registro (“logs”) a un servidor syslog centralizado, pero normalmente
estos envios se hacen en un formato de texto puro, lo que permite que un intruso
pueda visualizar esta informacion a medida que es transmitida. Esto podria revelar
informacion sensible acerca de su red que en principio no deberia ser publica. Existen
a su disposicion demonios syslog modificados que encriptan esta informacion antes de
enviarla.
Este tambien prevenido de que falsear mensajes de syslog es facil (mediante un
programa que circula por ahi). Syslog incluso acepta entradas de registro
aparentemente procedentes de la maquina local pero que pueden proceder de
cualquier otro sitio.
Algunas cosas a comprobar en sus archivos de registro:
• Registros cortos o incompletos.
• Registros con fecha extraña o incorrecta.
• Registros con permisos o propietario incorrectos
• Registros de reinicios de la maquina o de servicios
• Registros perdidos
• Entradas “su” o accesos remotos desde lugares extraños
4. Seguridad Local
Lo siguiente a comprobar es el nivel de seguridad de su sistema contra el posible
ataque de usuarios locales. ¿He dicho usuarios locales? Si!
Conseguir acceso a una cuenta de usuario local es una de las primeras cosas que los
intrusos intentaran en su camino de explotar la cuenta de “root”. Con una seguridad
local baja, podran “actualizar” su cuenta de usuario ordinario a la cuenta de “root”
usando “bugs” de los programas o servicios locales mal configurados. Si usted se
asegura de que su seguridad local es alta, entonces los intrusos tendran un obstaculo
mas a superar.
Los usuarios locales pueden tambien causar daño en su sistema incluso si son
realmente quienes dicen ser. Proporcionar cuentas de usuario a gente que no conoce
o de la que no tiene informacion de contacto es una idea muy mala.
Muchas cuentas locales de usuario que se han usado para atacar un sistema tienen
en comun que no habian sido usadas durante meses o años. Como nadie las usaba,
eran el vehiculo ideal para un ataque.
• El archivo /etc/securetty contiene una lista de terminales desde los cuales le esta
permitido a “root” hacer “logging” en el sistema. En Red Hat, la configuracion
predeterminada es permitir tales accesos unicamente desde las consolas virtuales
de la maquina local. Sea cuidadoso con lo que agrega a este archivo. El metodo a
utilizar deberia ser establecer un acceso remoto como un usuario ordinario, y hacer
luego un “su” para trabajar como root, todo esto a traves de un canal seguro
usando “ssh” u otro metodo de encriptacion. De esta forma no es necesario entrar
en el sistema directamente como “root”.
• Cuando trabaje como “root” piense siempre las cosas dos veces antes de hacerlas.
Sus acciones pueden afectar al funcionamiento de un monton de cosas. Revise lo
que ha tecleado antes de pulsar “intro”.
Si esta seguro de que no tiene mas remedio que permitir a alguien (esperemos que
muy de fiar) acceso a su maquina con privilegios de root, hay algunas herramientas
que pueden ayudarle. El comando “sudo” permite a usuarios ordinarios el uso de un
mumero limitado de ordenes con privilegios de “root”. Esto hace posible, por ejemplo,
que un usuario ordinario cambie y monte unidades de almacenamiento removibles
(floppys, cd-roms, etc.) en su maquina Linux sin disponer de ningun otro privilegio de
“root”. “Sudo” mantiene tambien un registro de todos los intentos, fallidos o no, de usar
uno de estos comandos privilegiados, haciendo posible saber quien ha usado que
comando y para que. Por esta razon “sudo” es ideal incluso en entornos donde varias
personas tienen acceso como “root”, ya que es facil mantener el control de los
cambios realizados en el sistema, incluyendo quien los ha realizado.
Aunque “sudo” puede usarse para dar a usuarios especificos privilegios especificos
para la realizacion de labores concretas, tiene muchos inconvenientes. Deberia ser
usado unicamente para un conjunto de tareas muy concretas y limitadas, como
reiniciar un servidor o agregar nuevos usuarios. Cualquier programa que permita un
escape al shell puede proporcionar acceso de “root” a un usuario ordinario que lo
invoque via “sudo”. Esto incluye, por ejemplo, a la mayoria de los editores de texto.
Igualmente, un programa tan inofensivo como /bin/cat puede usarse para sobreescribir
archivos, lo que puede conducir a que la cuenta de “root” sea explotada. Considere a
“sudo” como una forma mas de llevar un registro de la actividad en el sistema, pero no
espere poder sustituir de forma segura el uso de la cuenta de “root” por el uso de
“sudo”.
Esta configuracion impide la creacion the archivos “core”, limita el numero de procesos
por usuario a 50 y el uso de la memoria a 5MB.
• Los archivos SUID y SGID son un riesgo potencial para la seguridad, y su uso
deberia ser cuidadosamente monitorizado. Como estos programas proporcionan
privilegios especiales a los usuarios que los ejecutan, es necesario asegurarse de
que no tenemos instalados programas SUID o SGID inseguros. Uno de los trucos
favoritos de los “crackers” es explotar un programa SUID-root y dejar luego otro
programa SUID como puerta trasera para poder volver a colarse, incluso si el
agujero original es detectado y corregido.
La distribucion Debian ejecuta cada noche una tarea programada que localiza todos
los archivos SUID existentes. Despues los compara con el listado del dia anterior, y
genera un informe de las posibles diferencias en /var/log/suid*.
Se pueden eliminar los permisos SUID o SGID de un programa sospechoso utilizando
el comando “chmod”, y volverlos a dar despues si se comprueba que es necesario
hacerlo.
y asegurese de que sabe por que todos estos archivos son de publica escritura. En un
sistema normal, varios archivos son de publica escritura, incluyendo a algunos del
directorio “/dev”, y algunos vinculos simbolicos, asi que el “! -type l” los excluye del
comando “find” mostrado anteriormente.
• Los archivos sin propietario tambien pueden indicar que un intruso ha accedido a
su sistema. Puede localizar los archivos sin propietario, y a los que no pertenecen
a ningun grupo con la orden:
Asegurese de hacer que el valor “umask” para root sea 077, lo que desabilitara los
permisos de lectura, escritura y ejecucion para los demas usuarios, a menos que se
cambien de forma explicita con el comando “chmod”. En el ejemplo anterior, los
directorios de nueva creacion tendran como permisos 744, el resultado de restar a 777
el valor “umask” definido (033). Los archivos de nueva creacion tendran permisos de
644.
Si esta usando Red Hat, y utiliza su sistema de creacion de ID de usuario y grupo
(User Private Groups), solo es necesario usar 002 como “umask”. Esto se debe a que
la configuracion por defecto es un usuario por grupo.
Es importante asegurarse de que los archivos de sistema no pueden ser editados por
usuarios o grupos que no deberian realizar tales labores de mantenimiento.
Unix separa el control de acceso a archivos y directorios en tres apartados:
“propietario”, “grupo” y “otros”. Siempre existen exactamente un propietario, cualquier
numero de miembros del grupo, y todos los demas.
Una explicacion rapida de los permisos en Unix:
Propiedad - Que usuario(s) y grupo(s) tienen control sobre el archivo o directorio
Permisos - Bits que pueden ser activados o desactivados para permitir diferentes
tipos de acceso al archivo o directorio. Los permisos para los directorios pueden tener
un significado diferente que para los archivos.
Lectura:
• Poder visualizar los contenidos de un archivo
• Poder leer un directorio
Escritura:
• Poder borrar o modificar un archivo
• Poder borrar o mover archivos en un directorio
Ejecucion:
• Poder ejecutar un binario o script de shell
• Poder buscar en un directorio, conbinado con el permiso de lectura.
Archivo de Ejemplo:
Las lineas siguientes son un ejemplo del juego de permisos minimo que se necesita
para poder realizar el acceso descrito:
• r-------- Permite al propietario acceso de lectura al archivo
• w------- Permite al propietario modificar o borrar el archivo (tengase en cuenta
que cualquiera que tenga permiso de escritura sobre el directorio que lo
contiene puede sobreescribirlo e incluso eliminarlo.
---x------ El propietario puede ejecutar este programa, a menos que
se trate de un script de shell, en cuyo caso necesitaria
tambien el permiso de lectura
---s------ Se ejecuta con el “user ID” efectivo del propietario
--------s- Se ejecuta con el “group ID” efectivo del grupo
• rw------T No se actualiza la fecha de ultima modificacion.
Normalmente se usa con los archivos de intercambio (swap).
---t------ Sin efecto (antiguamente, “sticky bit”).
Directorio de Ejemplo:
Las lineas siguientes son un ejemplo del juego de permisos minimo que se necesita
para poder realizar el acceso descrito:
dr-------- Los contenidos pueden listarse, pero no pueden leerse los atributos
de los archivos
d—x------ Se puede entrar en el directorio, y puede usarse en las variables
“PATH”.
dr-x------ Los atributos de los archivos pueden ser leidos por el propietario del
directorio
d-wx------ Files can be created/deleted, even if the directory isn’t the current
one
d-wx------ El propietario del directorio puede crear/eliminar archivos, incluso si
el directorio no es el directorio actual.
d------x-t El “sticky bit” (“t”) impide que los usuarios con permiso de escritura
sobre el directorio borren archivos que no sean suyos. Se usa en “/tmp”.
d---s—s-- Sin efecto
Los archivos de configuracion del sistema (normalmente en “/etc”) suelen tener una
mascara de permisos 640 (-rw-r-----) y son propiedad de “root”. Esto puede cambiarse
dependiendo de los requerimientos de seguridad de su entorno. Nunca permita que un
archivo de sistema tenga activos los permisos de escritura para grupo o para todo el
mundo. Algunos archivos de configuracion, incluyendo /etc/shadow, deberian ser solo
legibles por “root”, y los directorios bajo /etc no deberian ser de publico acceso.
enviara al usuario kevin un informe por correo cada mañana a las 5:15.
Tripwire puede ser “mano de santo” para detectar intrusiones antes de que sea posible
detectarlas por cualquier otro medio. Como hay un monton de archivos que cambian
continuamente durante un uso normal del sistema, hay que tener cuidado para no
confundir cambios hechos por usted con la actividad de un cracker.
Puede conseguir Tripwire en http://www.tripwiresecurity.com sin coste alguno. Puede
conseguir mediante pago manuales y soporte tecnico.
Los “Caballos de Troya” toman su nombre de “La Iliada”, de Homero. La idea es que
un cracker distribuye un binario o programa cuyo nombre suena fabuloso, y anima a
otra gente a descargarlo y ejecutarlo como “root”. El programa posee una
funcionalidad oculta que compromete la seguridad del sistema de forma inadvertida.
(N. del T: Un ejemplo podria ser modificar un juego para que ademas de su
funcionamiento normal tambien mande por correo electronico al cracker el archivo
/etc/passwd del sistema en el que se ejecuta.)
Deberia tener cuidado con los programas que instala en su maquina. RedHat
suministra “checksums” (o sumas de control) MD5 y firmas PGP de sus archivos RPM
de forma que el usuario pueda verificar que instala el paquete original y no una version
alterada por un cracker. Otras distribuciones utilizan metodos similares. Nunca deberia
ejecutar ningun binario de procedencia dudosa, y del que no posea el codigo fuente,
como “root”. Pocos crackers estan dispuestos a distribuir codigo fuente para el
escrutinio publico.
Aunque puede ser complicado, asegurese de conseguir el codigo fuente de los
programas de su punto de procedencia original. Si el programa va a ser ejecutado con
privilegios de “root”, entonces usted o alguien de su confianza debe revisar el codigo
fuente.
6. Contraseñas y Encriptacion
Una de las opciones de seguridad mas importantes que se usan hoy dia son las
contraseñas o “passwords”. Es importante que tanto usted como todos sus usuarios
utilicen contraseñas seguras, que no sean faciles de adivinar. La mayor parte de las
distribuciones de Linux mas recientes incluyen programas de gestion de contraseñas
(normalmente el comando “passwd”) que no permiten establecer contraseñas faciles
de adivinar. Asegurese de que su sistema cumple este requisito.
Un debate en profundidad sobre la encriptacion esta fuera del alcance de este
documento, pero una introduccion estaria bien. La encriptacion es muy util,
posiblemente incluso necesaria en los tiempos que corren. Existen multitud de
metodos para encriptar datos, cada uno con sus propias caracteristicas.
La mayoria de los sistemas operativos UNIX (y Linux no es una excepcion) utilizan
principalmente un algoritmo de encriptacion de un solo sentido llamado DES (Data
Encription Standard) para encriptar las contraseñas. Las contraseñas encriptadas se
guardan normalmente en el archivo /etc/passwd, o bien en /etc/shadow. Cuando usted
intenta hacer “login” la contraseña que escribe es encriptada y comparada con la que
hay en el archivo que almacena las contraseñas encriptadas. Si coinciden, la
contraseña es correcta y se le permite acceder al sistema. Aunque el DES es un
algoritmo de encriptacion de doble sentido (se puede encriptar una informacion y luego
desencriptarla si se posee la llave correcta), la variante que usan la mayoria de los
sistemas UNIX es de un solo sentido. Esto significa que no es posible invertir el
proceso de encriptado para conseguir las contraseñas a partir del contenido de
/etc/passwd (o /etc/shadow).
Los ataques mediante “fuerza bruta”, como los programas “Crack” o “John the Ripper”
pueden averiguar las contraseñas a menos que sean lo suficientemente aleatorias.
Los modulos PAM (ver mas adelante) le permiten utilizar una rutina de encriptado
diferente (MD5 o similares) para sus contraseñas. Tambien puede usar el programa
“Crack” en su propio beneficio. Puede usarlo periodicamente en su sistema para
detectar contraseñas que sean inseguras, y luego contactar con los usuarios afectados
para pedirles que las cambien.
En la URL http://consult.cern.ch/writeup/security/security_3.html puede obtener
informacion sobre como elegir una buena contraseña.
La criptografia de llave publica, como la que usa PGP, utiliza una llave para la
encriptacion y otra llave diferente para la desencriptacion. La criptografia tradicional,
por el contrario, usa la misma llave para las dos operaciones. Esta llave debe ser
conocida por ambas partes, y por lo tanto transmitida al menos una vez de uno a otro
mediante algun medio seguro.
Para eliminar la necesidad de transmitir de forma segura la llave de encriptacion, la
encriptacion de llave publica utiliza dos llaves diferentes, una publica y la otra privada.
La llave publica de cada persona esta disponible para que cualquiera pueda usarla
para hacer la encriptacion, mientras que la llave privada, que es la que se usa para
desencriptar, solo la conoce el usuario.
Tanto la criptografia de llave publica como la de llave privada tienen sus ventajas y sus
inconvenientes. Puede conocerlas leyendo el documento FAQ de la criptografia RSA
<http://www.rsa.com/rsalabs/newfaq/>, mencionado al final de esta seccion.
El PGP (Pretty Good Privacy) esta bien soportado por Linux. Las versiones
2.6.2 y 5.0 estan probadas y se sabe que funcionan bien. Para un primer
contacto con el PGP y como usarlo, eche un vistazo al PGP FAQ:
http://www.pgp.com/service/export/faq/55faq.cgi
Asegurese de utilizar una version cuyo uso este autorizado en su pais. Debido a las
restricciones de exportacion del gobierno de USA, el software de encriptacion “fuerte”
no puede ser transmitido en formato electronico fuera del pais.
El control de exportaciones de USA es ahora gestionado por la EAR (Export
Administration Regulations), dejando de estarlo por el ITAR (???).
(N. del T: La legislacion estadounidense no solo limita la exportacion del software de
encriptacion potente, sino que tambien restringe su uso por parte de sus propios
ciudadanos. Por ejemplo, el paquete de acceso remoto “ssh” permite el uso de un
algoritmo de encriptacion de 128 bits llamado “Blowfish” cuya utilizacion es ilegal en
USA. En Francia tambien es ilegal el uso de este tipo de encriptacion).
Existe tambien una guia de configuracion paso-a-paso para configurar PGP con linux
en:
http://mercury.chem.pitt.edu/~angel/LinuxFocus/English/November1997/article7.html
Puede que necesite un parche para algunas de las ultimas versiones de Linux.
El parche esta disponible en:
ftp://metalab.unc.edu/pub/Linux/apps/crypto
Hay un proyecto en marcha para crear una implementacion libre de PGP con codigo
abierto. GnuPG es un sustituto libre y completo de PGP. Como no utiliza IDEA ni RSA
se puede usar sin ninguna restriccion. GnuPG casi cumple todos los requisitos del
documento RFC2440 (OpenPGP). Visite la pagina “web” de la Proteccion de la
Privacidad GNU para mas informacion:
http://www.gpg.org/
Se puede obtener mas informacion sobre la criptografia el el FAQ de RSA, disponible
en:
http://www.rsa.com/rsalabs/newfaq/
Alli encontrara informacion sobre terminos como “Diffie-Hellman”, “criptografia de llave
publica”, “certificados digitales”, etc.
http://www.consensus.com/security/ssl-talk-faq.html
Tambien tiene a su disposicion informacion sobre otras implementaciones de
seguridad de Netscape en:
http://home.netscape.com/info/security-doc.html
http://home.netscape.com/assist/security/smime/overview.html
ssh y stelnet son programas que le permiten acceder a una linea de comandos en una
cuenta en una maquina remota de forma que la conexion se realiza sobre un canal
encriptado.
ssh es una “suite” de programas que se usa como un sustituto seguro para rlogin, rsh
y rcp. Utiliza criptografia de llave publica para encriptar las comunicaciones entre dos
maquinas, asi como para autentificar a los usuarios. Puede utilizarse para hacer “login”
de forma segura en una maquina remota, o para copiar datos entre maquinas,
imposibilitando los ataques “man-in-the-middle” (secuestros de sesion) y el “DNS
spoofing”. Realiza compresion de los datos en las conexiones, y tambien permite
sesiones X11 seguras entre maquinas. La pagina “hogar” de ssh se encuentra en:
http://www.cs.hut.fi/ssh/
(N. del T: Los ataques “man in the middle” son aquellos en los que el intruso intercepta
el canal de comunicacion. El “DNS spoofing” es algo mas elaborado: en primer lugar,
el cracker deja fuera de servicio a nuestro servidor DNS, con alguno de los muchos
medios existentes. A continuacion pone en funcionamiento un servidor DNS falso con
la misma direccion IP que el nuestro. Todos nuestros intentos de conectar con
maquinas remotas usando el nombre completo de dominio haran que nos conectemos
a las maquinas que el cracker desee, sin que seamos conscientes de ello. Utilice
siempre la direccion IP numerica de las maquinas a las que quiera conectar, y
obtendra una minima seguridad extra.)
Tambien puede usar ssh desde una maquina win95 o NT para conectarse a su
servidor Linux. Hay varios clientes ssh gratuitos para windows, incluyendo:
http://guardian.htu.tuwien.ac.at/therapy/ssh/
tambien los hay comerciales, como el de DataFellows, en:
http://www.datafellows.com
(N. del T: este ultimo no puede conseguirse si no vive en USA.)
Tambien hay un proyecto de codigo abierto para re-implementar ssh llamado “psst...”.
Para mas informacion, visite:
http://www.net.lut.ac.uk/psst/
SSLeay es una implementacion libre del protocolo Secure Sockets Layer de Netscape,
desarrollado por Eric Young. Incluye multiples aplicaciones, como un telnet seguro, un
modulo para el servidor “web” Apache, varias bases de datos, asi como numerosos
algoritmos incluyendo DES, IDEA y Blowfish.
Utilizando esta libreria se ha creado un sustituto seguro para telnet, que encripta la
conexion. A diferencia de SSH, stelnet usa SSL, el protocolo desarrollado por
Netscape. Se pueden encontrar el telnet seguro y el FTP seguro empezando por el
FAQ de SSLeay, disponible en:
http://www.psy.uq.oz.au/~ftp/Crypto/
SRP es otra implementacion de telnet/ftp seguros. Segun su pagina “web”:
“El proyecto SRP esta desarrollando software para el uso seguro de Internet de uso
libre a nivel mundial. Empezando con unas distribuciones de Telnet y FTP seguros,
esperamos reemplazar sistemas de autentificacion de red debiles por sustitutos
seguros que no sacrifiquen la sencillez de uso a cambio de la seguridad. La
seguridad deberia ser el estandar, no una opcion.”
Las versiones mas modernas de Red Hat Linux (N. del T: tambien las de Suse)
incluyen un metodo de autentificacion unificado llamado “PAM”. PAM permite cambiar
los metodos de autentificacion “en caliente” y encapsular todos los metodos de
autentificacion locales sin tener que recompilar ningun binario. La configuracion de
PAM esta fuera del alcance de este documento, pero asegurese de echar un vistazo a
la pagina “web” de PAM si desea obtener mas informacion:
http://www.kernel.org/pub/linux/libs/pam/index.html
• Utilizar algoritmos diferentes a DES para las contraseñas. (Esto las hace mas
dificiles de obtener mediante “fuerza bruta”.
• Establecer limites de utilizacion de los recursos a los usuarios, de forma que no
puedan realizar ataques del tipo “denial-of-service”. Los recursos que pueden
limitarse son numero de procesos, cantidad de memoria, y algunos mas.
• Habilitar el uso de “shadow passwords” (ver mas adelante) en “caliente”.
• Hacer que determinados usuarios solo puedan conectarse a unas horas
determinadas desde un lugar (direccion IP) determinado.
#
# Deshabilita rsh/rlogin/rexec
#
login auth required pam_rhosts_auth.so no_rhosts
Los estandars IPSEC definen un conjunto de protocolos que pueden usarse (entre
otras cosas) para construir VPN encriptadas. En cualquier caso, IPSEC es un
“peso pesado” dentro de los protocolos de seguridad, complicado y con un monton
de opciones. Las implementaciones del protocolo al completo son raramente
usadas todavia, y algunos temas (como el manejo de llaves) aun no estan
totalmente resueltos. CIPE utiliza una filosofia mas sencilla, en la cual muchas
opciones que pueden ser configuradas (como la eleccion del algoritmo de
encriptacion a utilizar) lo son de forma permanente en el momento de la instalacion.
Esto limita la flexibilidad, pero permite una implementacion sencilla, eficiente, y facil
de depurar en busca de errores.
6.7. Kerberos
Si por alguna razon su comando “passwd” no impide que sus usuarios puedan
establecer contraseñas debiles, tal vez quiera utilizar un programa de “fuerza bruta”
para asegurarse de que las contraseñas de sus usuarios son seguras.
Los programas de “crackeo” de contraseñas mediante “fuerza bruta” se basan para su
funcionamiento en una idea muy simple: encriptan todas las palabras del diccionario (y
variaciones de ellas), comparando el resultado con las contraseñas encriptadas en
/etc/passwd. Si al encriptar alguna palabra encuentran que la cadena resultante es
igual a alguna de las contraseñas encriptadas de /etc/passwd, entonces esa palabra
es una contraseña valida en el sistema.
Hay muchos programas de este tipo circulando por ahi. Los dos mas famosos son
“Crack” y “John the Ripper” (“Juan el Destripador”):
http://www.false.com/security/john/index.html
Consumen un monton de tiempo de proceso (“cpu-time”), pero podra saber si un
atacante podria utilizarlo con exito usandolo usted primero e informando a los usuarios
de las posibles contraseñas debiles. Tenga en cuenta que el intruso debe obtener
acceso primero al archivo /etc/passwd usando algun otro agujero de seguridad
existente, pero estos agujeros son mas corrientes de lo que se imagina.
Como la seguridad global de un sistema es solo tan fuerte como lo sea la de la
maquina mas insegura, no es necesario decir que si tiene maquinas Windows en su
red deberia conseguir L0phtCrack, una implementacion del programa Crack para
Windows. Esta disponible en:
http://www.l0pht.com
6.11.1. X11
Es importante para usted que asegure su pantalla grafica para evitar que un posible
atacante vea sus contraseñas cuando las teclea, lea documentos o informacion que
pueda usted estar leyendo en pantalla, e incluso que utilice un agujero para conseguir
acceso como “root”. Ejecutar aplicaciones X remotas a traves de una red puede ser
peligroso, ya que con la ayuda de un programa de los llamados “sniffers” un cracker
puede ver todas sus interacciones con el sistema remoto.
X tiene varios mecanismos de control de acceso. El mas simple de ellos es “basado-
en-la-maquina” (“host-based” en el original): mediante el uso de xhost se especifica
que maquinas tienen permitido acceso a la pantalla grafica. Esto no es demasiado
seguro, ya que si alguien tiene acceso a su maquina puede xhost + a su propia
maquina y de esa forma conseguir acceso facilmente. Ademas, si por alguna razon
tiene que permitir acceso desde una maquina insegura, cualquiera puede
comprometer su pantalla grafica.
http://metalab.unc.edu/LDP/HOWTO/mini/Remote-X-Apps.html
Tambien se puede usar ssh para permitir conexiones X seguras. Este metodo tiene la
ventaja de ser transparente para el usuario, ademas de que no hay ninguna
informacion que circule por la red sin encriptar.
Eche un vistazo a la pagina de manual de Xsecurity si desea mas informacion
relacionada con la seguridad en el entorno X. La apuesta mas segura es usar xdm
para acceder a su consola y despues usar ssh para conectarse a las maquinas
remotas en las que se quieren ejecutar programas X.
6.11.2. SVGA
Los programas que usan SVGAlib son normalmente SUID-root para poder acceder a
la totalidad del hardware de video. Esto los hace muy peligrosos. Si se cuelgan,
normalmente tendra que reiniciar el equipo para que el hardware de video funcione
nuevamente. Asegurese de que los programas SVGA que ejecute son autenticos, y
que puede uno fiarse de ellos hasta cierto punto. Mucho mejor, no ejecute ninguno.
EL proyecto GGI Linux esta intentando resolver muchos de los problemas con los
interfaces de video en Linux. GGI movera un pequeño trozo del codigo de gestion de
video al interior del kernel de Linux, de forma que sea el kernel quien gestione
directamente el video. Esto significa que GGI permitira que el sistema de video se
recupere del cuelgue de una aplicacion. Tambien proporcionara seguridad adicional,
ya que no sera posible que un caballo de troya camuflado como programa de control
de “login” se ejecute en la consola. Para mas informacion:
http://synergy.caltech.edu/~ggi/
7. Seguridad en el Kernel
Lo que sigue es una descripcion de las opciones de configuracion del kernel de Linux
relativas a la seguridad, y una explicacion de para que sirven y como se usan.
Como el kernel controla todas las comunicaciones en red de su sistema, es importante
que sea lo mas seguro posible. Para estar protegido contra los ultimos ataques contra
redes, deberia intentar mantener siempre actualizada su version del kernel. Puede
encontrar nuevos kernels en:
ftp://ftp.kernel.org
y tambien en las distribuciones mas recientes.
Para los kernels de la serie 2.0.x, las siguientes opciones afectan a la seguridad.
Deberia verlas durante el proceso de configuracion del kernel. Muchos de los
comentarios proceden del archivo Configure.help, que se encuentra en
/usr/src/linux/Documentation.
(N. del T: todos los mensajes de ayuda que es posible visualizar durante la etapa
“make config” de la configuracion del kernel proceden tambien de ese archivo).
Esta opcion deberia activarse si se pretende usar algun tipo de cortafuegos o el IP-
Masquerading en su maquina Linux. Si la maquina va a ser utilizada como un
cliente normal puede prescindirse de activar esta opcion.
Esta opcion le permite obtener informacion acerca de los paquetes que recibe su
maquina cortafuegos, como origen, destino, puerto, etc.
Esta opcion deberia ser habilitada siempre. Los “Source routed frames” son
paquetes que contienen la ruta completa a seguir para alcanzar su destino. Esto
significa que los routers a traves de los cuales pasan estos paquetes no necesitan
inspeccionarlos, y simplemente les dejan seguir su camino. Esto puede conducir a
que su sistema sea explotado.
http://www.indyramp.com/masq
http://www.indyramp.com/masq
Esta opcion esta disponible en los kernel mas modernos ( >=2.1.x ) y marca los
paquetes NCP para una mayor seguridad. Normalmente no hara falta habilitarla,
pero esta ahi por si se necesita.
Esta opcion le permite analizar los primeros 128 bytes de los paquetes desde un
programa de usuario, para determinar si se desea aceptarlos o rechazarlos en
funcion de su validez.
Para la mayoria de la gente, es correcto decir que no a esta opcion. Sirve para
“conectar” un filtro mediante el uso de un programa de usuario a cualquier “socket”
y determinar si un paquete debe ser aceptado o rechazado. A menos de que tenga
una necesidad muy especifica y sea capaz de programar usted mismo dicho filtro,
deberia decir que no. Tenga en cuenta tambien que en el momento de redactar
este documento, todos los protocolos estan soportados excepto el TCP.
8. Seguridad de Red
La seguridad de red se esta volviendo mas y mas importante a medida que la gente
pasa cada vez mas tiempo conectada. Los ataques contra la seguridad de red son casi
siempre mas faciles de realizar que aquellos contra la seguridad fisica o local, y son
mucho mas frecuentes.
Existen buenas herramientas para ayudar a mejorar la seguridad de red, y un numero
de ellas cada vez mayor esta siendo incluido en las distribuciones de Linux.
Una de las formas mas comunes mediante la que los intrusos ganan acceso a mas
sistemas en su red es empleando un “sniffer” de paquetes en una maquina que ya
haya sido comprometida. El “sniffer” simplemente “escucha” a traves del dispositivo
ethernet a la espera de capturar paquetes que contengan cadenas como “login” o
“passwd”. De esta forma, un intruso puede conseguir acceso a sistemas en los que ni
siquiera intentaba introducirse. Las contraseñas sin encriptar son muy vulnerables a
este tipo de ataque.
Ejemplo: la maquina A ha sido comprometida. El atacante instala un “sniffer”. El
“sniffer” detecta el acceso remoto de un administrador accediendo a la maquina B
desde la maquina C. Despues, ese administrador hace un “su” para arreglar un
problema. El atacante ya tiene la contraseña de “root” de la maquina B. Mas tarde el
administrador permite que alguien conecte mediante telnet a su cuenta en una
maquina remota que llamaremos Z. El atacante tambien obtiene un login/password
valido en la maquina Z.
En los tiempos que corren, el atacante ni siquiera necesita comprometer una primera
maquina para instalar el “sniffer”: podria introducirse en un edificio con un ordenador
portatil y conectarlo directamente a uno de los “hub” de la red que desea atacar.
El uso de SSH o cualquier otro metodo que haga circular las contraseñas encriptadas
puede evitar este tipo de ataques. Tambien es interesante el uso de APOP para
cuentas POP de correo (los accesos POP normales son muy vulnerables a esto, como
todas las comunicaciones que envien a traves de la red contraseñas sin encriptar).
Antes de conectar su sistema Linux a NINGUNA red lo primero que debe ver es que
servicios necesita ofrecer. Los servicios innecesarios deberian deshabilitarse de forma
que tenga usted una cosa menos de la que preocuparse, y los atacantes un lugar
menos donde buscar un agujero.
Existen varias formas de deshabilitar servicios en Linux. Se puede mirar en el archivo
/etc/inetd.conf y ver que servicios estan siendo ofrecidos por inetd. Desactive lo que no
necesite poniendo un “#” delante de la linea correspondiente, y enviando luego un
SIGHUP al proceso inetd.
N. del T: para enviar señales a un proceso, primero debe averiguar el numero
asignado a dicho proceso (“man ps”) y despues enviarle la señal deseada (“man kill”).
El comando “kill” no solo sirve para acabar con un proceso, como parece sugerir su
nombre.
• ftp
• telnet (o ssh)
• correo, como pop-3 o imap
• identd
Si sabe que no va a utilizar un determinado paquete (ftpd, httpd, etc) puede eliminarlo
totalmente de su sistema. El metodo para hacerlo dependera en gran medida de la
distribucion que utilice.
Sin duda se deben deshabilitar las utilidades rsh/rlogin/rcp, incluyendo login (usado por
rlogin), shell (usado por rcp), y exec (usado por rsh) eliminando o comentando (#) las
lineas adecuadas en /etc/inetd.conf. Estos protocolos son EXTREMADAMENTE
INSEGUROS y han sido ampliamente explotados en el pasado.
Deberia comprobar el archivo /etc/rc.d/rcN.d (donde N es el “run-level” en el que corre
normalmente su sistema) y ver si alguno de los servicios iniciados desde ese directorio
no es necesario. Los archivos que residen en /etc/rc.d/rcN.d son en realidad vinculos
simbolicos al directorio /etc/rc.d/init.d. Renombrar los archivos en el directorio init.d
tiene como efecto el deshabilitar los vinculos simbolicos en /etc/rc.d/rcN.d. Si desea
deshabilitar un servicio unicamente para un “run-level” en particular, renombre el
archivo apropiado cambiando la “S” mayuscula por una “s” minuscula, tal que:
root# cd /etc/rc6.d
root# mv S45dhcpd s45dhcpd
Si sus archivos rc son del estilo BSD, debera comprobar /etc/rc* en lugar de los
mencionados anteriormente (que son estilo System V) ya que es desde estos archivos
desde donde se lanzan los servicios.
ALL: 127.
y, por supuesto, /etc/hosts.deny contendria:
ALL: ALL
con lo cual evitara que se realicen conexiones desde el exterior a su maquina,
mientras sigue siendo posible conectarse a servidores remotos en Internet.
Recuerde que el uso de los “tcp_wrappers” solo protege a los servicios que son
ejecutados por inetd, y unos pocos mas. Es muy probable que su maquina ofrezca
otros servicios. Puede usar la orden “netstat -ta” para obtener una lista de todos los
servicios que ofrece su maquina.
8.4. identd
Hay varios paquetes de software circulando por ahi que sirven para escanear las
maquinas de una red y determinar que puertos ofrecen algun servicio. SATAN, ISS,
SAINT y Nessus son algunos de los mas conocidos. Estos programas se conectan a
la maquina objetivo (o a todas las maquinas de una red) a todos los puertos que
pueden, e intentan determinar que servicio esta ejecutandose en cada puerto. A partir
de esta informacion se puede deducir si una maquina podria ser vulnerable a algun
“exploit” contenido en los ejecutables que proporcionan dichos servicios.
SATAN (Herramienta de Seguridad del Administrador para Analizar Redes) es un
escaneador de puertos con un interfaz “web”. Puede configurarse para que realice
chequeos “ligeros”, “medios” o “fuertes” a una maquina o a una red. No es mala idea
conseguir el programa SATAN y escanear su propia maquina o red, para corregir
despues los problemas que se encuentren. Asegurese de conseguir su copia de
SATAN o bien de metalab
http://metalab.unc.edu/pub/packages/security/Satan-for-Linux/
o bien de algun otro sitio fiable. Habia una copia “caballo de troya” de SATAN
circulando por Internet.
http://www.trouble.org/~zen/satan/satan.html
Tengase en cuenta que SATAN no ha sido actualizado desde hace tiempo, y algunas
de las herramientas mencionadas a continuacion podrian hacer mejor el trabajo.
Nessus es un escaner de seguridad libre. Tiene un interfaz grafico GTK para facilitar
su utilizacion. Tambien esta diseñado con una interesante funcion de adicion de
nuevos “tests” (“plugins”). Para mas informacion, eche un vistazo en la direccion:
http://www.nessus.org
Uno de los mas importantes servicios que puede usted proporcionar es un servidor de
correo. Desafortunadamente, es tambien uno de los mas vulnerables a los ataques,
sencillamente a causa del numero de tareas que debe realizar y de los privilegios que
normalmente necesita.
Si utiliza usted sendmail es muy importante mantenerse siempre actualizado a las
ultimas versiones. Sendmail tiene una MUY larga historia de agujeros de seguridad.
Asegurese siempre de que esta utilizando la version mas reciente, que puede obtener
en la direccion:
http://www.sendmail.org
Recuerde que para enviar correo no es necesario que ejecute sendmail. Si es usted
un usuario domestico, puede deshabilitar sendmail y utilizar sencillamente el programa
cliente de correo para enviarlo. Puede que tambien desee eliminar el modificador “-bd”
del archivo de inicializacion de sendmail, lo que desabilita el que se atiendan
peticiones de correo procedentes del exterior. En otras palabras, se puede ejecutar
sendmail desde uno de los “scripts” de inicializacion usando:
# /usr/lib/sendmail -q15m
Esto hara que sendmail vacie la cola de correo cada quince minutos en busca de
mensajes que no hayan podido ser enviados con exito en el primer intento.
Muchos administradores prefieren no usar sendmail, y en su lugar eligen alguno de los
demas agentes de transporte de correo (MTA’s). Puede que le resultase interesante
cambiarse a qmail. Qmail fue diseñado con la seguridad en mente desde el principio.
Es rapido, estable y seguro.
Puede encontrar el programa qmail en la direccion:
http://www.qmail.org
En competicion directa con qmail esta “postfix”, escrito por Wietse Venema, el autor de
varios “tcp_wrappers” y de otras herramientas de seguridad. Antiguamente llamado
vmailer, y patrocinado por IBM, este agente de transporte de correo tambien esta
diseñado pensando en la seguridad desde un principio. Puede encontrar mas
informacion sobre vmailer en la direccion:
http://www.postfix.org
http://www.quadrunner.com/~chuegen/smurf.txt
Si alguna vez sufre un ataque “ping flood”, utilice una herramienta como tcpdump
para determinar de donde vienen los paquetes (o de donde parecen venir), y
suministre esa informacion a su proveedor. Estos ataques pueden ser facilmente
prevenidos a nivel del “router” o bien mediante el uso de un cortafuegos.
(N. del T: El comando “ping” suministrado en la mayoria de las distribuciones de
Linux admite el parametro “-f” para generar un flujo masivo de paquetes ICMP. Por
supuesto, esta opcion solo puede ser utilizada por el superusuario.)
• El “Ping de la Muerte” - Este ataque envia paquetes ICMP ECHO REQUEST (ping)
que son demasiado grandes para caber en las estructuras de datos del kernel
donde se almacenan. Como la recepcion de un unico paquete “ping” de 65510
bytes hace que muchos sistemas se bloqueen, este problema recibio rapidamente
el sobrenombre de “ping de la muerte”. Hace tiempo que este problema ha sido
corregido, de manera que no hay que preocuparse por el.
Un cortafuegos es una forma de controlar que informacion puede salir o entrar en una
red. Tipicamente, la maquina cortafuegos esta conectada a Internet y tambien a la red
local, de forma que el unico camino posible para los paquetes de la red local con
destino a Internet sea a traves de la maquina cortafuegos. De esta forma, el
cortafuegos puede controlar todo el trafico que fluye de la red local a Internet y
viceversa.
Hay varios tipos de cortafuegos y metodos para configurarlos. Las maquinas Linux
constituyen un cortafuegos bastante bueno. El codigo de cortafuegos se puede
compilar en los kernels 2.0 y superiores. Las herramientas de usuario (ipfwadm para
kernels 2.0.x, ipchains para 2.2.x) permiten cambiar “en caliente” los tipos de trafico de
red permitidos. Tambien permiten mantener un registro de un determinado tipo de
trafico de red.
Los cortafuegos constituyen una util e importante tecnica para proteger su red. No
obstante, nunca piense que por el hecho de tener un cortafuegos no necesita proteger
las maquinas que se encuentran tras de el. Este es un error fatal. Para mas
informacion sobre Linux y los cortafuegos, le remitimos al magnifico documento
Firewall-HOWTO, disponible en:
http://metalab.unc.edu/mdw/HOWTO/Firewall-HOWTO.html
Tambien encontrara informacion interesante en el IP-Masquerade mini-howto:
http://metalab.unc.edu/mdw/HOWTO/mini/IP-Masquerade.html
Si desea ampliar su conocimiento de ipfwadm (la herramienta de usuario para
gestionar el cortafuegos de los kernels 2.0.x) visite:
http://www.xos.nl/linux/ipfwadm/
Si no tiene ninguna experiencia con cortafuegos, y planea configurar uno para algo
mas que una politica de seguridad sencilla, el libro “Firewalls” de O’Reilly y Asociados,
asi como alguna otra documentacion sobre cortafuegos serian de obligada lectura.
Visite para mas informacion:
http://www.ora.com
El Instituto Nacional de Estandars y Tecnologia posee tambien un excelente
documento sobre cortafuegos. Aunque data de 1995, todavia sigue vigente.
Puede encontrarlo en la direccion siguiente:
http://csrc.nist.gov/nistpubs/800-10/main.html
Otras fuentes interesantes de informacion relacionada con los cortafuegos son las
siguientes:
http://sites.inka.de/sites/lina/freefire-l/index_en.html
• Diseño de Cortafuegos SunWorld - escrito por los autores del libro de O’Reilly
mencionado anteriormente, proporciona una introduccion a los diferentes tipos de
cortafuegos. Puede encontrarlo en:
http://www.sunworld.com/swol-01-1996/swol-01-firewall.html
Las VPN’s son una forma de crear una red “virtual” sobre otra red ya existente. Esta
red virtual a menudo usa algun sistema de encriptado y unicamente permite el trafico
entre algunas maquinas bien conocidas que se unen a esta red virtual. Las VPN’s se
utilizan habitualmente para conectar la maquina de alguien que trabaja desde casa
con la red interna de su empresa usando una red virtual encriptada que corre sobre
otra red publica, normalmente Internet.
Si esta usando un cortafuegos Linux con “masquerading” y necesita dejar pasar
paquetes MS PPTP (un producto VPN punto a punto de Micro$oft), existe un parche
para el kernel de Linux que permite justamente esto. Vease: ip-masq-vpn.
Existen varias soluciones VPN para Linux disponibles:
• vpnd. Visite:
http://www.crosswinds.net/nuremberg/~anstein/unix/vpnd.html.
http://www.xs4all.nl/~freeswan/
• Puede utilizarse SSH para construir una VPN. Vea el VPN mini-HOWTO para mas
informacion.
http://www.strongcrypto.com.
Vease tambien la seccion sobre IPSEC para obtener mas direcciones donde obtener
mas informacion sobre este tema.
Un ciclo de seis cintas es facil de mantener. Esto incluye cuatro cintas para los dias de
la semana de lunes a jueves, una cinta para los viernes pares y otra para los viernes
impares. Realice una copia incremental los dias ordinarios, y una copia de seguridad
completa todos los viernes a la cinta que corresponda. Si en algun momento realiza
cambios particularmente importantes en el sistema, una copia completa no estara de
mas.
En el caso de sufrir una intrusion, puede utilizar la base de datos RPM de archivos
instalados en el sistema tal y como utilizaria tripwire, pero solo si sabe a ciencia cierta
que dicha base de datos no ha sido modificada por el intruso. Deberia copiar la base
de datos RPM a un disquete, y mantener este disquete a buen recaudo. La distribucion
Debian utiliza un sistema similar a la base de datos RPM.
Los archivos /var/lib/rpm/fileindex.rpm y /var/lib/rpm/packages.rpm (la base de datos
RPM) posiblemente no caben en un disquete, pero una vez comprimidos deberian
caber cada uno de ellos en un disquete.
Asi, si su sistema se ve comprometido, puede usar el comando:
para verificar cada archivo del sistema. Vea la pagina de manual del comando rpm, ya
que hay algunas otras opciones que pueden incluirse para hacer que el comando
proporcione menos informacion (???). Tenga en cuenta que debe estar seguro de que
el binario RPM no ha sido comprometido.
Esto significa que cada vez que instale un nuevo paquete RPM en el sistema debera
volver a hacer una copia de seguridad de la base de datos RPM. Tendra que evaluar
usted mismo las ventajas y los inconvenientes de este sistema.
“Estamos realizando una auditoria sistematica de los codigos fuente de Linux con
vistas a hacerlo tan seguro como el OpenBSD.
Ya hemos descubierto (y corregido) algunos problemas, pero
cualquier ayuda es bienvenida. Nuestra lista de correo es una
fuente util de informacion general sobre seguridad. La direccion
es security-audit@ferret.lmh.ox.ac.uk, y para suscribirse debe
enviar un “e-mail” a: security-audit-subscribe@ferret.lmh.ox.ac.uk”
Es importante realizar una evaluacion del daño causado por el intruso. ¿Que es lo que
se ha visto comprometido? si dispone de un verificador de integridad como Tripwire,
puede usarlo para realizar una comprobacion. Si no, tendra que revisar usted mismo
toda la informacion importante.
Como los sistemas Linux se estan volviendo cada vez mas faciles de instalar, puede
considerar la opcion de salvar sus archivos de configuracion y borrar totalmente el
contenido de los discos duros para volver a instalar todo. Despues solo tendria que
restaurar los archivos de configuracion y los datos de usuario. Esto le daria la
seguridad de tener un nuevo sistema totalmente “limpio”. Si conserva alguna copia de
seguridad del sistema que se ha visto comprometido, sea especialmente cuidadoso
con los ejecutables que restaura, ya que puede que haya algun “caballo de troya”
dejado por el intruso.
Una reinstalacion de este tipo deberia ser obligatoria si se ha detectado una intrusion
en la que el atacante haya conseguido privilegios de “root”. Tambien puede que usted
desee conservar cualquier evidencia de la intrusion, de manera que no estaria de mas
reinstalar en un disco duro diferente y conservar el antiguo tal y como quedo despues
del ataque.
Despues debe averiguar cuanto tiempo hace que sucedio el ataque, y si las copias de
seguridad contienen informacion ya alterada por el intruso. Hablaremos de nuevo
sobre las copias de seguridad mas adelante.
Por supuesto, hay mucho mas que decir con respecto a las copias de seguridad.
Asegurese de almacenarlas en un lugar seguro. Sepa quien tiene acceso a ellas. Si un
intruso consigue una de sus copias de seguridad, tendra acceso a toda su informacion
sin que usted jamas se entere.
• “The Hacker FAQ” es un FAQ sobre hackers (N. del T: no se dice donde encontrar
este documento).
• El archivo COAST tiene un gran numero de programas de seguridad para Unix y
tambien informacion.
http://www.suse.de/security/
• Rootshell.com es un lugar muy bueno para ver los “exploits” que estan siendo
utilizados actualmente por los “crackers”:
http://www.rootshell.com/
• BUGTRAQ realiza informes sobre temas de seguridad
• Dan Farmer es el autor de SATAN y muchas otras herramientas de seguridad. Su
“web” contiene tanto herramientas como documentacion.
http://www.trouble.org
• “Linux Security” es un buen lugar para conseguir informacion relativa a la
seguridad con Linux: Linux Security WWW
• Infilsec dispone de una base de datos con un motor de busqueda que permite
consultar vulnerabilidades que afecten a una plataforma especifica. Su direccion
es:
http://www.infilsec.com/vulnerabilities/
• CIAC realiza publicaciones periodicas relativas a “exploits” comunes:
http://ciac.llnl.gov/cgi-bin/index/bulletins
• Un buen lugar donde iniciarse en el uso de los modulos PAM es:
http://www.kernel.org/pub/linux/libs/pam/
• El proyecto Debian tiene una pagina “web” con sus parches de seguridad y
tambien informacion. La direccion es:
http://www.debian.com/security/
• El FAQ de Seguridad WWW, escrito por Lincoln Stein, es una gran fuente de
informacion de seguridad relativa al servicio WWW:
http://www.w3.org/Security/Faq/www-security-faq.html
Existen por ahi numerosos libros muy buenos sobre seguridad. Esta seccion hace
referencia a algunos de ellos. Ademas de los libros especificos sobre seguridad, este
tema tambien es tratado es otros libros cuyo tema central es la administracion de
sistemas.
12. Glosario
• bastion host (maquina bastion): Es un sistema que tiene que estar altamente
protegido porque es susceptible de ser atacado, normalmente porque esta
expuesto a Internet y es el punto de contacto principal entre los usuarios de la red
interna. Recibe su nombre de las paredes exteriores de las antiguos castillos
medievales, altamente fortificados. Los bastiones vigilaban puntos criticos
defensivos, y normalmente constituian un lugar para poner tropas “extra”, arrojar
aceite hirviendo a los atacantes, etc. (N. del T: estas practicas estan totalmente en
desuso hoy dia, habiendo sido sustituidas ventajosamente por la ubicacion
estrategica de un vendedor de la revista “La Farola”).
(N. del T: un ejemplo sencillo de esta tecnica seria enviar a una cuenta de correo de
la maquina objetivo un mensaje cuyo tamaño sea mayor que el espacio libre
disponible en la particion que aloja al directorio /var/spool/mail. Si el administrador
cometio la imprudencia de dejar ese directorio en la particion que alberga el sistema
de archivos raiz (/) y ademas no establecio una politica de limitacion de espacio en
disco (cuotas) entonces su maquina se quedara sin espacio en disco, viendose
afectados todos los servicios que ofrezca).
• dual-homed host (maquina con hogar dual): Es un ordenador de proposito general
que posee al menos dos interfaces de red.
• perimeter network (red envolvente): Es una red que separa a una red protegida de
otra red externa, con el fin de proporcionar una capa adicional de seguridad. A
veces se les llama DMZ.
Respuesta: alguna gente piensa que es mejor desabilitar la capacidad del kernel de
cargar modulos adicionales, ya que un intruso podria cargar un modulo troyano o
uno para alterar la seguridad del sistema.
En cualquier caso, para poder cargar modulos se necesitan privilegios de “root”. Los
archivos objeto de los modulos tampoco pueden ser modificados por nadie salvo el
superusuario. De esto se deduce que un intruso necesita acceso de “root” para
poder cargar modulos. Si un intruso obtiene acceso de “root” hay cosas mas serias
de las que preocuparse que de si carga un modulo.
Los modulos son para permitir la carga dinamica del soporte para un dispositivo que
no se usa frecuentemente. En maquinas servidor, como un cortafuegos por
ejemplo, es muy raro que esto sea necesario. Por esta razon, es mas logico
compilar directamente en el kernel el soporte para los dispositivos que esa maquina
servidor vaya a utilizar. Ademas, los modulos son mas lentos que el soporte directo
en el kernel.
2. ¿Por que no se puede hacer “login” como “root” desde una maquina
remota?
Respuesta: vease “seguridad de root”. Esto sucede de forma intencional para evitar
que se pueda intentar conectar via telnet como “root”, lo que es un riesgo
importante para la seguridad. No lo olvide: los intrusos potenciales tienen al tiempo
de su parte, y pueden ejecutar programas automatizados de busqueda de
contraseñas.
Respuesta:
1.Consiga SSLeay 0.8.0 o superior de
<ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL>
Puede tambien visitar el sitio “web” de Replay Associates, donde puede encontrar
muchos paquetes precompilados, y ademas estan fuera de los Estados Unidos.
14. Conclusion
15. Agradecimientos:
(N. del T: como suele ser mi costumbre, esta seccion permanece en el idioma original)
Information here is collected from many sources. Thanks to the following that either
indirectly or directly have contributed: following who either indirectly or directly have
contributed:
Rob Riggs rob@DevilsThumb.com
S. Coffin scoffin@netcom.com
Viktor Przebinda viktor@CRYSTAL.MATH.ou.edu
Roelof Osinga roelof@eboa.com
Kyle Hasselbacher kyle@carefree.quux.soltc.net
David S. Jackson dsj@dsj.net
Todd G. Ruskell ruskell@boulder.nist.gov
Rogier Wolff R.E.Wolff@BitWizard.nl
Antonomasia ant@notatla.demon.co.uk
Nic Bellamy sky@wibble.net
Eric Hanchrow offby1@blarg.net
Robert J. Bergerrberger@ibd.com
Ulrich Alpers lurchi@cdrom.uni-stuttgart.de
David Noha dave@c-c-s.com
The following have translated this HOWTO into various other languages!
A special thank you to all of them for help spreading the linux word...
Polish: Ziemek Borowski ziembor@FAQ-bot.ZiemBor.Waw.PL
Japanese: FUJIWARA Teruyoshi fjwr@mtj.biglobe.ne.jp
Indonesian: Tedi Heriyanto 22941219@students.ukdw.ac.id