Fundamentos de segurança para desenvolvedores de sites e administradores

De todos os tópicos de tecnologia, a segurança é possivelmente a mais complexa e certamente a mais importante. Isso ocorre porque a segurança está sempre evoluindo. É uma evolução forçada, pois devemos nos adaptar às constantes ameaças emergentes.

Existem vários níveis de segurança pelos quais teremos responsabilidade. O primeiro nível é a nossa organização ou a organização para a qual trabalhamos. O segundo nível é nossos clientes. E o terceiro nível são os usuários dos sites ou aplicativos que desenvolvemos para nossos clientes.

Apesar de nossos melhores esforços, os clientes sempre encontrarão maneiras de minar as proteções que fornecemos a eles. Eles confiam em nós como profissionais de TI para ajudá-los a permanecer seguros, mas paradoxalmente também raramente siga o conselho de segurança nós fornecemos a eles. A maioria dos usuários realmente são seus piores inimigos.

O que precisamos fazer, então, é tornar o mais difícil possível para os clientes comprometerem sua própria segurança, ao mesmo tempo em que torna mais fácil para eles fazerem as tarefas que precisam fazer. Atingir os dois objetivos com perfeição pode ser impossível, mas neste artigo abordaremos algumas coisas que você pode fazer para reduzir os riscos de uma violação de segurança.

gif por Patswerk

Protegendo seus próprios dispositivos e dados

Você é a primeira linha de defesa para você e seus clientes. Se os seus sistemas estiverem comprometidos, todos os funcionários podem estar em risco. Aqui estão algumas recomendações para os mínimos que você pode fazer para evitar operar em um ambiente de risco aumentado:

  1. Use um sistema operacional de desktop seguro. Esta é a atualização mais básica que você pode fazer, se você ainda não estiver usando um sistema operacional seguro. Os sistemas operacionais mais seguros são Linux, Unix e BSD. Você deve estar usando um desses sistemas operacionais como seu sistema operacional de desktop principal.
    O bônus para desenvolvedores e administradores é que você tenha acesso a uma biblioteca muito maior de ferramentas gratuitas de desenvolvimento e segurança, e a maioria delas funciona melhor do que suas equivalentes no Windows ou OSX. Para realmente operar no modo paranóico, escolha as distros Linux mais seguras, como Papagaio, Qubese Tails.
  2. Mantenha a separação entre o sistema operacional e seus dados. Se você está rodando Linux ou Unix, isso é fácil. Você simplesmente se certifica de ter criado uma partição ou um disco rígido separado para hospedar sua partição inicial. Em seguida, todos os arquivos do usuário sobreviverão a qualquer número de instalações do sistema operacional e, como bônus, poderão ser acessados ​​a partir de vários sistemas operacionais em sistemas de inicialização múltipla.
  3. Use um sistema de arquivos de registro no diário para ajudar a evitar a perda de dados se o sistema travar ou for interrompido inesperadamente.
  4. Espelhe sua partição inicial. Faça backup regularmente de arquivos importantes e use o controle de versão de arquivos para evitar sobregravações não intencionais.
  5. Considere o uso do backup na nuvem (não confundir com a sincronização na nuvem, que nem de longe é tão segura quanto um backup genuíno). Dados confidenciais devem ser criptografados antes de serem enviados.
  6. Mantenha seu sistema atualizado, nunca ignorando os patches de segurança. Sistemas que usam atualizações contínuas têm a vantagem de que você sempre saberá quando os patches estão disponíveis, o que precisa ser corrigido e por quê.
  7. Treine pessoas em sua organização para estarem alertas aos métodos de engenharia social que podem ser usados ​​contra eles para obter acesso aos seus sistemas.
  8. Evite executar software de fontes não verificadas. Ao fazer o download de software de fontes confiáveis, verifique as assinaturas de arquivos para ter certeza de que você possui uma cópia autêntica.
  9. Mantenha a segurança física de seus computadores, especialmente ao viajar. Transportar seu laptop em qualquer lugar pode não ser prático, mas é melhor do que deixar empregada do mal corromper seu BIOS. Se não for realmente uma opção para transportar seu computador, prenda-o em um estojo com trava e proteja-o em um cofre ou de qualquer outra forma, da melhor maneira possível.
  10. Lembre-se sempre de que é melhor ser paranóico do que ser um idiota que foi hackeado.

ilustração por Criativo de pontos fantasmas

Protegendo clientes

Manter os clientes a salvo das ameaças de TI é difícil, porque nem todos entendem a escala da ameaça que eles enfrentam. Muitos também terão a opinião de que, se o site deles estiver comprometido, o problema será resolvê-lo, não o deles.

Muitos sites foram explorados durante anos sem que os proprietários do site estivessem cientes disso, porque a maioria dos ataques mal-intencionados contra sites não deveria permitir que sua presença fosse conhecida. Portanto, você não pode confiar nos clientes para informá-lo sobre problemas. Você precisará adotar uma abordagem proativa.

  1. Tente educar seus clientes sobre os riscos. A maior parte do problema é devido à ignorância de que existe algum risco a ser evitado.
  2. Informe aos clientes corporativos que a maior ameaça que eles enfrentarão é ameaças internas criados por seus próprios funcionários e contratados (geralmente inadvertidos, mas nem sempre). Além disso, certifique-se de que eles estejam cientes de problemas como engenharia social, navegação no ombro e mergulho no lixo.
  3. Mantenha os servidores corrigidos. Faça backups regulares.
  4. Procure por evidências de explorações de backdoors ou outras atividades maliciosas. Projetar a estrutura de arquivos e pastas para que o site seja o mais simples possível ajudará a facilitar a detecção. Saiba quais arquivos devem estar em cada pasta. Se você vir novos arquivos que não são familiares ou que parecem ter nomes gerados por computador, isso é um sinal vermelho sério.
  5. Saiba quais arquivos devem estar na pasta cgi-bin (para a maioria dos sites, que não serão arquivos), porque esse é um local favorito para armazenar programas maliciosos.
  6. Verifique periodicamente o arquivo htaccess para se certificar de que ele não foi adulterado.
  7. É improvável que o código que você escreve faça uso extensivo de cadeias de caracteres de codificação e decodificação ou que contenha conteúdo altamente criptografado. Se os arquivos PHP contiverem códigos incomuns, não é muito provável que sejam arquivos legítimos. Instruções de codificação de caracteres incomuns também são uma indicação. Não é provável que seus arquivos legítimos sejam codificados na codificação Windows-1251, por exemplo.
  8. Após confirmar uma violação, altere suas senhas. As permissões do arquivo de verificação estão definidas corretamente para todos os arquivos e pastas. Monitore sinais que o intruso retornou. Mesmo depois de mudar sua senha, os invasores podem entrar. Você precisa ter certeza de que não. Configure seu servidor para informá-lo por e-mail quando qualquer alteração for feita no servidor.
  9. Ajude seus usuários a escolher as senhas apropriadamente, explicando as regras para elas de uma forma que elas possam entender. É assim que a maioria das pessoas gosta de definir suas senhas: jenny23Esta é como os administradores de sistema geralmente os aconselham a definir suas senhas: n @ ^ 2z`jGAnd - o problema é que a primeira senha pode ser quebrada em segundos, enquanto a segunda senha pode ser quebrada Em algumas horas. Também não há nenhuma esperança de que o usuário se lembre da senha mais complexa. Aqui está um exemplo de senha que levaria várias vidas para decifrar e nunca poderia ser esquecida: Ialwaysfly @ 40,000feet - As características da senha acima incluem: Acima de 20 caracteres de comprimento, mistura de caracteres maiúsculos e minúsculos, inclui números e letras, inclui caracteres não alfanuméricos, facilmente memoráveis. Um exemplo semelhante pode ser:

    asImove ^ inlife, Iwillnever4getwhereIstartedHá realmente nenhum limite para o quão criativo você pode obter com senhas, e há muito mais vantagem com

    asImove ^ inlife, Iwillnever4getwhereIstarted comparado a n @ ^ 2z`jG. O primeiro exemplo (41 caracteres mistos) levaria até o final do tempo para quebrar e é fácil de lembrar, enquanto o segundo exemplo (8 caracteres mistos) pode ser quebrado em menos de seis horas e é quase impossível lembrar.Não pense que você pode apenas juntar palavras e tudo vai ficar bem, porque os hackers são para isso. Você ainda precisa misturar casos e usar caracteres não alfanuméricos, mas certamente comprimento é mais importante que complexidade como as coisas estão agora. Combinando ambos, você tem uma vantagem sobre aqueles que usam apenas um ou outro.

    A maioria dos ataques baseados em dicionários se concentra no inglês, porque é o idioma mais usado e a maioria dos melhores sites a serem atingidos (em termos do valor do que eles podem gerar) são sites gerenciados por pessoas que falam inglês. Se você conhece outro idioma, use-o ao criar suas senhas.

    Tão excelente quanto

    Assim como a vida não é tão perfeita quanto uma Mídia, a vida nunca trouxe uma certa resistência porque isso acrescenta mais uma camada de complexidade, forçando o cracker a recorrer à força bruta. Aprender outro idioma apenas para criar senhas melhores pode ser um pouco demais, então a outra coisa que você pode fazer é se tornar (ou ficar) muito ruim no inglês quando você cria uma frase-senha. Por exemplo:

    asImoov ^ inlyfIwillnevar4getwhereIstarted

    Para o final, você poderia usar palavras de língua estrangeira mal soletradas e substituir todas as vogais por vogais de Leet:

    4M3d1d4Qu3^3nL4V1d3,nunc40l1vd4r3d3dond3c0m3nc3

    Eu não sei sobre você, mas eu não teria paciência para digitar isso. Ainda assim, é uma senha muito segura e força o cracker a fazer uma quantidade insana de trabalho (para, então, descobrir que tudo o que acessaram é uma coleção de imagens de gatos)

  10. Certifique-se de que os clientes compreendam os perigos inerentes ao envio de informações confidenciais por email, Skype, etc.

gif por Hoang Nguyen

Uma nota especial para desenvolvedores

Uma mudança cultural rápida e fácil para os desenvolvedores adotarem, que evita inúmeras violações de segurança a cada ano, é simplesmente minimizar a cadeia de dependência externa de seus sites. Estamos conectando desnecessariamente a scripts hospedados de terceiros. Muitos desses scripts podem ter suas próprias dependências externas. Tudo por salvar alguns bytes.

Sempre que possível, devemos tentar hospedar todos os nossos roteiros. Um popular script hospedado por terceiros é um alvo tentador para um invasor, porque ao ganhar controle sobre o script, é possível executar exploits em milhares de computadores.

Observações finais

A segurança de computadores é um desafio que nunca acaba, e há muito dinheiro a ser feito em ambos os lados do desafio. As apostas são muito altas, e ninguém é completamente seguro, mesmo aqueles que acreditam não terem nada a esconder. Ganhar é principalmente uma questão de usar o bom senso e ficar alerta, nunca permitindo que você se torne complacente.

imagem de cabeçalho cortesia de Josh Warren

Bogdan Rancea

Bogdan é um membro fundador da Inspired Mag, acumulando quase 6 anos de experiência neste período. Em seu tempo livre, ele gosta de estudar música clássica e explorar artes visuais. Ele é muito obcecado com fixies também. Ele é dono do 5 já.