¿Cómo es segura la capacidad de una persona que obtuvo acceso físico a su computadora para obtener root [usando Grub / Bash]?
Porque si Linux decidiera comenzar a hacer eso, los hackers simplemente explotarían otros agujeros de seguridad. La primera regla de seguridad es que si tengo acceso físico a su sistema, se acabó el juego. Gané.
Además, imagine que su servidor X se rompió y ya no tiene una GUI. Necesitas iniciar en una consola de recuperación para arreglar las cosas, pero no puedes, porque eso es inseguro. En este caso, te quedas con un sistema totalmente roto, pero bueno, al menos es "seguro".
Pero Kaz, ¿cómo es esto posible? ¡Configuré una contraseña en mi Grub para que no pueda cambiar mi init
a Bash!
Oh, lo hiciste, ¿verdad? Interesante, porque se parece a tu álbum de fotos. GRUB no tiene ningún factor de seguridad inherente en absoluto. Es solo un gestor de arranque , no un paso en alguna cadena segura de arranque y autenticación. La "contraseña" que ha configurado es, de hecho, bastante fácil de omitir.
Eso, y ¿qué administrador de sistemas no lleva una unidad de arranque para emergencias?
¡¿Pero cómo?! No sabes mi contraseña (que no es por P@ssw0rd
cierto)
Sí, pero eso no me impide abrir tu computadora y sacar tu disco duro. A partir de ahí, es un par de pasos simples para montar su unidad en mi computadora, lo que me da acceso a todo su sistema. Esto también tiene la increíble ventaja de pasar por alto la contraseña de su BIOS. Eso, o podría haber reiniciado su CMOS. Cualquiera o.
Entonces ... ¿cómo no te dejo tener acceso a mis datos?
Sencillo. Mantén tu computadora lejos de mí. Si puedo tocarlo, acceder a un teclado, insertar mis propias unidades flash o desmontarlo, puedo ganar.
Entonces, ¿puedo simplemente poner mi computadora en un centro de datos o algo así? Esos son bastante seguros, ¿verdad?
Si, ellos son. Pero, se está olvidando de que los humanos también son pirateables, y dado el tiempo y la preparación suficientes, probablemente podría entrar en ese centro de datos y extraer todos esos datos dulces de su computadora. Pero yo divago. Estamos tratando con soluciones reales aquí.
Bien, entonces llamaste a mi farol. No puedo ponerlo en un centro de datos. ¿Puedo encriptar mi carpeta de inicio o algo así?
¡Seguro que puede! ¡Es tu computadora! ¿Ayudará a detenerme? En lo mas minimo. Simplemente puedo reemplazar algo importante, como /usr/bin/firefox
con mi propio programa malicioso. La próxima vez que abra Firefox, todos sus datos secretos se desviarán a algún servidor secreto en algún lugar secreto. Y ni siquiera lo sabrás. O, si tengo acceso frecuente a su máquina, simplemente puedo configurar su carpeta de inicio para que se copie en /usr/share/nonsecrets/home/
cualquier ubicación similar (no encriptada).
De acuerdo, ¿qué pasa con el cifrado de disco completo?
Eso es ... bastante bueno. Sin embargo, ¡aún no es perfecto! Siempre puedo realizar un ataque de arranque en frío utilizando mi confiable lata de aire comprimido. O simplemente puedo conectar un keylogger de hardware a su computadora. Uno es obviamente más fácil que el otro, pero el camino realmente no importa.
En la gran mayoría de los casos, este es un buen lugar para detenerse. Tal vez emparejarlo con TPM (discutido a continuación), y eres dorado. A menos que haya enojado a una agencia de tres cartas o un hacker muy motivado, nadie va a pasar por el esfuerzo requerido después de esta etapa.
Por supuesto, todavía puedo lograr que instales algunos malware / puertas traseras ofreciéndote un PPA o similar, pero esto entra en el área muy confusa de la confianza del usuario.
Entonces ... ¿cómo son los iPhone tan seguros? Incluso con acceso físico, no hay mucho que pueda hacer.
Pues sí y no. Quiero decir, si estaba lo suficientemente motivado, podría leer el chip flash y obtener todo lo que necesito. Pero, los iPhones son fundamentalmente diferentes en la medida en que son una plataforma completamente bloqueada. Pero, al mismo tiempo, realmente sacrifica la usabilidad y la capacidad de recuperarse de fallas catastróficas. GRUB (excepto cuando está diseñado muy específicamente) no pretende ser una cadena en un sistema de seguridad. De hecho, la mayoría de los sistemas Linux tienen sus cadenas de seguridad iniciadas después del arranque, así que después de que GRUB haya terminado de hacer lo suyo.
Además, los iPhones tienen una aplicación de firma criptográfica (que también se analiza a continuación), lo que hace que sea muy difícil que el malware ingrese sigilosamente a su teléfono a través de vías legítimas.
Pero, ¿qué pasa con TPM / SmartCards / [insertar tecnología criptográfica aquí]?
Bueno, ahora que está combinando la seguridad física con la ecuación, se vuelve aún más complicado. Pero, esto no es realmente una solución porque los TPM son relativamente débiles y todo el cifrado no tiene lugar en el chip. Si su TPM es (de alguna manera) lo suficientemente fuerte como para cifrarlo en el chip (algunos discos duros muy elegantes tienen algo como esto), la clave nunca se revelará y cosas como los ataques de arranque en frío son imposibles. Sin embargo, las claves (o los datos sin procesar) aún pueden estar presentes en el bus del sistema, lo que significa que pueden ser interceptados.
Aun así, mi keylogger de hardware aún puede obtener su contraseña, y puedo cargar fácilmente algún malware en su máquina al estilo de la vulnerabilidad de Firefox que mencioné anteriormente. Todo lo que necesito es que salgas de tu casa / computadora por una hora.
Ahora, si llevas tu TPM / tarjeta inteligente / lo que sea contigo, y todo el cifrado se realiza en el chip (lo que significa que tu clave no está almacenada en la RAM), entonces es prácticamente imposible para mí entrar todo, a menos que usted (el usuario) se resbale y olvide algo. Es decir, a menos que encuentre alguna forma de leer la clave (sin cifrar) del bus del sistema.
Pero, ¿qué sucede si tengo algún tipo de aplicación de firma criptográfica / digital en todos mis programas para asegurarme de que sean legítimos?
Como lo demuestran varias compañías de teléfonos inteligentes, esta es una muy buena manera de lidiar con la seguridad. Ahora ha anulado mi capacidad de inyectar algo de código en su máquina para hacer cosas nefastas, lo cual es una ventaja. Efectivamente, ha deshabilitado mi capacidad de retener el acceso persistente a su máquina de forma remota, lo cual es una gran ventaja.
¡Sin embargo, este todavía no es un método perfecto! La aplicación de firma digital no detendrá un keylogger de hardware, por ejemplo. También debe estar completamente libre de errores, lo que significa que no hay forma de encontrar un exploit que me permita cargar mi propio certificado en el almacén de certificados de su máquina. Además, esto significa que cada ejecutable en su sistema debe estar firmado . A menos que desee pasar manualmente y hacer todo eso, será muy difícil encontrar paquetes Apt y similares que tengan firmas digitales en todo. De manera similar, esto bloquea los usos legítimos de ejecutables sin firmar, es decir, la recuperación. ¿Qué sucede si rompe algo importante y no tiene el ejecutable (firmado) para arreglarlo? Bueno, ahí va tu sistema.
De cualquier manera, un esfuerzo para hacer esto en Linux básicamente ha sido prácticamente abandonado y ya no funciona para nuevos núcleos, por lo que necesitaría crear el suyo propio.
Entonces, ¿es imposible mantenerte fuera de mi computadora?
Efectivamente, sí, lo siento. Si tengo acceso físico y suficiente motivación, siempre es posible ingresar a un sistema. Sin excepciones.
Sin embargo, en realidad, la mayoría de las personas malvadas no tratarán de llegar tan lejos solo por algunas fotos de gatos. Por lo general, solo el cifrado de disco completo (¡o incluso solo ejecutar Linux!) Es suficiente para disuadir a la mayoría de los niños de script de tener sus dos segundos de fama.
TL; DR: Simplemente no permita que personas en las que no confía se acerquen a su computadora. Eso suele ser lo suficientemente bueno.