SEGURIDAD
Con los avances de la tecnología,
los equipos y las redes informáticas toman el centro de la escena. En el
trabajo, en la escuela, o en casa, es casi seguro que utilice una computadora u
otro artículo de alta tecnología. Aunque Internet ha hecho la seguridad de la
red una prioridad, muchas personas todavía no saben lo suficiente.
La seguridad de la red es algo más que un antivirus o actualizar los programas.
Es tener en constante vigilancia su red para evitar intrusos, malware y otras
amenazas comunes.
La verdadera seguridad significa el conocimiento acerca de las posibles
amenazas y entender qué hacer en caso de un fallo de seguridad. La seguridad de
la red puede significar un equipo en relación a la Internet, o un grupo de
computadoras y la Internet.
Una cuestión a tener en cuenta a la hora de pensar en la
seguridad de la red es la prevalencia del status “siempre encendido” de la
conexión a Internet. Muchas casas y negocios tienen ahora Internet de alta
velocidad, tales como las conexiones aDSL ó inalámbricas.
Estas conexiones permiten a la computadora acceder a Internet contínuamente,
siempre y cuando el mismo esté encendido. Un status de “siempre encendido”
significa que hay más tiempo para que un posible intruso alcance su sistema
informático, y aún más oportunidades de tomar ventaja de la computadora en sí.
Con la adecuada seguridad de la red puede reducir notablemente sus
posibilidades de un ataque por una fuerza externa.
Toda persona que utiliza Internet, o un equipo que se ha utilizado para
conectarse a Internet, debe preocuparse por la seguridad de la red
Leyes de seguridad
En muchísimos casos la mejor herramienta de
seguridad somos nosotros y nuestro sentido común y en esa línea hace ya tiempo
que en Microsoft publicaron una lista de precauciones de seguridad muy serias
pero con sentido del humor.
La seguridad no es solo cosas de parches,
programas o actualizaciones, sino principalmente es un problema nuestro como usuarios.
En todos los estudios realizados los descuidos o imprudencias son la principal fuente de
las brechas de seguridad, tanto desde el punto de vista del
usuario personal como de las empresas.
Hace ya tiempo que Microsoft reunió en un
decálogo las
diez directrices o leyes más importantes a observar para
proteger la seguridad de nuestro sistema, y con el nombre de Las 10 leyes inmutables de la seguridad colgó el
documento de Technet. Vamos a repasar este decálogo que aunque en clave de
humor proporciona unos consejos que tenemos que tomar muy en serio.
1. Si un tipo malvado nos convence de
ejecutar SU programa en NUESTRO ordenador, ya no es NUESTRO ordenador
Es otra ley inmutable de la informática:
cuando un programa se ejecuta en el ordenador hace lo que el programador le ha dicho que
haga, no lo que creemos que tiene que hacer. Por lo tanto, si
permitimos que un programa se ejecute en nuestro ordenador tendrá las mismas
capacidades de realizar cambios, incluidos los dañinos, que nosotros tenemos
como usuarios y los hará según las instrucciones de su
programador.
La analogía del sandwitch nos puede
ayudar a entender la situación: si nos encontráramos a alguien desconocido por
la calle y nos ofreciera un sandwitch ¿nos lo comeríamos sin más? Pues del
mismo modo descargar y ejecutar sin más un programa no es lo mejor para la
salud de nuestro ordenador.
2. Si un tipo malvado puede cambiar el
sistema operativo de NUESTRO ordenador, ya no es NUESTRO ordenador
El sistema operativo no deja de ser un
programa más acompañado por un conjunto de ficheros de configuración,
que están protegidos pero que a la larga puede ser modificados. Si permitimos
cambios en el sistema nuestro ordenador ya no estará bajo nuestro control.
Las nuevas versiones de Windows advierten en
numerosas ocasiones cuando un programa intenta hacer cambios en el sistema o si
nos disponemos a dar autorización a un programa para realizar cambios, pero una
vez que un programa tiene vía libre no hay nada que hacer. Por eso es importante que nunca
ejecutemos programas y les otorguemos permisos si no conocemos
su procedencia. Si alguien toma el control del sistema operativo puede hacer cualquier
cosa.
Es como si alguien consiguiera las llaves de
nuestra casa. Una vez con ellas podría hacer cualquier cosa incluso
sin que necesariamente nos diéramos cuenta. Por eso es tan importante proteger
el sistema operativo y por eso los programas de seguridad controlan
constantemente que no se hayan producido cambios en los ficheros del sistema.
3. Si un tipo malvado tiene acceso físico sin
restricciones a NUESTRO ordenador, ya no es NUESTRO ordenador
Tomar las mejores precauciones para protegernos
de los intrusos que pueden acceder a nuestro ordenador a través de Internet no
vale nada si
el intruso puede acceder tranquilamente a nuestro ordenador y sentarse a
teclear. Es algo que en ocasiones descuidamos, pero un elemento
básico de la seguridad. En el artículo de TechNet dan una lista de lo que un
“tipo malvado” puede hacer si tiene acceso al ordenador, desde
la edad de la piedra a la edad espacial.
Algunos de los peligros son que puede destruir nuestro
ordenador con un martillo pilón, robar el ordenador y pedir un rescate,
reformatear el disco, robar el disco duro, duplicarlo, grabar las pulsaciones de
nuestro teclado… Las precauciones que hay que tomar aumentan con la
portabilidad del PC que utilicemos. No hay que desdeñar los
candados o los sistemas de acceso biométricos. No hay que olvidar que un
ordenador es un dispositivo valioso, pero lo más valioso son siempre nuestros datos.
4. Si un tipo malvado puede agregar programas
a NUESTRA página web, ya no es NUESTRA página web
El tipo malvado es el que entra en el servidor e
intenta cambiar nuestra página web. Conseguirá así extender el
contagio de un virus o malware. La responsabilidad de un usuario que mantenga
un sitio web incluye controlar que los usuarios de la web no puedan agregar
programas y mantener actualizado el software con los parches de
seguridad adecuados.
En este caso no sólo nos hacemos daño a nosotros,
sino que
contribuimos al contagio de muchas personas a través de nuestra web.
5. Las contraseñas débiles destruyen la
seguridad más fuerte
Es uno de los eslabones más débiles de la cadena de
seguridad. Si para identificarnos utilizamos contraseñas
fáciles de averiguar, los sistemas de seguridad que hayamos instalado no
servirán de nada. Hay que tener la precaución de que siempre en nuestro sistema
el administrador requiera contraseña. Podemos ver cómo crear
contraseñas perfectas en nuestro artículo práctico al respecto.
6. Un ordenador es tan seguro como la confianza que nos
merece su administrador
Todo ordenador tiene su administrador,
aunque en muchos casos el administrador seamos nosotros. El edministrador es el
que instala el software, modifica el sistema operativo y establece las
políticas de seguridad. En el decálogo de Technet se advierte que un
administrador chapucero puede frustrar cualquier medida de seguridad que
tomemos nosotros.
Si necesitamos un administrador para nuestra
empresa tomemos
eso en cuenta. Ahorrar y contratar un mal administrador, uno
descuidado o no fiable puede salirnos muy caro a la larga.
7. Los datos encriptados son tan seguros como
su clave de desencriptación
Una versión distinta del problema de las
passwords. La encriptación es una excelente herramienta para proteger nuestros
datos y se utiliza en las transacciones que se realizan en
Internet, pero en el caso de los programas de encriptación, hay que tener
cuidado dónde se almacenan. Lo mejor es utilizar claves que memorizaremos o
almacenarlas en un dispositivo externo a nuestro ordenador para que sean difíciles de
localizar.
8. Un antivirus no actualizado sólo es
ligeramente más seguro que ningún antivirus
En Internet van apareciendo y mutando nuevos
virus y malware a un ritmo muy alto. Por eso hoy más que nunca, cuando pasamos más tiempo
conectados a Internet, es muy importante disponer de un
antivirus actualizado. Uno que no esté puesto al día nos protegerá solamente de
amenazas obsoletas pero no será una herramienta de protección
fiable.
Además, actualizar los antivirus y programas de
seguridar periódicamente contribuye a que la expansión de los virus sea menos rápida
y que por lo tanto el daño que puedan hacer sea limitado.
9. El anonimato absoluto no es práctico,
tanto en la vida real como en Internet
Las herremientas que permiten conseguir un grado de anonimato
importante en Internet son muchas, como los proxies o
conversores de direcciones IP que hacen que no podamos ser localizados o los
navegadores web que no dejan rastros de nuestra actividad. Hay que tener cuidado con
qué servicios utilizamos para conseguir el anonimato, porque
puede que estemos consiguiendo precisamente lo contrario.
En algunos casos estos servicios ofrecen
anonimato frente a otras páginas web, pero no somos anónimos frente a ellos.
Es más, en algunos casos tendremos que rellenar un formulario. Pero en muchos
casos en Internet será útil dejar nuestros datos, para que nos informen de
ciertas promociones, para recibir noticias, para contactar con antiguos
compañeros, para participar en redes sociales…
En estos casos el sentido común es lo más importante.
Nunca compartir datos personales sensibles de forma pública o con personas que
no conocemos y proteger en lo posible nuestra navegación. Los modernos
navegadores permiten ejecutar un modo privado que podemos activar solamente cuando lo
necesitemos. Ser selectivos es importante también.
10. La tecnología no es la panacea
Una lección que es necesario aprender a pesar de
los grandes adelantos tecnológicos que estamos viviendo y en el campo de la
seguridad en particular. Como adelantábamos al principio, a pesar de toda esta
tecnología tan sofisticada y los avances en el software de seguridad, no podemos encomendar
nuestra seguridad totalmente a la tecnología.
Nuestro sentido común, la prudencia y la
inteligencia tienen que ser los ingredientes más importantes. Sin ellos la tecnología más avanzada
no servirá de nada. Es tentador dar la culpa a los fabricantes
de software o a los proveedores de acceso de nuestros problemas de seguridad,
pero no perdamos de vista que los responsables somos nosotros.
Obtención de Información de un atacante
Es importante conocer la metodología que sigue un
atacante para poder defendernos mejor de él. La expresión “conoce a tu enemigo”
es válida también en el mundo de la informática.
El primer paso que realiza un atacante es la
exploración. En la exploración, el atacante obtiene una lista de direcciones IP
y de red utilizando descargas de transferencias de zona y consultas whois (en
la figura 1, puede ver un ejemplo de consulta whois). Estas técnicas
proporcionan información valiosa a los atacantes, incluyendo nombres de
empleados, números de teléfono, rangos de direcciones IP, servidores DNS, etc.
Figura 1. Consulta whois
Uno de los pasos básicos de exploración de una
red para determinar qué sistemas están activos, es llevar a cabo un barrido de
ping automatizado en un rango de direcciones IP y de bloques de red. Ping se
utiliza tradicionalmente para enviar paquetes ICMP ECHO a un sistema destino,
en un intento de obtener un ICMP ECHO_REPLY que indica que el sistema destino
está activo (vivo). Aunque enviar un ping resulta un método aceptable para
determinar el número de sistemas activos en una red pequeña o de tamaño medio,
no es eficiente en redes corporativas de mayor tamaño. Para llevar a cabo
exploraciones de redes de Clase A es necesario varias horas.
En la figura 2 se puede ver cómo el comando ping
–sP 192.168.1.0/24 permite detectar los equipos activos.
Figura 2. nmap –sP 192.168.0.1/24
Una vez identificados los sistemas que están
activos mediante el uso de barridos ping, el siguiente paso que realiza un
atacante es la exploración de puertos.
La exploración de puertos es el proceso de
conexión a puertos UDP y TCP del sistema destino que nos permite determinar los
servicios que se están ejecutando. Identificar los puertos que están a la
escucha es crítico para determinar el tipo de sistema operativo y aplicaciones
que se están utilizando. Los servicios activos que estén a la escucha pueden
permitir que un usuario no autorizado tenga acceso a sistemas que no estén bien
configurados o que ejecuten una versión de software que tenga vulnerabilidades
de seguridad conocidas. Los objetivos que se persiguen con la exploración de
puertos son los siguientes:
Identificar
los servicios TCP y UDP que se están ejecutando en el sistema.
Identificar
el tipo de sistema operativo instalado en el sistema.
Identificar
las versiones o aplicaciones específicas de un determinado servicio.
Identificar
las vulnerabilidades del sistema.
En la figura 3 se puede ver el esquema general
del proceso de obtención de información por parte de un atacante.
Figura 3. Esquema general del
proceso de obtención de información
Los sistemas operativos son configurables, y por
lo tanto pueden engañar a un posible atacante con información incorrecta.
Cuestiónese las siguientes preguntas:
¿Qué
pasaría si identificasemos servicios de forma incorrecta? Por ejemplo,
identificamos un servidor de correo qmail en una máquina con Exchange.
¿Qué
pasaría si identificamos mal el sistema operativo?
¿Qué
pasaría si los equipos activos realmente no existen?
Un atacante obtiene las vulnerabilidades del
sistema a partir de la información de los servicios y servidores. Por lo tanto,
si esta información es incorrecta, el atacante, que se encuentra engañado,
jamás va a realizar con éxito su ataque. Es imposible utilizar los fallos de
seguridad en el servidor de correo de Windows (p.e. Exchange) en el sistema de
correo de Linux (p.e. qmail).
Los atacantes, sobre todo los atacantes
externos, aprenden a superar las barreras de seguridad investigando su
organización. Este proceso puede ser llamado de reconocimiento, descubrimiento
o footprinting. En última instancia, esto es producto de una investigación intensiva, enfocada en obtener
toda la información disponible sobre su organización de recursos públicos y no
tan públicos.
Si ha realizado algún estudio o lectura
sobre tácticas de guerra, es consciente de que el arma más importante que puede
tener a su disposición es la información. Los atacantes lo saben y dedican
mucho tiempo y esfuerzo a adquirir un completo arsenal. Lo que a menudo es
desconcertante es cuánto su organización contribuye libremente al acopio del
arsenal de armas de los atacantes.
La mayoría de las organizaciones son
hemorragias de datos; las empresas dan libremente demasiada información que
puede ser utilizada en su contra a través de diversos tipos de ataques lógicos
y físicos. Aquí sólo se encuentran algunos de los ejemplos más comunes de la
información que un atacante puede obtener sobre su organización, por lo
general, en cuestión de minutos:
Los
nombres de sus altos ejecutivos y de cualquier empleado llamativo
pueden ser obtenidos examinando sus comunicados de prensa.
La
dirección de la empresa, números telefónicos y números de fax desde el
registro de nombres de dominio.
El
proveedor de servicio a Internet.
La
dirección de la casa de los empleados, sus números telefónicos, currículum
vitae de los empleados, los miembros de su familia, antecedentes
penales y mucho más buscando sus nombres en varios sitios de investigación
gratuitos y pagos.
Los
sistemas operativos, los principales programas utilizados, los lenguajes
de programación, plataformas especiales, fabricantes de los dispositivos
de red utilizados y mucho más desde los anuncios en sitios de empleos.
Debilidades
físicas, puntos de ventaja, señales activas, formas de entrada, coberturas
para los caminos de acceso y más a través de imágenes satelitales de
su empresa y las direcciones de los empleados.
Nombres
de usuario, direcciones de correo electrónico, números de teléfono,
estructura de archivos, nombres de archivos, tipos de sistemas
operativos, la plataforma del servidor web, lenguajes de script, entornos
de aplicaciones web y más con escaners de sitios web.
Documentos
confidenciales accidentalmente enviados a un sitio web como
archivo.org o Google Hacking.
Fallos
de los productos, problemas con el personal, publicaciones internas,
políticas de la empresa y muchos más desde blogs, comentarios, críticas de
la empresa y servicios de inteligencia competitiva.
Como se puede ver, no hay fin a la
información que un atacante puede obtener desde fuentes públicas abiertas. Esta
lista de ejemplos es sólo un comienzo. Cada dato obtenido por el atacante,
puede llevar al descubrimiento de más información. A menudo, un atacante
gastará más del 90% de su tiempo en actividades de reconocimiento y obtención
de información. Cuanto más aprende el atacante sobre el objetivo, más fácil
será el posterior ataque.
En cuanto a la defensa que en última
instancia está pérdida, principalmente porque ya es demasiado tarde, vale
aclarar que una vez que la información se encuentra en Internet, siempre estará
allí disponible. Evidentemente, puede limpiar cualquier recurso de información
que se encuentre bajo su control directo. Incluso, puede ponerse en contacto
con quienes poseen su información y solicitar que cambien su información.
Medios de
seguridad
Existen numerosas técnicas para
proteger la integridad de los sistemas. Lo primero que se debe hacer es
diseñar una política de seguridad. En ella, definir quiénes tienen acceso a las
diferentes partes de la red, poner protecciones con contraseñas adecuadas a
todas las cuentas, y preocuparse de hacerlas cambiar periódicamente (Evitar las
contraseñas «por defecto» o demasiado obvias).
Existen numerosas técnicas para
proteger la integridad de los sistemas. Lo primero que se debe hacer es
diseñar una política de seguridad. En ella, definir quiénes tienen acceso a las
diferentes partes de la red, poner protecciones con contraseñas adecuadas a
todas las cuentas, y preocuparse de hacerlas cambiar periódicamente (Evitar las
passwords «por defecto» o demasiado obvias).
Políticas generales de seguridad
2.1 - ¿Qué son las políticas de seguridad informática (PSI)?
Una política de seguridad
informática es una forma de comunicarse con los
usuarios y los gerentes [3,
pág.382]. Las PSI establecen el canal formal de actuación
del personal, en relación con
los recursos y servicios informáticos, importantes de la
organización.
No se trata de una descripción
técnica de mecanismos de seguridad, ni de una
expresión legal que involucre
sanciones a conductas de los empleados. Es más bien una
descripción de los que deseamos
proteger y el por qué de ello.
Cada PSI es consciente y
vigilante del personal por el uso y limitaciones de los
recursos y servicios
informáticos críticos de la compañía.
2.2 - Elementos de una política de seguridad informática
Como mencionábamos en el apartado
anterior, una PSI debe orientar las
decisiones que se toman en
relación con la seguridad. Por tanto, requiere de una
disposición por parte de cada
uno de los miembros de la empresa para lograr una visión
conjunta de lo que se considera
importante.
Las PSI deben considerar entre
otros, los siguientes elementos: [4]
*Alcance de las políticas,
incluyendo facilidades, sistemas y personal sobre la
cual aplica. Es una invitación
de la organización a cada uno de sus miembros a
reconocer la información como uno
de sus principales activos así como, un
motor de intercambio y
desarrollo en el ámbito de sus negocios. Invitación que
debe concluir en una posición.
*Objetivos de la política y descripción clara
de los elementos involucrados en su
definición.
*Responsabilidades por cada uno
de los servicios y recursos informáticos a
todos los niveles de la
organización.
*Requerimientos mínimos para
configuración de la seguridad de los sistemas
que cobija el alcance de la
política.
* Definición de violaciones y
de las consecuencias del no cumplimiento de la
política.
*Responsabilidades de los usuarios con
respecto a la información a la que ella
tiene acceso.
Las PSI deben ofrecer
explicaciones comprensibles acerca de por qué deben
tomarse ciertas decisiones,
transmitir por qué son importantes estos u otros recursos o
servicios.
Conceptos
básicos sobre Seguridad
Seguridad:
Sector de la informática cuya función es establecer medidas de protección y/o
seguridad para garantizar el correcto funcionamiento de un sistema informático. Objetivo de la seguridad informática: Proteger los activos informáticos.
Whackers:
expertos especializados. Se mueven por dinero y fama. Provocan daños al
sistema.
Crackers:
expertos especializados. Se mueven por fama y satisfacción personal. Causan
daño.
Crashers:
Inhabilitan el sistema, tienen conocimientos informáticos, les mueve el dinero
o el aprendizaje. Causan daño.
Lamer:
Conocimientos informáticos nulos. Sus intereses son la fama, la experiencia y
la satisfación personal. Causan daños.
Phreakers:
tienen amplios conocimientos informáticos y se mueven por dinero.
Script
kiddies: Muy similares a los lamer.
Newbies:
Tienen conocimientos informáticos básicos. Su motivación es aprender. No causan
daño.
Seguridad
activa: Conjunto de medidas cuyo objetivo es evitar o reducir los riegos
que amenazan al sistema.
Seguridad
Pasiva: Conjunto de medidas que se implementan una vez producido el
accidente y que minimizan el daño, facilitando la recuperación del sistema.
-
Mecanismos para que un sistema sea seguro:
Autenticación.
Mecanismo que permite verificar la identidad del usuario que quiere acceder al
sistema.
Autorización.
Mecanismo que permite comprobar con qué permisos cuenta el usuario que quiere
acceder al sistema.
Verificador
de integridad de la información.
Cifrado.
Evita que la información viaje sin protección (en texto plano) a través de la
red.
Copias de
seguridad. Se utilizan con el fin de restaurar el sistema cuando se
produzca una pérdida de información, sobre todo de información sensible.
El
software anti-malware. Programa que detecta, bloquea y elimina programas
maliciosos para la seguridad del sistema.
El
cortafuegos. Sirve para bloquear el trafico entrante en la red que pueda
ser peligroso.
IDS
(Sistema de Detección de Intrusos). Trata de detectar cuándo alguien
no autorizado trata de entrar en un sistema.
Certificados.
Es un documento digital mediante el cual un tercero confiable garantiza la
vinculación entre la identidad de un sujeto o entidad y una clave pública.
Auditorías.
Recaudan información para comprobar si el nodo es o no seguro.
- Propiedades
de un sistema informático seguro.
La
confidencialidad garantiza que el acceso a la información no se produce de
forma no
autorizada.
La
disponibilidad garantiza que el sistema y los datos estarán disponibles
para los
usuarios.
La
integridad. Garantiza que la información no ha sido modificada sin
autorización.
No
repudio. Impide que el emisor niegue haber estado involucrado en una
comunicación.
Suplantación
de identidad: hacer pasar por el usuario de la red para poder entrar en el
sistema con los privilegios con la identidad suplantada. Reactuación: La repetición de uno varios mensajes son capturados y
repetidos para producir un efecto no deseado. Modificación de mensajes: cambiar todo o parte del mensaje con la
finalidad de conseguir unos efectos distintos al original. Degradación de servicios: impide o deteriora el uso normal del servicio.
Tipos de
ataques.
Ataque:
La materialización de una amenaza.
Amenaza: Es
la presencia de una serie de factores de diversos tipos que de tener la
oportunidad atacarían al sistema produciendole daño.
Tipos de
amenazas según su origen:
Internas:
Ataques desde dentro de la red, por ejemplo un empleado de la empresa o
despedido.
Externas:
Ataques desde fuera de la red. Son mas difíciles de que ocurran.
Tipos de
amenazas según el daño que pueden producir:
-De
interrupción: Todo lo que te impida el acceso a la información.
-De
interceptación: Cuando te interceptan información sin tu permiso, por ej:
con páginas webs falsas.
-De
modificación: Cuando modifican la información del sistema.
-De
fabricación: Añade información falsa al sistema.
Tipos de
amenazas según la causa:
-Accidentales:
Sin querer.
-Intencionales:
Queriendo.
Tipos de
ataques en función del impacto causado a los activos:
-Pasivos:
Son aquellos que se basan en la obtención de información sin alterar la
comunicación y los datos.
-Activos:
Son aquellos que modifican datos, añaden datos o impiden el acceso a los
datos.
·Suplantación
de identidad: Que el atacante se hace pasar por otra persona, para adoptar
por los privilegios de esa persona.
·Reactuación:
Repetición de uno o varios mensajes reales son capturados y repetidos, para
producir un efecto no deseado.
·Modificación
de mensajes: Modificar todo o parte del mensaje, o el orden de los
mensajes, con el objetivo de conseguir unos efectos distintos a los originales.
·Degradación
del servicio: Consiste en impedir o deteriorar el uso normal de los
servicios.
Tipos de
ataques: Directos o indirectos.
Directo: El
que se produce del atacante a la víctima sin que haya ningún intermediario.
Indirecto:
El que se produce del atacante a la víctima, pero hay al menos un
intermediario.
Ataques
Típicos.
· Spoofing.
Hace referencia al uso de técnicas de suplantación de identidad generalmente
con usos maliciosos o de investigación.
Se pueden
clasificar los ataques de spoofing, en función de la tecnología
utilizada. Entre ellos tenemos el IP spoofing (quizás el más conocido), ARP
spoofing, DNS spoofing, Web spoofing o email spoofing, aunque en general se
puede englobar dentro de spoofing cualquier tecnología de red susceptible de
sufrir suplantaciones de identidad.
· Pishing.
Es un término informático que denomina un tipo de delito encuadrado dentro del
ámbito de las estafas cibernéticas, y que se comete mediante el uso de un tipo
de ingeniería social caracterizado por intentar adquirir información
confidencial de forma fraudulenta (como puede ser una contraseña o información detallada
sobre tarjetas de crédito u otra información bancaria). El estafador, conocido
como phisher, se hace pasar por una persona o empresa de confianza en
una aparente comunicación oficial electrónica, por lo común un correo
electrónico, o algún sistema de mensajería instantánea o incluso utilizando
también llamadas telefónicas.
· DoS.
En seguridad informática, un ataque de denegación de servicio, también llamado
ataque DoS (de las siglas en inglés Denial of Service), es un
ataque a un sistema de computadoras o red que causa que un servicio o recurso
sea inaccesible a los usuarios legítimos. Normalmente provoca la pérdida de la
conectividad de la red por el consumo del ancho de banda de la red de la
víctima o sobrecarga de los recursos computacionales del sistema de la víctima.
.buffer
overflow:Consiste en escribir en un pila mas datos de los que puede
contener. Con esto se puede conseguir corromper la pila de ejecución de un
programa escribiendo mas aya de los limite de la pila, causando que la dirección
de retorno de dicha función sea una dirección aleatorio o que se ejecute algún
código no dirigido.
.Troyano:se
caracteriza por engañar a los usuarios disfrazándose de programas o archivos
legítimos/benignos
.Virus:es
un malware que tiene por objeto alterar el normal funcionamiento de la
computadora, sin el permiso o el conocimiento del usuario.
.Worms:Estos
malwares son tan dañinos que son capaces de hacer caer cientos de páginas Web y
servidores Web muy potentes.
.Rootkit:es
un conjunto de herramientas usadas frecuentemente por los intrusos informáticos
o crackers con el objetivo de acceder ilícitamente a un sistema informático
.Exploit:El
fin puede ser la destrucción o inhabilitación del sistema atacado.
Vulnerabilidad:
Probabilidad de que una amenaza se materialice contra un activo.
Bugtraq: Expediente
de seguridad que genera una vulnerabilidad.
Día Cero:
día en el que una vulnerabilidad se hace pública.
Tiempo de
reacción: Tiempo que transcurre desde que una vulnerabilidad se hace
pública hasta que se parchea.
Técnicas
de "password cracking" (romper contraseñas):
-
Método de fuerza bruta: consiste en ir probando combinaciones de caracteres
hasta dar con la combinación correcta (contraseña) y así poder entrar en el
sistema.
- Método
de diccionario: consiste en usar una aplicación o herramienta diccionario
que va probando como contraseña todas las palabras que se incluyen en él. Por
eso es recomendable que una contraseña de acceso al sistema conste de
caracteres alfanuméricos, incluídas mayúsculas, minúsculas y caracteres
especiales.
Riesgo: Posibilidad
de que se materialice una amenaza aprovechando una vulnerabilidad. No
constituye riesgo una amenaza cuando no hay vulnerabilidad ni una
vulnerabilidad cuando no existe una amenaza asociada.
Opciones de la
empresa ante el riesgo:
- No hacer
nada. en caso de impacto mínimo o nulo, o en caso de coste excesivo al
solventar el riesgo.
- Aplicar
las medidas de seguridad necesarias, atendiendo a la política de seguridad de
la entidad.
- Contratar
un seguro.
Impacto:
Es la consecuencia de un ataque.
Impacto
cuantitativo: cuando los daños del impacto pueden cuantificarse (medirse
económicamente).
Impacto
cualitativo: cuando supone daños no cuantificables (no medibles).
Nivel de
confianza del que hace uso el analizador:
·Con
acreditaciones: El analizador es una persona que está autorizada para
recopilar información de la máquina, etc... Pasiva.
·Sin
acreditaciones: El analizador es una persona que no está autorizada para
recopilar información de la máquina, etc..... Activa.
·Prueba
por explotación (Testing by exploit): lanzar ataques reales contra los
objetivos, es decir, sobre la maquina. Los ataques suelen estar programado en
lenguajes de scrit, una vez que lanza el ataque espera a la respuesta.
·Método
de inferencia: buscan indicios de que alguien a realizado ataques sobre la
máquina, pero los resultados son menos específicos. Programa
"Nessus".
-Técnica
"Password cracking": Es una técnica utilizada en la mayoría de
los escanners de vulnerabilidades, totalmente distinta a los métodos anteriores
pero de gran importancia. Se basa en intentar romper contraseñas con el
propósito de determinar el grado de calidad de la misma. Para intentar adivinar
las contraseñas, se puede utilizar la fuerza bruta o bien utilizando diccionarios.
-Escánner
de vulnerabilidades: es una herramienta que realiza una serie de pruebas
para determinar si una red o una máquina tiene fallos de seguridad.
Riesgo:
posibilidad de que se materialize una amenaza aprovechando una vulnerabilidad.
No constituye riesgo una amenaza cuando no hay vulnerabilidad ni una
vulnerabilidad cuando no existe amenaza.
Una política de seguridad
establece los objetivos de la empresa con respecto a la seguridad, así como las
normas a aplicar.
¿Cuales son las
ventajas de Linux frente a Windows?, ¿en qué se diferencian?
La
instalación:
En Linux a pesar de todos los esfuerzos la
instalación no resulta sencilla siempre, pero te permite personalizar
totalmente los paquetes que quieras instalar.
En Windows la instalación es mínimamente
configurarle aunque es muy sencilla.
La compatibilidad: Ninguno de los dos sistemas operativos son totalmente
compatibles con el Hardware, a pesar de que Windows se acerca más, los dos
están cerca de conseguirlo.
Aunque Linux no esta detrás de ninguna casa
comercial gracias a su elevada popularidad ofrece una alta compatibilidad
ofreciendo, además, actualizaciones frecuentes.
Windows al ser parte de Microsoft intenta
ofrecer una gran cantidad de drivers ya que su gran poder económico hace
que las empresas mismas de hardware creen sus propios drivers.
Software:
Linux al tener menos software en algunos
campos sufre una menor aceptación por parte de las empresas, aunque
gracias a los apoyos de empresas como Sun Microsystems o IBM se ha logrado
muchos avances.
Windows al ser el más fácil de usar en las
empresas, posee una gran cantidad de software.
Robustez:
Linux se ha caracterizado siempre por la
robustez de su sistema ya que pueden pasar meses e incluso años sin la
necesidad de apagar o reiniciar el equipo, también si una aplicación falla
simplemente no bloquea totalmente al equipo.
En Windows siempre hay que reiniciar cuando se
cambia la configuración del sistema, se bloquea fácilmente cuando ejecuta
operaciones aparentemente simples por lo que hay que reiniciar el equipo.
Razones para cambiar:
Es software libre, lo que quiere decir que no
hay que pagar nada por el sistema en sí.
Es un sistema operativo muy fiable ya que
hereda la robustez de UNIX.
Ideal para las redes ya que fue diseñado en
Internet y para Internet
No es cierto que tenga pocos programas, solo
en algún campo muy especifico.
Es 100% configurarle.
Es el sistema más seguro, ya que al disponer
del código fuente cualquiera puede darse cuanta de algún fallo, se puede
decir que decenas de miles de personas velan por tu seguridad.
Existe muchísima documentación, también en
español gracias a los proyectos como LUCAS.
Cuenta con el soporte de muchas grandes
empresas como IBM, Corel, Lotus, Siemens, Motorola, Sun, etc.
Puedes encontrar ayuda en millones de sitios
en Internet como los foros.
Es muy portable, si tienes un Mac un Alpha o
un Sparc puedes usar Linux sin problemas.
Qué
ventajas tiene Linux sobre Windows?
·Es más
seguro
oYa que la gran
mayoría de los ataques de hackers son dirigidos a servidores Windows al igual
que los virus los cuales se enfocan principalmente a servidores con éste
sistema operativo.
oLa plataforma
Linux es más robusta lo cual hace más difícil que algún intruso pueda violar el
sistema de seguridad de Linux.
Es más rápido
Al tener una plataforma más estable, ésto favorece el desempeño
de aplicaciones de todo tipo tales como: bases de datos, aplicaciones
XML, multimedia, etc.
La eficiencia de su código fuente hace que la
velocidad de las aplicaciones Linux sean superiores a las que corren
sobre Windows lo cual se traduce en velocidad de su página.
·Es más
económico
oYa que
requieren menor mantenimiento. En servidores windows es más costoso debido a
que es necesaria una frecuente atención y monitoreo contra ataques de virus,
hackers y errores de código, instalación y actualización de parches y service
packs.
oEl software
Linux así como también un sin número de aplicaciones son de código abierto
(gratuitos).
oNo requieren
supervisión tan estrecha ni pagos de pólizas de mantenimiento necesarias para
obtener los Service Packs.
¿Qué
ventajas tiene Windows sobre Linux?
·Es más
fácil
oAl ser de
mayor facilidad de uso Windows en este momento continúa siendo el sistema
operativo más comercial lo cual se refleja en la disponibilidad de
aplicaciones, facilidad de mantenimiento así como soporte en el desarrollo de
nuevas aplicaciones, puntos que pueden ser cruciales en la elección de
servidores que corren aplicaciones web.
Aplicaciones
desarrolladas en menor tiempo
Fruto de la inversión realizada por Microsoft y aunado a una
comunidad de programadores cada vez más grande se ha logrado facilitar el
desarrollo de aplicaciones y sistemas que corran sobre servidores Windows
lo cual se ve reflejado en tiempos de desarrollo menores.
La curva de aprendizaje en el sistema Windows
es mucho menor.
Conclusión: Tanto Windows como Linux tienen su ventajas y inconvenientes, aunque
desde un punto de vista más técnico Linux sale ganando.
Arquitectura
de Sistema Operativo Windows
Con el paso de
los años se ha producido una evolución gradual de la estructura y capacidades
de los Sistemas Operativos. Sin embargo, recientemente se ha introducido un
cierto número de nuevos elementos de diseño en los nuevos Sistemas Operativos y
en las nuevas versiones de los Sistemas Operativos existentes. Estos Sistemas
Operativos modernos responden a nuevos desarrollos del hardware y nuevas
aplicaciones. Entre estos dispositivos de hardware están las máquinas
multiprocesador, incrementos enormes de la velocidad de la máquina, alta
velocidad en los enlaces de las redes de comunicación e incremento en el tamaño
y variedad de los dispositivos de almacenamiento de memoria. En los campos de
aplicación que han influido en el diseño de los Sistema Operativos están las
aplicaciones multimedia, el acceso a Internet y páginas Web y la ejecución
cliente/servidor.
El porcentaje
de cambios en las demandas de los Sistemas Operativos, requiere no solamente
las modificaciones y mejoras en las arquitecturas ya existentes, sino nuevas
formas de organización del Sistema Operativo. Muchos de los diferentes enfoques
y elementos de diseño se han probado tanto en Sistemas Operativos
experimentales como comerciales, y muchos de ellos encajan dentro de las
siguientes categorías.
La mayor parte
de los Sistemas Operativos hasta hace poco tiempo se caracterizaban por un gran
núcleo monolítico. Gran parte de la
funcionalidad que se pensaba debía tener un Sistema Operativo la proporcionaba
este gran núcleo, incluyendo planificación, sistema de archivos, redes,
controladores de dispositivos, gestión de memoria y muchas cosas más.
Normalmente un núcleo monolítico está implementado como un único proceso, con
todos sus componentes compartiendo el mismo espacio de direcciones.
La arquitectura micronúcleo asigna solamente unas pocas funciones esenciales
al núcleo, incluyendo espacios de direcciones, comunicación entre procesos
(IPC) y planificación básica. Otros servicios del Sistema Operativo los
proporciona procesos, algunas veces llamados servidores, que se ejecutan en
modo usuario y que el micronúcleo trata como a cualquier otra aplicación. Este
enfoque desconecta el núcleo y el desarrollo de servidores. Los servidores
pueden estar diseñados para aplicaciones específicas o necesidades del entorno.
El enfoque del micronúcleo simplifica la implementación, proporciona flexibilidad
y se adapta bien para entornos distribuidos. En esencia, un micronúcleo
interactúa de la misma forma con procesos servidores locales y remotos,
facilitando la construcción de sistemas distribuidos.
La siguiente figura muestra mediante un diagrama de
bloques los principales componente de Windows.
Maquina virtual del sistema: o VM del sistema , es el nombre dado en Windows 95 al entorno
que soporta todas las aplicaciones y los componentes de subsistema de
Windows, como por ejemplo la interfaz de dispositivo gráfico (GDI).
Aplicaciones Windows de 32 bits: son las nuevas aplicaciones Windows que usan
el modelo de memoria de 32 bits del procesador 80386 y un subconjunto de
la interfaz de programacion de aplicaciones (API) win32 de Microsoft, cada
una tiene un espacio de direcciones privado que es inaccesible a otras
aplicaciones.
Interfaz de ordenes>:
es una aplicación Windows de 32 bits que proporciona al sistema la
interfaz de usuario esencial. La interfaz de ordenes en Windows 95
concentra las funciones de las utilidades Administrador de Programas,
Administrador de archivos, administrador de tareas de win 3.1 en una única
aplicación.
Aplicación de Windows en 16 bits: son las aplicaciones Windows antiguas, estas
aplicaciones utilizan el modelo de memoria segmentada de la familia de
procesadores Intel el modelo de memoria 80286.
Capa de la interfaz de programación de aplicaciones: proporciona en Windows 95 una compatibilidad
completa con la actual API de Windows 3.1, así como el soporte para la
nueva API de 32 bits accesible solo para aplicaciones Windows de 32 bits. La API de 32 bits es un
subconjunto de la completa API WIN32 de Microsoft vista por primera vez en
Windows NT y en la WIN32s
añadida en Windows 3.1.
Núcleo de Windows:
proporciona soporte a los servicios de nivel mas bajo que requieren las
aplicaciones Windows, tales como la asignación dinámica de memoria. Para
Windows 95, el núcleo proporciona estos servicios a las aplicaciones de 16
y 32 bits.
El GDI : es el corazón de las capacidades gráficas de Windows,
gestionando los tipos de letras, las primitivas de dibujo y el color tanto
para los dispositivos de visualización como para los de impresión.
Usuario: es como se denomina al administrador de ventanas, el componente
de Windows que dirige la creación y manipulación de ventanas, diálogos,
botones y otros elementos de la interfaz de Windows.
Maquinas virtuales MS DOS: dan soporte a la ejecución de aplicaciones
MS-DOS en Windows.
EL SISTEMA BASE
La administración de archivos: ha cambiado de forma marcada en Windows 95. En
Windows 3.1 es MS-DOS quien controla el sistema de archivos local del
disco fijo. este control de MS-DOS perjudicaba las prestaciones de Windows
y la oportunidad de mejorar el soporte del sistema de archivos resultaba
imposible mientras el siguiera con el control. Bajo Windows 95 la
situación es totalmente diferente, ya no se utiliza DOS para la
administración de archivos en los discos locales.
Subsistema de red: es
la encarnación mas reciente de la red igualitaria de Microsoft vista por
primer vez en 1992 en el producto Windows para trabajo en grupo y después
Windows NT. El subsistema de red utiliza el nuevo subsitema de
administración de archivos para coordinar su acceso a los archivos
remotos.
Servicios del sistema operativo : incluyen el subsistema de configuración
hardware conectar y listo .
Administrador de maquina virtual: es el corazón del sistema operativo Windows.
Incluye el software que implementa todas las primitivas básicas del
sistema para la planificación de tareas, operaciones de memoria virtual,
carga y finalización de programas, y comunicación entre tareas.
Controladores de dispositivos: controladores de modo real y los denominados
controladores virtuales o VxD. Algunos sistema aún pueden necesitar de el
uso de los antiguos controladores de dispositivos de MS-DOS en modo real
para dar soporte a dispositivos de hardware concretos, Windows 95 ha querido crear
controladores de dispositivos protegido para tantos dispositivos
populares. Ejemplo para el ratón, para los dispositivos de CD-ROM y muchos
dispositivos de disco fijo.
Controladores de dispositivos virtuales: asumen el papel de compartición de un único
dispositivos hardware entre diversas aplicaciones. Ejemplo la ejecución de
dos aplicaciones MS-DOS en distintas ventanas de la pantalla necesita que
el sistema cree dos VM MS-DOS, cada una de las cuales requiere el acceso a
una única pantalla física . el VxD del controlador de pantalla tiene que
aceptar estos requisitos de compartición. También se usa como un
descriptor general para otros módulos del sistema operativo de 32 bits.
Un Sistema Operativo
serio, capaz de competir en el mercado con otros como Unix que ya tienen una
posición privilegiada, en cuanto a resultados, debe tener una serie de
características que le permitan ganarse ese lugar. Algunas de estas son:
Que corra sobre múltiples arquitecturas de hardware y
plataformas.
Que sea compatible con aplicaciones hechas en plataformas
anteriores, es decir que corrieran la mayoría de las aplicaciones
existentes hechas sobre versiones anteriores a la actual, nos referimos en
este caso particular a las de 16-bit de MS-DOS y Microsoft Windows 3.1.
Reúna los requisitos gubernamentales para POSIX (Portable
Operating System Interface for Unix).
Reúna los requisitos de la industria y del gobierno para la
seguridad del Sistema Operativo.
Sea fácilmente adaptable al mercado global soportando código
Unicode.
Sea un sistema que corra y balancee los procesos de forma
paralela en varios procesadores a la vez.
Sea un Sistema Operativo de memoria virtual.
Uno de los pasos más
importantes que revolucionó los Sistemas Operativos de la Microsoft fue el diseño
y creación de un Sistema Operativo extensible, portable, fiable, adaptable,
robusto, seguro y compatible con sus versiones anteriores (Windows NT).
Y para ello crearon la
siguiente arquitectura modular:
ARQUITECTURA DE LINUX MANDRAKE
Linux es un núcleo monolítico híbrido, donde sus
controladores de dispositivos y las extensiones del núcleo normalmente se
ejecutan en un espacio privilegiado conocido como anillo, con acceso
irrestricto al hardware, aunque algunos se ejecutan en espacio de usuario.
A diferencia de los núcleos monolíticos tradicionales, los controladores de
dispositivos y las extensiones al sistema operativo se pueden cargar y
descargar fácilmente como módulos, mientras el sistema continúa funcionando sin
interrupciones.
Así mismo, a diferencia de los núcleos monolíticos tradicionales, los
controladores pueden detenidos momentáneamente por actividades más importantes
bajo ciertas condiciones.
Esta habilidad fue agregada para manejar correctamente interrupciones de
hardware, y para mejorar el soporte de multiprocesamiento Simétrico.
A diferencia de los núcleos monolíticos tradicionales, los controladores de
dispositivos son fácilmente configurables como Loadable Kernel Modules, y se
pueden cargar o descargar mientras se está corriendo el sistema.
La arquitectura interna de Linux es
compleja pero se puede resumir las partes importántes de forma breve y fácil de
entender.
Procesos
Linux se organiza en procesos, que son
tareas independientes que se ejecutan de forma simultánea mientras el sistema
está en funcionamiento. Los procesos cuelgan unos de otros en una dependencia
padre/hijo. Inicialmente al arrancar el sistema sólo existe un proceso, llamado
init. Init lee los ficheros de configuración de arranque presentes en el
directorio /etc y va creando procesos hijos. Estos a su vez tendrán sus propios
hijos formando un árbol de descendientes. Los procesos en ejecución se
encuentran alojados en la memoria rápida RAM del sistema. Cuando se
habla de ejecutar o lanzar o arrancar un proceso, nos estámos refiriendo al
proceso de leer un fichero almacenado en el disco duro que contiene las
instrucciones del programa, colocando las mismas en la memoria RAM y a
continuación empezando a ejecutar las instrucciones del programa ya en RAM.
Usuarios
Linux está diseñado para ser utilizado por
varios usuarios simultáneamente. Aun cuando el sistema sólo vaya a ser
utilizado por un único usuario, como es el caso corriente hoy en día, en
general internamente Linux utilizará varios usuarios 'robots' para organizar
mejor y de forma más segura el sistema. Linux siempre tiene un superusuario
llamado 'root' ('raíz' traducido). En el siguiente párrafo se explica el por
qué crea varios usuarios en vez de uno único. Cada uno de los procesos pertenece a un
usuario y en función del usuario asociado, dicho proceso tendrá unos permisos u
otros. Un proceso en ejecución puede cambiar su usuario asociado si tiene los
permisos suficientes para hacerlo. En general sólo tendrá permisos para cambiar
de usuario cuando el usuario actual asociado al proceso sea 'root'. El proceso
inicial Init se ejecuta con el usuario asociado 'root' lo cual le confiere
permisos totales sobre la máquina. En general cuando Init ejecute sus procesos
hijos lo hará asociandolos a usuarios distintos cuyos permisos se reduzcan a
los esenciales para ejecutar la tarea para la cual están diseñado. P.ej, Init
puede arrancar un proceso 'servidor de correo' asociado al usuario 'mail'. Este
usuario tendrá los permisos justos y necesarios para poder enviar y recibir
correo y almacenarlo en el directorio /var/spool/mail. El proceso 'servicio de
correo' puede a su vez arrancar procesos hijos pero estos estarán
automáticamente asociados a su usuario 'mail', nunca a 'root'. Este simple
sistema de permisos provee a Linux de un sistema de seguridad muy sólido. El entorno gráfico estándar de Linux es un
proceso más llamado X. Cuando se arrancan las X todos los programas gráficos
(que son a su vez procesos) colgarán de él y se ejecutarán por normal general
con los permisos del usuario que se ha logeado con su nombre y password al
inicio de la sesión. Las aplicaciones que solemos manejar frecuentemente como
el navegador web o el reproductor de video no son más que procesos hijo del
proceso X. Si ejecutamos por ejemplo un cliente de correo con un agujero de
seguridad y descargamos un correo con virus, dicho virus 'engañará' al cliente
de correo para que lo ejecute y entonces tendremos un nuevo proceso 'virus'
colgando del cliente de correo y asociado al usuario que inició la sesión. Sin
embargo puesto que este usuario no tiene permisos de administración el virus no
podrá modificar ficheros claves del sistema, sólamente los ficheros propios del
usuario. Al reiniciar el ordenador el virus habrá desaparecido. Esto complica
enormemente la creación de virus para Linux. El entorno gráfico X es un proceso
más, sin ningún privilegio sobre cualquier otro. Esto significa que podemos
prescindir del mismo si no nos hace falta. En general, cuando Linux se utiliza
como servidor de Internet es normal no iniciar el entorno gráfico ya que
consume mucha memoria y puede ralentizar el sistema. Este ha hecho que Linux se
popularice y desplaze a Windows en el entorno profesionales ya que por ejemplo
permite contratar servicios de hospedaje virtual a precios mucho más reducidos
que sus equivalentes en Windows. También al no depender de un entorno gráfico,
puede administrarse remotamente de forma mucho más cómoda mediante líneas de
comandos, mientras que Windows requiere transmitir el entorno gráfico a través
de Internet (mucho más lento, costoso e inseguro).
Ficheros
Los procesos acceden al hardware y a otros
recursos como la conexión de red a internet o los datos almacenados en disco a
través de un sistema de ficheros. Todas las entradas y salidas de datos
desde/hacia procesos se realiza a través de ficheros. P.ej, para acceder a la
tarjeta gráfica de vídeo lo hará leyendo y escribiendo en:
/dev/video/card0
^^^
││└── Tarjeta 0 (podría haber más de una tarjeta de video en el sistema)
││
│└── Subdirectorio/carpeta video
│
└── Abreviatura de device (dispositivo)
Mientras que para acceder a un documento
de texto almacenado en su disco duro lo hará accediento a una ruta similar a:
/home/usuario1/documento1.odf
^^^
││└── Documento que queremos leer/editar.
││
│└── Subdirectorio/carpeta usuario1 (puede haber muchos usuarios)
│
└── Directorio reservado para los ficheros de los usuarios finales
En general un mismo proceso puede acceder
simultáneamente a varios ficheros y a su vez un mismo fichero puede ser
accedido simultáneamente por varios procesos como se vé en el esquema
siguiente:
En el esquema anterior puede verse como
por ejemplo todos los procesos (lado izquierdo) tienen acceso a '/', la raíz
del sistema así como a /dev/null. Cada proceso tiene acceso también a su imagen
en el disco duro desde donde se leen el mismo antes de volcarla a memoria RAM. A continuación se muestra un ejemplo real
del árbol de procesos hasta llegar al proceso navegador firefox:
USUARIOPROCESO
root/sbin/init [5]
...
root\_ /usr/sbin/gdm-binary
usuario1\_ /etc/X11/X
usuario1\_ gnome-panel
usuario1\_ /usr/bin/firefox
En el esquema anterior se puede observar
como el proceso inicial init lanzará entre otros el proceso gdm-binary que es
el encargado de autentificarnos con nuestro usuario y password. A continuación
ejecutará el entorno gráfico X. Dentro de X se ejecutarán una serie de
aplicaciones, p.ej, el relog mostrando la hora o el administrador de archivos.
En el esquema anterior se muestra sólamente la aplicación gnome-panel, una
pequeña barra colocada en el lateral del monitor y que sirve para que el
usuario pueda indicarle al sistema qué otras tareas (procesos) quiere ejecutar
a continuación pulsando sobre un icóno gráfico asociado a la misma. En este
caso se ejecutó él navegador web firefox. Como puede observarse en el esquema
firefox se ejecuta asociado al usuario1 y por tanto con los permisos
restringidos del mismo ya que es hijo de gnome-panel que a su vez es hijo de X
y que fué ejecutado como usuario1 por el gestor de sesiones una vez
identificados correctamente con nuestro usuario y password. Si mientras
navegamos por internet un virus se colase en nuestro navegador entonces el
esquema anterior quedaría como:
USUARIOPROCESO
root/sbin/init [5]
...
root\_ /usr/sbin/gdm-binary
usuario1\_ /etc/X11/X
usuario1\_ gnome-panel
usuario1\_ /usr/bin/firefox
usuario1\_ /home/usuario1/MiVirusFavorito
MiVirusFavorito estaría muy limitado y
sólo podría acceder a ficheros del usuario1, es decir aquellos situados dentro
de la carpeta /home/usuario1/. Puesto que no tiene acceso a los ficheros de
arranque si reiniciamos la máquina el virus morirá ya que 'init' jamás
ejecutará el fichero /home/usuario1/MiVirusFavorito. Por otro lado puesto que
otras máquinas sólo permanecerán infectadas mientras el virus esté en
funcionamiento la posibilidad de que dicha máquina 'zoombie' nos ataque será
muy reducida. Este sistema de seguridad no transforma a Linux en un sistema
invencible pero sí mucho más complicado de infectar que otros sistemas
operativos. Por tanto hay que procurar mantener actualizado el sistema y
hacer copias de seguridad, aun cuando tengamos la certeza de que las
posibilidades de ataque son muy inferiores. Con esta pequeña introducción ya podemos
curiosear las tripas de nuestro sistema. Para ello podemos utilizar los comandos de monitorización.
El
kernel
Comentaba anteriormente que el primer
proceso en ejecutarse el init. En realidad esto no ha sido más que una mentira
con fines pedagógicos. El primer proceso en ejecutarse es el Kernel. El kernel
hace de frontera entre el software y el hardware. Para nuestra CPU, el kernel
es un programa de software como cualquier otro (o casi como cualquier otro)
pero para el resto de procesos, init incluido, el kernel se comporta como si
fuese hardware. Cuando un proceso quiere acceder al hardware no lo hace
directamente, sino que se lo pide al kernel. El kernel hace de interlocutor
entre procesos y hardware. Si varios procesos quieren acceder al disco duro o a
Internet, el kernel asignará un tiempo a cada uno de ellos, copiará los datos
que cada proceso quiere enviar y los enviará al disco duro o a la red. También
es el kernel el encargado de distribuir el tiempo de CPU asignado a cada
proceso. Linux es un sistema multiproceso debido a que, aun disponiendo de un
único procesador, Linux es capaz de ejecutar simultáneamente varias tareas
haciendo rotar el propietario de la
CPU cada fracción de segundo. En realidad puede asignar el
control de la CPU
a un nuevo proceso entre 100 o 1000 veces por segundo, dependiendo de la
potencia de la CPU. Para
un ser humano da la impresión de que todas las tareas se están ejecutando de
forma simultánea. Este sistema de asignación de la CPU es clave y está
extremadamente estudiado y optimizado. P.ej, Linux es lo suficientemente
inteligente como para saber qué procesos están a la espera de recibir un dato
de internet y, mientras este dato no llegue, no le asignará el valioso tiempo
de CPU. Desde hace unos años a esta parte, los procesadores han desarrollado
sistemas de ahorro de energía permitiendo disminuir la frecuencia, potencia o
ciclo de trabajo de la CPU
cuando no hay tareas que hacer. Linux está al tanto de este hecho y si observa
que no hay aplicaciones demandando la
CPU automáticamente le indica al procesador que disminuya el
consumo de energía. Si antes nombrábamos que los procesos
están asociados a usuarios y gestionan ficheros, en realidad estos usuarios y
ficheros son gestionados por el kernel. Cuando un proceso quiere acceder a un
fichero, en realidad le pide al kernel que acceda al fichero y será el kernel
quien le devuelva los datos que haya leido. Antes de ello el kernel comprueba
el usuario y grupo asociado al proceso, comprueba a su vez los usuarios o
grupos que pueden acceder a dicho fichero. Si no concuerdan, en vez de devolver
el dato, devolverá un error o excepción al proceso llamante indicándole el
"porque". Otra labor del kernel es abstraer a los
procesos del hardware real de la máquina. Un proceso 'visor de fotos' que
quiera acceder al fichero /home/usuario1/FOTOS/vaciones001.png no tiene que
preocuparse si dicho fichero está en un disco duro, una memoria SSD o debe ser
accedido a través de la red local ya que se encuentra en otro ordenador. El
kernel mediante un sistema llamado "montaje" mapea rutas lógicas de
directorios, p.ej, /home/usuario1 con un dispositivo físico, p.ej, el disco
duro local o un disco duro en Internet a 1000 kms. de distancia. El proceso
'visor de fotos' no se tiene que preocupar de dónde está fisicamente el
fichero, sólamente de su ruta simbólica /home/usuario1/FOTOS/vacaciones0001.png. La memoria RAM de un sistema es limitada,
y de nuevo el kernel se encarga de asignar memoria a los procesos. Además, de
nuevo, es lo suficientemente inteligente como para saber qué procesos llevan
mucho tiempo sin ejecutarse (por ejemplo un servidor de correo que lleva 10
minutos sin enviar ni recibir correos) y si la memoria RAM escasea, es capaz de
mover el proceso de RAM al disco duro y asignar la memoria RAM a procesos que
en un instante dado puedan hacer mejor uso de la misma. La palabra
Linux, estrictamente hablando, en realidad se refiere sólamente al kernel. Los
procesos normales en realidad no son Linux, son procesos desarrollados por
diferentes grupos de trabajo (fundación GNU, Mozilla, empresas,...). Sin
embargo es costumbre resumir, por abuso del lenguaje, como Linux a todo y
cuanto se ejecuta bajo el kernel (algo que en realidad siempre ha molestado a
otros grupos de desarrollo que se ven injustamente ignorados por este hecho).