Seguridade Activa e Lóxica
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.
Seguridade nos Servicios de Rede
Ademáis da identificación e autorización, e necesario asegurarse de que a información non está accesible por outros métodos non previstos. Para conseguir esto e necesario securizar os distintos servizos que se ofrecen mediante o uso de devasas (firewalls) e de políticas de seguridade así como a actualización periódica das aplicacións para evitar vulnerabilidades.
Tamén é necesario a realización de auditorías de rede mediante escáneres de vulnerabilidades e o uso de sistemas de detección de intrusos (IDS) no equipamento crítico.
Cando se produce un intento de acceso non autorizado, normalmente o proceso sigue unha serie de fases:
Fases dun ataque informático.
Os ataques informáticos normalmente pasan por cinco fases:
- Recoñecemento do Sistema
- O atacante recopila toda a información que pode sobre o sistema obxectivo, normalmente recurrindo a diversas fontes, como Google, a Enxeñería Social ou a busca nas papeleiras (Dumpster diving). A información de máis relevancia poden ser a configuración da rede e servicios ofrecidos, dominios, direccións de correo, posibles nomes de usuarios e información sobre os sistemas de seguridade.
- Exploración do Sistema (Busca de vulnerabilidades)
- Utilizando a información obtida no paso anterior, se procura obter máis información do sistema obxectivo, como IP e estructura da rede, nomes de hosts, usuarios e sistemas de autenticación, servicios activos, versións de aplicacións e sistemas, etc. Esta fase normalmente se leva a cabo mediante diversas ferramentas como sniffers (como wireshark) , escáneres de portos e redes (como nmap ou netdiscover), mapeadores de redes (como netcrunch) e escáneres de vulnerabilidades (nessus, openvas), ou recurrindo a enxeñería social. Todas estas ferramentas deixan grandes rastros nos log do sistema, polo que cunha administración axeitada dos equipos (como o uso de IDS) poden ser detectadas. O escaneo de portos sen autorización é unha actividade hostil que en España non é legal, e que podería dar lugar a denuncias ante a xustiza.
- Explotación das Vulnerabilidades
Nesta fase, o atacante intenta gañar acceso explotando as vulnerabilidades detectadas na fase anterior. Algunhas das vulnerabilidades típicas son o buffer overflow, DoS, DDos, roubo de sesións (session hijacking) ou de filtrado de contrasinal. Moitas veces é posible que o atacante aproveite exploits dispoñibles xa sexa na rede ou incluso comercialmente (mercado negro). A enxeñería social, ademáis de servir para a busca de vulnerabilidades no sistema tamén é unha forma de explotar as debilidades dos usuarios do mesmo, por exemplo, o gusano ILoveYou. Compromiso do Sistema En esta fase, unha vez obtido o acceso mediante a explotación dunha vulnerabilidade o atacante procede a realizar o seu cometido, como o roubo de información. Habitualmente o atacante instala software que lle permite o acceso posterior ao sistema e/ou facer que forme parte dunha botnet para a realización de novos ataques (como DDOS). As ferramentas típicas nesta fase son os rootkits, backdoors e troianos. Eliminación de probas Por último o atacante procederá a eliminar os posibles rastros da intrusión eliminando as entradas correspondentes dos logs do sistema e as alarmas dos sistemas IDS instalados. Tipos de Ataques Os tipos de ataque son moi variados e persiguen obxectivos diversos, algúns dos máis comúns son os seguintes: Actividades de recoñecemento e detección de vulnerabilidades. Aínda que un análise de detección de vulnerabilidades non constitúe un ataque en sí mismo, si que pode causar problemas momentáneos de conectividade nun sitio, ademáis de outros problemas non desexados. Ademáis a detección de vulnerabilidades e recoñecemento de servicios en funcionamento dun sitio sen autorización dos responsables constitúe un acto hostil cando non ilegal. A prevención típica deste ataque é a correcta implantación dun firewall. Roubo de información mediante a intercepción de mensaxes (man in the middle). Mediante ataque man-in-the-middle (MiM) o atacante pode adquirir a capacidade de ler, insertar e modificar á vontade as mensaxes entre dúas partes dunha comunicación sin que ningunha das partes se de conta. Este ataque persigue normalmente interceptar as mensaxes de inicio de canal seguro entre as partes da comunicación co obxecto de facerse coas chaves de cifrado durante o seu intercambio inicial. A solución consiste en realizar este intercambio de chaves dun xeito seguro recurrindo a sistemas biométricos ou a autoridades de certificación. Entre as ferramentas para realizar este tipo de ataques están os sniffers de tráfico, ou os ataques de suplantación de identidade. Ferramentas que axudan a impedir este tipo de ataques son os sistemas de detección de intrusións (IDS) e os firewalls. Suplantación de identidade (spoofing) Os ataques de suplantación de identidade buscan a recepción de mensaxes dirixidos a outro destiño. Buscan a obtención de información para a realización posterior de outros ataques ou a captura de datos sensibles, aínda que tamén se empregan para ataques de denegación de servizo distribuido (DDoS). Algúns tipos son: IP Spoofing: Suplantación de IP. Consiste básicamente na sustitución da dirección IP orixe dun paquete TCP/IP por unha dirección IP distinta. Esto se consigue xeralmente gracias a programas específicos e funciona con todos os protocolos TCP/IP (ICMP,UDP,TCP). As respostas do host destiño irán dirixidas a IP sustituída. Un tipo de ataque que emprega esta técnica é o Smurf, que consiste en enviar pings á dirección broadcast da rede cunha IP fonte falsa. Envenenamento ARP (ARP Spooffing): Esta técnica se pode utilizarse para infiltrarse nunha rede Ethernet conmutada (baseada en switch), que pode permitirlle ao atacante acceder a paquetes de datos da LAN, modifica-lo tráfico, ou incluso detelo, provocando un DoS. Consiste no envío de mensaxes ARP falsos a rede coa finalidade de asociar a MAC do atacante coa dirección IP que se quere suplantar (como pode ser o gateway) co obxecto de espiar o tráfico (sniffing). Tamén é posible provocar un DoS asociando a porta de enlace cunha dirección MAC inexistente. Unha posible defensa contra este ataque é o uso de táboas ARP estáticas, o rexistro das direccións asignadas por DHCP (DCHP snooping) ou a detección mediante ferramentas como arpwatch ou o uso periódico de rarp. Envenenamento DNS (DNS Spoofing ou Pharming): Consiste en sustituir a fonte DNS autorizada dun dominio. Deste xeito o atacante pode suministrar as súas propias IP como correspondentes aos hosts do domini, suplantando así a súa identidade. Unha vez que un DNS recibe os datos falsos, os propagará hacia todos os seus clientes. Esta situación normalmente está provocada por malas configuracións nos servidores DNS ou por erros no propio software. A solución pasa polo uso de servidores DNS seguros, por exemplo, mediante o uso de firmas criptográficas. E-mail Spoofing: É utilizado habitualmente como xeito de forzar aos servidores de correo a aceptar mensaxes normalmente de spam, e realízanse falsificando as cabeceiras do protocolo SMTP e falseando os datos da dirección de envío. Son moi sinxelos de realizar xa que o protocolo emprega cabeceiras sen codificar, e complexos de evitar. Este xeito é empregado para sortear as medidas de seguridade dos filtros de correo mediante blacklists (listas de direccións orixe de spam ás que se lles nega a recepción do seu correo). Unha medida paliativa é a configuración no servidor de correo de filtros que verifiquen de varios xeitos a dirección de orixe do correo (cotexando que a IP de orixe coincida co dominio de orixe, verificando a existencia do dominio de orixe.....). En canto ao receptor do correo, pode verificar a autenticidade da mensaxe recurrindo á firma dixital. Web Spoofing e Phising: Consiste na sustitución dunha páxina web por unha falsa, co obxecto de obter ou manipular información. A continuación a víctima é redirixida ao sitio orixinal de xeito que a intrusión pase desapercibida. As técnicas para conseguir esto son múltiples, dende a enxeñería social mediante correos electrónicos ata o arp spoofing. O phising e máis xeral que o web spoofing, e consiste na suplantación dunha persoa o empresa co obxecto de obter información (como números de conta e chaves bancarias) , xa sexa por medio de enxeñería social (chamadas de teléfono, correos electrónicos, mensaxería instantánea...) ou o disfraz de direccións web mediante javascript. A solución pasa por utilizar páxinas cifradas con certificados de confianza, pola verificación da IP real da páxina visitada e o uso de correo cifrado, e sobre todo, moito sentido común. En resumo, para evitar este tipo de ataques é imprescindible un firewall configurado de xeito que verifique a procedencia correcta dos paquetes de datos, programas de filtraxe de correo e un sistema de autenticación ben configurado (TLS, SSL...). Denegacións de Servizo (DoS) e Denegación de Servizo Distribuído (DDoS). Os ataques de denegación de servicio consisten provocar a caida temporal dun sistema mediante diversos mecanismos. Un dos máis comúns e aproveitarse de vulnerabilidades de deseño para provocar caídas (por exemplo no sistema TC/IP, o envío de paquetes mal formados). En ocasións se recurre a un conxunto de ordenadores comprometidos (botnet) para provocar un ataque masivo (flood) que provoca o DoS por simple saturación de tráfico (DDos). Para provocar estos ataques de flood tamén é posible recurrir a ataques previos de suplantación de identidade como o envenenamento ARP ou IP. Ataques deste tipo son Ping of Death(), Teardrop (), SynFlood (), Smurf (), UdpFlood() ou LandAttack(). Para evitar este tipo de ataques é imprescindible a instalación de un sistema especialmente configurado (Host Bastión) cun firewall e software de xestión da rede que limite o ritmo das conexións. Introducción de Malware no sistema. O malware normalmente ten obxectivos como a obtención de información, xeración de beneficios económicos (dialers, envío de spam...) ou a simple denegación de servicio. Os ataques que permiten a súa penetración no sistema son sobre todo a enxeñería social, e as aplicacións troianizadas. A prevención deste tipo de ataques pasa por unha resposta xuiciosa ás distintas situacións e a instalación únicamente de software provinte de fontes fiables, preferiblemente firmado. Ataques aos contrasinais. A obtención dun usuario e contrasinal dun sistema permite ao atacante o acceso a un sistema e, polo tanto, a realización de outros tipos de ataques como a escalada de privilexios (obter credenciais de un usuario con máis posibildades de acción nun sistema, normalmente aproveitando erros no sistema ou nas aplicacións mediante un exploit.). Os contrasinais son obtidos normalmente a través de ataques de forza Bruta (Brute Force), que consisten na realización de múltiples intentos de acceso probando con combinacións de usuario/contrasinal plausibles, normalmente facendo uso dun diccionario. A exeñería social e un recurso habitual para a elaboración destes diccionarios. Existen estudos que afirman que existen un conxunto de usuarios/contrasinais ampliamente utilizados en determiñados ámbitos ou países. Si por algún tipo de ataque se logra o acceso ao ficheiro que almacena as contrasinais é posible atacalo mediante software de rotura de cifrado ou de forza bruta (john the ripper, ophrack, fcrackzip...). Para evitar este tipo de ataque, a mellor solución é o uso de contrasinais fortes e a instalación de software que limite o número de intentos de acceso nun espazo de tempo, ademáis da correcta protección dos ficheiros sensibles, recurrindo ao cifrado dos datos do disco. Ferramentas Utilizadas. As ferramentas utilizadas para a realización deste tipo de ataques son variadas e fácilmente accesibles en internet. Moitas delas son utilidades de xestión e diagnóstico de rede ampliamente utilizadas (nmap, tcpdump, ettercap, arp), keyloggers, password-crackers (john the ripper, ophrack, fcrackzip), xeradores de paquetes IP (scapy), sniffers e arp-poisoners (dsniff, arpspoof, arpoison, cain&abel,...), etc. Por outra banda as utilidades máis comúns para prever este tipo de ataques son os firewalls (iptables), antivirus e anti-spyware, o cifrado, os detectores de rootkits e sniffers (tripwire), os detectores de cambio na taboa arp (arpwatch)
Cifrado
En caso de que un atacante teña acceso físico ao equipamento informático, por exemplo, en caso roubo ou extravío, a información almacenada estará comprometida xa que os distintos controis de acceso e identificación deixan de ser efectivos. O “atacante” sempre poderá utilizar o dispositivo de almacenamento nun equipamento no que dispoña de credenciais de acceso.
Para evitar este problema, a solución máis común é o cifrado de disco. O cifrado de disco consiste en codificar a información almacenada utilizando unha chave de codificación so coñecida polo propietario, de xeito que para acceder a esa información sexa necesario suministrar previamente a chave. Este proceso de codificación realízase de xeito transparente ao usuario, de modo que este traballa exactamente igual que nun dispositivo sen codificación (coa excepción de suministrar a chave inicialmente).
O cifrado de disco pode realizarse a nivel de dispositivo (cifrado dunha partición ou volume lóxico) ou de carpeta (cifrado da información almacenada nun lugar determiñado do sistema de arquivos) e existen múltiples implementacións dispoñibles. En Linux, a ferramenta máis común é cryptsetup, mentras que en Windows existen múltiples ferramentas de distintos fabricantes, incluíndose no sistema BitLocker e a posibilidade de cifrar o contido das carpetas elexidas.