Como a capacidade de uma pessoa que obteve acesso físico ao seu computador para obter root [usando o Grub / Bash] de alguma forma segura?
Porque se o Linux decidisse começar a fazer isso, os hackers apenas explorariam outras falhas de segurança. A primeira regra de segurança é que se eu tiver acesso físico ao seu sistema, é game over. Eu ganhei.
Além disso, imagine o seu servidor X quebrado e você não tem mais uma GUI. Você precisa inicializar em um console de recuperação para consertar as coisas, mas você não pode, porque isso é inseguro. Nesse caso, você fica com um sistema totalmente quebrado, mas, pelo menos, é "seguro!"
Mas Kaz, como isso é possível? Eu configurei uma senha no meu Grub para que você não possa alterar meu
init
para Bash!
Oh, você fez, não é? Interessante, porque isso parece com o seu álbum de fotos. O GRUB não possui nenhum fator de segurança inerente. É apenas um bootloader , não um passo em alguma cadeia de inicialização e autenticação segura. A "senha" que você configurou é, na verdade, muito fácil ignorar.
Isso, e qual sysadmin não carrega uma unidade de inicialização para emergências?
Mas como ?! Você não sabe minha senha (que não é totalmente
P@ssw0rd
btw)
Sim, mas isso não me impede de abrir seu computador e retirar seu disco rígido. A partir daí, são alguns passos simples para montar a sua unidade no meu computador, dando-me acesso a todo o seu sistema. Isso também tem o incrível benefício de contornar sua senha da BIOS. Isso, ou eu poderia ter apenas redefinir seu CMOS. Ou / ou.
Então ... como eu não deixo você acessar meus dados?
Simples. Mantenha seu computador longe de mim. Se eu puder tocá-lo, acessar um teclado, inserir meus próprios flash drives ou desmontá-lo, posso ganhar.
Então, posso apenas colocar meu computador em um datacenter ou algo assim? Essas são bem seguras, né?
Sim, eles são. Mas, você está esquecendo que os seres humanos também podem ser hackeados, e com tempo e preparo suficientes, eu provavelmente poderia entrar naquele datacenter e extrair todos os dados doces do seu computador. Mas eu divago. Estamos lidando com as soluções real aqui.
Ok, você chamou meu blefe. Eu não posso colocá-lo em um datacenter. Posso apenas criptografar minha pasta pessoal ou algo assim?
Claro, você pode! É o seu computador! Isso ajudará a me parar? Não no menor. Eu posso apenas substituir algo importante, como /usr/bin/firefox
com meu próprio programa malicioso. Da próxima vez que você abrir o Firefox, todos os seus dados secretos serão desviados para algum servidor secreto em algum lugar secreto. E você nem vai saber. Ou, se eu tiver acesso freqüente à sua máquina, posso simplesmente configurar sua pasta pessoal para ser copiada para /usr/share/nonsecrets/home/
ou qualquer outro local semelhante (não criptografado).
Ok, e a criptografia completa do disco?
Isso é realmente muito bom. No entanto, ainda não é perfeito! Eu sempre posso executar um Cold Boot Attack usando minha fiel lata de ar comprimido. Ou posso apenas conectar um keylogger de hardware ao seu computador. Um é obviamente mais fácil que o outro, mas o caminho não importa realmente.
Na maioria dos vastos casos, este é um bom ponto de parada. Talvez parear com TPM (discutido abaixo), e você é de ouro. A menos que você tenha irritado uma agência de três letras ou um hacker motivado muito , ninguém vai passar pelo esforço exigido após esse estágio.
É claro que ainda posso fazer com que você instale alguns malwares / backdoors oferecendo a você um PPA ou similar, mas isso entra na área muito obscura da confiança do usuário.
Então ... como os iPhones são tão seguros? Mesmo com acesso físico, não há muito o que fazer.
Bem, sim e não. Quero dizer, se eu estivesse motivado o suficiente, eu poderia ler o chip flash e conseguir tudo que eu preciso. Mas, os iPhones são fundamentalmente diferentes na medida em que são uma plataforma totalmente bloqueada. Mas, ao mesmo tempo, você realmente sacrifica a usabilidade e a capacidade de se recuperar de falhas catastróficas. O GRUB (exceto quando projetado especificamente) não é para ser uma cadeia em um sistema de segurança. Na verdade, a maioria dos sistemas Linux tem suas cadeias de segurança iniciando após a inicialização, portanto, depois que o GRUB terminar de fazer sua parte.
Além disso, os iPhones têm aplicação de assinatura criptográfica (também discutida abaixo), o que dificulta bastante a entrada de malware em seu telefone por meio de caminhos legítimos.
Mas e o TPM / SmartCards / [insira a tecnologia de criptografia aqui]?
Bem, agora você está associando a segurança física à equação, isso se torna ainda mais complicado. Mas, isso não é realmente uma solução porque os TPMs são relativamente fracos e toda a criptografia não ocorre no chip.Se o seu TPM for (de alguma forma) suficientemente strong onde ele faz criptografia no próprio chip (alguns discos rígidos muito sofisticados têm algo assim), a chave nunca será revelada e coisas como ataques de inicialização a frio são impossíveis. No entanto, as chaves (ou os dados brutos) ainda podem estar presentes no barramento do sistema, o que significa que podem ser interceptadas.
Mesmo assim, meu keylogger de hardware ainda pode obter sua senha, e eu posso carregar facilmente alguns malwares em sua máquina, como a exploração do Firefox que mencionei anteriormente. Tudo o que preciso é que você deixe sua casa / computador por talvez uma hora.
Agora, se você pegar seu TPM / smartcard / qualquer coisa com você, e toda a criptografia for realmente feita no chip (significando que sua chave não está armazenada na RAM), então é praticamente impossível para mim entrar, a menos que você (o usuário) escorregue e esqueça alguma coisa. Ou seja, a menos que eu encontre alguma maneira de ler a chave (não criptografada) do barramento do sistema.
Mas e se eu tiver algum tipo de aplicação de assinatura criptográfica / digital em todos os meus programas para garantir que eles sejam legítimos?
Como demonstrado por várias empresas de smartphones, essa é uma boa maneira de lidar com a segurança. Você agora anulou minha capacidade de injetar algum código em sua máquina para fazer coisas nefastas, o que é uma vantagem. Efetivamente, você desativou minha capacidade de manter o acesso persistente à sua máquina remotamente, o que é uma grande vantagem.
No entanto, isso ainda não é um método perfeito! A aplicação de assinaturas digitais não irá parar um keylogger de hardware, por exemplo. Ele também precisa estar completamente livre de bugs, o que significa que não há nenhuma maneira de encontrar uma exploração que me permita carregar meu próprio certificado no armazenamento de certificados da sua máquina. Além disso, isso significa que todos os executáveis do seu sistema precisam ser assinados. A menos que você queira passar manualmente e fazer tudo isso, será muito difícil encontrar pacotes do Apt e coisas do tipo que tenham assinaturas digitais em tudo. De maneira semelhante, isso bloqueia os usos legítimos de executáveis não assinados, ou seja, recuperação. E se você quebrar algo importante e não tiver o executável (assinado) para corrigi-lo? Bem, lá vai o seu sistema.
De qualquer forma, um esforço para fazer isso no Linux foi praticamente abandonado e não funciona mais para novos kernels , então você precisa criar o seu próprio.
Então, é impossível mantê-lo fora do meu computador?
Efetivamente, sim, desculpe. Se eu tiver acesso físico e motivação suficiente, é sempre possível entrar em um sistema. Sem exceções.
Na realidade, porém, a maioria das pessoas más não tenta ir tão longe apenas para algumas fotos de gatos. Normalmente, apenas a criptografia de disco completo (ou até mesmo a execução do Linux!) É suficiente para impedir que a maioria das crianças de script tenha seus dois segundos de fama.
TL; DR: Apenas não permita que pessoas que você não confie perto do seu computador. Isso é bom o suficiente.