Como é segura a capacidade de uma pessoa que obteve acesso físico ao seu computador para obter root [usando o Grub / Bash]?
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, o jogo terminará. Eu ganhei.
Além disso, imagine que seu servidor X quebrou e você não tem mais uma GUI. Você precisa inicializar em um console de recuperação para consertar as coisas, mas 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? Defino uma senha no meu Grub para que você não possa mudar init
para Bash!
Ah, você fez, não é? Interessante, porque parece o seu álbum de fotos. O GRUB não possui nenhum fator de segurança inerente. É apenas um gerenciador de inicialização , não um passo em uma cadeia segura de inicialização e autenticação. A "senha" que você configurou é, de fato, bastante fácil de ignorar.
Isso e que sysadmin não carrega um drive 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 o computador e retirar o disco rígido. A partir daí, são algumas etapas simples para montar sua unidade no meu computador, fornecendo acesso a todo o seu sistema. Isso também tem o incrível benefício de ignorar sua senha do BIOS. Isso, ou eu poderia ter acabado de redefinir seu CMOS. Ou.
Então ... como eu não permito que você tenha acesso aos meus dados?
Simples. Mantenha seu computador longe de mim. Se eu conseguir tocá-lo, acessar um teclado, inserir minhas próprias unidades flash ou desmontá-lo, posso ganhar.
Então, posso colocar meu computador em um datacenter ou algo assim? Esses são bem seguros, certo?
Sim, eles são. Mas, você está esquecendo que os humanos também podem ser hackeados e, com tempo e preparação suficientes, eu provavelmente poderia entrar no datacenter e desviar todos esses dados doces do seu computador. Mas eu discordo. Estamos lidando com soluções reais aqui.
Ok, então você chamou meu blefe. Não posso colocá-lo em um datacenter. Posso apenas criptografar minha pasta pessoal ou algo assim?
Certamente você pode! É o seu computador! Isso vai me ajudar a parar? Nem um pouco. Só posso substituir algo importante, como /usr/bin/firefox
por 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 frequente à sua máquina, basta configurar sua pasta pessoal para ser copiada /usr/share/nonsecrets/home/
ou em qualquer local semelhante (não criptografado).
Ok, e a criptografia de disco completo?
Isso é realmente muito bom. No entanto, ainda não é perfeito! Sempre posso realizar um ataque de inicialização a frio usando minha confiável lata de ar comprimido. Ou, basta conectar um keylogger de hardware ao seu computador. Um é obviamente mais fácil que o outro, mas o caminho realmente não importa.
Na grande maioria dos casos, este é um bom ponto de parada. Talvez emparelhe-o com o TPM (discutido abaixo), e você estará de ouro. A menos que você tenha irritado uma agência de três letras ou um hacker muito motivado, ninguém vai passar pelo esforço necessário após este estágio.
Obviamente, ainda posso instalar alguns malwares / backdoors oferecendo um PPA ou similar, mas isso entra na área bastante 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 que você possa fazer.
Bem, sim e não. Quero dizer, se estivesse motivado o suficiente, poderia ler o chip flash e obter tudo o que precisava. Mas, os iPhones são fundamentalmente diferentes, pois 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 deve ser uma cadeia em um sistema de segurança. De fato, a maioria dos sistemas Linux tem suas cadeias de segurança iniciadas após a inicialização, portanto, depois que o GRUB termina de fazer suas coisas.
Além disso, iPhones têm aplicação criptográfica de assinatura (também discutido abaixo), o que torna muito difícil para o malware a esgueirar-se para o seu telefone através de vias legítimas.
Mas e o TPM / SmartCards / [insira a tecnologia de criptografia aqui]?
Bem, agora você está associando segurança física à equação, ainda mais complicada. Porém, 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) forte o suficiente para criptografar o próprio chip (alguns discos rígidos sofisticados têm algo parecido com isso), 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 receber sua senha e posso carregar com facilidade algum malware em sua máquina, como a exploração do Firefox que mencionei anteriormente. Tudo o que preciso é que você saia de sua casa / computador por talvez uma hora.
Agora, se você levar seu TPM / cartão inteligente / o que quer que seja com você, e toda a criptografia for realmente feita no chip (o que significa que sua chave não está armazenada na RAM), é praticamente praticamente impossível entrar em tudo, 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) no barramento do sistema.
Mas e se eu tiver alguma forma de imposição de assinatura digital / criptográfica em todos os meus programas para garantir que eles sejam legítimos?
Como demonstrado por várias empresas de smartphones, essa é uma maneira muito boa de lidar com segurança. Você 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 reter acesso persistente à sua máquina remotamente, o que é uma grande vantagem.
No entanto, este ainda não é um método perfeito! A imposição de assinaturas digitais não interrompe um keylogger de hardware, por exemplo. Ele também precisa estar completamente livre de erros, o que significa que não há como encontrar uma exploração que me permita carregar meu próprio certificado no repositório de certificados da sua máquina. Além disso, isso significa que todo executável em seu sistema precisa ser assinado . A menos que você queira fazer manualmente tudo isso, será muito difícil encontrar pacotes Apt e similares que tenham assinaturas digitais em tudo. Da mesma forma, isso bloqueia usos legítimos para executáveis não assinados, como 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 maneira, um esforço para fazer isso no Linux foi praticamente abandonado e não funciona mais para novos kernels; portanto, você precisará criar o seu próprio.
Então, é impossível mantê-lo fora do meu computador?
Efetivamente, sim, desculpe. Se eu tenho 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 chegar tão longe apenas para algumas fotos de gatos. Normalmente, apenas a criptografia de disco completo (ou mesmo executando o Linux!) É suficiente para impedir que a maioria das crianças de script tenha seus dois segundos de fama.
TL; DR: Apenas não deixe pessoas em quem você não confia perto do seu computador. Isso normalmente é bom o suficiente.