
Acho que muitas pessoas podem estar na minha situação. Viajo a negócios com um laptop. E preciso de acesso seguro aos arquivos do escritório (que no meu caso é minha casa).
A versão resumida da minha pergunta:
Como posso fazer SSH/SFTPrealmenteseguro quando apenas uma pessoa precisa se conectar ao servidor a partir de um laptop? Nessa situação, quais etapas especiais tornariam quase impossível para qualquer outra pessoa obter acesso on-line ao servidor?
Muito mais detalhes:
Eu uso o Ubuntu Linux no meu laptop (KDE) e no meu servidor doméstico/de escritório. A conectividade não é um problema. Posso conectar-me à conexão do meu telefone, se necessário. Preciso de acesso a um grande número de arquivos (cerca de 300 GB). Não preciso de todos eles de uma vez, mas não sei antecipadamente de quais arquivos posso precisar. Esses arquivos contêm informações confidenciais de clientes e informações pessoais, como números de cartão de crédito, portanto, devem ser seguros.
Diante disso, não quero armazenar todos esses arquivos no Dropbox ou Amazon AWS ou similar. De qualquer forma, eu não poderia justificar esse custo (o Dropbox nem publica preços para planos acima de 100 GB e a segurança é uma preocupação). No entanto, estou disposto a gastar algum dinheiro em uma solução adequada. Um serviço VPN, por exemplo, pode fazer parte da solução? Ou outros serviços comerciais? Já ouvi falar do PogoPlug, mas não sei se existe um serviço semelhante que possa resolver minhas preocupações de segurança.
Eu poderia copiar todos os meus arquivos para o meu laptop porque ele tem espaço. Mas então eu tenho que sincronizar entre meu computador doméstico e meu laptop e descobri no passado que não sou muito bom em fazer isso. E se meu laptop for perdido ou roubado, meus dados estarão nele. A unidade do laptop é um SSD e as soluções de criptografia para unidades SSD não são boas.
Portanto, parece melhor manter todos os meus dados no meu servidor de arquivos Linux (que é seguro em casa).
Essa é uma conclusão razoável ou qualquer coisa conectada à Internet é tão arriscada que eu deveria apenas copiar os dados para o laptop (e talvez substituir o SSD por um HDD, o que reduz a vida útil e o desempenho da bateria)?
Considero os riscos de perder um laptop maiores. Não sou um alvo óbvio de hackers online. Minha banda larga doméstica é a Internet a cabo e parece muito confiável. Então, quero saber a melhor maneira (razoável) de acessar com segurança meus dados (do meu laptop) enquanto estiver em trânsito.
Eu só preciso acessá-lo deste computador, embora eu possa me conectar pelo 3G/4G do meu telefone ou via WiFi ou banda larga de algum cliente, etc. Portanto, não saberei com antecedência qual endereço IP terei.
Estou inclinado a uma solução baseada em SSH e SFTP (ou similar). SSH/SFTP forneceria todas as funcionalidades que prevejo precisar. Gostaria de usar SFTP e Dolphin para navegar e baixar arquivos. Usarei o SSH e o terminal para qualquer outra coisa.
Meu servidor de arquivos Linux está configurado com OpenSSH. Acho que tenho o SSH relativamente seguro. Estou usando Denyhosts também. Mas quero dar vários passos adiante. Quero ter a chance de que qualquer pessoa possa entrar no meu servidor o mais próximo possível de zero, ao mesmo tempo que me permite obter acesso na estrada.
Não sou administrador de sistema, programador ou "superusuário" real. Tenho que passar a maior parte do meu tempo fazendo outras coisas. Já ouvi falar de "port knocking", mas nunca usei e não sei como implementá-lo (embora esteja disposto a aprender).
Já li vários artigos com títulos como:
- As 20 melhores práticas de segurança para servidores OpenSSH
- 20 dicas de segurança para reforço de servidor Linux
- Debian Linux interrompe ataques de hacking / cracking de usuários SSH com software DenyHosts
- mais...
Esses artigos mencionam coisas como
- Usar DenyHosts
- Defina a opção AllowUsers em /etc/ssh/sshd_config para permitir que apenas usuários específicos se conectem.
- Desative logins root via SSH.
- Use autenticação de chave pública e proíba login com senha
- e muito mais.
Estou fazendo todas as coisas acima (e mais algumas). Mas não implementei tudo o que li. Provavelmente não posso fazer isso.
Mas talvez haja algo ainda melhor que eu possa fazer na minha situação, porque só preciso de acesso de um único laptop. Sou apenas um usuário. Meu servidor não precisa estar acessível ao público em geral. Considerando todos esses fatos, espero poder obter aqui algumas sugestões que estejam dentro da minha capacidade de implementação e que aproveitem esses fatos para criar uma segurança muito melhor do que as sugestões de uso geral nos artigos acima.
Um exemplo é a batida na porta. Parece um ajuste perfeito para minha situação. O que mais existe nesse sentido?
Responder1
Não existe segurança perfeita. Cada opção de segurança é uma compensação. Pessoalmente, recomendo:
- Use DenyHosts para evitar força bruta, mas defina um valor de tempo limite razoável para não ficar bloqueado durante todo o tempo em que estiver na estrada. Isso definitivamente pode acontecer se você não tomar cuidado.
- Defina a opção AllowUsers
/etc/ssh/sshd_config
para permitir que apenas usuários específicos se conectem. - Desative logins root via SSH.
- Use a autenticação de chave pública do seu laptop.
- Use senhas de uso único, como OPIE ou OTPW, em qualquer terminal público.
- Nunca use sua senha root em um terminal público, mesmo em conjunto com sudo ou su.
Como alternativa, penso muito em unidades criptografadas portáteis com um PIN-pad, como as unidades Apricorn Aegis Padlock. Eles são muito portáteis, razoavelmente seguros contra a maioria dos modelos de ameaças, e os maiores riscos são esquecer seu PIN ou perder as unidades durante uma viagem – mas em ambos os casos, você ainda tem os arquivos originais em segurança em casa.
Se preferir uma alternativa gratuita, você pode usar encfs, ecryptfs ou similar para criar montagens criptografadas para armazenar seus dados confidenciais. Você pode perder os dados junto com o laptop, ou alguém pode adulterar seu kernel, bootloader ou hardware para instalar um keylogger enquanto ele estiver fora de sua vista, mas isso não parece ser o seu modelo de ameaça atual, e montagens criptografadas devem servir seus propósitos estão bem. Não considero esta opção tão segura quanto o PIN-pad, mas ainda é uma escolha bastante sólida.
Basicamente, a menos que você realmente sinta que precisa doServiçosfornecido por um sistema remoto, recomendo apenas trazer seus arquivos para um contêiner tão seguro quanto você achar necessário. Você pode então usar rsync, conduit ou unison quando chegar em casa para sincronizar seus arquivos ou apenas copiar os arquivos atualizados de volta para o sistema principal.
Realmente não existe uma resposta "tamanho único" para sua pergunta. Espero que isto ajude.
Responder2
Vou propor a batida de porta como a resposta sobre como chegar ao próximo nível de segurança além do fortalecimento SSH padrão que já está sendo feito neste caso. As outras respostas que propõem o fortalecimento SSH padrão ignoram o fato de que essas etapas já foram tomadas. Esta questão é sobre ir além do fortalecimento do SSH.
De acordo com a Wikipédia,
Considere que, se um invasor externo não conhecesse a sequência de batida na porta, mesmo a sequência mais simples exigiria um enorme esforço de força bruta para ser descoberta. Uma sequência TCP simples de três batidas (por exemplo, porta 1000, 2000, 3000) exigiria que um invasor sem conhecimento prévio da sequência testasse cada combinação de três portas no intervalo 1-65535 e, em seguida, verificasse cada porta intermediária para ver se alguma coisa tivesse aberto. Como um sistema stateful, a porta não abriria até que a sequência correta de três dígitos fosse recebida em ordem, sem outros pacotes entre eles.
Isso equivale a um máximo de 655.363 pacotes para obter e detectar uma única abertura bem-sucedida, no pior cenário. São 281.474.976.710.656 ou mais de 281 trilhões de pacotes. Em média, uma tentativa levaria aproximadamente 9,2 quintilhões de pacotes para abrir com êxito uma única batida simples de três portas somente TCP por força bruta. Isso se torna ainda mais impraticável quando a limitação de tentativa de knock é usada para impedir ataques de força bruta, sequências mais longas e complexas são usadas e hashes criptográficos são usados como parte do knock.
Bater em portas tem algumas limitações (por exemplo, é um segredo compartilhado). Mas, como afirmado na pergunta, esta é uma solução paraumpessoa. Portanto, bater portas no reforço SSH existente (e denyhosts e outras coisas) é uma etapa simples e eficaz para levar a segurança ao próximo nível.
O amplo uso dos utilitários Port Knocker é uma questão controversa entre os especialistas em segurança, mas esta questão é um caso clássico de quando o Port Knocking pode ser usado com grande eficácia.
Claro, usar port knocking implica usar iptables também. Portanto, chegar à próxima etapa, que é a questão aqui, requer estas duas etapas:
usar iptables
usar batida na porta
Esta é a implementação específica de porta que eu gosto:
http://www.portknocking.org/view/implementations
Existem clientes para muitos sistemas populares, incluindo Android.
Referências:
- Histórico de batidas na porta: http://www.portknocking.org/
- http://en.wikipedia.org/wiki/Port_knocking
Responder3
Proteja seus arquivos.
Criptografe-os antes de sair. Em seguida, configure seu servidor ssh para acessar seu servidor remotamente, use chaves em vez de senhas para seu servidor ssh. Baixe seu arquivo criptografado, corte a conexão e descriptografe seu arquivo. Não importa o que você use, você terá que entender que tudo que você usa pode e será hackeado em algum momento, então você deve dissuadir o homem do risco aceitável para você.
Por exemplo, se você possui um produto Apple, provavelmente possui um root kit instalado de fábrica; a mesma coisa com Dell, HP, ASUS, todos eles. Eles funcionam apenas no OS X e Windows XP e versões mais recentes. Então,usarLinux.
Responder4
Eu uso o Ubuntu Linux no meu laptop (KDE) e no meu servidor doméstico/de escritório. A conectividade não é um problema. Posso conectar-me à conexão do meu telefone, se necessário. Preciso de acesso a um grande número de arquivos (cerca de 300 GB). Não preciso de todos eles de uma vez, mas não sei antecipadamente de quais arquivos posso precisar. Esses arquivos contêm informações confidenciais de clientes e informações pessoais, como números de cartão de crédito, portanto, devem ser seguros.
Você entende que usar a conexão 3G/4G do seu telefone não é seguro, certo? A companhia telefônica tem a capacidade (sem dúvida) de visualizar todo o seu tráfego de Internet. Agora, o tráfego da Internet pode ser seguro, mas poderia, em teoria, realizar um ataque Man in the Middle em você. Se você usa uma conexão 3G/4G, você vai querer usar uma VPN antes de enviar qualquer conteúdo por meio de outra conexão segura.
Diante disso, não quero armazenar todos esses arquivos no Dropbox ou Amazon AWS ou similar. De qualquer forma, eu não poderia justificar esse custo (o Dropbox nem publica preços para planos acima de 100 GB e a segurança é uma preocupação). No entanto, estou disposto a gastar algum dinheiro em uma solução adequada. Um serviço VPN, por exemplo, pode fazer parte da solução? Ou outros serviços comerciais? Já ouvi falar do PogoPlug, mas não sei se existe um serviço semelhante que possa resolver minhas preocupações de segurança.
Além disso, quaisquer arquivos que contenham PII e/ou informações confidenciais do cliente devem ser criptografados. Você não está fazendo nenhum favor a seus clientes ao não criptografar esses arquivos e QUALQUER mídia de armazenamento que contenha esses arquivos. TODAS as cópias devem ser criptografadas.
Portanto, usar um serviço em nuvem é realmente uma solução, desde que todas as suas informações sejam criptografadas antes do upload, sua única preocupação seria realmente a retenção a longo prazo. O armazenamento em nuvem deve ser usado, você também deve ter suas próprias cópias locais e remotas, dependendo da quantidade de armazenamento com a qual você realmente está lidando.
Além disso... Se você realmente está lidando com 300 GB de dados, uma conexão 3G/4G realmente não será suficiente.
Eu poderia copiar todos os meus arquivos para o meu laptop porque ele tem espaço. Mas então eu tenho que sincronizar entre meu computador doméstico e meu laptop e descobri no passado que não sou muito bom em fazer isso. E se meu laptop for perdido ou roubado, meus dados estarão nele. A unidade do laptop é um SSD e as soluções de criptografia para unidades SSD não são boas.
Qualquer um que diga que um dispositivo SSD criptografado não é 100% seguro, desde que seja feito ANTES de qualquer dado ser colocado nele, é um completo e total idiota e você nunca mais deve aceitar conselhos técnicos deles.
Essa é uma conclusão razoável ou qualquer coisa conectada à Internet é tão arriscada que eu deveria apenas copiar os dados para o laptop (e talvez substituir o SSD por um HDD, o que reduz a vida útil e o desempenho da bateria)?
Parece que você deveria criar uma rotina que sincronize todos os seus dispositivos de armazenamento. Existem soluções....
I view the risks of losing a laptop to be higher. I am not an obvious hacking target online. My home broadband is cable Internet, and it seems very reliable. So I want to know the best (reasonable) way to securely access my data (from my laptop) while on the road.
Se o dispositivo de armazenamento do seu laptop estiver criptografado e você criptografar os arquivos, tudo o que alguém terá é um laptop com bytes aleatórios.
Eu só preciso acessá-lo deste computador, embora eu possa me conectar pelo 3G/4G do meu telefone ou via WiFi ou banda larga de algum cliente, etc. Portanto, não saberei com antecedência qual endereço IP terei.
Eu usaria um serviço VPN de terceiros, que permitiria colocar um endereço IP específico na lista de permissões, o que permitiria que você sempre tivesse exatamente o mesmo endereço IP. O uso de uma senha aleatória longa e segura, dados criptografados e mídia de armazenamento criptografada, torna seus dados 100% seguros. Os dados criptografados são apenas bytes aleatórios.
A menos que você armazene os arquivos criptografados no servidor, tudo o que você fizer será menos seguro do que uma solução remota em nuvem. Amazon e Dropbox gastam milhões para proteger seus servidores, sendo você um único usuário, provavelmente não instalará todas as atualizações do kernel lançadas.
Além disso, parece que você deveria se concentrar em seus clientes, fazendo o que faz, e depois se preocupar com a segurança de um servidor Linux doméstico que não é tão seguro quanto Amazon e Dropbox.