{"id":4220,"date":"2021-12-03T18:26:58","date_gmt":"2021-12-03T17:26:58","guid":{"rendered":"https:\/\/esferas.org\/msqlu\/?p=4220"},"modified":"2022-01-02T10:23:14","modified_gmt":"2022-01-02T09:23:14","slug":"montando-un-pollo-con-btrfs","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2021\/12\/03\/montando-un-pollo-con-btrfs\/","title":{"rendered":"Montando un pollo con btrfs"},"content":{"rendered":"\n<p>Porque b\u00e1sicamente estoy m\u00e1s perdido que un pulpo en un garaje. Y hablo de la seguridad de sistemas, no de los sistemas de ficheros. <\/p>\n\n\n\n<p><strong>Actualizaci\u00f3n<\/strong>: a\u00f1adida informaci\u00f3n sobre snapshots al final de la entrada.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Hace tiempo ya que me vengo temiendo una infecci\u00f3n por <em>ransomware<\/em> o algo similar que nos destruya las m\u00e1quinas Windows que tenemos que soportar y que, de paso, se lleve por delante la <em>cuidadosa<\/em> colecci\u00f3n de archivos y carpetas que utilizan mis hom\u00ednidos para su trabajo. No, en serio, guardan archivos del a\u00f1o 1996 y <em>cuidan<\/em> los de las \u00faltimas tres semanas a lo sumo. Pero ah\u00ed est\u00e1n. Si les da la ventolera y los buscan y no est\u00e1n. \u00bf Qui\u00e9n se lleva toda la atenci\u00f3n apocal\u00edptica ? Exacto. <\/p>\n\n\n\n<p>Las copias de seguridad est\u00e1n a salvo porque no hay ninguna en l\u00ednea, aunque sospecho que al menos dos de ellos tienen un USB conectado permanentemente y poco puedo hacer con ello porque a esos niveles pasan bastante de m\u00ed. <\/p>\n\n\n\n<p>Lo que m\u00e1s me paraliza del asunto del secuestro de archivos es que no tengo manera de saber desde cu\u00e1ndo tenemos uno activo en los sistemas y, por tanto, desde cu\u00e1ndo son v\u00e1lidos los archivos. Dos meses o dos semanas cifrando archivos puede ser suficiente para no recuperarnos ya que estar\u00e1n guardados con las copias aunque no tengan acceso a ellas. Demasiado por pensar con demasiadas inc\u00f3gnitas. <\/p>\n\n\n\n<p>S\u00ed, empec\u00e9 a perge\u00f1ar un plan que inclu\u00eda programas para comprobar que los archivos segu\u00edan siendo accesibles seg\u00fan tipo y lo mismo funciona. Es decir, asumiendo que el cifrado afecte a todo el archivo y no s\u00f3lo a su parte \u00fatil de una hoja de c\u00e1lculo o una imagen, por ejemplo, deber\u00eda ser posible detectarlo con alguna herramienta de terminal que nos diga si eso sigue siendo reconocible como hoja de c\u00e1lculo o como imagen, y si eso ocurre dar el aviso y parar el sistema. No s\u00e9, he de probarlo. <\/p>\n\n\n\n<p>Visto lo anterior me he propuesto tener un servidor que se dedique a dar acceso local y remoto a las colecciones de archivos (documentos e im\u00e1genes) con las mejores medidas de seguridad que pueda instalar y que les permitan seguir trabajando. <\/p>\n\n\n\n<p>El esquema que me he planteado es el siguiente:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/12\/archivos.venexma.net_-1-scaled.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"655\" src=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/12\/archivos.venexma.net_-1-1024x655.jpg\" alt=\"\" class=\"wp-image-4224\" srcset=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/12\/archivos.venexma.net_-1-1024x655.jpg 1024w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/12\/archivos.venexma.net_-1-300x192.jpg 300w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/12\/archivos.venexma.net_-1-768x491.jpg 768w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/12\/archivos.venexma.net_-1-1536x983.jpg 1536w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/12\/archivos.venexma.net_-1-2048x1310.jpg 2048w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/12\/archivos.venexma.net_-1-600x384.jpg 600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>La parte b\u00e1sica son las instant\u00e1neas de archivos y lo intento resolver empleando el sistema de archivos <em>btrfs<\/em> en un disco aparte (dos terabytes montados en <em>\/srv<\/em>) y con varios subvol\u00famenes creados sobre \u00e9l:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>\/srv\/docs para documentos <\/li><li>\/srv\/images para im\u00e1genes<\/li><li>\/srv\/videos para <em>im\u00e1genes en acci\u00f3n<\/em> ;-) <\/li><\/ol>\n\n\n\n<p>Despu\u00e9s he buscado la manera m\u00e1s c\u00f3moda de automatizar la toma de instant\u00e1neas de contenido y he visto un script creado por un tal <a rel=\"noreferrer noopener\" href=\"https:\/\/marc.merlins.org\/perso\/btrfs\/post_2014-03-21_Btrfs-Tips_-How-To-Setup-Netapp-Style-Snapshots.html\" target=\"_blank\">Marc<\/a> que he parametrizado para m\u00ed y lo he instalado en el sistema junto con una planificaci\u00f3n de trabajos. Y s\u00ed, funciona, y muy r\u00e1pido, pero como a\u00fan no tengo digerido el mecanismo subyacente pues me f\u00edo de \u00e9l y lo dejo para estudiar m\u00e1s adelante. <\/p>\n\n\n\n<p>Me queda el acceso v\u00eda SMB\/CIFS que ya tengo implementado en otra m\u00e1quina y que no ser\u00e1 muy complicado de traer, el de NFS que lo mismo, y queda el acceso DAV que ser\u00e1 la parte que m\u00e1s se pueda complicar. <\/p>\n\n\n\n<p>Ojo, y todo \u00e9sto haci\u00e9ndolo sobre el mismo conjunto de archivos. En teor\u00eda si aceptan bloqueos a nivel de archivo deber\u00eda funcionar pero tengo muchas dudas sobre DAV. S\u00e9 que NFS y Samba emplean bloqueo a nivel de sistema y seg\u00fan dicen no suele ser problem\u00e1tico usarlos sobre el mismo recurso. Pero DAV s\u00ed tiene una gesti\u00f3n de bloqueos independientes y ya no estoy tan seguro. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"creacion-y-mantenimiento-de-instantaneas\">Creaci\u00f3n y mantenimiento de instant\u00e1neas<\/h3>\n\n\n\n<p>He creado una planificaci\u00f3n de trabajos para el usuario root que lanzan el script del que hablo m\u00e1s arriba para crear y mantener un n\u00famero de instant\u00e1neas de los sistemas de archivos cada hora, d\u00eda y semana. <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">GREPOUT=\"(Create a snapshot of|Will delete the oldest|Delete subvolume|Making snapshot of )\"\nBTRFS_ROOT=\/srv\nBTRFS_SNAP=\/usr\/local\/sbin\/btrfs-snaps\n# \n# m h  dom mon dow   command\n0 * * * * cd $BTRFS_ROOT &amp;&amp; $BTRFS_SNAP hourly 3 | grep -Ev \"$GREPOUT\"\n1 0 * * * cd $BTRFS_ROOT &amp;&amp; $BTRFS_SNAP daily  4 | grep -Ev \"$GREPOUT\"\n2 0 * * 0 cd $BTRFS_ROOT &amp;&amp; $BTRFS_SNAP weekly 4 | grep -Ev \"$GREPOUT\"\n<\/pre>\n\n\n\n<p>Estoy siguiendo las indicaciones del autor y he hecho algunas pruebas y funciona. Otra cosa que me queda pendiente, como siempre, es probar a recuperar alguna de ellas. Como no me da la vida de momento lo dejo as\u00ed. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Porque b\u00e1sicamente estoy m\u00e1s perdido que un pulpo en un garaje. Y hablo de la seguridad de sistemas, no de los sistemas de ficheros. Actualizaci\u00f3n: a\u00f1adida informaci\u00f3n sobre snapshots al final de la entrada.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[2],"tags":[18,1124,857,1125,901,35],"class_list":["post-4220","post","type-post","status-publish","format-standard","hentry","category-software","tag-administracion-de-sistemas","tag-btrfs","tag-nfs","tag-ransomware","tag-samba","tag-seguridad"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/4220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=4220"}],"version-history":[{"count":7,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/4220\/revisions"}],"predecessor-version":[{"id":4254,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/4220\/revisions\/4254"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=4220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=4220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=4220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}