{"id":119,"date":"2008-07-06T23:24:52","date_gmt":"2008-07-06T21:24:52","guid":{"rendered":"https:\/\/blogs.ua.es\/jgaliana\/?p=119"},"modified":"2008-07-07T00:17:19","modified_gmt":"2008-07-06T22:17:19","slug":"cifrar-de-particiones-y-datos-en-openbsd","status":"publish","type":"post","link":"https:\/\/blogs.ua.es\/jgaliana\/2008\/07\/06\/cifrar-de-particiones-y-datos-en-openbsd\/","title":{"rendered":"Cifrar particiones y datos en OpenBSD"},"content":{"rendered":"<p>Todos los sistemas operativos modernos disponen de soporte kernel-space para cifrado de datos: Linux (cryptoloop para 2.4, dm-crypt en 2.6, loop-aes 2.4\/2.6), FreeBSD (GEOM_BDE, o a partir de 6.0 el nuevo GEOM_ELI), Mac OS X (FileVault), etc, aunque \u00faltimamente se han popularizado sistemas user-space por su facilidad como TrueCrypt, algunos siendo adem\u00e1s multiplataforma.<br \/>\nSobre algunos de ellos me gustar\u00eda hablar aqu\u00ed, en concreto sobre <strong>loop-aes y GEOM_ELI<\/strong>, pero llevo queriendo hablar de estos temas desde que abr\u00ed el blog, as\u00ed que tiempo al tiempo.<\/p>\n<p><a href='http:\/\/www.openbsd.org'><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blogs.ua.es\/jgaliana\/files\/2008\/07\/openbsd-275x300.jpg\" alt=\"openbsd logo\" width=\"275\" height=\"300\" class=\"alignleft size-medium wp-image-120\" \/><\/a>Hoy el tema que nos ocupa es el cifrado de datos en <a href=\"http:\/\/www.openbsd.org\"><strong>OpenBSD<\/strong><\/a>, esta sistema operativo de tipo Unix est\u00e1 basado en BSD4.4 y es descendiente directo de NetBSD, pero con un enfoque especial hacia la seguridad y criptograf\u00eda.<br \/>\nActualmente la \u00faltima versi\u00f3n disponible es la versi\u00f3n 4.3 y su slogan &#8220;Free, Functional &amp; Secure&#8221; destaca sus mayores virtudes: <strong>libre, funcional y seguro<\/strong>. Est\u00e1 liberada bajo licenia BSD, al igual que sus hermanas (FreeBSD, NetBSD&#8230;).<\/p>\n<p>Para poder usar este soporte de cifrado no es necesario recompilar el kernel (a diferencia de FreeBSD por ejemplo) y se puede hacer de manera muy sencilla.<\/p>\n<p>Podemos realizar el proceso de dos maneras diferentes, creando una partici\u00f3n del disco duro y cifrandola, o bien creando un fichero y usandolo como una partici\u00f3n virtual, gracias a <strong>vnconfig<\/strong> el cual nos permite configurar dispositivos para swapping y pseudo sistemas de ficheros.<\/p>\n<p>En esta peque\u00f1a gu\u00eda voy a utilizar la segunda aproximaci\u00f3n por ser m\u00e1s sencilla para algui\u00e9n que empieza y no tener que tocar el disco f\u00edsicamente, de esta manera cualquier problema ser\u00e1 mucho menos doloroso.<\/p>\n<p>Empezamos, en primer lugar vamos a crear un fichero con contenido aleatorio del tama\u00f1o que queramos para nuestra partici\u00f3n cifrada, en este ejemplo voy a poner 100 MB. Crearemos el fichero con este comando:<\/p>\n<p><code>dd if=\/dev\/prandom of=\/path\/to\/file bs=1048576 count=100<\/code><\/p>\n<p>El par\u00e1metro count indica el n\u00famero de MB que tendr\u00e1 la partici\u00f3n, el parametro of indica el path y fichero de destino.<\/p>\n<p>Vereis algo similar a esto:<\/p>\n<p><code><br \/>\n# dd if=\/dev\/prandom of=\/path\/to\/file bs=1048576 count=100<br \/>\n100+0 records in<br \/>\n100+0 records out<br \/>\n104857600 bytes transferred in 73.364 secs (1429262 bytes\/sec)<br \/>\n<\/code><\/p>\n<p>Bien, ya tenemos el primer paso hecho, ahora vamos a crear el dispositivo especial, m\u00e1s concretamente, lo que vamos a hacer es asociar el dispositivo vnodo encriptado al fichero reci\u00e9n creado, esto lo haremos as\u00ed:<\/p>\n<p><code><br \/>\n\/usr\/sbin\/vnconfig -ck -v svnd0 \/path\/to\/file<br \/>\n<\/code><\/p>\n<p>Nos pedir\u00e1 la clave de cifrado,<\/p>\n<p><code><br \/>\nEncryption key:<br \/>\nsvnd0: 104857600 bytes on \/path\/to\/file<br \/>\n<\/code><\/p>\n<p><strong>Cuidado:<\/strong> Debereis teclear la clave conscientemente puesto que s\u00f3lo la pedir\u00e1 una vez, si no estais seguros deber\u00e9is repetir el proceso, podeis usar svnd1 en adelante, si os indica que svnd0 est\u00e1 ocupado, al igual si creais m\u00e1s de una partici\u00f3n virtual, tendreis que usar distintos dispositivos.<\/p>\n<p>Cuando escribais la clave vereis el mensaje de arriba <code>svnd0: 104857600 bytes on \/path\/to\/file<\/code><\/p>\n<p>Una vez linkado el dispositivo cifrado al fichero, pasamos a darle un formato v\u00e1lido para OpenBSD:<\/p>\n<p><code># newfs \/dev\/rsvnd0c<br \/>\n\/dev\/rsvnd0c:   204800 sectors in 2048 cylinders of 1 tracks, 100 sectors<br \/>\n100.0MB in 2 cyl groups (1568 c\/g, 76.56MB\/g, 9856 i\/g)<br \/>\nsuper-block backups (for fsck -b #) at:<br \/>\n32, 156832,<br \/>\n# <\/code><\/p>\n<p><strong>Nota para usuarios avanzados<\/strong>: Antes de realizar el newfs comprobar que el sistema no se encuentra en securelevel 2, lo podeis hacer mediante:<br \/>\n<code> # sysctl -a|grep kern.securelevel<\/code><br \/>\nSi est\u00e1 en ese nivel tendreis que bajar al menos a securelevel 1, de otra manera el sistema no os dejar\u00e1.<br \/>\nEste aviso es para usuarios que vean un inquietante <em>Operation not permitted<\/em> siendo <strong>root<\/strong>, en ese caso debereis ir a <code>\/etc\/rc.securelevel<\/code> y bajar el valor de la etiqueta securelevel a 1, seguido de un reboot.<\/p>\n<p>Seguimos, ya tenemos un formato v\u00e1lido, s\u00f3lo queda montarlo:<\/p>\n<p><code>mount \/dev\/svnd0d \/punto\/de\/montaje<\/code><\/p>\n<p>Con <strong>df<\/strong> podemos comprobar que se ha montado correctamente, por ejemplo lo podemos montar en \/mnt y veremos algo similar a:<\/p>\n<p><code><br \/>\n# df -h|egrep \"Size|svnd\"<br \/>\nFilesystem     Size    Used   Avail Capacity  Mounted on<br \/>\n\/dev\/svnd0c   97.5M    2.0K   92.6M     0%    \/mnt<br \/>\n<\/code><\/p>\n<p><strong>Ya tenemos nuestros datos cifrados, vnconfig usa el cipher Blowfish antes de escribir en el disco<\/strong>, para m\u00e1s informaci\u00f3n podeis acceder a la p\u00e1gina man de vnconfig: man vnconfig.<\/p>\n<p><strong>Ahora una peque\u00f1a chuleta:<\/strong><\/p>\n<p><strong>Para montar la partici\u00f3n cifrada:<\/strong><br \/>\n<code><br \/>\n\/usr\/sbin\/vnconfig -ck -v svnd0 \/path\/to\/encrypted\/file<br \/>\nmount \/dev\/svnd0d \/punto\/montaje<br \/>\n<\/code><\/p>\n<p><strong>Para desmontarla:<\/strong><br \/>\n<code><br \/>\numount \/punto\/montaje<br \/>\nvnconfig -u -v \/dev\/svnd0d<br \/>\n<\/code><\/p>\n<p><strong>Para analiazar la partici\u00f3n:<\/strong><br \/>\n<code><br \/>\n\/usr\/sbin\/vnconfig -ck -v svnd0 \/path\/to\/encrypted\/file<br \/>\nfsck \/dev\/svnd0c<br \/>\n<\/code><\/p>\n<p><strong>Error &#8220;vnconfig: VNDIOCSET: Device busy&#8221;<\/strong><\/p>\n<p>Si ponemos mal el password, al usar el comando vnconfig, cuando montemos la partici\u00f3n veremos un error como este:<br \/>\n<code><br \/>\nmount_ffs: \/dev\/svnd0c on \/mnt: Invalid argument<br \/>\n<\/code><\/p>\n<p>Al volver a realizar un vnconfig, veremos<\/p>\n<p><code><br \/>\n# \/usr\/sbin\/vnconfig -ck -v svnd0 \/data\/datos\/cru<br \/>\nEncryption key:<br \/>\nvnconfig: VNDIOCSET: Device busy<br \/>\n<\/code><\/p>\n<p>Para solucionarlo tendremos que limpiar ese dispositivo:<\/p>\n<p><code><br \/>\n# vnconfig -u -v vnd0<br \/>\nvnd0: cleared<br \/>\n<\/code><\/p>\n<p>Y ya podremos volver a usar vnconfig, otra opci\u00f3n es usar otro dispositivo por ej: svnd1 y svnd1c<\/p>\n<p>Eso es todo amigos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Todos los sistemas operativos modernos disponen de soporte kernel-space para cifrado de datos: Linux (cryptoloop para 2.4, dm-crypt en 2.6, loop-aes 2.4\/2.6), FreeBSD (GEOM_BDE, o a partir de 6.0 el nuevo GEOM_ELI), Mac OS X (FileVault), etc, aunque \u00faltimamente se han popularizado sistemas user-space por su facilidad como TrueCrypt, algunos siendo adem\u00e1s multiplataforma. Sobre algunos [&hellip;]<\/p>\n","protected":false},"author":139,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1572],"tags":[1575,1574,1577,8042,1576,8034,8027,1573],"class_list":["post-119","post","type-post","status-publish","format-standard","hentry","category-openbsd","tag-cifrado","tag-cifrar","tag-criptografia","tag-openbsd","tag-particiones","tag-seguridad","tag-software-libre","tag-unix"],"_links":{"self":[{"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/posts\/119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/users\/139"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/comments?post=119"}],"version-history":[{"count":0,"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/posts\/119\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/media?parent=119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/categories?post=119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ua.es\/jgaliana\/wp-json\/wp\/v2\/tags?post=119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}