Segurança não e paranóia

Quem me segue no Twitter já deve estar sabendo que na última quarta-feira (24/11/2010) eu fui vítma de um sequestro relâmpago. Fui abordado à 3 quadras da esquina da Av. Jorge João Saad com a Av. Francisco Morato (muito cuidado se você mora ou trabalha na região). Fiquei como refém dos bandidos por quase 3h enquanto tentavam sacar e fazer compras com meus cartões de crédito e débito. Fora os gastos que fizeram nos meus cartões, levaram também o som do meu carro, meu celular e minha mochila que além do laptop tinha todos os meus carregadores, e-book reader, cabos de dados, headset, pen-drives e HDs externos. É sobre essa última perda que quero falar.

Graças a Deus não me machucaram. Os cartões têm seguro, vou recuperar o dinheiro perdido. O carro foi encontrado inteiro pela polícia na manhã seguinte (só levaram o som). Deixaram no carro todos meus documentos que estavam na carteira. Mas meu computador e, mais importante, os dados que estavam “espalhados” pela mochila (HDs, laptop e pen-drives e celular) eu não vou recuperar.

Os equipamentos em si serão repostos com o tempo (começei pelo celular). Mas os dados não. Como muitos de vocês, eu também não tinha o hábito de realizar backups com frequência e também não deixava meus dados criptografados pois achava que isso era exagero. Pois querem saber de uma coisa? Não é exagero!

Depois de todos os transtornos (BO, cancelamento de cartões, trocas de senhas…) o que mais me afetou nesse caso todo foi que:

  1. Não recuperarei MUITOS dos dados que estavam naquela mochila, pois não tinham backup. Perdi fotos, músicas, vídeos, entrevistas gravadas para o xamlcast, projetos, documentos, exemplos de código, capítulos do livro que estou escrevendo…
  2. Me sinto vulnerável pois os bandidos estão com acesso fácil à esses dados. Sei que provavelmente nada disso tem valor para eles e é pouco provável que façam algo, mas a sensação de vulnerabilidade não diminue por causa disso.

Aprendi a lição da forma mais cruel (e mais eficaz) possível. Estou escrevendo esse post para que vocês não precisem passar por isso para tomar providências e se previnir.

O que aprendi com tudo isso?

Backup

Normalmente não fazemos backups ou não fazemos com frequencia pois “dá trabalho”. Pois bem, chega de ser preguiçoso. Estou sem dados agora por causa dessa preguiça e chegou a hora de levar isso a sério e resolver esse problema. Há muitas soluções de backup parcial ou totalmente automatizadas que invalidam essa desculpa então, mãos à obra.

Após estudar algumas opções de backup, eu decidi que vou usar um Windows Home Server para a tarefa. Escolhi essa opção pois não terei que me preocupar com nada além de espaço de armazenamento depois que estiver configurado. Todos os computadores que eu comprar de agora em diante terão um plano de backup no Home Server e a vantagem é que para que o backup ocorra, basta que as 2 máquinas estejam na mesma rede. Além disso, tenho uma vantagem extra já que o Home Server também pode ser utilizado como central de mídia da casa, permitindo que eu assista a vídeos, ouça música ou veja minhas fotos de qualquer computador da rede ou até mesmo na minha TV, por meio do Xbox.

Scott Hanselman fez alguns posts sobre o Windows Home Server que podem servir como um bom ponto de partida:

Criptografia

Sim, a partir de agora vou criptografar todos os meus computadores, pen-drives e HDs externos. Se acontecer algo no futuro (espero nunca mais passar por algo assim novamente, mas nunca se sabe), ficarei tranquilo pois ninguém além de mim será capaz de acessar meus dados e eu poderei recuperar tudo dos meus backups (feitos no Home Server). Esse tipo de tranquilidade não tem preço.

Após pesquisar um pouco, vi que há 2 opções interessantes de criptografia: o Bitlocker do Windows e o aplicativo opensource TrueCrypt. Decidi que vou usar o True Crypt pois tem uma criptografia mais alta, é extremamente seguro, open source, além do fato de o Bitlocker estar disponível apenas com a versão ultimate do Windows 7.

O TrueCrypt é tão seguro que mesmo após 18 meses de tentativas, nem o FBI nem a CIA conseguiram burlar sua segurança para ajudar nossa Polícia Federal a ter acesso aos dados do banqueiro Daniel Dantas, acusado de crimes financeiros.

Outra coisa interessante do TrueCrypt é que ele suporta encriptação em hardware, se a sua CPU tiver suporte (processadores i5 e i7 têm), o que ajuda a diminuir qualquer possível perda de performance que possa ocorrer.

Ande leve

Perdi tudo pois estava tudo na minha mochila. É aquela velha mania de “talvez eu precise”. Pois acontece que quase nunca precisava de tudo aquilo. Minha mochila devia estar pesando uns 4Kg e eu posso dizer com segurança que 90% das vezes que precisei de algo dela no trabalho ou em qualquer outro lugar, foi para fazer algo que poderia esperar até eu chegar em casa ou que poderia ser feito de outra forma.

Não vou mais carregar meu laptop para todo lugar (depois que comprar comprar um novo). Não vou mais deixar meus backups e originais juntos. Não vou mais carregar todos os meus gadgets se não for precisar deles.

Próximos passos

Agora quero ver esquemas de segurança para o celular. Eu tinha um MotoQ 11 com Windows Mobile 6.1. Estava com o serviço MyPhone da Microsoft que faz backups diários dos dados e memória do telefone, mas não fazia backup dos dados do cartão de memória (onde estavam alguns ítens que eu realmente não queria ter perdido). Como não levaram o meu chip, o esquema de localização, bloqueio e formatação remota do MyPhone não me foram úteis, mas o serviço me ajudou bastante mesmo assim.

Como substituto provisório, estou com um LG Optimus One rodando Android 2.2. Ficarei utilizando esse aparelho até o meu Windows Phone 7 chegar, pouco antes do Natal (se tudo correr bem). Estou pesquisando quais são minhas opções tanto de criptografia quanto de backup para ambos os aparelhos. Aceitos sugestões.

Outra coisa que me interessa é algum tipo de serviço que faça backup de dados remotamente ou na nuvem, de forma segura. Quero ter a maior cobertura possível do ponto de vista de segurança, daqui pra frente.

Resumo

Não brinquem com segurança. Não deixem pra depois. Façam seus backups hoje e, se possível, criptografem os dados, pelo menos os mais sensíveis também. Tomem cuidado. Fico triste e as vezes até desconsolado quando lembro de algumas coisas que perdi (principalmente dados) que não recuperarei. Não passem pelo que estou passando.

Quero também aproveitar para agradecer a todos que me apoiaram e me enviaram palavras de consolo nesses últimos dias. Vocês não fazem idéia de como isso ajuda.

Fui nomeado MVP de Silverlight

MVPLogo

É com grande alegria que anucio aqui que hoje fui nomeado MVP de Silverlight!

Para quem não sabe, MVP (Most Valuable Professional) é um premio que a Microsoft dá em reconhecimento a profissionais que se destacam de alguma forma na comunidade. Isso não é uma certificação. É um premio concedido pela Microsoft sob indicação e com “validade” de um ano. A cada ano as contribuições são avalidadas novamente e o título pode ou não ser renovado.

Fico realmente muito feliz de fazer parte dessa comunidade e mais ainda por ser o primeiro MVP de Silverlight do Brasil.

Ainda não sei que portas isse título vai abrir para mim mas podem ter certeza de que continuarei participando ativamente da comunidade e contribuindo cada vez mais na divulgação dessa plataforma que tanto adoro.

Não vou citar nomes para não correr o risco de deixar ninguém de fora, mas gostaria de agradecer a todos participaram de alguma forma direta ou indireta na minha indicação, assim como todos que sempre me apoiaram e que me deram os parabéns hoje por email, telefone e Twitter.

Se você ficou interessado ou curioso sobre o programa de MVPs, leia este ótimo post do Rodolfo Roim (líder dos MPVs no Brasil).

http://mvpbrasil.wordpress.com/2010/07/19/o-programa-mvp-o-que-e-como-faco-parte/ 

Mais uma vez, OBRIGADO!

Tirando dúvidas em fóruns

Há muito tempo venho acompanhando o fórum de Silverlight do MSDN Brasil, tirando dúvidas e ajudando outros desenvolvedores com problemas. Por ser bastante ativo nesse fórum acabei sendo nomeado como um de seus moderadores, o que me dá acesso para fazer algumas coisas como mover questões, editar e bloquear posts de outras pessoas, marcar perguntas como respondidas, etc…

Após um tempo a gente começa a notar certos padrões, e um que fica bem evidente para quem acompanha fóruns é que a grande maioria das pessoas não sabe usá-los corretamente. Fóruns são uma base de conhecimento com dúvidas e respostas para ser consultada e utilizada em caso de necessidade. Veja como um fórum é normalmente usado:

  • Usuário encontra um problema ou tem uma dúvida
  • Acha o site de fóruns do MSDN (ou qualquer outro)
  • Acha a tela de postar dúvida, preenche a descrição, preenche o título e envia
  • Aguarda uma resposta e depois não volta mais

O que há de errado nesse comportamento? Esse usuário não tirou proveito da ferramenta em vários pontos chave e usou o fórum como se fosse um sistema de suporte.

  1. Esse usuário não pesquisou para ver se a dúvida/problema dele já estava no fórum. Talvez alguém já houvesse passado por isso e ele já conseguisse a resposta na hora.
  2. Ao postar a dúvida ele começou preenchendo a descrição do problema e deixou o título para depois (talvez nem tenha percebido o campo e tenha preenchido só quando a validação da tela informou que era obrigatório). O problema disso é que o título acaba sendo preenchido com qualquer coisa, o que não ajuda para que a dúvida seja encontrada e respondida logo. Há também casos que são ao contrário onde a pessoa faz uma pergunta bem genérica no título e não detalha o cenário na descrição. Não podemos também esquecer dos casos em que a pessoa submete a dúvida no tópico/categoria errada do fórum.
  3. Após ter sua pergunta respondida o usuário muitas vezes simplesmente utiliza a resposta e não atualiza o fórum informando que aquela é a resposta. Na maioria dos casos o usuário só voltará ao fórum se a resposta não resolver o problema dele.

Esse tipo de comportamento é ruim para os fóruns pois acaba gerando informações redundantes, retrabalho e inconsistência nas respostas. Eis como o fórum deve ser usado:

  • Usuário encontra um problema ou tem uma dúvida
  • Acha o site do fórum (MSDN/Stack Overflow ou qualquer outro)
  • Verifica se há uma busca geral e faz uma busca com as palavras chave sobre a questão que tem
  • Se encontrar uma pergunta igual ou semelhante, verifica se ela está respondida e resolve o problema. Se estiver e resolver, vote na resposta para indicar que foi útil. Se não estiver respondida ou não resolver seu problema, poste um comentário ou pelo menos assine a pergunta para poder receber uma alerta por email quando houver atualização.
  • Se a sua dúvida não estiver no fórum ainda, ache a sessão do fórum referente ao assunto da dúvida. Ex.: Se a dúvida de sobre como filtrar uma query no banco de dados, você não deve postar no fórum de Silverlight só porque sua aplicação é feita em Silverlight. Você deve postar sua dúvida no fórum de SQL nesse caso.
  • Coloque a questão central do seu problema no título, da forma mais clara e concisa possível. Quem estiver lendo tem que ser capaz de identificar pelo menos o escopo da pergunta lendo apenas o título. Um título bem feito ajuda para que outras pessoas possam tirar proveito no futuro da solução ao seu problema e também faz com que se obtenha uma resposta mais rápido pois uma pessoa pode simplesmente bater o olho no título e falar “ei, eu sei responder isso”, ao invés de ter que abrir a pergunta e ler a descrição para saber do que se trata. Exemplos de títulos ruims: “Dúvida?”, “Problema com relatório”, “Acesso ao banco”, “Silverlight”, etc…
  • Preencha a descrição da pergunta com mais detalhes sobre o seu cenários. O que você está tentando fazer? Que tecnologias está usando? O que sua aplicação faz? etc. Quanto mais informações você puder passar, mais chances têm de ter uma resposta precisa e rápida. Coloque o que faz sentido no seu caso e que seja útil para quem for tentar responder.
  • Se alguém responder sua questão fazendo mais perguntas ou pedindo mais detalhes, responda assim que puder.
  • Se alguém der uma solução que funcione, marque como resposta para que outros possam tirar proveito.
  • Se ninguém responder e você conseguir resolver o problema, responda você mesmo à questão e marque sua resposta como resposta da questão. Outros usuários vão agradecer.

Quase todas as questões nesses fóruns são respondidas por pessoas como eu e você, não por funcionários da Microsoft (ou da empresa relacionada à tecnologia/fórum em questão). Estamos fazendo isso em nosso tempo livre para ajudar a evoluir nossa comunidade de desenvolvedores e as tecnologias que usamos. Lembre-se disso ao usar os fóruns.

Seguem mais algumas dicas que também podem ser seguidas:

  • Seja educado ao fazer sua pergunta.
  • Seja educado com quem está tentando te ajudar. Lembre que, normalmente, ele não é pago para isso e realmente só quer ajudar.
  • Não use o tópico de uma pergunta para discutir uma técnologia. Abra um novo tópico de discussão
  • Evite fazer mais de uma pergunta em um único tópico
  • Não faça propagandas em fóruns, a não ser que o produto em questão resolva a dúvida de alguem.
  • Se tiver um tempo, contribua com o fórum tentando responder dúvidas de outros usuários.

A comunidade agradece.

Tags: Dicas

Discussão Silverlight x HTML5 gravada ao vivo no Community Zone

Nos dias 16 e 17 a Microsoft reuniu alguns MVPs e influenciadores da comunidade em um rancho no interior de São Paulo com atividades de integração e de direcionamento. Esta reunião se chama Community Zone. Para alguns é um momento de lazer com os amigos da “internet”, mas para muitos é uma grande oportunidade de trocar informações e discutir determinados assuntos.

Foi isto que aconteceu na madrugada do Community Zone. Mais de 30 pessoas estavam presente para discutir Silverlight 4 x XHTML5? Assunto quente e polêmico que você confere neste mega podcast, com participações de Kelps, Giovanni Bassi, Rodrigo Kono, Victor Cavalcante, Igor Abade, Mauricio Alegretti, Gustavo Malheiros, Márcio Sete e vários outros. (ps.:não temos os nomes de todos, se você estava presente comente este post).

Html5 versus Silverlight no Community Zone

Qual a sua opinião?
Comente, compartilhe conosco.

PS.: Não consegui colocar um player de audio no post por causa de problemas com o Blogger. Estou procurando uma solução para isso.

Se tornado sysadmin em servidor SQL Server/Express local (revisado)

Pouco mais de 1 mês atrás eu postei aqui no blog uma dica sobre como dar reset na senha de “sa” no SQL Express, um assunto completamente diferente dos temas que costumo abordar normalmente. Fiz aquele post principalmente para guardar a dica, caso fosse necessária novamente no futuro. O que eu não esperava era que ela seria tão necessária: Desde quando postei até agora eu já utilizei ou indiquei aquele post 7 vezes aqui no serviço.

Microsoft SQL Server

Esse assunto se tornou importante aqui devido ao fato de que agora os computadores de novos funcionarios não serão mais formatados, a não ser que a instalação anterior esteja com problemas. Como tivemos uma onda de contratações recentemente, vários computadores que estavam guardados foram disponibilizados para os novos desenvolvedores e então o problema de tornou latente.

Isso me fez ver também que meu post anterior poderia ter seu passo a passo melhorado, pois nem todos os casos são iguais e nem todos os detalhes estavam bem claros. Por isso eu decidi escrever um novo post mais claro e detalhado para ficar mais fácil para as próximas pessoas que precisarem dessa dica.

Quando o SQL Server ou SQL Express é instalado em um computador junto ou por algum outro aplicativo (Visual Studio, Web Platform Installer), o grupo de administradores local da máquina não é adicionado automáticamente ao grupo de administradores do banco de dados. Então, quando um computador muda de dono, o novo dono não consegue ter acesso admin no próprio SQL, mesmo sendo administrador local, pois apenas o usuário anterior e o “sa” estão no grupo de administradores do SQL.

O SQL e o SQL Express têm um modo de execução chamada “Single User” que serve justamente para realizar reparos na instalação. Quando o SQL está rodando em modo “Single User”, todos os administradores locais são incluídos temporáriamente como administradores do banco de dados, mesmo que ele não esteja configurado assim. Isso torna possível conectar no banco e fazer as “correções” necessárias usando o usuário logado atualmente no computador.

Abaixo tem um passo a passo para realizar a correção e reassumir controle sobre o banco de dados.

  1. Obtenha o nome do serviço da instância do SQL que você deseja reparar. O serviço do SQL Server custuma se chamar MSSQLSERVER e o do SQL Express costuma se chamar MSSQL$SQLEXPRESS. Se você não tiver certeza, pode verificar o nome do serviço indo em “Painel de Controle > Ferramentas Administrativas > Serviços” e dando um duplo clique no serviço desejado você verá o nome dele:
    Gerenciador de Serviços do Windows, com o serviço Janela de propriedades do serviço
  2. Abra um prompt de comando em modo administrativo (“Run as Administrator” ou “Executar como Administrador”)
    Menu Iniciar, mostrando a opção Prompt de Comando aberto, mostrando que está sendo executado como Administrador
  3. Pare o serviço do SQL desejado executando o seguinte comando:
    NET STOP NomeDoServicoPasso1

    No meu caso, o nome do serviço seria MSSQL$SQLEXPRESS.


  4. Reinicie o serviço do SQL em modo Single User com o seguinte comando:
    NET START NomeDoServicoPasso1 /m

    A partir de agora só é possível conectar nesse banco de dados com o usuário atual.


  5. Conecte no banco de dados utilizando o SQL Server Management Studio, mas executando como Administrador do mesmo modo que foi feito com o prompt de comando. Isso é necessário pois o SQL está executando em modo Single User, então ele só aceitará conexões do usuário que iniciou o serviço.


    Menu Iniciar, mostrando o programa


  6. No SQL Server Management Studio, execute as alterações desejadas no servidor (ex.: alteração da senha do usuário “sa”, inclusão do seu usuário no grupo “sysadmin”, inclusão do grupo de administradores local como sysadmin no SQL, etc…). Depois de feitas as alterações, feche o SQL Server Management Studio.


  7. Pare o serviço do SQL novamente, usando o mesmo comando executado no passo 3.
    NET STOP NomeDoServicoPasso1



  8. Reinicie o serviço do SQL em modo normal, executando o mesmo comando do passo 4, mas sem o parâmetro /m no final.
    NET START NomeDoServicoPasso1



  9. Pronto, pode voltar a usar seu servidor de banco de dados normalmente.



Os passos acima podem ser feitos para qualquer versão e instância de SQL Server ou SQL Express e também funcionam em versões anteriores do SQL.

Tags: SQL Dicas