domingo, 3 de abril de 2016

Ransomware Petya criptografa seu disco rígido e exige resgate

Então, você recebeu um e-mail com um link para um arquivo no Dropbox. O arquivo parece ter um conteúdo apetitoso ou interessante, uma saborosa minhoca balançando no anzol para fazer você salivar. Não resistindo à tentação, você baixa o arquivo, clica nele e seu computador é reiniciado. Durante o processo de reinicialização, o sistema roda o "check disk -- "CHKDSK" e, assim que termina a verificação, BUM!, aparece uma caveira no seu monitor avisando que seu disco rígido foi inteiramente criptografado e, caso você queira recuperar seus arquivos, deverá pagar quase 400 dólares pelo "resgate".



Seja bem-vindo ao tenebroso mundo dos "Ransomware", as pragas virtuais que criptografam seus dados exigindo pagamento de resgate (em inglês, "ransom") para que você possa acessar os próprios arquivos. A mais recente ameaça é o Petya, cuja descrição resumida você pode assistir no vídeo (em inglês). Para os leitores monoglotas, explico que o Petya se diferencia dos demais ransomwares pelo fato de que ele criptografa o disco inteiro, não deixando ao usuário nenhuma possibilidade de uso do sistema. Esse é um inconveniente para os próprios bandidos que criaram esse malware, pois a vítima não poderá usar o próprio computador infectado para pagar o "resgate".

A boa notícia é que, caso você seja rápido ao desligar seu computador ainda no começo do falso CHKDSK, bastará dar boot a partir de um pendrive para que seja possível recuperar os seus dados.

De todo modo, essa é mais uma ameaça que você evitar usando o mais potente recurso de segurança já inventado: o seu cérebro! Pense antes clicar!

terça-feira, 29 de março de 2016

O Linux é mais seguro do que o Windows?

Acho graça quando vejo a reação dos usuários Windows às notícias de descobertas de vulnerabilidades no Linux. Só faltam soltar foguete: “Estão vendo? O Linux não é mais seguro do que o Windows, não! O Linux só não tem mais vírus porque quase ninguém usa!”, e assim por diante, você conhece a toada.

Essa reação só é compreensível porque, quando o usuário Linux diz “mais seguro”, o usuário Windows ouve “invulnerável”. Ora, em nenhum idioma do mundo a palavra “seguro” é sinônimo de “inexpugnável”, “invencível” ou “impenetrável”, o que já nos faz desconfiar de algum bug (Microsoft KB 896588546710235) no sistema auditivo do interlocutor!

Ora, é evidente que o Linux, tal como o Windows, não é um sistema a prova de usuários descuidados. Sim, é verdade que há muitas vulnerabilidades, tanto no próprio Linux quanto nos softwares que rodam sobre ele. O Linux também não protegerá seu computador adequadamente se você for preguiçoso e não atualizá-lo nunca − conheço administradores de servidores web que estão há mais de 5 anos sem sequer atualizar a versão do Wordpress!

Segurança é um assunto complexo e multifacetado. Para ter uma ideia geral sobre os diversos aspectos do problema e, de quebra, aprender como aumentar a segurança de um sistema Debian/Linux, confira este excelente guia oficial de segurança da distribuição Debian.

Do minha parte, na condição de simples usuário, experiente mas não profissional, quando digo que “o Linux é mais seguro do que o Windows” estou dizendo apenas o seguinte:
  1. O Linux permite um controle muito mais completo sobre as opções de segurança do sistema;
  2. No Linux, se você quiser, sempre saberá o que cada programa está fazendo e por quê;
  3. O Linux oferece uma imensa variedade de configurações e aplicativos de segurança para os mais diferentes cenários e necessidades;
  4. O Linux permite que o usuário e o administrador tome “decisões bem-informadas”, após adequada reflexão sobre os riscos que deseja evitar e os benefícios que deseja obter.
É muito raro que, no Linux, até mesmo um usuário pouco experiente tome uma decisão errada impulsivamente, como é de praxe no Windows, pois o sistema impõe freios que obrigam à reflexão.

É claro que, quando as pessoas não querem refletir, fazem besteira mesmo, como provam os inúmeros problemas que ocorrem entre os usuários de dispositivos Android. Como você sabe, o Android é baseado em Linux, mas oferece ao usuário uma experiência semelhante ao do Windows, no sentido de que estimula o comportamento impulsivo. O Android, tal como o Windows, não é exatamente um sistema operacional, mas uma espécie de “shopping center” digital que oferece ilimitadas possibilidades de gastar dinheiro baixando aplicativos “bonitinhos”, “divertidos”, “cool” ou seja qual for a gíria da moda. É evidente que esse usuário impulsivo e ansioso por fazer parte da festa não terá a paciência necessária para refletir sobre as consequências do que está fazendo, arriscando-se a cair em todo tipo de armadilhas e trapaças.

Assim, o Linux é “mais seguro” do que o Windows apenas para um usuário interessado, atento, estudioso e desconfiado. Se o usuário de um dispositivo Linux tiver um perfil idêntico ao de um usuário médio do Windows, isto é, aquele pessoal que “sai clicando” em tudo sem pensar no que está fazendo, o Linux resultará tão “inseguro” quanto o próprio Windows − ou, até mais, se você considerar que existem mil maneiras de obter acesso “root” aos dispositivos Android, pois o usuário “root” é aquele que pode fazer literalmente qualquer coisa num computador, inclusive destruir todo o sistema!

Perfil do Apparmor para o leitor de feeds Liferea

Embora eu goste imensamente do leitor de feeds padrão do KDE, o Akregator, e até já tenha publicado aqui um perfil do apparmor para ele, o fato de que ele compartilha as configurações de rede do sistema com o Konqueror cria um problema incontornável quando se quer acessar os feeds através de um proxy como o Tor, Privoxy ou Jondo sem provocar mudanças em outras áreas do sistema, como o download de atualizações ou, até mesmo, a navegação não-privativa através dos navegadores Chromium ou Google Chrome. Assim, decidi adotar o leitor de feeds do GNOME, o Liferea, pois ele permite uma configuração de rede/proxy independente do restante do sistema e funciona (quase) tão bem quanto o Akregator no ambiente KDE.

O Liferea estava funcionando muito bem na sandbox Firejail, mas decidi "apertar" um pouco mais a configuração de segurança criando um perfil do apparmor para o Liferea que compartilho abaixo, sempre lembrando que não garanto que vá funcionar no seu sistema!

Observação: todo o conteúdo deste ponto em diante foi atualizado no dia 11/08/2018. Incluí, no perfil, alguns números com observações em destaque sob fundo amarelo, por exemplo "#2". Lembre-se de deletar essas observações antes de salvar o arquivo do apparmor em que testará este código.

ADVERTÊNCIA: o perfil abaixo está funcionando perfeitamente em meu computador com Debian 9.5 / Kernel: Linux 4.9.0-7-amd64 (x86_64) e Liferea 1.12-rc3 e ambiente desktop LXDE 9, MAS NÃO OFERECO NENHUMA GARANTIA DE QUE VÁ FUNCIONAR EM SEU COMPUTADOR. Caso deseje testar o perfil abaixo, faça-o por sua conta e risco, de preferência, tomando todas as precauções necessárias, inclusive backups de todos os arquivos relevantes.

nome do arquivo: usr.bin.liferea

# Last Modified: Sat Jul 14 17:42:29 2018
#include <tunables/global>

/usr/bin/liferea {
  #include <abstractions/audio>
  #include <abstractions/base>
  #include <abstractions/homedirs> # 1
  #include <abstractions/totem>

  /dev/shm/* rw,
  /etc/fonts/** r,
  /etc/gai.conf r,
  /etc/host.conf r,
  /etc/hosts r,
  /etc/nsswitch.conf r,
  /etc/resolv.conf r,
  /etc/services r,
  /etc/ssl/certs/ca-certificates.crt r,
  /etc/udev/udev.conf r,
  /home/*/.Xauthority r,
  /home/*/.cache/gstreamer-1.0/* rw,
  /home/*/.cache/gtk-3.0/ rw,
  /home/*/.cache/gtk-3.0/** r,
  /home/*/.cache/gtk-3.0/compose/ rw,
  /home/*/.cache/liferea/** rw,
  /home/*/.cache/webkitgtk/ w,
  /home/*/.cache/webkitgtk/* rw,
  /home/*/.config/dconf/user r,
  /home/*/.config/liferea/* rw,
  /home/*/.local/share/gsettings-data-convert r,
  /home/*/.local/share/icons/ r,
  /home/*/.local/share/icons/**/ r,
  /home/*/.local/share/liferea/ r,
  /home/*/.local/share/liferea/* rwk,
  /home/*/.local/share/mime/aliases r,
  /home/*/.local/share/mime/generic-icons r,
  /home/*/.local/share/mime/globs2 r,
  /home/*/.local/share/mime/icons r,
  /home/*/.local/share/mime/magic r,
  /home/*/.local/share/mime/mime.cache r,
  /home/*/.local/share/mime/subclasses r,
  /home/*/.local/share/webkitgtk/localstorage/ r,
  /home/*/.local/share/webkitgtk/localstorage/* rwk,
  /home/alexei/.local/share/liferea/* rw,
  /lib/x86_64-linux-gnu/ld-*.so mr,
  /opt/google/chrome/google-chrome Px,
  /proc/*/fd/ r,
  /proc/*/mounts r,
  /proc/*/status r,
  /run/connman/resolv.conf r,
  /run/user/1000/dconf/user rw,
  /sys/devices/** r,
  /usr/bin/gsettings-data-convert Px,
  /usr/bin/liferea mr,
  /usr/bin/uget-gtk Px, # 2
  /usr/lib/firefox-esr/firefox-esr Px, # 3
  /usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-plugin-scanner rix,
  /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitNetworkProcess Px,
  /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitPluginProcess Px,
  /usr/lib/x86_64-linux-gnu/webkit2gtk-4.0/WebKitWebProcess Px,
  /usr/share/fontconfig/** r,
  /usr/share/fonts/** r,
  /usr/share/icons/** r,
  /usr/share/javascript/mathjax/fonts/** r,
  /usr/share/liferea/** r,
  /usr/share/poppler/cMap/*/ r,
  /var/cache/fontconfig/* r,
  /var/lib/menu-xdg/applications/mimeinfo.cache r,
  /var/tmp/* rw,
  /{usr/,}lib{,32,64}/** mr,

}

Observações:

#1 Arquivo de abstrações personalizado com autorizações automáticas para certos subdiretórios de /home/ que não oferecem risco de segurança. Sugiro que você experimente criar suas próprias abstrações, usando uma das opções default do apparmor como modelo.
#2 Só é possível fazer downloads no navegador do Liferea usando um gerenciador de downloads. Uso o uget, mas você deve sentir-se livre para usar ou testar outras opções, não esquecendo de autorizá-las neste perfil.
#3 O Firefox-esr é meu navegador default mas, caso vocẽ defina outra opção nas configurações do Liferea, deve lembrar-se de autorizá-lo no perfil do Apparmor.

sexta-feira, 11 de março de 2016

Perfil do Apparmor para o leitor de feeds Akregator (KDE)

Caso você queira saber o que é o Apparmor, o que é um perfil do Apparmor e o que, afinal, significa o "código maluco" das linhas a seguir, leia o artigo "Perfis do Apparmor para diversos aplicativos". Caso você saiba do que se trata, repito aqui a advertência daquele post: o perfil abaixo está funcionando perfeitamente em meu computador com Debian 8.3 e Akregator 4.14.2 MAS NÃO OFERECO NENHUMA GARANTIA DE QUE VÁ FUNCIONAR EM SEU COMPUTADOR. Caso deseje testar o perfil abaixo, faça-o por sua conta e risco, de preferência, tomando todas as precauções necessárias, inclusive backups de todos os arquivos relevantes.

Arquivo /etc/apparmor.d/usr.bin.akregator


# Last Modified: Fri Mar 11 07:33:52 2016
#include <tunables/global>

/usr/bin/akregator {
  #include <abstractions/base>
  #include <abstractions/totem>
  #include <abstractions/ubuntu-browsers.d/plugins-common>

  /home/*/.Xauthority r,
  /home/*/.config/Trolltech.conf rk,
  /home/*/.config/fontconfig/fonts.conf r,
  /home/*/.fontconfig/* r,
  /home/*/.fonts/** r,
  /home/*/.java/deployment/config.cache r,
  /home/*/.kde/share/apps/akregator/** rw,
  /home/*/.kde/share/apps/khtml/* r,
  /home/*/.kde/share/config/akregatorrc r,
  /home/*/.kde/share/config/gwenviewrc r,
  /home/*/.kde/share/config/kcmnspluginrc r,
  /home/*/.kde/share/config/kcookiejarrc r,
  /home/*/.kde/share/config/kdebugrc r,
  /home/*/.kde/share/config/kdeglobals rk,
  /home/*/.kde/share/config/khtmlrc r,
  /home/*/.kde/share/config/kio_httprc r,
  /home/*/.kde/share/config/kioslaverc r,
  /home/*/.kde/share/config/konquerorrc r,
  /home/*/.kde/share/config/ktimezonedrc r,
  /home/*/.kde/share/config/kwalletrc r,
  /home/*/.kde/share/config/oxygenrc r,
  /home/*/.local/share/mime/aliases r,
  /home/*/.local/share/mime/globs2 r,
  /home/*/.local/share/mime/magic r,
  /home/*/.local/share/mime/version r,
  /proc/*/cmdline r,
  /tmp/** rwlk,
  /usr/bin/akregator mr,
  /var/cache/nscd/hosts r,
  /var/tmp/** rwlk,

}

quarta-feira, 24 de fevereiro de 2016

Carta aberta ao serviço CloudFlare

Se você costuma usar o Tor Browser Bundle para navegação web anônima e segura, certamente já se deparou mais de uma vez com uma tela do serviço CloudFlare exigindo a solução de um desafio CAPTCHA para acessar a página solicitada - veja um exemplo na figura a seguir.
Tela de alerta do CloudFlare obstruindo a navegação dos usuários do Tor Browser Bundle.



Como a popularização do serviço gratuito do CloudFlare, a presença da tela de alerta do CloudFlare obstruindo a navegação no Tor Browser Bundle se torna cada vez mais comum já que, ao que parece, o comportamento default do CloudFlare tem sido bloquear indiscriminadamente os usuários da rede Tor. Esse fato me motivou a enviar a seguinte mensagem ao suporte do CloudFlare:

"Eu uso o Tor Browser Bundle para navegação privada e, durante a maior parte do tempo, tenho tropeçado em uma página do CloudFlare que me exige a solução de um desafio CAPTCHA. Para começar, é um exagero impor um desafio captcha a um usuário legítimo da rede Tor que não esteja engajado em comportamento abusivo, apenas visitando páginas web. Mas eu não me importava muito com isso até que vocês decidiram adotar esses desafios que me pedem para "Selecionar imagens com sinais de trânsito", já que, com muita frequência, são impossíveis de resolver (confira um exemplo na imagem abaixo), já que, mesmo quando não há bugs de exibição, eles usam fragmentos de imagens com baixíssima resolução, que não me permitem distinguir, por exemplo, um "lago" de um "rio".

Um exemplo de desafio CAPTCHA impossível de resolver.
Mas até mesmo isso não é o suficiente, de modo que vocês decidiram irritar definitivamente todos os usuários Tor ao exigir "múltiplas respostas corretas"!

Isso é uma estupidez e um insulto. Eu não estou engajado em comportamento abusivo, eu apenas quero navegar na web com privacidade e segurança.
Assim, peço, encarecidamente:

(1) Não adotem o bloqueio ao Tor como condição default nos sites protegidos pelo Cloudflare.
(2) Usem o CAPTCHA tradicional em vez dessas imagens ridículas e inusáveis.
(3) Não exijam desafios CAPTCHA de solução impossível de pessoas que desligam o javascript no navegador. Não há NADA de abusivo ou suspeito no ato de desativar o javascript, de modo que os usuários não deveriam ser punidos por adotar esse comportamento de navegação.

As políticas que você adotam atualmente não me afetam somente como usuário, mas também como webmaster e editor. SIM, eu quero que o CloudFlare proteja meu site de comportamentos abusivos, mas NÃO, eu NÃO QUERO que o CloudFlare espante os meus leitores e visitantes que decidiram usar Tor e NoScript enquanto visitam meus sites.

Eu confio que CloudFlare recuperará o bom-senso e reverterá esse comportamento indesejado".

domingo, 21 de fevereiro de 2016

Perfis do Apparmor para diversos aplicativos

Entre os mil motivos para apreciar o trabalho com o Linux, talvez um dos mais importantes, para mim, seja a ampla disponibilidade de ferramentas confiáveis para a gestão da segurança do sistema. Esse leque de opções capacita o administrador, após um razoável período de avaliação e testes, a adotar um pacote de soluções de segurança sob medida para suas necessidades, mantendo o computador praticamente imune até mesmo a ataques com alto nível de engenhosidade.

O Apparmor é uma dessas ferramentas, pela qual fiquei encantado. Basicamente, o que o Apparmor faz é restringir o acesso dos aplicativos a áreas e funções críticas de seu computador. Essa restrição é feita no nível do kernel, o nível mais básico do sistema operacional, de modo que o aplicativo fica imunizado contra ataques. Mesmo que um hipotético vírus ou técnica maliciosa consiga alterar o código do programa para obrigá-lo desempenhar uma função estranha à sua finalidade original, o sistema operacional turbinado pelo Apparmor impedirá o aplicativo infectado de fazer qualquer coisa não prevista em suas funções normais. O Apparmor funciona, portanto, como uma espécie de "lista branca", que proíbe tudo o que não for explicitamente autorizado.

Como quase tudo no Linux, as "listas brancas" dos aplicativos são salvas sob a forma de pequenos arquivos de texto. Esses arquivos, chamados "perfis", são salvos, em meu sistema Debian Jessie, na pasta /etc/apparmor.d/.

A redação de um guia completo de instalação, configuração, criação e manutenção de perfis do Apparmor ultrapassaria muito o tempo que tenho disponível para a redação deste blog, bem como minha competência técnica, já que não sou profissional de TI e o assunto é bastante complexo. Entretanto, decidi publicar aqui alguns dos perfis do Apparmor que eu mesmo criei, na esperança de que possam ser úteis a quem estiver estudando o assunto.

Se você for profissional de TI e tiver críticas ou correções a fazer, peço que fique à vontade para registrá-las na área de comentários. Esclareço também que, embora todos os softwares confinados por esses perfis em "enforce mode", nas versões especificadas, estejam funcionando perfeitamente em minha máquina, um sistema Debian Linux Jessie 8.3, versão do kernel 3.16.0-4-amd64, não ofereço nenhuma garantia de que vão funcionar em sua máquina, nem que serão eficientes formas de segurança contra este ou aquele tipo de ataque. Experimente-os por sua conta e risco!

Perfil Apparmor para o navegador web Debian Iceweasel 38.6.1

nome do arquivo: usr.lib.iceweasel.iceweasel

# Last Modified: Mon Feb 15 11:18:40 2016
#include <tunables/global>
# vim:syntax=apparmor
# ------------------------------------------------------------------
#
#    Copyright (C) 2009-2011 Canonical Ltd.
#
#    This program is free software; you can redistribute it and/or
#    modify it under the terms of version 2 of the GNU General Public
#    License published by the Free Software Foundation.
#
# ------------------------------------------------------------------ 
/usr/lib/iceweasel/iceweasel {
 
  #include <abstractions/audio>
  #include <abstractions/cups-client>
  #include <abstractions/dbus-session>
  #include <abstractions/gnome>
  #include <abstractions/ibus>
  #include <abstractions/kde>
  #include <abstractions/nameservice>
  #include <abstractions/totem>

  network inet stream,
  network inet6 stream,

  deny /.suspended r,
  deny /boot/initrd.img* r,
  deny /boot/vmlinuz* r,
  deny /usr/bin/gconftool-2 x,
  deny /usr/lib/iceweasel/** w,
  deny /usr/lib/iceweasel/components/extensions/**/ w,
  deny /usr/lib/iceweasel/update.test w,
  deny /usr/lib/xulrunner-*/components/*.tmp w,
  deny /usr/lib/xulrunner-addons/extensions/**/ w,
  deny /usr/lib/{iceweasel,xulrunner}-addons/** w,
  deny /usr/share/mozilla/ w,
  deny /usr/share/mozilla/extensions/**/ w,
  deny /var/cache/fontconfig/ w,

  / r,
  /bin/which rix,
  /etc/fstab r,
  /etc/gre.d/* r,
  /etc/iceweasel*/** r,
  /etc/lsb-release r,
  /etc/mailcap r,
  /etc/mime.types r,
  /etc/mtab r,
  /etc/timezone r,
  /etc/wildmidi/wildmidi.cfg r,
  /etc/writable/timezone r,
  /etc/xul-ext/** r,
  /etc/xulrunner/** r,
  /proc/*/** r,
  /run/udev/** r,
  /sbin/killall5 rix,
  owner /tmp/** m,
  /tmp/.X[0-9]*-lock r,
  /usr/bin/basename rix,
  /usr/bin/dirname rix,
  /usr/bin/expr ix,
  /usr/bin/pwd rix,
  /usr/bin/tr rix,
  /usr/bin/dolphin rUx,
  /usr/lib/iceweasel/** rix,
  /usr/lib/xulrunner-*/plugin-container rix,
  /usr/{include,share,src}/** r,
  owner /var/tmp/** m,
 
  @{PROC}/@{pid}/cmdline r,
  owner @{PROC}/@{pid}/environ r,
  @{PROC}/@{pid}/mountinfo r,
  @{PROC}/@{pid}/net/if_inet6 r,
  @{PROC}/@{pid}/net/ipv6_route r,
  @{PROC}/@{pid}/stat r,
  @{PROC}/@{pid}/status r,
  owner @{PROC}/@{pid}/auxv r, 
 
# Digite abaixo o endereço do cache do perfil do navegador
 /home/*/.cache/mozilla/iceweasel/PERFILDONAVEGADOR/** rw,

  owner @{HOME}/ r,
  owner @{HOME}/.mozilla/**/extensions/** mrix,

# Digite abaixo o endereço do perfil do navegador
  owner @{HOME}/.mozilla/iceweasel/PERFILDONAVEGADOR/** rw,


  owner @{HOME}/.thumbnails/*/*.png r,
  owner @{HOME}/.{iceweasel,mozilla}/ rw,
  owner @{HOME}/.{iceweasel,mozilla}/** rw,
  owner @{HOME}/.{iceweasel,mozilla}/**/*.{db,parentlock,sqlite}* k,
  owner @{HOME}/.{iceweasel,mozilla}/**/plugins/** mr,
  owner @{HOME}/.{iceweasel,mozilla}/plugins/** mr,
 
# Inclua na lista abaixo as pastas para onde faz downloads ou de onde faz os uploads
owner @{HOME}/Desktop/ r, owner @{HOME}/Desktop/** rw, owner @{HOME}/Downloads/ r, owner @{HOME}/Downloads/** rw, owner @{HOME}/Public/ r, owner @{HOME}/Public/** rw,

}

Perfil Apparmor para o cliente de e-mail Debian Icedove 38.5.0 com cliente de agenda Iceowl, extensões "Provider for Google Calendar", Enigmail e TorBirdy

nome do arquivo: usr.lib.icedove.icedove



# Last Modified: Mon Feb 15 20:49:15 2016
#include <tunables/global>

/usr/lib/icedove/icedove {
  #include <abstractions/audio>
  #include <abstractions/base>
  #include <abstractions/bash>
  #include <abstractions/fonts>
  #include <abstractions/freedesktop.org>
  #include <abstractions/gnome>
  #include <abstractions/kde>
  #include <abstractions/totem>
  #include <abstractions/user-download>
  #include <abstractions/user-tmp>

  capability sys_ptrace,

  deny / r,
  deny /dev/vboxuser rw,
  deny /etc/fstab r,
  deny /etc/host.conf r,
  deny /etc/hosts r,
  deny /etc/machine-id r,
  deny /etc/nsswitch.conf r,
  deny /etc/passwd r,
  deny /sys/devices/system/cpu/ r,
  deny /sys/devices/system/cpu/present r,
  deny /var/lib/dbus/machine-id r,

  /bin/bash rix,
  /bin/cat rix,
  /bin/chmod rix,
  /bin/dash rix,
  /bin/grep rix,
  /bin/mknod rix,
  /bin/mktemp rix,
  /bin/ps rix,
  /bin/which rix,
 
  /dev/tty rw,
  /dev/xen/evtchn rw,
  /dev/xen/gntalloc rw,
  /dev/xen/xenbus rw,

  /etc/dpkg/dpkg.cfg r,
  /etc/icedove/pref/* r,
  /etc/iceweasel/pref/iceweasel.js r,
  /etc/iceweasel/searchplugins/** r,
  /etc/mailcap r,
  /etc/mime.types r,
  /etc/python*/sitecustomize.py r,
  /etc/xul-ext/** r,
  /etc/xul-ext/enigmail.js rix,
  /home/*/.config/dconf/user r,


# Digite abaixo o endereço do perfil de sua instalação do Icedove
  /home/*/PERFILDOICEDOVE/** mrwk,

  /run/udev/data/* r,
  /run/user/1000/dconf/ rwk,
  /run/user/1000/dconf/user rwk,
  /rw/config/gpg-split-domain r,
  /usr/bin/basename rix,
  /usr/bin/cut rix,
  /usr/bin/dpkg rix,
  /usr/bin/dpkg-query rix,
  /usr/bin/du rix,
  /usr/bin/gpg rix,
  /usr/bin/gpg-agent rix,
  /usr/bin/gpg-connect-agent rix,
  /usr/bin/gpg2 rix,
  /usr/bin/gpgconf rix,
  /usr/bin/grep rix,
  /usr/bin/kde4-config rix,
  /usr/bin/mkdir rix,
  /usr/bin/pinentry* rix,
  /usr/bin/qrexec-client-vm rix,
  /usr/bin/qubes-gpg-client rix,
  /usr/bin/qubes-gpg-client-wrapper rix,
  /usr/bin/qubesdb-cmd rix,
  /usr/bin/qvm-mru-entry rix,
  /usr/bin/qvm-open-in-dvm rix,
  /usr/bin/tail rix,
  /usr/bin/torbrowser Px,
  /usr/bin/torsocks rix,
  /usr/bin/update-desktop-database rix,
  /usr/bin/uwt rix,
  /usr/bin/zenity rix,
  /usr/lib/*-linux-gnu/** mr,
  /usr/lib/gnupg/* rix,
  /usr/lib/gnupg2/gpg2keys_hkp rix,
  /usr/lib/icedove/icedove mrix,
  /usr/lib/iceweasel/iceweasel rix,
  /usr/lib/pyshared/python*/** mr,
  /usr/lib/python*/dist-packages/** mr,
  /usr/lib/qubes-gpg-split/pipe-cat rix,
  /usr/lib/qubes/qfile-agent rix,
  /usr/lib/qubes/qopen-in-vm rix,
  /usr/lib/qubes/qvm-copy-to-vm rix,
  /usr/lib/qubes/qvm-copy-to-vm.* rix,
  /usr/local/lib/python*/dist-packages/** mr,
  /usr/share/applications/** rwk,
  /usr/share/pyshared/** mr,
  /var/cache/nscd/hosts r,
  /var/lib/dpkg/status r,
  /var/lib/dpkg/triggers/File r,
  /var/lib/dpkg/triggers/Unincorp r,

  @{HOME}/.Xauthority r,
  @{HOME}/.cache/ r,
  @{HOME}/.cache/** rwk,
  @{HOME}/.cache/icedove/ rwk,
  @{HOME}/.cache/icedove/** rw,
  @{HOME}/.config/oxygen-gtk/* rw,
  @{HOME}/.fontconfig/ rwk,
  @{HOME}/.gnupg/* rwlkcix,
  @{HOME}/.icedove/ rwk,
  @{HOME}/.icedove/** mrwk,
  @{HOME}/.kde/share/** rw,
  @{HOME}/.local/share/ r,
  @{HOME}/.local/share/applications/ rwk,
  @{HOME}/.local/share/applications/* rwk,
  @{HOME}/.local/share/mime/ rwk,
  @{HOME}/.local/share/mime/** rwk,
  @{HOME}/.mozilla/ rwk,
  @{HOME}/.mozilla/** rwk,
  @{HOME}/.thunderbird/ rwk,
  @{HOME}/.thunderbird/** mrwk, 
  @{PROC}/ r,
  @{PROC}/[0-9]*/cmdline r,
  @{PROC}/[0-9]*/fd/ r,
  @{PROC}/[0-9]*/maps r,
  @{PROC}/[0-9]*/mountinfo r,
  @{PROC}/[0-9]*/mounts r,
  @{PROC}/[0-9]*/stat r,
  @{PROC}/[0-9]*/status r,
  @{PROC}/[0-9]*/task/*/stat r,
  @{PROC}/sys/kernel/pid_max r,
  @{PROC}/tty/drivers r,
  @{PROC}/uptime r,
  @{PROC}/xen/privcmd rw,

}

Perfil Apparmor para o cliente VOIP Skype 4.3.0.37

nome do arquivo: usr.bin.skype


#include <tunables/global>
/usr/bin/skype {
 #include <abstractions/base>
  #include <abstractions/user-tmp>
  #include <abstractions/audio>
  #include <abstractions/nameservice>
  #include <abstractions/ssl_certs>
  #include <abstractions/fonts>
  #include <abstractions/ibus>
  #include <abstractions/dbus>
  #include <abstractions/dbus-session>
  #include <abstractions/X>
  #include <abstractions/freedesktop.org>
  #include <abstractions/gnome>
  #include <abstractions/kde>

  network,

  /usr/bin/skype mr,
  /opt/skype/skype pix,
  /opt/skype/** kmr,
  /usr/share/fonts/** m,
  @{PROC}/*/net/arp r,
  @{PROC}/*/cmdline r,
  @{PROC}/*/auxv r,
  @{PROC}/sys/kernel/ostype r,
  @{PROC}/sys/kernel/osrelease r,
  /usr/bin/xdg-open rUxmlk,
  /dev/ r,
  /dev/tty rw,
  /dev/snd/* mrw,
  /{dev,run}/shm/ r,
  /{dev,run}/shm/pulse-shm-* mrw,
  /etc/pulse/client.conf r,
  /dev/pts/* rw,
  /dev/video* mrw,

  @{HOME}/.cache/fontconfig/** lkmrw,
  @{HOME}/Downloads/* krw,
  @{HOME}/Downloads/ krw,
  /etc/xdg/Trolltech.conf rk,
  @{HOME}/.config/Trolltech.conf* rwk,

  /etc/xdg/sni-qt.conf r,
  /usr/share/locale-langpack/* mr,
  /usr/share/glib-2.0/schemas/gschemas.compiled rm,
  /usr/share/nvidia-331/** rm,
  /sys/devices/system/cpu/ r,
  /sys/devices/system/cpu/cpu0/cpufreq/* r,

  @{HOME}/.Skype/ krw,
  @{HOME}/.Skype/** krw,
  @{HOME}/.config/Skype/ krw,
  @{HOME}/.config/Skype/** krw,

  /usr/share/skype/** kmr,
  /usr/share/skype/sounds/*.wav kr,
  /etc/passwd mr,
  /usr/share/icons/** kr,
  /sys/class/power_supply/ r,

  @{PROC}/[0-9]*/status r,
  @{PROC}/[0-9]*/net/** r,
  @{PROC}/[0-9]*/task/ r,
  @{PROC}/[0-9]*/task/** r,

  /usr/bin/pavucontrol rmUx,

  deny @{HOME}/.mozilla/ r,
  audit deny @{PROC}/[0-9]*/fd/ r,
  audit deny /var/cache/fontconfig/ w,
  deny /sys/devices/** r,
  audit deny /etc/xdg/sni-qt.conf k,
} 

Perfil Apparmor para o cliente de armazenamento em nuvem Owncloud 2.1.1

nome do arquivo: usr.bin.owncloud

# Last Modified: Thu Feb 11 12:27:45 2016
#include <tunables/global>
/usr/bin/owncloud {
  #include <abstractions/base>
  #include <abstractions/kde>
  #include <abstractions/ssl_certs>
  #include <abstractions/totem>
  #include <abstractions/ubuntu-browsers.d/plugins-common>

  /etc/ownCloud/* r,
  /home/*/.Xauthority r,
  /home/*/.config/Trolltech.conf rk,
  /home/*/.config/fontconfig/* r,
  /home/*/.fontconfig/* r,
  /home/*/.kde/share/config/* r,
  /home/*/.kde/share/config/kdeglobals rk,
  /home/*/.local/share/data/ownCloud/* rwk,

# Digite abaixo o(s) endereço(s) da(s) pasta(s) compartilhadas
# através do Owncloud
  /home/*/PASTASCOMPARTILHADAS rwk,
  
  /proc/*/statm r,
  /run/user/1000/ownCloud/socket w,
  /tmp/* rwk,
  /usr/bin/lsb_release Ux,
  /usr/bin/owncloud mrix,
  /usr/share/icons/** rk,
  /var/cache/nscd/hosts r,
  /var/tmp/** rwlk,

}

Perfil Apparmor para o cliente de FTP Filezilla 3.9.0.5

nome do arquivo: usr.bin.filezilla

# Last Modified: Tue Feb  9 13:35:14 2016
#include <tunables/global>

/usr/bin/filezilla {
  #include <abstractions/base>
  #include <abstractions/totem>
  #include <abstractions/ubuntu-browsers.d/plugins-common>

  deny / r,
  deny /etc/phpmyadmin/phpmyadmin.desktop r,

  /home/*/.Xauthority r,
  /home/*/.config/fontconfig/* r,
  /home/*/.filezilla/* rwk,
  /home/*/.fontconfig/* r,
  /home/*/.kde/share/config/gtkrc-2.0 r,
  /home/*/.local/share/applications/* r,
  /home/*/.local/share/mime/* r,
  /home/*/.putty/randomseed r,
  /home/*/.putty/sshhostkeys r,
  
#Digite abaixo os endereços das pastas que usa para upload/download. Por exemplo:
  /home/*/Desktop/** rw,
  /home/*/Downloads/** rw,
  
  /tmp/** rwlk,
  /usr/bin/filezilla mr,
  /usr/bin/fzsftp rPx,
  /usr/bin/kate Px,
  /usr/bin/phatch Px,
  /var/cache/nscd/hosts r,
  /var/tmp/** rwlk,

} 

Perfil Apparmor para fzsftp (use junto com o perfil filezilla)

nome do arquivo: usr.bin.fzsftp

# Last Modified: Tue Feb  9 13:35:14 2016
#include <tunables/global>

/usr/bin/fzsftp {
  #include <abstractions/base>

  /home/*/.putty/randomseed r,
  /home/*/.putty/sshhostkeys r,
  /usr/bin/fzsftp mr,
  /var/cache/nscd/hosts r,

# Digite abaixo os endereços das pastas que usa para upload/download. Por exemplo:
  /home/*/Desktop/** rw,
  /home/*/Downloads/** rw,

 /tmp/** rwlk,
 /var/tmp/** rwlk, 
 
}
 
 

Perfil Apparmor para visualizador de imagens phatch 0.2.7 (use junto com o perfil filezilla)

nome do arquivo: usr.bin.phatch

# Last Modified: Tue Feb  9 13:35:15 2016
#include <tunables/global>

/usr/bin/phatch {
  #include <abstractions/base>
  #include <abstractions/kde>
  #include <abstractions/python>
  #include <abstractions/totem>
  #include <abstractions/ubuntu-browsers.d/plugins-common>

  /home/*/.Xauthority r,
  /home/*/.config/fontconfig/* r,
  /home/*/.config/user-dirs.dirs r,
  /home/*/.fontconfig/* r,
  /home/*/.kde/share/config/gtkrc-2.0 r,
  /home/*/.thumbnails/** w,
  /proc/*/mounts r,
  /proc/filesystems r,
  /proc/meminfo r,
  /tmp/** rwlk,
  /usr/bin/phatch r,
  /usr/bin/python2.7 rix,

}

Perfil Apparmor para cliente bittorrent Transmission-qt 2.84

nome do arquivo: usr.bin.transmission-qt

# Last Modified: Mon Jul 28 18:59:05 2014

#include <tunables/global>

/usr/bin/transmission-qt {

  #include <abstractions/base>
  #include <abstractions/kde>
  #include <abstractions/gnome>
  #include <abstractions/user-download>

/dev/dri/card0 rw,
/etc/drirc r,
/etc/fonts/** r,
/etc/gai.conf r,
/etc/host.conf r,
/etc/hosts r,
/etc/resolv.conf r,
/etc/ssl/certs/ r,
/etc/ssl/openssl.cnf r,
/etc/udev/udev.conf r,

/home/*/.Xauthority r,
/home/*/.cache/transmission/** rw,
/home/*/.config/fontconfig/fonts.conf r,
/home/*/.config/transmission/** rw,
/home/*/.config/user-dirs.dirs r,
/home/*/.fontconfig/** r,
/home/*/.fonts/** r,
/home/*/.kde/share/config/kdeglobals rk,
#Digite abaixo a(s) pasta(s) onde você deseja salvar os arquivos baixados
/home/*/PASTAONDESALVOARQUIVOS/** rw,

/proc/** r,
/run/udev/data/* r,
/sys/devices/** r,
/usr/lib/x86_64-linux-gnu/dri/i965_dri.so mr,
/usr/local/share/fonts/** r,
/usr/share/fontconfig/conf.avail/** r,
/usr/share/fonts/** r,
/usr/share/icons/hicolor/* rk,
/usr/share/icons/** rk,
/usr/share/javascript/mathjax/fonts/** r,
/usr/share/poppler/cMap/*/ r,
/usr/share/qt5/translations/qt_pt.qm r,
/var/cache/fontconfig/** r,
/var/cache/nscd/hosts r,
/var/cache/nscd/passwd r,

}

domingo, 3 de janeiro de 2016

A falsa sensação de segurança dos softwares antivírus

Você acabou de pagar uma boa quantia pela renovação da licença do seu software antivírus, antispyware, antimalware, ou seja qual for o nome que estejam usando hoje em dia. Se você for um usuário mais exigente e bem informado, é possível que tenha adotado um antivírus de uma determinada marca após extensa pesquisa em sites de fabricantes, críticas de revistas especializadas e testes independentes, além de uma cuidadosa análise da relação benefício/custo.
O malware se instala nas "frestas" que o seu sistema de segurança deixa abertas. 
Imagem: “Malware Internet Represents World Wide Web”  por
Stuart Miles, cortesia de Freedigitalphotos.net
E então, está se sentindo mais seguro? Pois leia este trecho de notícia do G1:
"O pesquisador do Google Tavis Ormandy está analisando a segurança de programas antivírus e anunciou na semana passada que enviará um relatório para a fabricante de antivírus Avast. A empresa é a terceira a receber um comunicado sobre brechas de Ormandy este ano: as outras duas foram a Eset e a Kaspersky Lab e, em ambos os casos, os antivírus tinham brechas críticas.

(...)

Ormandy destacou que os programas antivírus possuem falhas de projeto ao interferirem com componentes do sistema e realizar a leitura de todos os arquivos automaticamente sem utilizar tecnologias que reduzem o impacto de brechas no software. Ele também citou que falhas em antivírus são vendidas no mercado negro de vulnerabilidades."
Nada disso é novidade para quem se interessa a sério por segurança de dados: não existe sistema de segurança que, ele próprio, não contenha vulnerabilidades que precisam ser corrigidas. Mais: não existe sistema de segurança capaz de proteger o usuário contra o próprio comportamento descuidado.

De fato, na melhor das hipóteses, esses programas reduzem a "superfície de ataque", isto é, fecham os pontos vulneráveis mais óbvios de um sistema, evitando os ataques automatizados mais conhecidos. Mas eles pouco ou nada podem fazer contra adversários tão determinados que estejam dispostos a pagar por tecnologias que explorem as vulnerabilidades do próprio sistema de segurança.

Reduzindo a superfície de ataque em sistemas corporativos: infográfico da Kaspersky Labs.

A melhor política de proteção digital pode ser resumida numa simples paráfrase de um famoso aforismo do Templo de Apolo, em Delfos: "Conhece o teu sistema". Quanto melhor você entender o funcionamento do seu computador, quanto mais você souber sobre o que fazem e para que servem os programas instalados em seus dispositivos, mais seguro você estará.

O problema que se coloca para quem usa sistemas Windows é: como, afinal, entender como funciona o sistema operacional Windows se ele tem o seu código-fonte "fechado"? Na verdade essa é, exatamente, a principal falha de segurança do Windows: profissionais de segurança independentes não podem examiná-lo em profundidade, de modo que você precisa confiar cegamente na "maravilhosa equipe de profissionais de segurança" da Microsoft.

O mesmo princípio que vale para o sistema operacional também é válido para todos os programas de código fechado que rodam sobre o Windows, inclusive os softwares antivírus. Quem confiou cegamente na "maravilhosa equipe de profissionais de segurança" da Avast, da ESET e da Kaspersky esteve vulnerável durante um período de tempo impossível de estimar.

Qual será a solução? Mudar para antivírus de outro fabricante? Ora, ao fazer isso, você estará apenas trocando uma vulnerabilidade conhecida por um conjunto de vulnerabilidades desconhecidas!

Para oferecer um testemunho pessoal, estou usando, atualmente, o antivírus ESET em um sistema com Windows 8.1 e posso afirmar que, neste ano de experiência, ele ofereceu uma proteção bastante decente, fazendo o que se espera dele de forma exemplar, de modo que pretendo renovar a licença quando expirar. Porque o ponto mais vulnerável em qualquer sistema, digo e repito, é o comportamento do usuário. Nas ocasiões em que adotei comportamento de risco na internet, não houve antivírus de fabricante nenhum que fosse capaz de impedir a infecção de meu computador. Para ficar num exemplo recente, há pouco mais de dois meses um velho notebook ficou infectado por malware menos de um minuto após a reinstalação do Windows, antes que eu tivesse tempo de baixar um programa antivírus, simplesmente porque cliquei em um resultado de pesquisa Google que levava a um site de malware! Em um sistema Windows, basta um momento de descuido para que um programa malicioso assuma o controle!

Há muitas opções de sistemas operacionais livres, seguros e éticos.
Na imagem acima você vê, em ordem alfabética,  as recomendações do site "Prism-break",
que avalia softwares com base em sua ética,segurança e respeito à privacidade.
Por tudo isso, é que recomendo novamente a todos os leitores deste blog: mantenha um computador alternativo com Debian GNU/Linux* para o seu trabalho sério, reservando sua máquina Windows para games e visitas a redes sociais, de modo a minimizar o dano em caso de infecção por malware. Use esse computador alternativo o máximo que puder e aproveite para estudar o sistema e entender como ele funciona. Você rapidamente descobrirá que:

1 - Segurança é uma filosofia de trabalho que deve fazer parte do projeto do sistema. Um sistema concebido para ser seguro revela esse traço do projeto a cada programa que você usa. Não, os sistemas Debian GNU/Linux não são menos vulneráveis do que os sistemas Windows só porque são "menos usados". Os sistemas Debian GNU/Linux são mais seguros do que os sistemas Windows porque são projetados para ser mais seguros.

2 - Comodidade e Segurança caminham em direções opostas. Um sistema mais seguro tenderá a ser mais "chato" de usar do que um sistema inseguro, envolvendo mais passos, mais confirmações de segurança, mais procedimentos extras do que um sistema cheio de buracos como o Windows. Para entender o motivo, basta pensar nas portas e janelas de sua casa: quanto maior o número de trancas, cadeados e fechaduras que você instalar, mais segura ficará sua casa, porém, você terá muito mais trabalho para entrar e sair.

3 - Não existe substituto para a inteligência. A principal característica de segurança de um sistema Debian GNU/Linux é que ele permite que o usuário tenha tempo para pensar nos riscos que está correndo, para ponderar se realmente "precisa desesperadamente" instalar aquele programa inseguro no próprio computador ou se pode muito bem continuar vivendo sem ele. Enquanto o Windows funciona como um grande "shopping center digital", estimulando a aquisição impulsiva de aplicativos e, portanto, um comportamento digital inseguro, um sistema Debian GNU/Linux o estimula a entender o que está fazendo, a perguntar a si mesmo se realmente precisa daquela solução específica.

4 - Nenhum sistema é seguro apenas por ser Linux. Eu costumo brincar dizendo que o Android é um "sistema operacional Windows baseado em Linux". Como os sistemas que rodam em celulares e tablets precisam ser, obrigatoriamente, muito fáceis de usar, eles são obrigados a incorporar um grande número de vulnerabilidades do Windows em seu projeto. Além disso, a viabilidade econômica dos sistemas Android envolve o estímulo à compra e instalação impulsiva de "apps", transformando-os em "shopping centers digitais" em tudo semelhantes ao Windows, inclusive no grande número de brechas de segurança. De modo análogo, o extremamente popular sistema operacional Ubuntu Linux, embora desenvolvido a partir do Debian GNU/Linux, apresenta diversos inconvenientes de privacidade e falhas de segurança.

5 - Ninguém aprende nada sem estudar. Se você pretende usar um sistema Debian GNU/Linux com o mesmo nível de despreocupação com que usa o Windows, rapidamente desistirá. Para realmente extrair o máximo de um sistema Debian GNU/Linux, você precisará de alguma disposição para estudar e entender como as coisas funcionam. Por outro lado, quanto mais você estudar o Debian GNU/Linux, mais claras se tornarão para você as fraquezas, vulnerabilidades e inconsistências do sistemas Windows.

Em resumo, você não deve confiar nos softwares antivírus como substitutos para o seu conhecimento e sua inteligência. Use-os como um reforço extra destinado a reduzir a "superfície de ataque" ao seu sistemas, mas faça a si mesmo o favor de ignorar os apelos de marketing dos fabricantes de antivírus e cuide de aprimorar sempre a melhor defesa contra os ataques digitais: o seu próprio cérebro.

------------------------
NOTA:

* Neste artigo, menciono o Debian GNU/Linux apenas por ser o que conheço melhor, já que o uso em meu computador principal. O Debian GNU/Linux é um sistema operacional com ótima reputação em termos de facilidade de uso, segurança e ética, embora não se possa dizer o mesmo de todos os sistemas "baseados em Debian".

Duas outras distribuições Linux com excelente reputação que já usei em notebooks e que mantenho instaladas em máquinas virtuais para testes e aprendizado são a Fedora e a openSUSE, cada uma delas com seus próprios encantos e problemas, ambas muito seguras e relativamente fáceis de usar.

Uma distribuição que ainda não testei mas que se destaca pela soberba qualidade de sua documentação é a Arch Linux. Sempre recorro ao wikisite do Arch Linux para entender todos os detalhes importantes relativos à segurança de meu computador, mesmo me mantendo fiel ao Debian.

sexta-feira, 1 de janeiro de 2016

Os spams de dezembro de 2015

No último mês, decidi fazer uma estatística do número de spams que recebo em todas as minhas contas e compartilhar os resultados com os leitores deste blog.

Gráfico: número de spams recebidos por dia em dezembro de 2015.


Número de spams recebidos em Dez/2015: 2480
Média: 80,0 spams por dia
Valor máximo: 192 spams no dia 08/12/2015
Valor mínimo: 9 spams recebidos no dia 27/12/2015

Os spams deste estudo foram recebidos através de 5 diferentes contas de e-mail, sendo 2 no GMail, 1 no Yahoo! Mail e 2 em servidor particular..

A tendência geral do mês foi de ligeira queda conforme se aproximava o período das festas, com 1518 spams (61,2%) recebidos entre os dias 1 e 15, contra 962 (38,8%) nos 16 dias restantes.

É bom esclarecer que definimos como "spam" toda mensagem recebida por correio eletrônico de remetente cujo endereço de e-mail não esteja em meu catálogo de endereços e que se enquadre em pelo menos uma das seguintes categorias:

  1. Correspondência comercial não autorizada através de um sistema de duplo opt-in, isto é, em que a opção de receber correspondência comercial feita no website precisa ser confirmada clicando em um link recebido no endereço de correio eletrônico foi usado para fazer a solicitação. Nesse sistema, caso o usuário não confirme a intenção de receber a correspondência, ela não será enviada.
  2. Correspondência comercial enviada apesar do cancelamento da assinatura. Mesmo que o usuário tenha feito um dia a opção de receber mensagens comerciais, o seu desejo de cancelar o recebimento deve ser respeitado. Caso contrário, trata-se de spam.
  3. Correspondência cujo conteúdo se destine a provocar danos ao destinatário. Inclui correspondência contendo anexos ou links destinados a instalar vírus ou outro malware no computador; links para sites falsos de bancos, lojas ou outras empresas legítimas; falsa correspondência "pessoal" contendo histórias fantasiosas tendo em vista a aplicação de algum tipo de "golpe" na boa fé do destinatário; entre outras.
Não consideramos "spam" qualquer correspondência recebida de remetentes constantes em nosso catálogo de endereços, ainda que enquadráveis em um ou mais dos casos acima.