Seguridade Activa e Lóxica

De Wiki do Ciclo ASIR do IES de Rodeira
Saltar á navegación Saltar á procura

Introducción.

Podemos definir a seguridade lóxica como a aplicación de barreiras e procedementos que protexen o acceso aos datos, permitindoo únicamente ás persoas autorizadas.

As principais ameazas á seguridade lóxica ás que terán que facer frente os administradores de sistemas son o acceso non autorizado e a modificación de datos e aplicacións sen permiso. Para reducir estas ameazas é imprescindible unha correcta administración dos permisos e realizar un control de acceso aos recursos axeitado mediante a identificación, autenticación e autorización de acceso.

Control de Acceso ao Sistema

O control de acceso aos sistemas utiliza dous pasos: Identificación e Autenticación. A Identificación consiste en que un usuario se da a coñecer ao sistema, e a Autenticación son os medios de verificación de identidade do usuario identificado.

O ideal, é que o usuario únicamente precise identificarse unha vez, de xeito que sucesivos accesos se realicen sen necesidade de facilitar de novo as credenciais, tanto no sistema no que se realizou a identificación e autenticación como nos sistemas asociados. Esto denomínase Single Login ou Single Sign On (SSO).

As ventaxas dos sistemas SSO radican en que como o usuario non ten que autenticarse tan a miudo non e non precisa recordar múltiples contrasinais se reduce a posibilidade de que o usuario introduza o seu contrasinal onde non debe, e se aforra o tempo perdido nas diversas autenticacións. Ademáis, dende o punto de vista da administración do sistema, como SSO utiliza servidores de autenticación, se reduce o traballo xa que so e necesario configurar e asegurar un único equipo.

O principal inconvinte é que si se comprometen unhas credenciais de autenticación, se facilita o acceso a múltiples servicios e máquinas, o que fai necesario que para sistemas críticos se combine este tipo de control con outras medidas, como poden ser o uso de smartcards ou passwords de un so uso (OTP Tokens).

Probablemente o servicio máis común para SSO é Kerberos. O servidor Kerberos, unha vez que o usuario facilita as súas credenciais, facilita un “ticket kerberos” (TGT). Cando calqueira outra aplicación precisa autenticar ao usuario, utilizará o TGT para obter un “ticket de servicio” que asegurará a identidade do usuario. Active Directory de Windows é un sistema que emprega Kerberos para facilitar SSO.

Outro sistema cun obxectivo similar é OpenID, que consiste no uso de Servidores de Identidade. Os servidores de identidade facilitan unha chave de identificación correspondente cun usuario previamente rexistrado e autenticado no Servidor de Identidade. Esto elimina a necesidade de rexistrarse en múltiples sites o que redunda nunha maior comodidade e seguridade.

Políticas de Contrasinais

Os sistemas de control de acceso protexidos con contrasinal son un punto crítico na seguridade, recibindo a miudo ataques . Os máis comúns son:

Ataques de forza bruta
Probando combinacións ata que se atopa a chave.
Ataques de diccionario
Utilízase un diccionario cun conxunto de chaves de uso común.

Para dificultar o éxito deste tipo de ataques se debe aumentar a complexidade das password elexidas, facendo uso de símbolos especiais, letras e números. Os sistemas operativos teñen normalmente medios para forzar a usuario a elexir contrasinais dunha complexidade mínima mediante as políticas de contrasinais.

PAM

A autenticación en Linux hoxe en día fai uso de uns módulos denominados PAM (Pluggable Authetication Module) que permiten configurar o sistema de autenticación a empregar polos distintos servicios e aplicacións do sistema, o que facilita a integración de diversos métodos como sistemas biométricos, smartcards, etc. Exemplos son pam_cracklib, que permite forzar a complexidade das contrasinais utilizadas no sistema ou pam_tally, que permite bloquear o acceso ao sistema cando se fallan varias veces na autenticación.

Control de Acceso aos Datos

Ademáis de garantir que únicamente os usuarios autorizados teñan acceso ao sistema, é necesario tamén establecer unhas políticas de acceso aos datos e ás aplicacións, de xeito que os distintos usuarios do sistema únicamente podan acceder a información á que están autorizados nos xeitos indicados (lectura, escritura, execución...). Este tipo de control de acceso aos datos pode establecerse de varias maneiras:

Permisos de acceso a arquivos e ACL.

Os permisos de acceso son o medio máis simple para controlar o acceso a datos e aplicacións. O sistema de arquivos FAT únicamente soporta atributos de arquivo, de xeito que un arquivo pode ser de so lectura, de lectura/escritura, oculto ou “non borrable”, estes atributos tamén están presentes nos sistemas UNIX mediante os comandos chattr, e lsattr. Os sistemas de arquivos e sistemas operativos modernos soportan un conxunto de permisos máis flexibles e complexos.

Os sistemas UNIX tradicionalmente manteñen un conxunto de permisos sobre cada arquivo do seguinte xeito:

a) Cada arquivo pertence a un usuario e a un grupo b) É posible habilitar/deshabilitar os permisos de lectura, escritura e execución ao usuario propietario do arquivo, ao grupo propietario do arquivo e ao resto do mundo. c) Estos permisos otórganse en formato Octal, cos tres primeiros bits representando os permisos otorgados ao usuario, os seguintes tres os permisos para os usuarios perntencente ao grupo e os últimos os permisos para o resto de usuarios (rwxrwxrwx) d) O comando para otorgar permisos é chmod, e para cambiar propietarios e grupos chown e chgrp.

Este tipo de permisos proporcionan un control simple, que é suficiente na maioría dos casos. En situacións nas que é necesario un control máis axustado dos permisos de acceso a datos e aplicacións é necesario recurrir ás listas de control de acceso (ACL).

Os sistemas Windows utilizan listas de control de acceso mediante o sistema de permisos de NTFS, e os sistemas UNIX empregan sistemas de control dependentes do sistema de arquivos empregado. O sistema de arquivos máis empregado en Linux, ext2/3/4 e capaz de empregar ACL que siguen o estándar POSIX mediante os comandos getfacl e setfacl.

Aínda que as posibilidades que brindan as ACL de NTFS dos sistemas Windows son maiores que as ofrecidas polas ACL POSIX, estas son suficientes para unha xestión efectiva dos permisos de acceso.

Outra posibilidade de control sobre o acceso en UNIX a ofrecen as operacións de montaxe dos sistemas de arquivos, sendo posible montar un sistema sen posibilidade de facer modificacións e/ou executar aplicacións dende o mesmo.

Modelos de Control de Acceso.

Habitualmente os controis de acceso clasifícanse como discreccionais e non discreccionais. Os tres modelos máis utilizados son o Control de Acceso Discreccional ou DAC (Discrectional Access Control)', o control de acceso obrigatorio ou MAC (Mandatory Access Control) e o control de acceso baseado en roles ou RBAC (Role Based Access Control). Tanto MAC como RBAC son non discreccionais.

Os sistemas operativos poden implementar un único modelo de control de acceso, ou varios ao mesmo tempo.

DAC (Discrectional Access Control).

Se trata de restrinxir o acceso aos obxectos protexidos (como datos e aplicacións) basandose na identidade do usuario e dos grupos aos que pertence. Este tipo de control é discreccional no senso que é posible cambiar a propiedade/grupo dun obxecto a calqueira outro usuario.

MAC (Mandatory Access Control)

Mediante este tipo de control de acceso, o sistema operativo limita o acceso sobre os distintos obxectos (ficheiros, carpetas, sockets, memoria compartida... etc) por parte dos actores (normalmente procesos ou fíos). Os actores e os obxectos teñen un conxunto de atributos de seguridade que son examinados polo sistema para permitir ou denegar o acceso utilizando un conxunto de regras de autorización (chamadas políticas).

As políticas de seguridade están centralizadas e controladas por un administrador de políticas e os usuarios non teñen a posibilidade de ignorar esas políticas (a diferencia do DAC, na que un usuario pode alterar os permisos de acceso e incluso o propietario dun obxecto). Os sistemas que dispoñen de sistemas MAC dan aos administradores das políticas de sistema a posibilidade de implementar políticas de seguridade a nivel de organización de maneira que os usuarios non poderán modificar os permisos nin intencionada nin accidentalmente.

Actualmente, en Linux existen varias implementacións de MAC sendo as máis coñecidas SELinux, AppArmor ou GrSecurity, sendo quizáis a máis empregada SELinux por formar parte do kernel dende a versión 2.6.

Os sistemas Windows incorporan Mandatory Integrity Control dende Windows Vista.

SELinux (Security Enhanced Linux)

A súa orixe é a NSA (United States National Security Agency) e forma parte do kernel Linux dende a versión 2.6.0 (ano 2003).

Un sistema Linux utilizando SELinux, forza políticas de control de acceso obrigatorias (MAC) que fan que os programas de usuario e servidores do sistema dispoñan dos mínimos privilexios necesarios para realizar o seu traballo. Esto reduce ou elimina a posibilidade de que estes programas e demonios causen perxuicios ao resto do sistema si a súa seguridade se ve comprometida.

Este mecanismo de aillamento traballa de xeito independente dos mecanismos de control de acceso tradicionais, non existe o concepto de super-usuario “root” nin sigue os mecanismos DAC comúns nos sistemas UNIX como podan ser os arquivos SUID e GID.

O sistema SELinux utiliza políticas de seguridade. Cando se realiza unha acción que implica a necesidade de algún nivel de seguridade, como abrir un ficheiro, a chamada é interceptada polo driver SELinux no Kernel. Si existe unha política SELinux que permite a operación, ésta continúa, sendo bloqueada noutro caso.

Normalmente nas distribucións Linux se suministran tres tipos de políticas de seguridade: Strict, Targeted e MLS (Multi Level Security). Tanto as políticas Strict como MLS proporcionan seguridade baseada en roles (RBAC).

Comandos para manexar SELinux son chcon, setfiles, restorecon, load_policy, check_policy, check_module, semodule, semanage, setenforce, getenforce, setsebool, getsebool.

MIC (Mandatory Integrity Control)

O propósito do MIC é protexer os obxectos do sistema (ficheiros, dispositivos, aplicacións...) de ataques, malware ou incluso erros do usuario.

A idea e establecer a priori unhas políticas de confianza sobre cada obxecto e controlar a interacción entre eles basándose no seu nivel de confianza ou integridade (IL).

Os niveis de integridade (ILs) son obrigatorias (MAC) e prevalecen sobre os controis discreccionais (DAC) como os permisos NTFS comúns. O principal obxectivo é asegurarse de que os obxectos con un nivel de integridade (ou de confianza) determiñado únicamente podan interactuar con obxectos con nivel igual ou inferior.

Sobre cada obxecto se poden establecer os seguintes niveis IL: Untrusted, Low, Medium, High, System e Installer. Os usuarios anónimos e aplicacións lanzadas por estes reciven un IL de Untrusted, Low utilízase no acceso a Internet (Explorer, por exemplo), Medium é o nivel IL habitual, High corresponde ao administrador, mentras que System é para os procesos de sistema e Installer para as aplicacións con capacidade de instalar e desinstalar elementos no sistema.

Para xestionar os niveis IL, Windows dispón da utilidade ICACLS, por exemplo podemos escribir:

  icacls c:\windows\explorer.exe

para ver o nivel MAC do internet explorer.

Para poder cambiar o nivel de IL un usuario precisa ter o privilexio SeRelabelPrivilege, ademáis de dispoñer dos privilexios de cambio de permisos e de tomar a propiedade do obxecto. Un usuario nunca poderá elevar o privilexio dun obxecto por enriba do seu propio nivel. O comando para cambiar o IL é:

  icacls  /setintegritylevel H|M|L.