IntroducciónPartimos de el hecho de que estamos trabajando con un sistema multiusuario, en estos casos se da el hecho de estar varios usuarios trabajando de forma simultanea en la misma máquina con sus procesos y datos particulares. Es el Sistema Operativo el que debe controlar que cada usuario realice las tareas que desee sin interferencias de ningún tipo por parte de otros usuarios.Por otra parte además Unix suele ser un sistema abierto en el que podriamos sufrir intrusiones no deseadas desde el exterior. También hay que tener en cuenta que una red es básicamente insegura y todos los datos que viajan por ella son susceptibles de ser interceptados por personas ajenas, datos correo, transacciones podrían ser interceptadas por otros. El hecho de estar en una red que cada día crece hace que el número de posibles atacantes crezca constantemente, las tecnicas de intrusión son también cada vez más sofisticadas o simplemente aparecen nuevos metodos de de ataque que hace que un administrador tenga que mantener su sistema y sus metodos de comunicación lo más protegido posible, ya sea con actualizaciones, parches u otras tecnicas defensivas. ¿Que es seguridad?Podemos enterder como seguridad una caracteristica de cualquier sistema (informatico o no) que nos indica que ese sistema esta libre de todo pelibro, daño o riesgo, y que es, en cierta manera infalible. Pero ha la hora de hablar de seguridad en SO o redes de computadores, se suele hablar de fiabilidad (probabilidad de que un sistema se comporte tal y como se espera de el). Ya hablemos de Hw, Sw o Datos.Nos centramos en tres aspectos:
¿De que nos protegemos?
¿Como protegernos?La seguridad la abarcamos desde tres puntos:
Ajustes básico de seguridad
Seguridad fisicaLas primeras medidas de seguridad que necesita tener en cuenta son las de seguridad física de sus sistemas. Hay que tomar en consideración quiénes tienen acceso físico a las máquinas y si realmente deberían acceder.El nivel de seguridad física que necesita en su sistema depende de su situación concreta. Un usuario doméstico no necesita preocuparse demasiado por la protección física, salvo proteger su máquina de un niño o algo así. En una oficina puede ser diferente. Linux proporciona los niveles exigibles de seguridad física para un sistema operativo:
Seguridad en el arranqueCuando alguien inicia el sistema operativo Linux se encuentra con una pantalla de login: el sistema está pidiendo que se identifique. Si es un usuario conocido, podrá iniciar una sesión y trabajar con el sistema. Si no lo es, no tendrá opción de hacer absolutamente nada. Además, el sistema registra todos los intentos de acceso (fallidos o no), por lo que no pasarán desapercibidos intentos repetidos de acceso no autorizado.LILO (Linux Loader) es el encargado de cargar el sistema operativo en memoria y pasarle información para su inicio. A su vez, se le puede pasar parámetros a LILO para modificar su comportamiento. Por ejemplo, si alguien en el indicador de LILO añade init single, el sistema se inicia en modo monousuario y proporciona una shell de root sin contraseña. Si en su entorno de trabajo cree necesario evitar que alguien pueda iniciar el sistema de esta forma, debería utilizar el parámetro restricted en el fichero de configuración de LILO (habitualmente /etc/lilo.conf). Este parámetro le permite iniciar normalmente el sistema, salvo en el caso de que se hayan incluido argumentos en la llamada a LILO, que solicita una clave. Esto proporciona un nivel de seguridad razonable: permite iniciar el sistema, pero no manipular el arranque. Si tiene mayores necesidades de seguridad puede incluir la opción password . De esta forma necesitará una clave para iniciar el sistema. En estas condiciones, sólo podrá iniciar el sistema quien conozca la clave. Bloqueo de la consolaEn los entornos Unix es conocido el truco de ejecutar en una teminal, que alguien ha dejado inocentemente abierto, un guion que simule la pantalla de presentación al sistema. Entonces un usuario incauto introudcirá su nombre y clave, que quedarán a merced del autor del engaño.Si te aleja de su máquina de vez en cuando, estaría bien poder bloquear su consola para que nadie pueda manipularla o mirar su trabajo. Dos programas que hacen esto son xlock y vlock . xlock bloquea la pantalla cuando nos encontramos en modo gráfico. Está incluido en la mayoría de las distribuciones Linux que soportan X. En general puede ejecutar xlock desde cualquier xterm de su consola y bloqueará la pantalla de forma que necesitará su clave para desbloquearla. vlock es un simple programa que le permite cerrar alguna o todas las consolas virtuales de su máquina Linux. Puede bloquear sólo aquélla en la que está trabajando o todas. Si sólo cierra una, las otras se pueden abrir y utilizar la consola, pero no se podrá usar su vty hasta que no la desbloquee. El Sistema de archivos de UnixSistemas de ficherosAntes de que se puedan utilizar las particiones del disco por el OS se necesita construir un sistema de ficheros en ellas. Se crea generalmente un sistema de ficheros separado en cada particion, excepto los usados para el intercambio que esten alcanzadas como particiones crudas, y despues las ensambla juntas para formar un jerarquico, arbol como la estructura.Desde el punto de vista del usuario, el aspecto mas importante de un sistema de archivos es la estructura que refleja el sistema de archivos, que constituye un archivo, como los archivos se nombran y se protegen, que operaciones estan permitidas sobre los archivos,etc. Las reglas exactas para nombrar archivos son nombre de hasta 255 caracteres, diferenciando mayusculas y minusculas, es "case-sensitive". Unix utiliza el concepto de particion raiz y monta los sistemas de archivos sobre esta particion. Esto significa que todas as unidades utilizan una estructura comun. Asi no existiran varias unidades y una estructura de directorios por unidad, sino que existira una unica estructura de directorios y sobre ella se acomodaran las distintas unidades, inclusive las que se comparten en redes. Las rutas (PATH) se utilizan para referirse a determinados directorios o archivos dentro del sistema de archivos. Por ejemplo: /usr/src/linux que seria una ruta absoluta, una ruta relativa dependera del directorio donde nos encontramos, si estamos en el directorio /usr/src no podemos referir a linux como ./linux. Nos podemos encontrar hard links o soft links. Los "hard links" (links "duros") son links directos al inodo del archivo y nos permiten tener mas de un archivo apuntando al mismo inodo. Son hard links el "." y el "..". Un link simbolico tiene su propio numero de inodo pero apunta a otro archivo, incluso a un archivo que no exista. Permisos en UnixUnix, como sistema multiusuario, asigna un propietario y un grupo a cada fichero (y directorio) y unos permisos al propietario, al grupo y al resto de los usuarios. La forma más rápida de comprobar esta característica es usar el comando ls -la. Así nos aparece el tipo de fichero, el propietario, el grupo, los permisos e información adicional. Por supuesto, el sistema de ficheros tiene que admitir esta característica, como es el caso del sistema de ficheros ext2. En los sistemas de ficheros pensados para entornos monousario, como msdos o vfat, no tenemos esta característica, por lo que son inseguros y su uso no es aconsejable bajo Unix.Es conveniente tener claros los permisos que se pueden asignar a un fichero o directorio. Puede que algunas aplicaciones no funcionen bien si algún fichero no tiene el permiso o el propietario correctos, bien por falta de permisos o bien por exceso. Algunas aplicaciones son un poco quisquillosas en este aspecto. Por ejemplo, fetchmail es un programa que podemos usar para recoger el correo de un servidor pop. Este programa se configura en el fichero .fetchmailrc, donde tendremos que indicar la clave que usamos en el servidor; pues bien, si este fichero tiene permiso de lectura para otro usuario que no sea el propietario, fetchmail no funcionará. Otras aplicaciones, como por ejemplo inn (un servidor de noticias de Internet) tampoco funcionará si el propietario de sus ficheros es otro usuario distinto a news. Todo esto está perfectamente documentado en cada uno de los programas, por lo que es conveniente leer la documentación que aporta y las páginas del manual. Permisos de ficheros y directoriosTenemos que asegurarnos de que los ficheros del sistema y los de cada usuario sólo son accesibles por quienes tienen que hacerlo y de la forma que deben. No sólo hay que protegerse de ataques o miradas indiscretas, también hay que protegerse de acciones accidentales.En general, cualquier sistema UNIX divide el control de acceso a ficheros y directorios en tres elementos: propietario, grupo y otros. Tanto el propietario como el grupo són únicos para cada fichero o directorio. Eso sí, a un grupo pueden pertenecer múltiples usuarios. Otros hace referencia a los usuarios que ni son el propietario ni pertenecen al grupo. Todas estas características se almacenan en el sistema de ficheros, en particular en un i-nodo, que es un elemento que describe las características de un fichero en disco (salvo su nombre), si deseamos saber el numero 'i-node' de un archivo en concreto podemos emplear el comando 'ls -i archivo'. Una rápida explicación de los permisos Unix:Propiedad: Qué usuario y grupo posee el control de los permisos del i-nodo. Se almacenan como dos valores numéricos, el uid (user id) y gid (group id).Permisos: Bits individuales que definen el acceso a un fichero o directorio. Los permisos para directorio tienen un sentido diferente a los permisos para ficheros.
Fichero: Poder acceder a los contenidos de un fichero Directorio: Poder leer un directorio, ver qué ficheros contiene Fichero: Poder modificar o añadir contenido a un fichero Directorio: Poder borrar o mover ficheros en un directorio Fichero: Poder ejecutar un programa binario o guion de shell Directorio: Poder entrar en un directorio
Para establecer nuestros permisos en el sistema UNIX:Forma abosluta:La principal caracteristica que tiene esta nomenclatura es la de asignar los permisos mediante valores octales. Como todos sabreis, la base octal, o base 8, puede contener de los numeros 0 al 7. Es por ello, que tan solo son validos estos numeros a la hora de asignar permisos. Fijate en el siguiente cuadro:
Claramente observamos que numero octal corresponde a cada caracteristica
de un archivo o directorio en un sistema UNIX. Pasemos pues a poner en
uso todo lo aprendido hasta ahora. Como dijimos antes el comando utilizado
por los S.O UNIX para establecer permisos recibe el nombre de chmod. A
la hora de dar permisos en forma absoluta hemos de seguir la siguiente
Sintaxis: 'chmod XYZ archivo'. X representa al due¤o del archivo,
Y al grupo y Z al resto de usuarios, mientras que 'archivo' es el nombre
del archivo a especificar los permisos. Siempre que queramos atribuir mas
de un permiso los numeros octales se sumaran. Observar los siguientes ejemplos
para un mayor entendimiento:
Forma relativa:A diferencia de la forma abosulta, la relativa no utiliza numeros octales o en base 8 para establecer los diferentes permisos, sino que se basa en una nomenclatura de letras. Al igual que en la forma absoluta, en la relativa tambien nos valemos del comando 'chmod' para asignar los permisos.Observa los siguientes cuadros:
Siempre que queramos atribuir permisos a un archivo/directorio en forma relativa seguiremos por orden los 3 cuadros expuestos anteriormente. Por lo tanto primero se indicara a la persona o personas que queremos atribuir dichos permisos, seguiremos estableciendo la agregacion o eliminacion de ciertos permisos y finalmente indicaremos estos mismos permisos. Fijate en el siguiente ejemplo: chmod a+r archivo Si te has fijado en las Figuras anteriores, no te deberia costar demasiado entender los permisos que atribuye la orden anterior. Primeramente como hemos dicho, indicamos al usuario/usuarios, en este caso esta la letra 'a' que significa que estableceremos permisos al due¤o, grupo y demas usuarios. El siguiente simbolo que le sigue, indicara si queremos agregar o eliminar permisos del archivo en cuestion, en este caso el simbolo '+' indica que queremos agregar permisos al fichero. Finalmente indicaremos los permisos a agregar. En este caso indicamos 'r' (lectura) para todos los usuarios 'a'. Espero que haya quedado claro lo anterior, mediante este ejemplo. Sin embargo quiza el simbolo '=' no lo acabemos de entender. Bien simplemente a diferencia de los caracters '+' y '-', el simbolo '=' lo que hace es agregar permisos al usuario/usuarios en cuestion, pero eliminando antes los que tenia establecidos. Ejemplo: chmod g=rw archivo Y simplemente lo que haria seria quitar los permisos establecidos en el grupo (si hay alguno), y daria permisos de lectura 'r' y escritura 'w' al grupo del creador de dicho archivo. Si por el contrario queremos establecer varios permisos a las diferentes categorias que comprenden los sistemas UNIX podemos utilizar las comas. Ejemplo: chmod o-wr, g-wr archivo Que simplemente esta sentencia eliminaria ambos permisos, de escritura
y lectura tanto para el grupo, como para el resto de usuarios o general.
Durante gran parte de este texto, nos hemos referido tanto a directorios
como a archivos de forma indistintiva. Pero como bien sabemos, un directorio
con caracteristicas de ejecucion, no quiere decir que se pueda ejecutar,
entre otras cosas, porque los directorios no se crearon con ese fin. A
continuacion se muestra un cuadro con las multiples cualidades que puede
tener un directorio, y que podemos hacer con funcion de estas.
Como habreis podido deducir, las opciones anteriores se pueden convinar si deseamos dar multiples cualidades a un directorio. A continuacion podras ver unas aclaraciones tanto de archivos como de directorios que no habiamos comentado literalmente hasta ahora.
chmod [opciones] establecimiento_del_permiso archivo_o_directorio
drwxrwxrwt 24 root root 8192 Jun 24 14:40 tmp
-rw-r--r-- 1 root root 1265 Jun 22 17:35 /etc/passwd pero según los permisos que observamos en este fichero, sólo root puede escribir y modificar en él. Entonces sería imposible que un usuario pudiera cambiar su clave si no puede modificar este fichero. La solución para este problema consiste en activar el bit SUID para este fichero: -r-s--x--x 1 root root 10704 Apr 14 23:21 /usr/bin/passwd de forma que cuando se ejecute, el proceso generado por él es un proceso propiedad de root con todos los privilegios que ello acarrea. ¿Piensa que esto puede ser un riesgo para la seguridad? Efectivamente lo podría ser si no mantenemos un mínimo de atención, ya que en este tipo de programas se pueden producir desbordamientos de búfer que comprometan su sistema. Recuerde siempre lo siguiente: No asignar el bit SUID salvo cuando sea estrictamente necesario.
A continuación se describen los significados de los permisos
de acceso individuales para un directorio. Normalmente un directorio tendrá
una combinación de los siguientes permisos:
Los ficheros de configuración del sistema (normalmente en /etc)
es habitual que tengan el modo 640 (-rw-r-----), y que sean propiedad del
root. Dependiendo de los requisitos de seguridad del sistema, esto se puede
modificar. Nunca deje un fichero del sistema con permiso de escritura para
un grupo o para otros. Algunos ficheros de configuración, incluyendo
/etc/shadow, sólo deberían tener permiso de lectura por root,
y los directorios de /etc no deberían ser accesibles, al menos por
otros .
Se hace con el comando getfacl. Lo interesante de cara a la proteccion de ficheros es extender los permisos clasicos del archivo, modificando su lista asociada. Esto se hace con setfacl. Ficheros del sistema
nombreusuario:contraseña_cifrada:UID:GID:campo_GECOS:direct_personal:login_shell Las contraseñas se guardan utilizando un hash de un sólo
sentido (el hash utilizado por defecto es crypt, las distribuciones más
nuevas soportan MD5, que es significativamente más robusto). Las
contraseñas no pueden obtenerse a partir de la forma cifrada, sin
embargo, se puede tratar de encontrar una contraseña utilizando
fuerza bruta para pasar por el hash cadenas de texto y compararlas, una
vez que encuentres una que coincide, sabes que has conseguido la contraseña.
Esto no suele ser un problema por sí mismo, el problema surge cuando
los usuarios escogen claves que son fácilmente adivinables. Las
encuestas más recientes han demostrado que el 25% de las contraseñas
se pueden romper en menos de una hora, y lo que es peor es que el 4% de
los usuarios utilizan su propio nombre como contraseña. Los campos
en blanco en el campo de la contraseña se quedan vacíos,
así que se vería "::", lo cual es algo crítico para
los cuatro primeros campos (nombre, contraseña, uid y gid).
nombregrupo:contraseña_cifrada:GID:miembro1,miembro2,miembro3 Un grupo puede no contener miembros (p. ej., no está usado),
sólo un miembro o múltiples miembros, y la contraseña
es opcional (y no se suele usar).
Introducción a la seguridad en redLa seguridad de las conexiones en red merecen en la actualidad una atención especial, incluso por medios de comunicación no especializados, por el impacto que representan los fallos ante la opinión pública. El propio desarrollo tanto de Unix, como de la mayoría del software que lo acompaña, es de fuentes abiertas. Podemos ver y estudiar el código. Esto tiene la ventaja de que la seguridad en Unix no sea una mera apariencia, sino que el código está siendo escrutado por muchas personas distintas que rápidamente detectan los fallos y los corrigen con una velocidad asombrosa.Si además comprendemos los mecanismos que se siguen en las conexiones en red, y mantenemos actualizados nuestros programas, podemos tener un nivel de seguridad y una funcionalidad aceptables. Tampoco tienen las mismas necesidades de seguridad un equipo doméstico, con conexiones esporádicas a Internet, que un servidor conectado permanentemente y que actúe como pasarela entre una intranet e Internet. Para describir las pautas de actuación seguras iremos examinando cómo actúan las conexiones y cómo podemos protegerlas.
Esto quiere decir que, cuando llegue una solicitud de conexión
al puerto 110 (pop3) se ejecutará el programa /usr/sbin/tcpd ipop3d
. Sin embargo, el servicio imap está deshabilitado (está
comentado con un # delante), por lo que el sistema no le responde.
inetd.conf es el responsable de iniciar los servicios, generalmente
aquellos que no necesitan ejecutarse de continuo, o que están basados
en sesiones (como telnet o ftpd). Ello es debido a que la sobrecarga que
supondría ejecutar un servicio constantemente (como telnet) sería
mayor que el costo de inicio ocasional (o que arrancar in.telnetd) cuando
el usuario quisiera utilizarlo. Para algunos servicios (como DNS) que sirven
a muchas conexiones rápidas, la sobrecarga de arrancar servicios
cada pocos segundos sería mayor que tenerlo constantemente ejecutándose.
De igual forma ocurre con servicios como DNS y el correo, donde el tiempo
es crítico, sin embargo unos pocos segundos de retraso en empezar
una sesión de ftp no le hacen daño a nadie. La página
del manual de inetd.conf cubre los básicos ("man inetd.conf"). El
servicio en sí se llama inetd y se ejecuta al arrancar, de modo
que se le puede parar/arrancar/recargar manipulando el proceso inetd. Cada
vez que se hagan cambios a inetd.con, hay que reiniciar inetd para hacer
efectivos los cambios, killall -1 inetd lo reiniciará correctamente.
Como de costumbre, las lineas del inetd.conf se pueden comentar con un
# (lo cual es una forma muy simple y efectiva de deshabilitar servicios
como rexec). Se aconseja desabilitar tantos servicios de inetd.conf como
sea posible, por lo general los que se suelen usar son ftp, pop e imap.
Se debería reemplazar telnet y los servicios r por el SSH y servicios
como systat/netstat y finger proporcionan demasiada información.
El acceso a programas arrancados por inetd se puede controlar con facilidad
mediante el uso de TCP_WRAPPERS.
Un consejo que es conveniente seguir: No tenga abiertos los servicios que no necesita; esto supone asumir un riesgo a cambio de nada. Tampoco limite la funcionalidad del sistema, si tiene que usar un servicio, hágalo sabiendo lo que hace. También hay que asegurarse de que el programa ipop3d no tenga ninguna vulnerablidad, es decir, que esté actualizado. Existen numerosos medios para estar al día de las vulnerabilidades que aparecen. Una buena lista de correo o una revista electrónica tal vez sean la forma más rápida de conocer los incidentes, las causas y las soluciones. Posiblemente la mejor lista de correo para el mundo Unix sea Bugtraq (busque en forums). Pero esto no es todo, además puede filtrar las conexiones que le lleguen desde el exterior para que ni siquiera alcancen a los tcp_wrappers . Por ejemplo, en el caso de conexiones a Internet por módem:
poniendo la anterior línea en el fichero /etc/ppp/ip-up (y ipchains -F input en ip-down) estaríamos añadiendo (-A) un filtro de entrada (input), que deniega ( -j DENY) desde cualquier sitio de internet (-s 0/0) dirigidas a nuestro equipo (-d $4/32) al puerto telnet (23) por tcp (-p tcp) que lleguen desde internet (en este caso -i ppp0 ) y que además las anote en el registro de incidencias (-l ) ($4 es la dirección IP que obtenemos dinámicamente). El mecanismo de filtrado de conexiones se realiza en el núcleo
del sistema operativo y si ha sido compilado con estas opciones. Normalmente
lo está. Este filtrado se realiza a nivel de red y transporte: cuando
llega un paquete por un interfaz de red se analiza siguiendo los filtros
de entrada. Este paquete puede ser aceptado, denegado o rechazado, en este
último caso se avisa al remitente. Si los filtros de entrada aceptan
el paquete, pasa al sistema si era su destino final o pasa por los filtros
de reenvío o enmascaramiento, donde se vuelve a repetir una de las
acciones. Por último, los paquetes que proceden del propio sistema
o los que han sido aceptados por los filtros de reenvío o enmascaramiento
pasan al filtro de salida. En cualesquiera de estos filtros se puede indicar
que lo anote en el registro de incidencias.
Después tenemos los registros de incidencias (las ubicaciones pueden ser diferentes dependiendo del sistema, pero no radicalmente distintas) de /var/log . Trabajando en modo texto se puede hacer en una consola virtual (como
root)
y de esta forma podemos ir viendo las incidencias del sistema. Conviene también familiarizarse con las anotaciones que aparecen habitualmente para diferenciarlas de las que puedan presentar un problema. En modo gráfico hay un programa llamado ktail que le muestra
las incidencias de una forma similar a la anterior.
Podemos usar cifrados simétricos como pgp y gpg para documentos, correo electrónico y comunicaciones sobre canales inseguros Podemos crear canales de comunicación seguros de distinto tipo:
Unix también tiene la posibilidad de proporcionar acceso transparente a Internet a una red local mediante IP masquerade. En este caso, si usamos direcciones de red privadas, nos aseguramos que los equipos de la red interna no son accesibles desde Internet si no es a través del equipo Unix. También podemos instalar un servidor proxy con caché,
que a la vez que actúa de filtro de conexiones a nivel de aplicación,
puede acelerar el acceso a servicios desde la red local.
Introducción a la seguridad del rootA menudo, el mayor enemigo del sistema es el propio administrador del sistema, sí, tiene todos los privilegios y cualquier acción puede ser irreversible y hacerle perder posteriormente mucho más tiempo que el que hubiera perdido por realizar las tareas de forma segura. Puede borrar cualquier fichero e incluso destruir el propio sistema, mientras que un usuario «normal» sólo puede perjudicarse a sí mismo. Por estos motivos, conseguir privilegios de root es la meta de cualquier ataque.Tampoco hay que alarmarse. Piense que en un sistema operativo monousuario cualquiera podría darle formato al disco duro y perder toda la información almacenada o borrar cuaquier fichero necesario para el funcionamiento del sistema. En un sistema estilo Unix, como Unix, esto sólo lo podría hacer el usuario root. Hábitos segurosLa seguridad del administrador es simple, en mayor medida consiste en tener unos hábitos seguros y también en utilizar herramientas seguras.Una primera norma que siempre debería tener presente es usar la cuenta de root sólo para realizar tareas concretas y breves y el resto hacerlo como usuario normal. Es una costumbre muy peligrosa usar todo el tiempo la cuenta de root. Al principio, a los usuarios de Unix les gusta sentir todo el poder de la cuenta de root, les molesta que su propio sistema les deniegue el permiso para hacer algo, pero van cambiando de opinión poco a poco, conforme se van familiarizando con el sistema o cuando han realizado un destrozo de esos que nos hacen proferir insultos contra nosotros mismos acompañados de un desesperado puñetazo en la mesa (o en el teclado). Piense que cuando el sistema le deniega alguna operación es porque puede conllevar algún riesgo. El sistema le avisa para que piense dos veces lo que está haciendo. En los casos de tareas que necesiten privilegios de administrador para realizar una operación concreta, podemos usar la orden «su» (Super Usuario) o también « sudo». De esta forma podremos acceder a los privilegios de root sólo cuando nos interese. Consejos:
Evite que la clave del root circule por la red sin cifrar. Si tiene la necesidad de ofrecer servicios de shell o ejecución remotas sobre un canal inseguro utilice «ssh» en lugar de «telnet» u otra herramienta que no cifre los datos de las conexiones. Los servicios remotos como «rlogin», «rsh» y «rexec», como dijimos antes, no suelen ser seguros si se utilizan canales no seguros. Es mejor deshabilitarlos. Prevenir pérdidas de informaciónExisten acontecimientos de los que nos puede resultar muy difícil protegernos como son los desastres naturales, únicamente podremos seguir una serie de pasos para evitar que su incidencia sea lo menor posible. La mejor solución es mantener un buen conjunto de copias de seguridad sobre toda la información necesaria del sistema. Hay que pensar que las copias de seguridad no sólo nos protegen de desastres naturales, también de los desastres que pueda ocasionar algún intruso en nuestro sistema, de cualquier ataque a la disponibilidad o integridad de la información del sistema.Si los datos tienen un tamaño inferior a 650Mb, puede ser una buena opción grabarlos en un CD, bien permanente (ya que es más difícil de falsificar con posterioridad, y si están almacenados de forma adecuada pueden durar mucho tiempo) o regrabable. Las cintas y otros medios sobre los que se puede escribir deberían protegerse tan pronto como se completa la copia y se verifica para evitar la falsificación. Tenga cuidado y almacene su copia de seguridad en un sitio seguro. Una buena copia de seguridad le asegura que tiene un buen punto desde el que restaurar su sistema. Hay que insistir en la seguridad de las copias de seguridad. Si las copias de seguridad no están almacenadas en un sitio seguro, puede que el posible intruso no tenga necesidad de idear métodos sofisticados para obtenerla, si le basta con copiar o sustraer un CD. Características de las copias de seguridadCuando se realice una copia de seguridad es conveniente seleccionar un método que garantice la conservación de las características de la información como son derechos y permisos. Si realizamos una copia de seguridad de una forma o sobre un soporte que no contemple esta posibilidad, si tenemos que restaurar los datos sobre el sistema el resultado sobre la seguridad y funcionalidad globales puede ser impredecible.Secuencia de CopiasEs necesario tener un política de copias de seguridad adecuada a las características de la entidad que estamos gestionando. Quizás el mejor método es el de rotación de cintas. Pasamos a verlo con un ejemplo.Un ciclo de seis cintas es fácil de mantener. Esto incluye cuatro cintas para la semana, una cinta para cada Viernes y una cinta para para los Viernes impares. Se realiza una copia incremental cada día, y una copia completa en la cinta adecuada de cada Viernes. Si hace algún cambio importante o añade datos importantes a su sistema también sería adecuado efectuar una copia. Tar y GzipLos viejos rockeros nunca mueren, tar y gzip. ¿Por qué? Porque al igual que el vi, puedes apostar por el hecho de que cualquier sistema UNIX tendrá tar y gzip. Pueden ser lentos, cutres y empezar a enseñar su edad, pero son una herramienta universal que harán su trabajo. Me he dado cuenta de que con Unix, la instalación de un sistema típico suele llevar entre 15-30 minutos, dependiendo de la velocidad de la red/cdrom, la configuración otros 5-15 minutos (suponiendo que tenga copias de seguridad o que sea muy simple) y la restauración de datos lleva lo que lleva (definitivamente no es algo en lo que uno debería apresurarse). Un buen ejemplo: recientemente hice una copia de seguridad de un servidor y acto seguido procedí a cargarme el sistema de ficheros (y eliminar físicamente 2 discos duros que ya no necesitaba), después instalé Red Hat 5.2 y reconfiguré 3 tarjetas de red, Apache (para cerca de 10 sitios virtuales), Bind y algunos otros servicios en 15 minutos. Si lo hubiese hecho desde cero me hubiera llevado varias horas. Simplemente:tar -cvf nombre-de-archivo.tar dir1 dir2 dir3.... para crear un tarball de tus ficheros favoritos (por lo general /etc, /var/spool/mail, /var/log , /home y cualquier otros datos de usuarios/sistema), seguido de un: gzip -9 nombre-de-archivo.tar para comprimirlo lo máximo posible (por supuesto que el espacio de disco duro es más barato que la promesa de un político, pero comprimirlo lo hace más fácil de transportar). Quizás preferirías utilizar bzip, que es bastante mejor que gzip comprimiendo texto, pero es algo más lento. Por lo general después hago una copia del archivo en un servidor remoto, ya sea mediante ftp o enviándolo por correo como un attachment si no es grande (p. ej, la copia de seguridad de un cortafuegos suele ser de alrededor de 100kb de ficheros de configuración). Almacenamiento seguro
Programas seguros, inseguros y nocivosBuscar codigo seguro, de paginas oficiales, intentar compilar vuestros propios programas, evadir RPMs o similares.
Ejemplos de ataquesPing flooding, (alias smurfing)El simple hecho de inundar de datos una red es una táctica pasada de moda pero efectiva, que empeora por el hecho de que la mayoría de las redes tienen configuraciones de cortafuegos defectuosas. Haciendo un ping a la dirección de red de una red remota (por ejemplo un PSI de cablemódem) se pueden recibir varios cientos de pings de respuesta por cada paquete que se envíe. Si se falsea la dirección IP y se etiquetan los paquetes salientes como provenientes de una red de alguien que te disguste, se puede hacer que la mala configuración de una red sea la que haga el trabajo sucio y sature a la víctima. Envenenamiento de caché DNS Puesto que muchos servicios confían en el buen funcionamiento
del DNS, supone una parte de la red interesante para atacar. Alterar la
información de los servidores DNS es más sencillo de lo que
debería ser, y si se consigue, se pueden introducir datos falsos.
Por ejemplo, si le convenciera a tu servidor de nombres que updates.Redhat.com
en realidad apuntase a updates.losmalos.com, probablemente conseguiría
engañarte para que te bajases e instalases mi software. Por supuesto
que esto lo niega el hecho de que Red Hat firma sus paquetes con PGP, pero
¿verificas las firmas? De igual forma, si utilizas una herramienta
automatizada, como autorpm, puede ocurrirte sin intervención del
usuario, los paquetes comprometidos se descargan y se instalan, y todo
lo que tengo que hacer es echarle un vistazo al log de ftp y después
explotar los sitios que han hecho download de los paquetes. Si me las apañase
para convencer a tu servidor de correo que otraempresa.com es en realidad
uno de mis servidores, no sólo podría recibir el correo que
le envías a otraempresa.com, sino que podría leer el correo,
y quizás volverlo a reenviar con pequeñas modificaciones
(como añadirle un 0 de más al precio de tu oferta).
Deteccion de intrusosBuscando señales de que la seguridad de nuestro sistema ha sido comprometida.
find / -group kmem -perm -2000 -print find / -name ".*" -print -xdev | cat -v Como intentaran entrar en tu maquinaUna de las cosas mas importantes a la hora de hackear un sistema (o intentar) es obtener la maxima informacion disponible sobre el. En definitiva se trata de obtener las versiones de sus daemons, como pueden ser ftp, sendmail, etc, los puertos que tiene abiertos y toda información que nos pueda ser útil.Los puertos mas importantes son:
telnet maquina.com 21 nos dice la version del ftp de la maquina. Tambien se puede hacer un escaneo de los puertos a la maquina. El puerto del finger(79) se usa para conseguir informacion de los usuarios de la maquina. Si el puerto esta abierto y no tiene un firewall entonces te podras conectar pero no es lo usual. Una vez dentro puedes pedir informacion de los usuarios e incluso hacerte pasar por ellos en los mails, para sacar informacion. Si se hace un telnet al puerto smtp, y luego haces un vrfy a veces te da el nombre del usuario. Conseguir una cuenta es mas chungo, la forma mas facil es ingenieria social, que consiste en engañar a alguien para que te de su pass o informacion util. No hay que fiarse de nadie. De ahi pasaran a coger tu /etc/passwd y /etc/shadow y ya estan dentro de tu maquina con unos retoques a los fichero passwd y shadow.... Linux es Open SourceQue el codigo de todo el sistema este disponible da muchas ventajas. No hay secretos. Puedes adaptar cualquier parte del sistema a tus necesidades o como te antoje. Yo misma tengo el codigo del minix en casa, lo daban con un libro(cuando hara eso Gates!! 8-D ). |