A maneira mais segura de acessar meu servidor Linux doméstico enquanto estou na estrada? Solução especializada queria

3

Eu acho que muitas pessoas podem estar na minha situação. Eu viajo a negócios com um laptop. E eu preciso de acesso seguro aos arquivos do escritório (que no meu caso é minha casa).

A versão curta da minha pergunta:

Como posso tornar o SSH / SFTP realmente seguro quando apenas uma pessoa precisa se conectar ao servidor a partir de um laptop? Nessa situação, que 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 de casa / escritório. Conectividade não é um problema. Eu posso ligar a conexão do meu telefone, se necessário. Eu preciso acessar um grande número de arquivos (cerca de 300 GB). Eu não preciso de todos eles de uma só vez, mas não sei de antemão quais arquivos eu posso precisar. Esses arquivos contêm informações confidenciais do cliente e informações pessoais, como números de cartão de crédito, portanto, devem ser seguros.

Por isso, não quero armazenar todos esses arquivos no Dropbox ou no Amazon AWS ou semelhante. Eu não poderia justificar esse custo de qualquer maneira (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 de VPN, por exemplo, pode fazer parte da solução? Ou outros serviços comerciais? Eu ouvi falar sobre o PogoPlug, mas não sei se existe um serviço similar que possa resolver meus problemas 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 de casa 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 de 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).

Isso é uma conclusão razoável, ou qualquer coisa conectada à Internet é um risco de copiar os dados para o laptop (e talvez substituir o SSD por um disco rígido, o que reduz a duração da bateria e o desempenho)?

Eu vejo que os riscos de perder um laptop são maiores. Eu não sou um alvo de hackers óbvio online. Minha banda larga em casa é a Internet a cabo, e parece muito confiável. Por isso, quero saber qual é 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 do 3G / 4G do meu telefone ou via Wi-Fi ou banda larga de algum cliente, etc. Então, eu não vou saber de antemão qual endereço IP eu vou ter .

Estou me inclinando para uma solução baseada em SSH e SFTP (ou similar). O SSH / SFTP forneceria todas as funcionalidades que eu esperava. Eu gostaria de usar SFTP e Dolphin para navegar e baixar arquivos. Vou usar o SSH e o terminal para qualquer outra coisa.

Meu servidor de arquivos Linux está configurado com o OpenSSH. Eu acho que tenho SSH relativamente seguro. Estou usando o Denyhosts também. Mas eu quero ir mais longe. Eu quero ter as chances de que qualquer pessoa possa entrar no meu servidor o mais próximo possível de zero enquanto ainda me permite obter acesso da estrada.

Eu não sou um administrador de sistemas ou programador ou um "superusuário" real. Eu tenho que passar a maior parte do meu tempo fazendo outras coisas. Ouvi falar de "port knocking", mas nunca usei e não sei como implementá-lo (embora esteja disposto a aprender).

Eu já li vários artigos com títulos como:

  • Melhores práticas de segurança do 20 servidor OpenSSH
  • 20 Dicas de segurança para proteção do servidor Linux
  • Linux Linux Stop SSH Hacking / Ataques de cracking com o software DenyHosts
  • mais ...

Esses artigos mencionam coisas como

  • Use DenyHosts
  • Defina a opção AllowUsers em / etc / ssh / sshd_config para permitir que somente usuários específicos se conectem.
  • Desativar logins root via SSH.
  • Use a autenticação de chave pública e desative o login de senha
  • e muito mais.

Estou fazendo todas as coisas acima (e mais algumas). Mas eu não implementei todas as coisas sobre as quais li. Eu provavelmente não posso fazer isso.

Mas talvez haja algo ainda melhor que eu possa fazer na minha situação, porque eu só preciso acessar de um único laptop. Eu sou apenas um usuário. Meu servidor não precisa estar acessível ao público em geral. Tendo em conta todos estes factos, espero poder obter aqui algumas sugestões que estejam na minha capacidade de implementar e que aproveitem estes factos para criar uma segurança muito melhor do que as sugestões de finalidade geral nos artigos acima.

Um exemplo é a porta batendo. Isso parece um ajuste perfeito para a minha situação. O que mais há ao longo destas linhas?

    
por Ace Paus 11.04.2012 / 22:37

5 respostas

3

Não existe segurança perfeita. Todas as opções de segurança são um trade-off. Pessoalmente, eu recomendo:

  1. Use o DenyHosts para evitar a força bruta, mas defina um valor de tempo limite sensato para que você não fique bloqueado durante todo o tempo em que estiver na estrada. Isso definitivamente pode acontecer se você não for cuidadoso.
  2. Defina a opção AllowUsers em /etc/ssh/sshd_config para permitir que apenas usuários específicos se conectem.
  3. Desativar logins root via SSH.
  4. Use a autenticação de chave pública do seu laptop.
  5. Use senhas de uso único, como OPIE ou OTPW, em qualquer terminal público.
  6. Nunca use sua senha root de um terminal público, mesmo em conjunto com sudo ou su.

Alternativamente, penso muito em unidades portáteis criptografadas com um teclado PIN, como os drives 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 você preferir uma alternativa gratuita, poderá usar encfs, ecryptfs ou semelhantes para criar montagens criptografadas para armazenar seus dados confidenciais. Você pode perder os dados junto com o laptop, ou alguém pode mexer com seu kernel, bootloader ou hardware para instalar um keylogger enquanto ele está fora de sua vista, mas isso não soa como seu modelo de ameaça atual e as montagens criptografadas devem servir seus propósitos muito bem. Eu não considero essa 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 dos serviços fornecidos por um sistema remoto, recomendo apenas colocar seus arquivos em um contêiner tão seguro quanto achar necessário. Você pode então usar rsync, conduit ou unison quando chegar em casa para sincronizar seus arquivos, ou simplesmente copiar seus arquivos atualizados de volta para o seu sistema principal.

Não há realmente uma resposta "tamanho único" para sua pergunta. Espero que isso ajude.

    
por 11.04.2012 / 23:57
0

Proteja seus arquivos.

Criptografe-os antes de sair. Em seguida, configure seu servidor ssh para acessar seu servidor remotamente usando chaves versus senhas para o seu servidor ssh. Baixe o seu arquivo criptografado, corte a conexão e descriptografe seu arquivo. Não importa o que você usa, você terá que entender que tudo que você usa, pode e será hackeado em algum momento, então você tem que dissuadir o homem do risco aceitável para você.

Por exemplo, se você tem um produto Apple, você provavelmente tem um kit raiz instalado de fábrica; mesma coisa com a Dell, HP, ASUS, todos eles. Eles só funcionam no OS X e no Windows XP e mais recentes. Então, use o Linux.

    
por 12.04.2012 / 00:42
0

Eu não sou especialista nisso ... mas aqui está o que meu cérebro gerou:

Eu instalaria um servidor VPN no servidor, que estaria acima do SSH. Então, primeiro você precisaria do seu laptop para se conectar através da VPN para obter acesso ao SSH do servidor.

Outro passo é configurar o servidor para aceitar conexões de entrada apenas do IP da VPN fornecido ao seu laptop.

Outra coisa seria obter um modem USB e falar com seu ISP para fornecer um IP estático ao dispositivo. Dessa forma, você também pode controlar a conexão de entrada do servidor VPN.

Use senhas muito longas. Senhas longas, mesmo com caracteres básicos, são melhores que pequenas senhas com caracteres especiais. Tempo de decriptação, digamos, aumente exponencialmente com o número de caracteres, não com o número de caracteres diferentes.

Como alternativa ao SFTP, você pode usar o WebDAV, que é um protocolo sobre HTTP (s), portanto, é tão seguro quanto um SFTP, depende do certificado gerado.

Falando nisso, gere certificados de encriptação alta (1024 bits) para SSH e SFTP / WebDAV.

Faça o seu laptop bloquear depois de alguns momentos de não ser usado, para que os ladrões não recebam informações em tempo real. No OS X há uma opção de limpeza remota, se o computador for roubado, mas envolve servidores da Apple, eu acho. Eu não sei se existe tal solução para o Linux, mas você poderia pesquisar um pouco sobre isso. Definir os clientes desabilitar todos os recursos do histórico. De qualquer forma, se o seu laptop for roubado, o mais importante é desabilitar o acesso dele ao servidor, cancelando os endereços aceitos e alterando as senhas e os certificados.

Misture login baseado em certificado com login de senhas (não sei exatamente como é feito), como em alguns sistemas de bancos (em que você tem uma parte da chave armazenada em seu computador e, com isso, acessa o serviço, e, em seguida, faça o login com uma senha) ou em VPNs corporativas.

Agora estou ficando paranóico: instale também um sistema de login baseado em um gerador de chave móvel, como os usados pela Blizzard no BattleNet ou no Banks. (muita pesquisa a ser feita aqui)

Altere as portas padrão do seu servidor VPN / SSH / WebDAV. Bloqueie qualquer outra porta de escuta por meio de um firewall.

Desative os usuários padrão dos servidores de aplicativos usados como administradores e convidados e crie novos.

OK, meu cérebro retornou o Stack Overflow por enquanto. :)

Faça a mesma pergunta aqui: link

Lembre-se de uma coisa: um hacker altamente motivado pode entrar em qualquer sistema.

    
por 11.04.2012 / 23:37
0

Eu vou propor a porta batendo como a resposta para como chegar ao próximo nível de segurança além do endurecimento SSH padrão que já está sendo feito neste caso. As outras respostas que propõem o endurecimento padrão do SSH estão ignorando o fato de que essas etapas já foram tomadas. Esta questão é sobre ir além do endurecimento do SSH.

De acordo com a Wikipedia,

Consider that, if an external attacker did not know the port knock sequence, even the simplest of sequences would require a massive brute force effort in order to be discovered. A three-knock simple TCP sequence (e.g. port 1000, 2000, 3000) would require an attacker without prior knowledge of the sequence to test every combination of three ports in the range 1-65535, and then to scan each port in between to see if anything had opened. As a stateful system, the port would not open until after the correct three-digit sequence had been received in order, without other packets in between.

That equates to a maximum of 655363 packets in order to obtain and detect a single successful opening, in the worst case scenario. That's 281,474,976,710,656 or over 281 trillion packets. On average, an attempt would take approximately 9.2 quintillion packets to successfully open a single, simple three-port TCP-only knock by brute force. This is made even more impractical when knock attempt-limiting is used to stop brute force attacks, longer and more complex sequences are used, and cryptographic hashes are used as part of the knock.

Port knocking tem algumas limitações (por exemplo, é um segredo compartilhado). Mas, como afirmado na pergunta, esta é uma solução para uma pessoa. Portanto, a porta batendo em cima do endurecimento SSH existente (e denyhosts e outras coisas) é um passo efetivo e simples para levar a segurança ao próximo nível.

O amplo uso dos utilitários do Port Knocker é motivo de controvérsia entre os especialistas em segurança, mas essa questão é um caso de livro-texto de quando o Port Knocking pode ser usado com grande eficácia.

Naturalmente, usar batida de porta implica em usar o iptables também. Então, chegar ao próximo passo, que é a questão aqui, requer essas duas etapas:

  1. use iptables

  2. use batida de porta

Esta é a implementação específica de portas que eu gosto: link
Existem clientes para muitos sistemas populares, incluindo o Android.

Referências:

por 12.04.2012 / 18:03
0

I use Ubuntu Linux on both my laptop (KDE) and my home/office server. Connectivity is not a problem. I can tether to my phone's connection if needed. I need access to a large number of files (around 300 GB). I don't need all of them at once, but I don't know in advance which files I might need. These files contain confidential client info and personal info such as credit card numbers, so they must be secure.

Você entende que o uso da 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 na Internet. Agora, o tráfego da Internet pode ser seguro, mas poderia, em teoria, executar um ataque Man in the Middle em você. Se você usa uma conexão 3G / 4G, você desejará usar uma VPN antes de fazer upload de qualquer conteúdo por meio de outra conexão segura.

Given this, I don't want store all these files on Dropbox or Amazon AWS, or similar. I couldn't justify that cost anyway (Dropbox don't even publish prices for plans above 100 GB, and security is a concern). However, I am willing to spend some money on a proper solution. A VPN service, for example, might be part of the solution? Or other commercial services? I've heard about PogoPlug, but I don't know if there is a similar service that might address my security concerns?

Além disso, quaisquer arquivos que contenham PII e / ou informações confidenciais de clientes devem ser criptografados. Você não está fazendo nenhum favor a seus clientes por 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 capacidade de retenção a longo prazo. Armazenamento em nuvem deve ser usado, você também deve ter suas próprias cópias locais e remotas, dependendo de quanto armazenamento você realmente está lidando.

Futhermore ... Se você realmente está lidando com 300 GB de dados, uma conexão 3G / 4G realmente não vai funcionar.

I could copy all my files to my laptop because it has the space. But then I have to sync between my home computer and my laptop and I found in the past that I'm not very good about doing this. And if my laptop is lost or stolen, my data would be on it. The laptop drive is an SSD and encryption solutions for SSD drives are not good.

Qualquer pessoa que afirme que um dispositivo SSD criptografado não é 100% seguro, desde que seja feito ANTES de qualquer dado ser colocado nele, é um idiota completo e completo e você não deve receber conselhos técnicos deles nunca mais.

Is that a reasonable conclusion, or is anything connected to the Internet such a risk that I should just copy the data to the laptop (and maybe replace the SSD with an HDD, which reduces battery life and performance)?

Parece que você deve 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 seu dispositivo de armazenamento de laptops estiver criptografado, e você criptografar os arquivos, então todos os usuários terão um laptop com bytes aleatórios.

I only need to access it from this one computer, although I may connect from either my phone's 3G/4G or via WiFi or some client's broadband, etc. So I won't know in advance which IP address I'll have.

Eu usaria um serviço de VPN de terceiros, que permitiria whitelist um endereço IP específico, isso permitiria que você sempre tenha exatamente o mesmo endereço IP. O uso de uma senha aleatória longa e segura, criptografando dados e criptografando a mídia de armazenamento, torna seus dados 100% seguros. Dados criptografados são apenas bytes aleatórios.

A menos que você armazene os arquivos criptografados no servidor, tudo o que fizer será menos seguro e, em seguida, uma solução de nuvem remota. A Amazon e o Dropbox gastam milhões para proteger seus servidores, sendo você um usuário único, provavelmente não instalará todas as atualizações do kernal lançadas.

Além disso, parece que você deve se concentrar em seus clientes, fazendo o que você faz, então se preocupe com a segurança de um servidor linux doméstico que não é tão seguro quanto o Amazon e o Dropbox.

    
por 12.04.2012 / 18:29