sábado, 5 de novembro de 2016

Segurança da Informação - Vulnerabilidade

É um termo normalmente utilizado para designar um ponto fraco ou falha existente num determinado sistema ou recurso, que poderá ser explorada, propositada ou inadvertidamente, causando prejuízo ao sistema ou recurso em questão.

Tipos de vulnerabilidades

Vulnerabilidade física: meio onde se localiza a construção da infra-estrutura da TI (prédio, sobrado, galpão), sala cofre ou sala subterrânea.

Vulnerabilidade natural: tufão, furacão, raio, trovão, tsunami, terremoto.

Vulnerabilidade de hardware e software: problema no desenvolvimento dos softwares, incompatibilidade de hardware com software, software mal instalado, software mal configurado.

Vulnerabilidade de comunicação: switches e pontos de rede cabeado, sem fio e portas de máquinas ao dispor de qualquer um que se interessar a entrar na rede são vulnerabilidades de comunicação que devem ser bastante analisadas e asseguradas.

Vulnerabilidade humana: falhas humanas.

Vulnerabilidade é um termo importante na gestão de risco, dentro do contexto da segurança da informação, pois fragilidade de um ativo ou grupo de ativos que pode ser explorada por uma ou mais ameaças e nem sempre é possível controlar as ameaças que a organização pode está exposta, porém e importante reduzir a vulnerabilidade para diminuir o risco.




Análise e Gestão do Risco em Segurança da Informação. Disponível em: <http://www.sinfic.pt/SinficWeb/displayconteudo.do2?numero=24868l>. Acesso em 2 de Novembro de 2016.

Segurança da Informação - Incidentes

Incidente de segurança pode ser definido como qualquer evento não esperado, confirmado ou sob suspeita, podendo atingir pelo menos um dos princípios básicos de segurança da informação, ou seja, confidencialidade, integridade e disponibilidade.

    Exemplos de incidentes:

    Tentativas de ganhar acesso não autorizado a sistemas ou dados;
    Ataques de negação de serviço;
    Uso ou acesso não autorizado a um sistema;
    Modificações em um sistema, sem conhecimento, instruções ou consentimento prévio do dono do sistema;
    Desrespeito à política de segurança ou à política de uso aceitável de uma empresa ou provedor de 
acesso


Algumas sugestões para responder a incidentes com êxito:

Minimizar o número e a gravidade dos incidentes de segurança.
  • Estabelecer claramente e aplicar todas as diretivas e procedimentos.
  • Obter o suporte da gerência a respeito das diretivas de segurança e do tratamento de incidentes.
  • Avaliar regularmente as vulnerabilidades do seu ambiente.
  • Verificar regularmente todos os sistemas de computadores e dispositivos de rede para garantir que todos eles tenham os patches mais recentes instalados.
  • Estabelecer programas de treinamento em segurança para a equipe de TI e os usuários finais.
  • Postar faixas de segurança que lembrem os usuários de suas responsabilidades e restrições, além de um aviso sobre a possibilidade de ações em caso de violação.
  • Desenvolver, implementar e aplicar uma diretiva que exija senhas fortes.
  • Monitorar e analisar regularmente o tráfego da rede e o desempenho do sistema.
  • Verificar regularmente todos os logs e mecanismos de registro, inclusive logs de eventos do sistema operacional, logs de aplicativos específicos e logs do sistema de detecção de intrusões.
  • Verificar seus procedimentos de backup e restauração.
  • Criar uma CSIRT para lidar com incidentes de segurança.
Montar a base da CSIRT (equipe de resposta a incidentes de segurança em computadores).
  • Monitorar os sistemas em busca de violações de segurança.
  • Funcionar como um ponto central de comunicação, tanto para receber relatórios dos incidentes de segurança quanto para disseminar informações vitais a respeito do incidente para as entidades adequadas.
  • Documentar e catalogar os incidentes de segurança.
  • Promover a percepção da segurança dentro da empresa para ajudar a impedir que os incidentes ocorram em sua organização.
  • Oferecer suporte à auditoria do sistema e da rede por meio de processos como, por exemplo, a avaliação da vulnerabilidade e o teste de penetração.
  • Saber mais sobre novas vulnerabilidades e estratégias de ataque empregadas pelos invasores.
  • Pesquisar novos patches de software.
  • Analisar e desenvolver novas tecnologias para minimizar vulnerabilidades e riscos de segurança.
  • Prestar serviços de consultoria em segurança.
  • Refinar e atualizar sempre os sistemas e os procedimentos atuais.
Definir um plano de resposta a incidentes.
  • Fazer uma avaliação inicial.
  • Comunicar o incidente.
  • Conter os danos e minimizar os riscos.
  • Identificar o tipo e a gravidade do comprometimento.
  • Proteger as evidências.
  • Notificar órgãos externos, se apropriado.
  • Recuperar sistemas.
  • Compilar e organizar a documentação do incidente.
  • Avaliar os danos e os custos do incidente.
  • Examinar as políticas de resposta e atualização. 
Conter os danos e minimizar os riscos.
  • Proteger a vida humana e a segurança das pessoas. 
  • Proteger dados secretos e confidenciais. 
  • Proteger outros dados, inclusive proprietários, científicos e administrativos. 
  • Proteger o hardware e o software contra ataques.
  • Minimizar a interrupção dos recursos computacionais (inclusive processos). 


O que é Segurança da informação. Disponível em: <http://www.tic.ufrj.br/index.php/o-que-sao-incidentes>. Acesso em 30 de Outubro de 2016.

Respondendo a incidentes de segurança de TI. Disponível em: <https://technet.microsoft.com/pt-br/Library/cc700825.aspx>. Acesso em 2 de Novembro de 2016.

quarta-feira, 2 de novembro de 2016

Metodologia Ágil - Scrum

Scrum é um método de desenvolvimento ágil, foi desenvolvido por Jeff Sutherland na década de 90. No Scrum os projetos são divididos em ciclos chamados sprints. Seus princípios são consistentes ao manifesto ágil e são usados para orientar o processo de desenvolvimento. A construção  do software é dividido em quatro fases: Requisitos, Analise, Projeto, Evolução e Entrega.

O trabalho realizado no Scrum é altamente moldável e as atividades dentro de um sprint se modificam em tempo real, tentando se adaptar ao problema. Ele adota padrões que auxiliam esse ambiente dinâmico de mudança, no qual, é comum prazos curtos e requisitos mutáveis.

  • Backlog
Uma lista com prioridades dos requisitos do projeto. A lista pode ser modificada a qualquer momento. É gerenciada pelo gerente de produto, que atualiza os itens de acordo com sua importância.
  • Sprints
Unidade de trabalho selecionada para cumprir as tarefas registradas no backlog, são ajustadas em um prazo tipo de trinta dias.
  • Alterações
As alterações fazem parte do modelo Scrum, a filosofia de mudança estar atrelada as atividades do mesmo. Entretanto, as alterações são freadas quando estar sendo realizado um trabalho de urgência.
  • Reuniões
São realizadas diariamente, e costumam ter uma duração máxima de quinze minutos. Na reunião é realizada perguntas a cerca do projeto, sobre as dificuldades e o progresso do mesmo. A reunião é conduzida pelo líder da equipe.

Além dos princípios e padrões mencionados, o Scrum divide bem suas equipes de desenvolvimento. Cada uma delas é dividida em três papeis:
  1. Product Owner = Será o responsável por decidir o que será construído e a ordem na qual essas tarefas será feita.
  2. ScrumMaster = É o responsável por disseminar os valores do Scrum na equipe, aplicando a filosofia do método na equipe.
  3. Time Scrum = É o time de desenvolvimento responsável pela construção do sistema. Além dos tradicionais programadores, a equipe conta com profissionais de diversas áreas, como designers, testadores, administradores de banco, etc.
Processo Scrum
Fig.1: Fluxo de desenvolvimento Scrum.

Referências:

Scrum: A Metodologia Ágil Explicada de forma Definitiva Disponível em:<http://www.mindmaster.com.br/scrum/> Acessado em 02 de Novembro de 2016.

PRESSMAN, R.S. Engenharia de Software. 7ª Edição. Rio de Janeiro: McGraw-Hill, 2011

Segurança da Informação

A segurança da informação se refere a proteção de determinados dados, com a intenção de preservar seus respectivos valores para uma organização ou um indivíduo.
Devido este aspecto, existe três princípios básicos em segurança da informação:

Confidencialidade

Acesso a informação a quem tem direito, ou seja, apenas as entidades autorizadas pelo proprietário da informação.

Integridade

Manter a informação armazenada com todas as suas características originais estabelecidas pelo proprietário da informação,  além da atenção com o seu ciclo de vida (criação, manutenção e descarte).


Disponibilidade

A informação deve está sempre disponível para uso quando usuários autorizados necessitarem.







O que é Segurança da informação. Disponível em: <http://segurancadainformacao.modulo.com.br/seguranca-da-informacao> Acesso em 30 de Outubro de 2016.

Gestão de Risco

A gestão de risco auxilia as organizações a alcançar seu potencial, através do controle das incertezas e ameaças. A eficácia da gestão dos riscos ajuda a maximizar as oportunidades e minimizar as ameaças para atingir o objetivo da organização.
A palavra risco se relaciona com a possibilidade de algo não ocorrer como esperado, mas na atualidade envolve a quantificação e a qualificação da incerteza, tanto para perdas quanto para ganhos.

Existem muitas metodologias de implantação para se trabalhar com a gestão de risco, a metodologia abordada nesta postagem é sugerida pelo modelo GRCorp, desenvolvido pelo IBGC (Instituto Brasileiro de Governança Corporativa). Desta forma, as metodologias são:

Identificação e classificação do risco

Definição do conjunto de eventos, externos ou internos, que podem impactar os objetivos estratégicos da organização.

Avaliação

Definir qual o tratamento que será dado a determinado risco, o primeiro passo consiste em determinar o seu efeito potencial, ou seja, o grau de exposição da organização àquele risco.

Mensuração

Cálculo do impacto financeiro consolidado, envolve detalhar as receitas e as despesas operacionais, os custos, investimentos e o fluxo de caixa projetado.

Tratamento

Alinhar a estrutura de controles internos aos objetivos estratégicos e ao nível de exposição desejado pela organização, considerando seus efeitos, grau de aversão e resposta, complementada por uma análise de custo-benefício. 

Monitoramento

O objetivo é assegurar a presença e o funcionamento de todos os seus componentes ao longo do tempo.

Informação e Comunicação

Possui finalidade de permitir avaliações mais rápidas e objetivas a respeito dos riscos a que está exposta a organização.


Guia de Orientação para Gerenciamento de Riscos Corporativos. Disponível em: <http://www.ibgc.org.br/userfiles/3.pdf> Acesso em 29 de Outubro de 2016. 

segunda-feira, 31 de outubro de 2016

Métodos Ageis

A metodologia ágil é combinação de valores e princípios. Ela se desenvolveu em um esforço de sanar fraquezas dos métodos convencionais  de engenharia de software. A insatisfação com abordagens pesadas em projetos pequenos e médios motivou um numero de programadores a iniciar a metodologia.

No mercado moderno atual é quase impossível prever como um sistema computacional irá evoluir. As condições mudam rapidamente, as necessidades de usuários se alteram e novas ameaças competitivas emergem sem aviso. Dessa forma, os métodos ágeis contam com uma abordagem iterativa para especificação, desenvolvimento e entrega de software. A metologia procura uma aproximação maior com o cliente, onde é feito pequenas entregas do sistema para que o cliente possa o quanto antes ter posse do seu sistema. Uma estrategia atrelada a um feedback que propicia um alinhamento maior entre o que o cliente pediu e o que foi entregue.

As metodologias ágeis possuem princípios que seguem a maioria de suas especificações, Sommerville (2007) descreve alguns.

  • Envolvimento do Cliente
Os clientes devem estar envolvidos com o desenvolvimento do sistema. Provendo informações para construção dos requisitos e dando feedback sobre o que já foi criado.
  • Entrega Incremental
O software é desenvolvido em incrementos e o cliente especifica os requisitos a serem incluídos.
  • Pessoas, não processos
As habilidades da equipe devem ser exploradas.
  • Aceite Mudanças
Aceitar as mudanças de requisitos que irão ocorrer.
  • Simplicidade
Trabalhe ativamente para eliminar a complexidade do sistema.


Referências:

PRESSMAN, R.S. Engenharia de Software. 7ª Edição. Rio de Janeiro: McGraw-Hill, 2011

SOMMERVILLE, Ian. Engenharia de Software. 8ª Edição. São Paulo: Addison-Wesley, 2007.

Métodos Ágeis - XP

A Extreme Programming, ou simplesmente XP, é uma metodologia de software ágil, foi criada nos Estados Unidos por Kent Beck em 1997. Sua abordagem abusa do desenvolvimento iterativo e conta com uma aproximação do cliente com o projeto. Nele todos os requisitos são descritos em histórias, que são implementados como tarefas. O desenvolvimento das tarefas é realizadas em pares e antes da codificação das mesmas é criado testes.

O XP é formado fundamentalmente por princípios e valores, são características que moldam o desenvolvimento de software sobre o escopo dessa metodologia. São ao todo cinco valores e quatorze princípios. Vejamos cada um a seguir.

Valores do XP


  • Comunicação
O XP prima pela comunicação ativa entre os clientes e a equipe de desenvolvimento, com o intuito de reduzir requisitos equivocados e assim construir um software mais próximo do que o cliente espera. Além disso o XP prioriza uma comunicação presencial com o objetivo de garantir que todas as partes envolvidas em um projeto tenham a chance de se compreender da melhor maneira possível.
  • Coragem
No XP acredita-se que o erro vai acontecer, o diferencial seria como tratar a ocorrência do mesmo. Assim, impedir mudanças e frear a criatividade do cliente não são consideradas no XP. Nessa metodologia a equipe deve se adaptar as modificações e está confiantes nos mecanismos do XP.
  • Feedback
Os desenvolvedores procuram entregar as tarefas o mais rápido possível, para que assim o cliente possa usufruir das funcionalidades e prover informações a respeito delas.
  • Respeito
Saber ouvir, saber compreender e respeitar o ponto de vista do outro é essencial para que um projeto de software seja bem sucedido.
  • Simplicidade
Nesse aspecto a equipe XP se concentra, primeiramente, em desenvolver as tarefas essências para o funcionamento do sistema, evitando desenvolver funcionalidades que talvez nunca cheguem a ser utilizadas.

Princípios
  1. Auto-semelhança: Soluções que funcionem em diferentes contextos
  2. Benefício Mútuo: Estrutura que proporciona benefícios para as diferentes partes do projeto
  3. Diversidade: Equipes com profissionais de varias áreas, arquiteto, designer, programadores etc. 
  4. Economia: Priorizar módulos que gerem receita mais rápido e controle de gastos no desenvolvimento
  5. Falha: Testar soluções sem medo de falhas.
  6. Fluidez: O objetivo é fazer com que o sistema seja desenvolvido de forma evolutiva e vá crescendo em funcionalidades a cada nova iteração.
  7. Humanismo: Compreender a natureza humana para que possamos potencializar o que ela tem de melhor e suprimir o que tem de pior
  8. Melhoria: Aprimoramento continuo do software.
  9. Oportunidade: Enxergar problemas como oportunidades.
  10. Passos de Bebê: Realizar pequenas modificações por vez.
  11. Qualidade: Desenvolver visando a melhor qualidade possível
  12. Redundância: Os problemas críticos devem ser resolvidos com varias soluções
  13. Reflexão: A equipe analisa seu processo durante a construção do software, discutindo falhas e acertos.
  14. Responsabilidade Aceita: A responsabilidade não deve ser atribuída, ela deve ser aceita.

Referencia:

EXTREME PROGRAMMING Disponível em:<http://www.desenvolvimentoagil.com.br/xp/> Acessado em 30 de Outubro de 2016.

SOMMERVILLE, Ian. Engenharia de Software. 8ª Edição. São Paulo: Addison-Wesley, 2007.