O Processo Hidra

O Processo Hidra

O Processo Hidra

De relógios a nuvens, de nuvens a hidras.

Parte 1: Introdução

Objetivo da apresentação

O objetivo desta fala é divulgar os estudos em andamento sobre o processo hidra dando espaço para possíveis andamentos:

  1. Informar os grupos e pessoas que possuem conteúdo hospedado em infraestruturas tecno-sociais comuns sobre o trabalho desenvolvido.

  2. Encorajar grupos técnicos existentes para adotarem procedimentos que favoreçam suas infraestruturas a terem comportamento hidra.

Esta apresentação ainda está em processo de concepção e revisão e por isso não está sendo divulgada.

O que é uma Hidra?

Ser mitológico de múltiplas cabeças regenerativas, destruído por Hércules

Hidra mitológica

Na biologia moderna, animal aquático que possui capacidades regenerativas

Hida biológica

O que é o Processo Hidra?

O Processo Hidra é uma descrição de infraestruturas tecno-sociais que apresentam:

  1. Replicabilidade e escalabilidade.

  2. Capacidade de combinação rizomática.

  3. Regeneração e reagrupamento após eventos catastróficos.

A Hidra moderna pode resistir a Hércules.

Parte 2: Grupos Técnicos Sociais

Mas antes façamos uma retrospectiva…

Sistemas informacionais sociais

Modelo “clássico” de hospedagem: arquitetura “cliente-servidor”:

Arquitetura cliente-servidor

Trabalho técnico informacional em grupos sociais

Características:

Interlúdio: a destruição das redes

Redes centralizadas e descentralizadas Rede distribuída

A cada evento catastrófico, vários grupos são prejudicados com danos à comunicação de difícil cicatrização.

Parte 3: Contra-ataque infraestrutural

Como impedir que uma rede seja destruída mesmo que a remoção de nodos continue?

A divisão em camadas

Observação crucial:

"Ghost in the shell": o disco e o hardware são intercambiáveis,
 provisionamento pode ocorrer em múltiplas etapas. É possível
 manter um estoque de discos pré-instalados e uma reserva financeira
 para a aquisição de máquinas. Isso e backups permite a reconstrução
 de sistemas.

Conclusão imediata:

É necessário "descolar" a camada de serviços (web, streaming, email,
etc) da camada infraestrutural (máquinas, conexões, etc): filtragem
de problemas físicos e jurídicos.

A camada de serviços pode então ser “congelada” na forma de backups, enquanto que a camada infraestrutural não possui “alma” intrínseca, podendo ser reconfigurada quando necessário. Desse modo, várias máquinas podem ser mantidas no ar para aumentar a tolerância a falhas.

Mas como um sítio pode estar simultaneamente em várias máquinas?

DNS: colando domínios em máquinas

DNS Round Robin DNS

O colamento/descolamento entre camadas é possível mediante mudanças de DNS.

Proxies: distribuindo um sítio entre máquinas

App proxy

Aplicação descentralizada ou distribuída

ICE

Tipos de camadas

Informação de um sistema é dividida conforme sua aplicabilidade:

Tais camadas podem ser empacotadas em sistemas e tais sistemas podem ser agregados em outros sistemas (camadas de camadas de camadas): pode ser uma abstração complicada, mas o ganho conceitual em isolamento de instâncias é importante.

Problemas

O discurso é bonito, porém…

  1. Hardware é muito heterogêneo para padronizações serem efetivas.

  2. Os programas são muito diversos para serem estudados, integrados e desenvolvidos.

  3. Configurações são muito complexas e numerosas para serem facilmente separadas e replicadas de forma genérica.

  4. São necessárias muitas senhas de boa complexidade, o que torna sua manutenção complicada.

  5. Backups são difíceis de serem realizados e recuperados.

Ou seja: o discurso da divisão em camadas é interessante, porém na realidade sua implementação enfrenta diversos problemas. Serão eles impeditivos?

O Plano R*

Rede Anéis

O Plano R*: email

Sistema de email escalável

Como é possível?

O segredo está na articulação da força de trabalho com a divisão de camadas. A regra geral é:

  1. Utilização de ferramentas sólidas e amplamente utilizadas por comunidades de software livre e aberto.
  2. Trabalho de desenvolvimento focado na integração de soluções existentes, enviando alterações em código corrente acima sempre que possível.
  3. Desenvolvendo código próprio, porém livre, apenas quando não existente ou insuficiente nas comunidades.

Cada um desdes tipos informacionais é distribuído em unidades que por sua vez são agregados em árvores:

Divisão artefática

A divisão em camadas é artificial (artefática), porém com importantes consequências quando observada à luz da divisão do trabalho de comunidades de software livre e aberto:

  /'\          |
   |          \./
upstream   downstream

Divisão artefática - 2

É possível reconstruir um sistema dados esses elementos. A divisão do trabalho upstream/downstream é favorável à reconstrução, já que as tarefas se tornam mais complexas ao longo da subida da corrente onde usualmente os grandes grupos sociais se reúnem para solucioná-las.

Economia de trabalho

Assim, é possível economizar muita força de trabalho.

  1. Enviar um desenvolvimento corrente acima (upstream) libera o grupo técnico de uma manutenção posterior, pois o trabalho passa a ser de responsabilidade da comunidades mais ampla.

  2. Quanto mais específica for a informação, mais abaixo da corrente (downstream) ela deve ser mantida.

  3. Naquilo que não houver desenvolvimento corrente acima, atuar como fonte (ou seja, agir como upstream) e fornecer para a comunidade.

Tipos de salvaguarda

Para todas as camadas divididas anteriormente é possível criar algum tipo de salvaguarda contra perdas:

Parte 3: contexto brasileiro

Orçamento e infraestrutura

Custos:

Conexão:

Repressão:

Estaremos impossibilitados/as de mantermos servidores no país?

Por outro lado

O caso Satangoss

“O que demorou quatro anos para juntarmos nos foi arrebatado num único dia.”

Como reverter a crise num novo ciclo de mudança e amadurecimento?

Parte 4: O Processo Hidra

Regeneração

Regeneração

Hidra: toda célula pode ter o germe da própria organização. Múltiplas cabeças, células tronco que podem adquirir especialização conforme a necessidade.

Regeneração da hidra

Hidra em processo

Regeneração da Hidra

Hidra em processo - 2

Regeneração da Hidra

Topologias

"[To] keep our sources safe, we have had to spread assets, encrypt everything,
and move telecommunications and people around the world to activate protective
laws in different national jurisdictions," Mr Assange said told the BBC earlier
this year.

Fonte: http://www.bbc.co.uk/news/world-11047811

Possíveis montagens: anel, estrela, rizomática, etc. Frontends e backends.

Parte 5: O Processo Hidra Saravento

  1. Apresenta Padrão Saravá (Sarava Pattern, http://padrao.sarava.org).

  2. Utiliza Resource Sharing Protocol (RSP, http://rsp.sarava.org).

  3. Considerando a adoção de padrões definidos de política de segurança e privacidade.

  4. Organiza-se de acordo com protocolos (http://protocolos.sarava.org).

Na Hidra Saraventa, cada célula é chamada de “nodo”:

Baseada no seguinte pricípio: quais problemas solucionaremos, quais não.

O Padrão Saravá

O Padrão Saravá é uma sistematização de configuração de servidores, gerenciadores de conteúdo e aplicações diversas usados pelo Grupo Saravá. O padrão foi desenvolvido para:

Dinâmica de desenvolvimento:

Documentação wiki -> Configurações pré-gravadas -> Software

Puppet

Puppet: topologia Puppet: diagrama de sistema

Puppet: compartilhando configuração

Código puppet:

file { '/etc/passwd':
    owner => root,
    group => root,
    mode  => 644,
}

Módulos compartilhados:

Git e gitosis

VCS VCS distribuído

O Protocolo de Compartilhamento de Recursos

"The Resource Sharing Protocol (RSP) is a set of metadata intended to help free
software groups

    * Share their available resources and also Find groups that can host
    * services for them given their needs and requirements.

The RSP splits each resource in a layer or set of service layers. You can think
of service layers something very general, ranging from servers, databases,
websites. If you need to, you can even consider stuff such as tables and
bicycles as layers that provide some kind of service to a hosted group. ;)"

-- http://rsp.sarava.org

Orquestração

Para complementar a Configuração de sistemas padronizada e centralizada, procedimentos como

  1. Atualização de pacotes.
  2. Atualização de código de gerenciadores de conteúdo.
  3. Carga de bancos de dados.

podem ser codificados de forma a serem facilmente aplicados a múltiplas camadas de forma simultânea.

Exemplos:

Ikiwiki

O Ikiwiki (http://ikiwiki.info) é um software de wiki que usa um sistema de controle de versão e arquivos de texto, possibilitando:

  1. A existência de múltiplas cópias integrais do wiki (online e offline).
  2. Desenvolvimento distribuído de documentação.

O ikiwiki é muito útil para reunir documentação de sistemas, já que não necessita de nenhum sistema web funcional para abrigá-la.

Virtualização

Virtualização através de Linux-VServer (existem outras implementações possíveis):

Principais vantagens:

Keyringer e monkeysphere

O Keyringer (http://git.sarava.org/?p=keyringer.git;a=summary) é um repositório distribuído de senhas/chaves baseado em GPG e git.

O monkeysphere (http://web.monkeysphere.info) é um programa que permite a verificação de hosts SSH e usuários/as através da Teia de Confiabilidade do OpenPGP. Com ele, o gerenciamento de fingerprints fica mais fácil e evita que páginas como esta centralizem informações que possam se desatualizar.

Tecnologia bootless

Muitos esquemas de criptografia em disco se baseiam na proteção das partições de dadados e da área de troca, porém dependem da existência de ao menos uma partição de inicialização com as imagens do sistema e de um setor de inicialização.

Com acesso físico à máquina, é possível infectar tais dados de inicialização e comprometer a criptografia de todo o sistema.

Para mitigar a situação, o esquema Bootless é um repositório git que contém as imagens de inicialização e a configuração necessárias para o procedimento de partida.

Assim, é possível manter a parte de inicialização fora da máquina, por exemplo em chaveiros USB.

Projeto similar: http://lfde.org

Monitoramento: nagios

Nagios

Monitoramento: munin

Munin

Backups

Estratégia:

  1. Backups locais criptografados com duplicity:
    • Incluindo apenas /etc, /var, /home.
    • Excluindo logs, cache e backups remotos.
  2. Backups remotos apenas do backup local em duplicity, via rdiff ou rsync.
  3. Nodos designados para armazenamento de backups.
  4. Incrementos locais e remotos para aumentar consistência dos dados.
  5. Procedimento integrado de restore e ativação de nodo.

Hardware e custos

Mini ITX

Utilidades: adaptador para discos

Adaptador SATA

Utilidades: chave de entropia

Entropy key Entropy graph

Segurança

Acesso remoto:

Análise:

  1. É importante isolar o máximo a capacidade de acesso para contas de nodos de backup ou que tunelem conexões.

  2. Administradores/as precisam ter boas medidas de segurança:

    • Pasta criptografada.
    • Senhas e chaves seguras.

Protocolos sociais

Resumo: Estratégia de gestão

Parte 6: A Confederação das Hidras Unidas

Hidra Cluster

A Confederação das Hidras Unidas

Parte 7: Nuvens e Hidras

Hidras são nuvens (cloud computing)?

Nuvens: diagramas

Camadas Arquitetura

Tipos de nuvens

Tipos de nuvens

Parte 8: Futuro

Parte 9: Conclusões

Parte 10: Referências

Referências: imagens usadas