Privacidade em qualquer lugar com Tails Linux

Navegar com segurança na internet tem sido uma preocupação constante(ao menos para alguns) e as pessoas tem adotado várias medidas para ajudar nessa questão. Então vou mostrar uma que utilizo bastante em terminais de lugares públicos, tais como cafés, faculdade, e etc.

Muitos conhecem como Tails como a raposa bonitinha do Sonic, mas sinto muito não é sobre esse que vou falar(:p). O Tails Linux é um sistema operacional baseado em Linux que tem a premissa de prover ao seus usuários um acesso privado e anônimo na internet. Esse sistema ficou ‘famoso’ quando o ex-funcionário da NSA Edward Snowden revelou que usava para o acesso á Internet.

tails-2-6-all-apps
fonte

 Tails Linux pode ser usado em qualquer terminal a partir de um DVD(pra quem gosta de algo mais vintage), por um pendrive ou por um cartão SD. Na página principal do sistema temos uma breve descrição:

Ele tem como objetivo preservar sua privacidade e seu anonimato, e te auxilia a:

  • usar a Internet de forma anônima e evitar censura;
  • todas as conexões feitas à Internet são passam necessariamente pela rede Tor;
  • não deixar rastros no computador que você estiver utilizando, a menos que você explicitamente queira que isso aconteça;
  • usar ferramentas criptográficas do estado da arte para criptografar seus arquivos, email e mensagens instantâneas.

Além disso, o site conta com uma documentação bem explicativa sobre o processo de gravação do sistema em uma mídia e do uso do mesmo. Particularmente gosto bastante desse sistema pelas seguintes ferramentas:

  • Tor browser como navegador padrão o qual é responsável por todas as conexões.
  • LUKS para encriptar os mais variados dispositivos, pendrive,disco rígido.
  • PWGen um gerador de senhas fortes(extremamente útil xD).

Dentre várias outras ferramentas que podem ser vistas aqui.

Para quem se interessa em questões como proteger a privacidade em rede, recomendo bastante que experimente o sistema, acredito que ajudará um pouco com os pesadelos das grandes empresas roubando seus dados xD.

Deixo o link para quem quiser experimentar:

Let’s Start

Anúncios

Dados Abertos Governamentais

    Estamos passando por um momento bem interessante na história do nosso país e do mundo, que é o estreitamento das relações governos e sociedade civil por meio do e-gov. É com esse foco que vou falar um pouco sobre dados abertos governamentais, algo que pouca gente conhece, e se conhece não dá a devida importância.

    Dados abertos governamentais são a publicação e disseminação das informações do setor público na web, compartilhadas em formato bruto e aberto, compreensíveis logicamente, de modo a permitir sua reutilização em aplicações digitais desenvolvidas pela sociedade.¹ Basicamente estou falando de deixar aberto para a sociedade no geral, em um formato que seja facil de integrar com outros sistemas o máximo de informações públicas possíveis, dando assim a sociedade a chance de utilizar esses dados para os mais variados fins.

    Um exemplo disso, é o Serenata de Amor, um projeto Open Source que cruza dados fornecidos pelo portal da transparência(que ainda são em formato bruto) e após várias análises gera relatórios sobre possíveis irregularidades no quesito contas públicas, além disso temos outros projetos parecidos, que usam como base dados abertos e que são extremamente úteis para a sociedade.

    Vale lembrar, que para abrir dados governamentais existem uma série de recomendações, para que não acabe se perdendo no meio do mar de informações que temos atualmente, uma dessas recomendações que guiam a abertura dos dados governamentais são as  3 leis dos dados abertos governamentais²:

  • Se o dado não pode ser encontrado e indexado na web, ele não existe.
  • Se não estiver aberto e disponível em formato compreensível por máquina, ele não pode ser reaproveitado.
  • Se algum dispositivo legal não permitir sua reaplicação, ele não é útil.

Ainda citando os benefícios da abertura dos dados governamentais, podemos citar três principais benefícios para as políticas públicas:

  • Inclusão:  a medida que são fornecidos dados em formato compreensível e de fácil acesso, torna fácil qualquer usuário utilizar esses dados para as suas necessidades.
  • Transparência: um benefício muito importante, quanto mais são abertos os dados governamentais, mais se torna transparente para a sociedade o trabalho do seu governo, diminuindo assim a distância entre sociedade e governo.
  • Responsabilidade: com o uso dos dados de forma correta é possível ver o governo de diferentes perspectiva no processo de desenvolvimento de políticas para atingir as metas propostas em políticas públicas.

    Então, deu pra notar que são muito os benefícios da abertura e do uso de dados governamentais, mas fica a pergunta: Por que algo tão promissor ainda não está na ‘moda’? Aqui no Brasil temos ótimas iniciativas,  mas ainda desconhecidas do público em geral, cabe a nós sociedade cobrar a abertura desses dados, ou até mesmo colaborar no desenvolvimento desse processo.

Fontes:

¹definição proposta pela World Summit The Information Society(WSIS)

²elaborado por David Eaves (http://eaves.cal/2009/09/30/three-law-of-open-government-data/)

Analisando Logs no Linux

Ás vezes acontecem alguns problemas na sua distribuição linux que parecem surgir de outra dimensão, e que você não sabe nem como pedir ajuda pra resolver(pensa em formatar), mas e SE existisse uma forma de analisar e encontrar onde esse problema começou ou pelo menos saber o tipo/nome desse problema?

O linux tem uma coisa linda chamada armazenamento de logs, onde processos e operações do sistema são  gravadas em arquivos, dai uma forma de verificar tudo o que está acontecendo no seu sistema.

Esses logs são extremamente úteis para audições no sistema e resolução de problemas. Por convenção o diretório /var/log é o responsável por esse armazenamento persistente. Alguns arquivos de log são padrões, os que são usados para o sistema, os logs de programas podem variar de distribuição para distribuição. Vou falar um pouco sobre os padrões e em que eles podem ajudar a melhorar nossa vida.

Esse é um exemplo de diretório de logs( Fedora 23  ):

[user@hostname ~]# cd /var/log; ls
anaconda       dnf.librepo.log           lightdm                           
audit          dnf.librepo.log-20160623  maillog                        
boot.log       dnf.librepo.log-20160626  wpa_supplicant.log                
btmp           dnf.librepo.log-20160707  firewalld                           
btmp-20160707  dnf.librepo.log-20160710  grubby                      
chrony         dnf.log                   hawkey.log                  
cron           dnf.log-20160623          messages              
cron-20160623  wtmp                      tallylog  
cron-20160626  spooler                   sssd            
cron-20160707  pluto                     yum.log  
cron-20160710  dnf.rpm.log               journal                 
cups           lastlog                   secure

Observação: alguns arquivos foram omitidos senão a saída seria um pouco extensa .

Essa pasta possui muitos arquivos específicos dos programas que o usuário utiliza(no caso desse exemplo eu), mas vale a pena falar de alguns principais que são criados na maioria das distros:

  • cron: logs do crond, agendamento de tarefas
  • messages: logs mais gerais relacionadas a operações do sistema em geral
  • secure: logs relacionados a segurança, autenticação e erros
  • maillog: logs relacionados a servidor de email
  • boot.log: logs relacionados a inicialização do sistema
  • kern.log : logs relacionados a operações do kernel

Citei só alguns mais conhecidos, mas que já podem ser úteis para os problemas mais comuns nas distribuições, os outros arquivos de log criados geralmente possuem o mesmo nome do programa ou algo bem intuitivo!

Observação: Os logs são gerados pelo serviço rsyslog, caso se interessem em dar uma olhada, se os arquivos se encontram em /etc/rsyslog.conf e /etc/rsyslog.d/ 

Com isso você já pode ajudar a te ajudarem quando pedir ajuda em algum fórum/grupo, pois já é um ótimo ponto de partida !

A iniciativa Open Source

Estamos vivendo em uma época onde muito se fala de Liberdade no âmbito do desenvolvimento de software/hardware, e quando se fala isso dois termos principais vem a mente: Software Livre e Open Source(Código Aberto em tradução literal). Muita confusão tem sido causada por conta de confundir essas duas definições, mas como o próprio Richard Stallman diz:

“Software livre”. “Código aberto”. Se é o mesmo software (quase), realmente importa que nome você usa? Sim, porque palavras diferentes exprimem ideias diferentes.

Não irei entrar no âmbito das liberdades do Software Livre, visto que essas são imensamente discutidas na internet, o meu ponto é mostrar um pouco do que a licença  Open Source tem a oferecer, cabe a cada um de nós escolher o que melhor se adapta ou simplesmente utilizar o que acha melhor de cada uma.

osi_keyhole_300X300_90ppi_0

Segundo a OSI(Open Source Initiative) Open Source não significa apenas acesso ao código fonte, para ser considerado software open source deve seguir os critérios que serão citados abaixo.

  • Redistribuição Livre

A licença não deve restringir nenhuma parte de vender, ou distribuir o software como um componente de uma distribuição agregada por um software contendo programas de várias fontes diferentes.

  • Código Fonte

O software deve incluir código fonte e permitir sua distribuição em código fonte, bem como em formato compilado. Se por algum motivo o software não for distribuído juntamente com o seu código fonte, esse deve se encontrar com fácil acesso, ou com um custo razoável de reprodução, de preferência. Utilizar código fonte ofuscado não é permitido, assim como formas intermediárias como saída de um pré-processador ou tradutor também não são permitidas.

  • Trabalhos Derivados

A licença deve permitir modificações e trabalhos derivados, além disso deve permitir que estes sejam distribuidos sob os mesmo termos da licença do software original.

  • Integridade do Autor do Código Fonte

A licença pode restringir o código fonte de ser redistribuido de forma modificada se permitir a distribução de patch files com o código fonte, com o propósito de modificar o programa em tempo de compilação. Deve ser explicitamente citado na licença que a distribuição do software construido deve ser feita a partir do código fonte modificado. A licença também pode exigir que trabalhos derivados possuam um nome ou número de versão que seja diferente do original.

  • Não Discriminação contra Pessoas ou Grupos

A licença não pode discriminar nenhuma pessoa ou grupo.

  • Não Discriminação contra Áreas de Trabalho

A licença não pode restringir ninguém de fazer uso do programa em uma área específica de atuação, por exemplo, não pode restringir o uso para negócios ou para pesquisa.

  • Distribuição da Licença

Os direitos atribuídos ao programa devem se aplicar a todos a quem o programa é redistribuido, sem que haja a necessidade de execução de uma licença adicional por essas pessoas.

  • A Licença não pode ser Específica para um Produto

Os direitos associados ao programa não devem depender dele ser parte de uma distribuição de software em particular. Se o mesmo for extraído dessa distribuição e usado ou distribuído dentro dos termos da licença do programa, todas as partes para quem o programa é redistribuido devem ter os mesmos direitos que os que são concedidos em conjunto com a distribuição do software original.

  • A licença não pode Restringir outro Software

A licença não deve colocar restrições em outros software que é distribuído juntamente com o software licenciado, por exemplo, a licença não deve restringir que todos os outros programas distribuídos numa mesma mídia sejam softwares open source.

  • A Licença deve ser Tecnologicamente Neutra

Nenhuma disposição da licença pode ser baseada em qualquer tecnologia individual.

Todos esses critérios foram retirados da página oficial da OSI, e são a base para o funcionamento da licença Open Source.

 

 

Referências:

Projeto GNU
Open Source Initiative

Construindo pacotes RPM

Hoje temos a facilidade de existir repositórios com pacotes/softwares pre-compilados pra praticamente tudo que a gente precisa, mas e SE fosse preciso construir o seu pacote a partir do código fonte?

Achei esse assunto bem interessante e estarei mostrando os princípios básicos para construir seu pacote .rpm a partir do código fonte. Antes disso uma  indicações bem conhecida, mas que é sempre bom lembrar:

NÃO existe a necessidade de realizar as operações de construção de pacotes RPMs como usuário root!

O primeiro passo é preparar o ambiente, começando por checar se o rpmbuild está instalado no sistema. Essa é a ferramenta utilizada para construir os pacotesa partir dos arquivos spec ou de pacotes SRPMs. Checando se o rpmbuild está instalado:

[user@hostname ~]# which rpmbuild

Caso não esteja instalado, para sistemas Red Hat/CentOS:

[user@hostname ~]# sudo yum install rpm-build

Sistemas Fedora:

[user@hostname ~]# sudo dnf install rpm-build

Sistemas OpenSuSe:

[user@hostname ~]# sudo zypper install rpm-build

Observação: essa é a ferramenta mais básica, alguns pacotes SRPMs para serem construidos em sistemas Cent OS necessitam da instalação de mais um pacote extra:

[user@hostname ~]# sudo yum install redhat-rpm-config

Feito isso, é necessário construir a árvore de diretórios de trabalho, algo como :

[user@hostname ~]# mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS}

Pronto, diretório de trabalho feito, agora vem algo bem interessante, é o arquivo .rpmmacros, esse arquivo contém uma indicação de onde o rpmbuild irá pegar os arquivos para construir.

[user@hostname ~]# echo '%_topdir %(echo $HOME)/rpmbuild'> ~/.rpmmacros

Dessa forma o arquivo .rpmmacros estará apontando para o diretório de trabalho. terminada a configuração do ambiente, é hora de construir. A título de exemplo vou utilizar o código fonte de um pacote chamado hello(o famoso hello world!).

Primeiro passo é colocar cada arquivo em seu lugar, o código fonte que pode ser baixado aqui deve ser colocado na pasta SOURCES. Para gerar o RPM é necessário no mínimo um código fonte e um arquivo .spec. Esse arquivo é responsável por unir todos os requisitos necessários e construir o pacote, tem bastantes especificações (tantas que talvez dê um post somente sobre a construção dele!). Pra esse caso usaremos um arquivo .spec bem simples, somente a título de exemplo mesmo.

O arquivo que usaremos deverá ser salvo na pasta SPECS com o nome hello.spec, pode ser baixado aqui.

Feito esses passos com sucesso, é hora de construir efetivamente o pacote (ufa!). Só lembre de verificar se está dentro da pasta  rpmbuild/, após isso executar

[user@hostname rpmbuild]# rpmbuild -bb SPECS/hello.spec

Se tudo correr bem, serão gerados arquivos .rpm dentro da pasta RPMS, prontos para serem instalados no seu sistema!

Esse post foi apenas para fins didáticos(aquela tarde de tédio) por isso algumas configurações não foram detalhadas, mas em breve escreverei algo mais aprofundado, principalmente no que se refere ao arquivo spec. Qualquer dúvida, ou erro, estou a disposição o/
Fontes de Referência:

Como criar um pacote RPM Fedora

Setup RPM build environment

Empacotando software com RPM

 

 

 

 

 

 

 

Palavra do PYthon

Por quê Python? dentre tantas outras linguagens(muitas por sinal), com IDEs que fazem praticamente tudo, por quê essa linguagem?

São perguntas que são feitas vez por outra quando se fala que é programador python(ou está tentando ser), então resolvi listar alguns motivos e ferramentas que fazem python ser a linguagem que mais me adequo ultimamente.

Primeiro, Python é Open Source(emocionado aqui), isso quer dizer que é a comunidade que trabalha em seu desenvolvimento, seus usuários/adeptos podem acompanhar seu desenvolvimento de perto, sugerir melhorias, enviar suas próprias bibliotecas,  e usufruir de todos os benefícios do Open Source(em breve um post sobre essa licença).

Segundo, a facilidade pra aprender, Python veio de uma linguagem chamada ABC, cuja principal característica era a facilidade no aprendizado, então  Python tenta tornar tudo o mais simples possível, evitando linhas e linhas de código para a execução de tarefas simples.

Terceiro, Python possui o Pypi, um repositório de software/pacotes mantido pela comunidade(olha a comunidade aparecendo de novo!), tudo que o usuário precisar vai achar lá, e se não achar ele mesmo pode fazer e mandar pra lá, assim muitos outros irão se beneficiar daquele software.

Quarto ponto, e não menos importante, talvez um dos mais importantes, a comunidade Python(emocionado de novo). Tudo que precisar, vai ter sempre alguém disposto a ajudar, espalhados por fóruns, grupos e onde imaginar. Sempre vai ter alguém que vai usar seu tempo seja pra escrever uma nova biblioteca, seja pra escrever uma documentação, ou reportar um bug, essa é a magia do Python !

Existem muitos outros pontos, mas esses são os que considero importante e que me motivaram a adotar essa linguagem(além de outras características mais técnicas que buscava em uma linguagem). O site oficial é ótimo ponto de partida pra quem se interessar a se aventurar no mundo do PY!

O nosso Linux de cada dia

Como primeiro post desse projeto, trago minha experiência com sistemas linux. Algumas pessoas sempre perguntam sobre o porquê de utilizar esse sistema, e não o famigerado Windows de cada dia. Pra isso alguns pontos merecem destaque:

  1. Segurança

Um dos pontos mais importantes, visto que estamos em uma era onde informação é tudo, então nada melhor que começar na nossa máquina. Importante ressaltar que nenhum sistema é totalmente seguro, o usuário tem um papel fundamental nisso também. Como o linux te dá acesso a funções internas do sistema, é possível encontrar a melhor maneira de configurá-lo.

2. Poder

Um ponto muito importante, no linux você tem a opção de desinstalar o kernel se assim quiser(vai saber né), isso mostra que o usuário é REALMENTE o administrador da sua máquina, tornando assim as modificações no sistema totalmente possíveis, desde uma troca de lugar da barra do painel de ferramentas até uma instalação de um módulo diretamente no kernel. Mas como já foi falado isso tudo depende do usuário, como já dizia o Tio Ben:

Com grandes poderes vem grandes responsabilidades.

3. Comunidade

Um dos pontos considero mais importante quando se fala de linux. O linux é movido pela comunidade, correção de bugs, implementação de novas ferramentas, how tos, e outras muitas formas. Um grupo de pessoas espalhadas pelo mundo inteiro sempre dispostas a ajudar, a gastar o seu tempo com algo que gostam, isso é incrível. Sempre vai ter alguém disposto a ajudar caso queira começar a estudar alguma distribuição linux, fóruns, grupos em redes sociais, eles vão estar lá, em toda parte.

3. Facilidade

Por mais que muitos discordem, linux é um sistema fácil, a maioria dos softwares de manutenção são dispensáveis quando se fala dele. E o melhor, como é totalmente personalizavel, tem linux pra todos os gostos, desde os usuários que só precisam acessar o navegador e o editor de texto, até o desenvolvedor que está fazendo a skynet.

Existem outros muitos pontos que podem ser falados, e aprofundados, aqui somente citei alguns que me ajudaram a escolher esse sistema como meu principal, o Mundo Linux é bem maior que isso!