jueves, 9 de mayo de 2019

4.1.2 Comunicación Entre Procesos (Sockets, RPC) 

La comunicación entre procesos (comúnmente IPC, del inglés Inter-Process Communication) es una función básica de los sistemas operativos. Los procesos pueden comunicarse entre sí a través de compartir espacios de memoria, ya sean variables compartidas o buffers, o a través de las herramientas provistas por las rutinas de IPC. La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre sí, normalmente a través de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente.

La comunicación se establece siguiendo una serie de reglas (protocolos de comunicación).
Los protocolos desarrollados para internet son los mayormente usados: IP (capa de red),  protocolo de control de transmisión (capa de transporte) y protocolo de transferencia de archivos , protocolo de transferencia de hipertexto (capa de aplicación).
Los procesos pueden estar ejecutándose en una o más computadoras conectadas a una red. Las técnicas de IPC están divididas dentro de métodos para: paso de mensajes, sincronización, memoria compartida y llamadas de procediemientos remotos (RPC).

El método de IPC usado puede variar dependiendo del ancho de banda y latencia (el tiempo desde el pedido de información y el comienzo del envío de la misma) de la comunicación entre procesos, y del tipo de datos que están siendo comunicados. El sistema operativo provee mínimamente dos primitivas, enviar y recibir, normalmente llamadas  send y receive. Asimismo, debe implementarse un enlace de comunicación entre los procesos de la comunicación. Este enlace puede ser unidireccional o multidireccional según permita la comunicación en solo uno o en varios sentidos.


RPC
(Remote Procedure Call / llamada a un procedimiento remoto) Permitir que los programas
realicen llamadas a funciones localizadas en otras máquinas. Los programadores no se tienen que preocupar por los detalles de la programación de la red. Conceptualmente simple.
Desde el punto de vista de un programador la llamada a una función remota es y funciona de la misma manera que lo haría si la llamada fuese local. En este sentido, se logra transparencia.
Cada función pasa a tener dos partes: cliente, la máquina local donde se implementa la interface (prototipo de una función) para invocar las funciones remotas. Servidor, implementación de las funciones propiamente dichas.
-Paso de parámetros
No debería de existir ningún problema si dos máquinas son homogéneas, sin embargo la realidad no suele ser ésta. Pueden surgir problemas de diferentes codificación de caracteres (ej.: mainframe IBM: EBCDIC, IBM PC: ASCII) o diferentes tipos de ordenación de bytes  (ej.: Intel: little endian, Sun SPARC: big endian).
Como solución a estos problemas es importante lograr un acuerdo del protocolo usado.
La parte encargada de generar los mensajes no debe de presuponer el uso de un lenguaje de programación específico
Comunicación orientada a mensajes
Las comunicaciones RPC se basan en la idea que el receptor está operativo para poder invocar una cierta función, no podemos suponer que el receptor siempre estará operativo y esperando a comunicarse. La solución es definir la comunicación en término de paso de mensajes.
Mensajes momentáneos vs. mensajes persistentes
Momentáneos: no soportan el envío de mensajes persistentes.

(1) Sockets, (2) Message-passing interface (MPI).
Sockets
Sistema fuertemente acoplado a las redes TCP/IP
Sockets API:
1.      socket: crea una nueva comunicación.
2.     bind: añade la dirección local al socket.
3.     listen: queda en espera de conexiones.
4.    accept: queda bloqueado hasta la llegada de un pedido de conexión.
5.     connect: pedido de establecimiento de conexión.
6.    send: enviar datos por la conexión.
7.     receive: recibir datos por la conexión.
8.    close: desvincula el socket la dirección local.
4.1.1 Sistemas de Archivos y Recursos
 
Es la capacidad de diferentes sistemas informáticos, aplicaciones y servicios para comunicar, compartir e intercambiar datos, informacion y conocimiento de una forma precisa, efectiva y consistente.
La interoperabilidad semántica es la que se preocupa de asegurar que el significado preciso de la información que se intercambia es entendido por otra aplicación que no fue diseñada inicialmente para ese propósito. La interoperabilidad semántica permite que los sistemas de información recombinen información de varias fuentes y que la puedan procesar de una forma coherente.
La interoperabilidad técnica se preocupa de los problemas que existen para intercomunicación sistemas y servicios heterogéneos. Esta interoperabilidad tiene aspectos clave como el uso de interfaces y estándares abiertos, servicios de interconexión, integración de datos, middleware, presentación de datos e intercambio de información, accesibilidad y la garantía de seguridad de los servicios.
 4.1 Interoperabilidad entre Sistemas Operativos

El ámbito de la administración electrónica ha dotado a la interoperabilidad de gran relevancia y ha impulsado estudios científicos que actualmente destacan otras dimensiones por encima de la dimensión técnica de la interoperabilidad. Es precisamente en este contexto donde se impone la interoperabilidad actualmente como uno de los elementos clave para la administración electrónica, reflejado en España a través del Esquema Nacional de Interoperabilidad.
Además de hablarse de la gobernanza de la interoperabilidad, se reconoce a la interoperabilidad actualmente, al menos, tres dimensiones bien diferenciadas:
Dimensión técnica
Dimensión semántica
Dimensión organizacional

Neutralidad tecnológica
La expresión neutralidad tecnológica se usa preferentemente a la hora de describir la actitud que se espera por parte de la Administración Pública en relación con sus proveedores, sobre todo tratándose de proveedores de bienes y servicios informáticos.
Hay quien entiende la neutralidad tecnológica como la igualdad de concurrencia de los proveedores ante el mercado de la Administración Pública.
Otra acepción se refiere a la actitud que debe tomar la Administración Pública respecto de un proveedor que en el transcurso del tiempo ha adquirido respecto de la Administración Pública una situación privilegiada y de cuyos productos no podría prescindir sin arrastrar grandes costes.
Desde el punto de vista del usuario, o del administrado, y especialmente en el ámbito de la Administración electrónica, la neutralidad tecnológica implica que dicho administrado debe poder dirigirse a la Administración Pública por vías telemáticas sin que le sea impuesta, de facto o explícitamente, ningún tipo de tecnología específica.
Finalmente, neutralidad tecnológica también se usa como la característica de una ley que enuncia derechos y obligaciones de las personas sin disponer nada acerca de los medios tecnológicos necesarios para que se cumplan. Se trata de leyes que se desinteresan del marco tecnológico.

3.8 Normatividad y Políticas de Uso 

El software no se vende, se licencia. Una licencia es aquella autorización formal con carácter contractual que un autor de un software da a un interesado para ejercer “actos de explotación legales”. Es decir, el software no se compra, sino que se adquieren una serie de derechos sobre el uso que se le puede dar. En las licencias de software libre esos derechos son muy abiertos y permisivos, apenas hay restricciones al uso de los programas. De ahí que ayude al desarrollo de la cultura. Pueden existir tantas licencias como acuerdos concretos se den entre el autor y el licenciatario.

NORMATIVIDAD DE USO

Políticas y reglamentos de uso de los servidores
Las políticas y reglamentes que existen dentro del uso de los servidores son muy importante para poder usar de manera adecuada los servicios que prestan varias compañías informáticas u otras compañías .
Para poder regular la utilización de todos los servicios y recursos informáticos al fin de realizar y optimizar los servicios para poder garantizar un funcionamiento óptimo.
Políticas y reglamentos para los usuarios
El usuario debe de comprender y recibir las normas y reglamentes que conlleva cada servicio para que pueda obtener el suficiente servicio o producto con una calidad optima para que pueda cumplir la necesidad que posee el usuario .
Tanto que debe revisar políticas en el uso del Internet , paginas , servicios, etc.


3.7.3 Mecanismos de Recuperación Ante Fallos (FS, Procesadores, Memoria)

Debido a que los archivos se mantienen tanto en memoria principal como en el disco, debemos asegurarnos de que un fallo del sistema no de por resultado la perdida de datos o inconsistencia en los mismos.

La destrucción de la información, ya sea accidental o intencional, es una realidad y tiene distintas causas:
1.     Fallas de hardware y de software
2.     Fenómenos meteorológicos atmosféricos
3.     Fallas en el suministro de energía
4.     Incendios e inundaciones
5.     Robos, vandalismo (incluso terrorismo)

Esta posible destrucción de la información debe ser tenida en cuenta por:
1.     Los sistemas operativos en general
2.     Los sistemas de archivos en particular

Una técnica muy usada para asegurar la disponibilidad de los datos es realizar respaldos periódicos:
3.     Hacer con regularidad una o más copias de los archivos y colocarlas en lugar seguro.
4.     Todas las actualizaciones realizadas luego del último respaldo pueden perderse.

Otra técnica es pasar todas las transacciones a un archivo, copiándolas en otro disco:
1.     Genera una redundancia que puede ser costosa
2.     En caso de fallas en el disco principal, puede reconstruirse todo el trabajo perdido si el disco de reserva no se dañó también

También existe la posibilidad del respaldo incremental:
Durante una sesión de trabajo los archivos modificados quedan marcados.
Cuando un usuario se retira del sistema (deja de trabajar), un proceso del sistema efectúa el respaldo de los archivos marcados.

Se debe tener presente que es muy difícil garantizar una seguridad absoluta de los archivos.
El método correcto de manejar fallos consiste básicamente en detectarlos a tiempo y de forma correcta. La inclusión de equipos de test en el sistema es esencial para mantener esta capacidad de monitorización.
En cualquier caso, la caída total o parcial del sistema se puede subsanar en parte si hay puntos de restauración del sistema (chkpt). Esta posibilidad aumenta la disponibilidad de recuperación en caso de fallos.

Mecanismos de Protección
Dominios de Protección
Muchos objetos del sistema necesitan protección, tales como la cpu, segmentos de memoria, unidades de disco, terminales, impresoras, procesos, archivos, bases de datos, etc.
Cada objeto se referencia por un nombre y tiene habilitadas un conjunto de operaciones sobre él.

Un dominio es un conjunto de parejas (objeto, derechos):
1.     Cada pareja determina:
2.     Un objeto.
3.     Un subconjunto de las operaciones que se pueden llevar a cabo en él.

Un derecho es el permiso para realizar alguna de las operaciones. Es posible que un objeto se encuentre en varios dominios con “distintos” derechos en cada dominio.

Un proceso se ejecuta en alguno de los dominios de protección:
1.     Existe una colección de objetos a los que puede tener acceso.
2.     Cada objeto tiene cierto conjunto de derechos.

Una forma en la que el S. O. lleva un registro de los objetos que pertenecen a cada dominio es mediante una matriz:
1.     Los renglones son los dominios.
2.     Las columnas son los objetos.
3.     Cada elemento de la matriz contiene los derechos correspondientes al objeto en ese dominio, por ej.: leer, escribir, ejecutar.
Posibilidades
La matriz de protección también puede dividirse por renglones.
Se le asocia a cada proceso una lista de objetos a los cuales puede tener acceso.
1.     Se le indican las operaciones permitidas en cada uno.
2.     Esto define su dominio.

La lista de objetos se denomina lista de posibilidades y los elementos individuales se llaman posibilidades. Cada posibilidad tiene:
1.     Un campo tipo:
2.     Indica el tipo del objeto.
3.     Un campo derecho:
4.     Mapa de bits que indica las operaciones básicas permitidas en este tipo de objeto.
5.     Un campo objeto:
6.     Apuntador al propio objeto (por ej.: su número de nodo-i).
3.7.2 Planificación y Ejecución de Mantenimiento
 
Una vez tengamos este plan de seguridad informática por escrito, debes poner en práctica las siguientes recomendaciones:

Comunica el plan a todo el personal: Haz que algunos empleados concretos sean responsables de áreas específicas. Asegúrate de que tengan tiempo y recursos para hacer los cambios recomendados a sus sistemas de IT.
Crea políticas de IT y forma a la gente: Modifica las políticas de IT para que estén en línea con el plan de seguridad. Si es necesario, forma a la gente para que todo el personal entienda cómo minimizar las vulnerabilidades de seguridad.
Establece un calendario para poner en marcha las medidas del plan: Recuerda que puede tomar tiempo hacer grandes cambios en los sistemas.

Mantenimiento del plan de seguridad informática
Los riesgos de seguridad cambian constantemente, por lo que deberás revisar periódicamente tu plan de seguridad informática. Mantente al día de las vulnerabilidades de seguridad emergentes suscribiéndote a boletines de empresas de seguridad. Asegúrate de que actualizas regularmente tus protecciones.
Si se realizan cambios en tu sistema informático o inviertes en nuevo hardware o software, revise tu plan de seguridad informática. Tratar de identificar nuevas vulnerabilidades de seguridad y revisa también las políticas y procedimientos al menos cada 12 meses. Por último, pon a alguien a cargo del plan de seguridad informática, para que no haya ninguna posibilidad de que quede descuidado.
3.7.1 Planificación de Seguridad
 
Los riesgos a un ciberataque son reales hoy en día. Les ocurre a grandes empresa e incluso a algunas de las organizaciones que parecen más seguras. Por lo tanto, un plan de seguridad informática no es algo de lo que deberías dudar de tener.

Un plan de seguridad informática te permite entender donde puedes tener vulnerabilidades en tus sistemas informáticos, para una vez detectadas, tomar las medidas necesarias para prevenir esos problemas.
No necesitas que tu plan de seguridad informática sea un documento demasiado extenso que cubra cualquier tipo de seguridad imaginable. Debe ser capaz de ayudar a proteger los datos y los sistemas críticos de tu negocio, asegurándote además que se ajuste a la legislación vigente y a la Ley de Protección de Datos.
Tu plan de seguridad debe de tener varios pasos que debes dejar por escrito. Veámoslo a continuación.
1. Identificación
Para proteger a tu organización, lo primero que debes hacer es saber lo que tienes en ella que vale la pena proteger. Este paso inicial implica averiguar el conjunto de los activos de la organización, incluido el personal, el hardware, software, sistemas y datos que componen tu sistema informático. Pueden incluir programas informáticos, servidores y servicios externos como alojamiento web.

2. Evaluación de riesgos
Ahora necesitas establecer qué es lo que podría poner en peligro los activos anteriores. Por ejemplo, los virus informáticos, hackers, daños físicos o errores de los empleados. Considera el tipo y el alcance del daño que podría ser causado en cada caso. Por ejemplo, si el servidor se pone fuera de línea, ¿tu empresa podría seguir funcionando?. Anota todo esto en tu plan de seguridad informática.

3. Prioriza tu protección IT
Una vez que hayas evaluado el daño potencial de cada amenaza y la probabilidad de que se produzca, puedes decidir qué amenazas son las más importante e interesantes para empezar a proteger. Por ejemplo, podrías determinar que la protección de tu servidor es más importante que la protección de los equipos individuales.

4. Toma las precauciones adecuadas
Decide cuáles son los pasos que debes tomar para protegerte contra los riesgos que has identificado en toda la parte anterior de este plan de seguridad informática, y asegura que tu negocio va a seguir siendo capaz de operar si algo va mal. Por ejemplo, deberías restringir el acceso a tu servidor o instalar un firewall de hardware. Tu plan de recuperación de desastres debe explicar qué hacer si ocurre una crisis.


3.7 Seguridad e Integridad

Todo sistema operativo tiene más o menos vulnerabilidades. Aprenda sobre los tipos de seguridad existentes, conozca cuáles son las amenazas más frecuentes y obtenga un listado de herramientas útiles para enfrentarlas. ¡Que no lo agarren desprevenido
 
Linux es un sistema en constante cambio, desarrollo y mejora
Pro: Cualquier inconveniente en cuanto a seguridad, será solucionado por el gran número de programadores que contribuyen en su desarrollo.
Contra: Sus ajustes no son auditados de manera exhaustiva.
Linux tiene fama de ser el sistema operativo más seguro.
Pro: Por lo general, el usuario de este sistema suele prestar más atención a lo que descarga, a su proveniencia, a lo que ejecuta y a cómo lo ejecuta.
Contra: La excesiva confianza en su superioridad conduce al usuario a baja la guardia y aumentar los riesgos.
Detección de bugs
Pro: Los bugs se conocen de manera natural y en menos de 24 horas se encuentra la solución a ellos o aparecen versiones del mismo software con el problema corregido.
Contra: Las versiones del software que se incluyen en el CD suelen tener numerosos bugs al poco tiempo de su lanzamiento.
Presencia de virus
Pro: Su estructura de permisos y políticas de seguridad no permite la fácil propagación de los virus.
Contra: Los virus existen en Linux.

4.1.2 Comunicación Entre Procesos (Sockets, RPC)  La comunicación entre procesos (comúnmente IPC, del inglés Inter-Process Communication) ...