Make your own free website on Tripod.com

 

 
 

 

 

SECCIONES

 

--> Windows

--> Linux

 

--> Internet

--> Hardware

--> Software

--> Tutoriales

 

--> Biografías

--> Trucos

--> Downloads

--> Drivers

--> Música

--> Diagnóstico

 

--> Humor

 

 

COMUNIDAD

 

--> Chat

--> Foro

--> Webmail

--> Guestbook

 
 

 
 

 

 

Seguridad

 

 

En un sistema multiusuario como Linux es lógico entender que los usuarios han de compartir los recursos del sistema ya sea de un modo simultáneo o no, por lo que necesitaremos sus mecanismos de administración para garantizar la privacidad requerida en cada caso y la estabilidad del sistema. Administrar los recursos de un sistema Linux tiene por defecto la responsabilidad el famoso usuario "root". A continuación os mostramos una visión general de los recursos a administrar y cómo hacerlo en un sistema Linux.
 

En todo sistema multiusuario existe la figura del administrador que regula los accesos de los usuarios a los recursos del sistema. Pero también del usuario que se cuela sistemáticamente y que aunque no nos hace la vida imposible nos toca la fibra sensible. Las aulas de informática de academias, colegios, institutos y universidades están sembradas de ejemplos como este. Cuando hablamos de seguridad hemos de pensar con un prisma especial, hay que cambiar el chip y dejarse de fantasías, que muy lejos de la realidad lo que impedirán es que logremos unos objetivos aceptables. Administrar un sistema es una responsabilidad distinta a hacer uso de él. Requiere no comprometer información que en muchos casos está protegida legalmente y que de demostrarse negligencia, tiene responsabilidades punibles en nuestro sistema judicial, por lo que no se trata de un juego ni de emular una película. Aunque por otro lado es probablemente de las cosas que más llaman la atención. Pero vayamos por partes.
 

EL MARCO
Para tener una idea general de lo que vamos a tratar hemos de tener claro el marco de un sistema como Linux y de su sistema de usuarios. Como ya hemos indicado, el usuario administrador, que todo lo ve y todo lo puede en un sistema Linux, se conoce como root. El usuario root tiene prioridad en el sistema sobre todos los demás, y los procesos del sistema tienen la prioridad del usuario root. El resto de usuarios están controlados por el usuario root y pueden perder cualquiera de sus derechos en el sistema cuando el usuario administrador lo estime e incluso perder la ejecución de los procesos.
Para facilitar la administración de un sistema de usuarios se habilita normalmente la posibilidad de clasificarlos por las características que los agrupan, permitiendo realizar posteriormente tareas generales de administración directamente sobre los grupos y no sobre los individuos. Y además de actuar sobre los usuarios y los grupos, el usuario administrador puede hacerlo sobre elementos concretos del sistema, archivos y carpetas. Y teniendo en cuenta que los dispositivos en Linux se manejan mediante los archivos de /dep/, tenemos control total sobre todo lo que puede hacer Linux.
Afortunadamente para todos aquellos que no tienen grandes conocimientos de seguridad, esto no supone un problema, ya que por defecto la mayoría de las distribuciones tras la instalación están configuradas para que el usuario (novato o no) pueda disponer de los mínimos exigibles para garantizar que cualquier particular disponga de la seguridad adecuada. Aun así tenemos que tener en cuenta de que se trata de un sistema que se encuentra en continuo desarrollo y que todo él es público, por lo que sus fallos también lo son. Y es nuestra obligación, si queremos mantener cierta seguridad en el sistema, actualizar los paquetes regularmente para subsanar estos errores. Por eso, como primera regla tenemos que considerar apuntarnos a algunas listas de distribución de correo sobre el tema y procurar mantenernos al día. Pero además hemos de tener en cuenta que no sólo el control del software nos permite mantener al día el nivel de seguridad, muchas veces nos encontraremos con problemas que tienen su origen en el tipo de hardware que estamos utilizando, como es el caso de los routers, que disponen de software y hardware que hay que actualizar y configurar.
 

Es importante monitorizar el estado de ejecución durante una sesión de administración para tomar decisiones.

¿POR QUÉ NO DEBEMOS USAR EL USUARIO ROOT?
Esta pregunta que algunos os haréis tiene fácil respuesta, aunque depende del uso que hagamos del sistema. Veamos: si utilizamos el ordenador sólo nosotros, no disponemos de ninguna información relevante y queremos disponer en todo momento de todo lo que nos ofrece el sistema, no tiene razón de ser que habilitemos otro usuario distinto, aunque podemos correr el riesgo de realizar daños irreparables en el sistema y tener que reinstalarlo con demasiada frecuencia. Hasta cierto punto tiene sentido si somos de los que cambiamos de distribución constantemente.
Por otro lado, si hemos hecho la elección de una distribución que nos va bien y que queremos utilizar regularmente, y además no queremos exponer el trabajo del día a día a cualquier virtuoso al corriente de todo lo que falla en nuestro sistema, es más que recomendable que habilitemos una cuenta para nuestro uso doméstico con los permisos que necesitemos para realizar las tareas más habituales. Y sólo en los casos que lo requieran, hacer uso del usuario root.
Pero este no es el principal ni el único motivo. Cuando decidimos administrar nuestro sistema como si se tratara de algo más serio hemos de tomárnoslo como si fuera un hobby. Y sentarnos delante del PC un único pensamiento: "Hoy que tengo tiempo voy a leer mucho inglés y voy a tratar de dar un pasito más en mi objetivo". Y es que tener todos los permisos en todo momento puede llevarnos a realizar cosas que deterioren el sistema. Y usado incorrectamente (no es nada recomendable navegar por la red logeado como usuario root), a poner a disposición de los más avispados información sensible de nuestro sistema que pueda llevar a un ataque sobre él con éxito.

 

Hay muchos métodos para visualizar la actividad "logeada" en el sistema.
 

¿QUÉ ES UNA CUENTA?
Una cuenta es la manera de determinar el acceso que un usuario tiene a un sistema. Consta de autorización para iniciar una sesión y acceder a unos servicios. Una cuenta puede diferenciarse de otra por el entorno de ejecución de los procesos y por los servicios de los que dispone. Linux tiene distintos entornos de ejecución de aplicaciones que usados incorrectamente pueden suponer un grave problema de seguridad: se trata de la shell. Un usuario con una shell inadecuada puede hacer uso de archivos y servicios que pongan en juego la seguridad del sistema.
Los usuarios del sistema están registrados en el archivo passwd. En él están reflejados los datos de registro del sistema del usuario, login y password y los indicadores de prioridad en el sistema, así como la ruta de la carpeta en el sistema de archivos del usuario y la shell (el intérprete de comandos) que utiliza.
Para añadir usuarios en el sistema disponemos de numerosas herramientas, muchas de ellas gráficas. Las más conocidas son adduser (modo texto), usercfg (modo gráfico) o editando directamente el archivo de claves passwd (nada recomendado si es nuestra primera experiencia). Existen muchas más herramientas, y actualmente la mayoría de ellas gráficas, pero es posible que queramos utilizar nuestro sistema Linux como servidor de FTP o FIREWALL o como servidor WEB y no tengamos instalado ningún entorno gráfico (otro posible agujero de seguridad), por lo que es recomendable aprender a utilizarlo todo si queremos hacer las cosas bien.
Otro de los aspectos principales a tener en cuenta en un sistema multiusuario es que físicamente no podemos tener a todos los usuarios utilizando simultáneamente el mismo teclado o ratón. Por eso hemos de prestar especial atención si el sistema ha de estar conectado a una red y prestar servicios de acceso remoto. Esta es probablemente la tarea más compleja y atractiva de las que trataremos con posterioridad, ya que es de los aspectos más dinámicos y desarrollados de Linux. Y también es en él donde residen muchas de sus más conocidas virtudes; principalmente porque el kernel de Linux nos permite realizar acciones sobre los distintos protocolos que soporta prácticamente sin límite. Acciones como distintos cifrados de datos, firewall, etc,... son algunas de ellas, que actualmente en la configuración de las comunicaciones de Internet son muy apreciadas, ya que garantizan la confidencialidad de los datos o impiden que la información sea interpretada en el caso de que se intercepte.
 

Para estar al día de los fallos de seguridad y las nuevas herramientas habrá que leer mucha documentación

GLOSARIO DE TÉRMINOS
 

SERVIDORWEB, este es probablemente uno de los aspectos a configurar que más atención requieren. Poder ofrecer servicios que permitan una navegación dinámica requiere permitir la ejecución de aplicaciones en el servidor, por lo que el control sobre todo lo que ha de ejecutar un web es fundamental y consecuentemente la configuración del servidor web (apache) es la piedra angular.
SSL (Secure Socket Layers) es un método de tres niveles que utiliza RSA y autenticación y encriptación DES, así como comprobación de MD5. Todos son mecanismos de cifrado que garantizan la confidencialidad de las transmisiones. Se utiliza sobre todo para proteger la comunicación vía WEB.
FTP es el sistema de transferencia de ficheros más habitual. Para ofrecerlo con garantías, hemos de controlar adecuadamente todos los permisos que se otorgan a los usuarios que acceden a él y poner especial atención a las sesiones de upload en el sistema.
Firewall es un dispositivo que controla las comunicaciones en una red, impidiendo o permitiendo que se realicen, según el caso. Además puede permitir realizar acciones concretas sobre determinados paquetes. Se puede realizar físicamente, dispositivo hardware o mediante software e incluso en el caso de Linux, se pueden incluir en el kernel características del firewall.
Spoofing es una técnica que utiliza el atacante que consiste en autenticar una máquina mediante otra de confianza. Es decir, consiste en suplantar una máquina de "confianza" del sistema a hackear. Existen varias técnicas dependiendo del tipo de máquina que se suplante, IP, ARP o DNS.
Scanners, es un mecanismo de seguridad que permite detectar puntos vulnerables en el sistema. Se pueden diferenciar dos tipos de scanners, de red y de puesto, cada uno de ellos orientado a un objetivo distinto: evaluar la seguridad de un sistema concreto o de una red. Son las herramientas más útiles a la hora de verificar nuestro trabajo, pero también para quien quiere localizar agujeros en nuestro sistema. Defenderse de un ataque mediante scanner no tiene mucho sentido, aunque sí lo tendría registrar su actividad.
Sniffers, dispositivo de monitorización oculto que el intruso coloca en la red a fin de interceptar información sensible para asaltar la máquina víctima. Analizan los protocolos de comunicación de la red en la que están actuando, recogen todos los paquetes que circulan por ella y construyen la información como si de un puzzle se tratara. Esto permite al programa capturar nombres de usuarios y claves. No son fáciles de detectar, pero sí de evitar si usamos mecanismos de cifrado de las comunicaciones.

MUCHA ATENCIÓN
Es posible que nuestros principales problemas de seguridad se encuentren en parcelas muy distintas de las que podemos atacar con un sinfín de configuraciones de archivos. Muchas veces los fallos de seguridad se deben a problemas muy sencillos de resolver y a la vez tan evidentes que en ocasiones ponen de manifiesto la falta de criterio a la hora de administrar el sistema. Claves de acceso a la bios del sistema, al gestor de arranque o configuraciones de arranque del sistema debidamente configuradas, resuelven muchos de los dolores de cabeza habituales.
¿Qué pasaría si dejamos que cualquier usuario pueda arrancar el sistema con un disco de inicio y cargase otro kernel que el que estamos utilizando normalmente? ¿Y si cerramos la posibilidad de arrancar con disco de inicio desde la bios y no le ponemos clave de acceso a la configuración? ¿Y si permitimos que cualquiera acceda a un sistema operativo en ese mismo ordenador desde el que machacar la bios de la placa? ¿Y si le ponemos una clave al gestor de arranque y/o al sistema operativo y luego no le damos los permisos adecuados a sus archivos de configuración y quedan accesibles para todo el mundo?
Pues bien, estas situaciones que pueden parecer absurdas son de lo más habitual, al igual que el hecho de dejar el post-it con la clave que nunca recordamos pegada en el monitor, debajo del teclado o en un archivo sin permisos accesible a todos los usuarios. Incluso habrá veces que las publiquemos en Internet al configurar un servicio de ftp o web, y no nos demos ni cuenta.
Cuadro: ¿Cómo poner una clave de acceso al sistema en LILO?
Para poner una contraseña al archivo /etc/lilo.conf tenemos que poner en él una línea como la que sigue:
Password=xxxxxxxxx
Esto permite controlar que sólo los usuarios locales autorizados arranquen Linux, pero tenemos que tener en cuenta que la contraseña que pongamos queda escrita en el archivo /etc/lilo.conf tal y como la hemos escrito, no va cifrada. Por eso además tendremos que prestar especial atención a sus permisos de seguridad. Para ello cambiaremos el modo del archivo a 600 mediante chmod. De no hacerlo así, los usuarios con permisos sobre el directorio /etc/ podrían acceder a la clave.
Ojo, si pretendemos poner clave en LILO a un sistema al que no tenemos acceso físico, tendremos un grave problema en caso de que el sistema se quede frito, ya que no arrancará mientras el gestor de arranque no reciba la clave de acceso. También existe la posibilidad de configurar Linux de forma que sólo arranque desde el disco de inicio.

Las terminales de Linux no deben estar muy lejos si tenemos que editar los archivos de configuración.

LA IMPORTANCIA DE LOS LOGS
Es más que probable que en alguna ocasión durante la lectura y como consecuencia de perfeccionar nuestro sistema en lo que se refiere a seguridad, nos hayamos planteado la posibilidad de registrar alguna serie de eventos del sistema. Y lo cierto es que cualquier sistema que precise de un mínimo de seguridad dispone de este tipo de registro. Un archivo de logs nos permite determinar el tipo de acceso que se realiza a los elementos que administramos. Pongamos un ejemplo. Supongamos que alguien se ha sentado delante de nuestro sistema o remotamente y ha intentado acceder a él. Pero en lugar de hacerlo con su clave de acceso, ha hecho algunas pruebas para ver si adivinaba la clave de otro usuario. Esto que parece muy inocente es una verdadera bomba, ya que aunque parezca mentira, funciona, y es uno de los ataques más habituales. Pues bien, si mantenemos un registro de los accesos al sistema, podemos localizar este tipo de ataques e información del atacante que puede resultarnos muy útil más tarde.
Linux es capaz de hacer logs de casi cualquier cosa, pero resultan de especial utilidad por razones obvias los de acceso a algunos de los recursos del sistema y los servicios. Pero la faceta más interesante de los logs es que mediante algunos mecanismos y herramientas que los interpretan, el sistema es capaz de determinar información en tiempo real de lo que se está haciendo con él, y una vez programado y configurado debidamente, el sistema puede tomar acciones concretas sobre los usuarios.
 

CONCLUSIONES
Sólo le hemos visto las orejas al lobo,... la punta del iceberg. Existe muchísima documentación en la que se tratan en profundidad todos estos temas. Y aunque nosotros continuaremos tratando en esta y en otras secciones este interesante tema, es conveniente que echéis un vistazo por Internet para desarrollarlo en ramas concretas. De cualquier modo hemos dibujado las líneas básicas que permitan garantizar un uso lógico del sistema y así poder mantener políticas de seguridad elementales que permitan hacer uso del sistema operativo más inteligentemente. Y evitar así utilizar constantemente la cuenta del usuario "root" sin necesidad. La próxima vez nos tendremos que evaluar...