{"id":4139,"date":"2021-10-18T17:50:29","date_gmt":"2021-10-18T15:50:29","guid":{"rendered":"https:\/\/esferas.org\/msqlu\/?p=4139"},"modified":"2021-10-18T17:50:30","modified_gmt":"2021-10-18T15:50:30","slug":"backuppc-sobre-maquinas-internas","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2021\/10\/18\/backuppc-sobre-maquinas-internas\/","title":{"rendered":"BackupPC: sobre m\u00e1quinas internas"},"content":{"rendered":"\n<p>Pues s\u00ed, me ha tocado jugar con ello y al final he conseguido que funcione. <\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Siendo BackupPC un sistema de copias de seguridad activo (abre una conexi\u00f3n y extrae datos) no siempre es f\u00e1cil conseguir que se conecte a servidores internos en una red privada. S\u00ed, se puede crear una VPN y acceder al servidor emple\u00e1ndola, pero como en mi caso pueden llegar a ser tres redes privadas diferentes  he preferido el viejo m\u00e9todo de conectar v\u00eda SSH, uno de los programas m\u00e1s vers\u00e1tiles que he visto nunca para accesos seguros a lugares muy, muy lejanos. Bueno, y tambi\u00e9n a los cercanos, pero la entrada no va de eso. <\/p>\n\n\n\n<p>Primero el esquema y luego las explicaciones:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/10\/backuppc-acceso-maquinas-internas-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"883\" height=\"521\" src=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/10\/backuppc-acceso-maquinas-internas-1.png\" alt=\"\" class=\"wp-image-4142\" srcset=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/10\/backuppc-acceso-maquinas-internas-1.png 883w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/10\/backuppc-acceso-maquinas-internas-1-300x177.png 300w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/10\/backuppc-acceso-maquinas-internas-1-768x453.png 768w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2021\/10\/backuppc-acceso-maquinas-internas-1-600x354.png 600w\" sizes=\"auto, (max-width: 883px) 100vw, 883px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Como puede verse tengo un servidor en casa que se encarga de estos menesteres y que cuando la m\u00e1quina cliente tiene acceso directo desde la red no presenta dificultad alguna. Se conecta y ya. <\/p>\n\n\n\n<p>Pero en nuestro caso tenemos que hacer copia de un servidor (<em>server1.empresa.net<\/em>) que no tiene acceso SSH directo. La \u00fanica ventaja que presenta es que su nombre est\u00e1 registrado como alias (tipo <em>CNAME<\/em>) en el DNS p\u00fablico de <em>empresa.net<\/em>. Y aqu\u00ed la ventaja es que el programa <em>backuppc<\/em> puede comprobar si est\u00e1 vivo empleando paquetes ICMP (el <em>ping<\/em> de toda la vida) aunque en realidad lo est\u00e1 haciendo con <em>empresa.net<\/em> y no con <em>server1<\/em>. Pero para nuestro prop\u00f3sito es m\u00e1s que suficiente. <\/p>\n\n\n\n<p>He enfocado la tarea en tres partes:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Acceso desde backup.home a server1.empresa.net<\/li><li>Empleo de usuario restringido en server1.empresa.net<\/li><li>Retoques en configuraci\u00f3n de copia de seguridad en backup.home<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Acceso desde backup.home a server1.empresa.net<\/h3>\n\n\n\n<p>En BackupPC el acceso a los clientes lo lleva a cabo su propio usuario (<em>backuppc<\/em>), por lo que tiene que ser \u00e9l el habilitado para acceder a las m\u00e1quinas con el suficiente nivel de acceso para leer los archivos. <\/p>\n\n\n\n<p>Como tenemos que emplear una m\u00e1quina puente para acceder no nos queda otra que enviarles a ambas nuestra identidad. Empleamos para ello una cuenta local (<em>osr<\/em>, operador de sistema remoto, mi favorita) y transferimos nuestra clave p\u00fablica. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">backuppc@backup.home $ ssh-copy-id -i ~\/.ssh\/id_rsa osr@empresa.net \nosr@empresa.net' password: xxx\nbackuppc@backup.home $ ssh-copy-id -i ~\/.ssh\/id_rsa -o ProxyJump=empresa.net osr@server1.empresa.net\nosr@server1.empresa.net' password: xxx\n<\/code><\/pre>\n\n\n\n<p>As\u00ed que ya tenemos acceso directo a <em>server1<\/em> y podemos facilitarlo un poco m\u00e1s todav\u00eda si editamos el archivo de configuraci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">backuppc@backup.home $ cat > ~\/.ssh\/config \nHost empresa.net\nUser osr\nIdentityFile ~\/.ssh\/id_rsa\n\nHost server1\nUser osr\nIdentityFile ~\/.ssh\/id_rsa\nProxyJump  empresa.net\n^D<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Empleo de usuario restringido en server1.empresa.net<\/h3>\n\n\n\n<p>Lo habitual es que sea el usuario <em>root<\/em> el que se utilice para las copias de seguridad dado que \u00e9l tiene acceso a todo, o al menos a todo lo que nos interesa. Pero existe una forma de conseguir con facilidad que sea otro el que se utilice. <\/p>\n\n\n\n<p>BackupPC utiliza en el lado cliente el program<span style=\"text-decoration: underline;\"><\/span><span style=\"text-decoration: underline;\"><\/span><span style=\"text-decoration: underline;\"><\/span><span style=\"text-decoration: underline;\"><\/span><span style=\"text-decoration: underline;\"><\/span><span style=\"text-decoration: underline;\"><\/span>a <em>rsync<\/em> para leer los datos (y tambi\u00e9n para restaurarlos) as\u00ed que con que se pueda ejecutar con permisos administrativos es m\u00e1s que suficiente. <\/p>\n\n\n\n<p>Si creamos un perfil para <em>sudo<\/em> en la m\u00e1quina cliente en un archivo como <em>\/etc\/sudoers.d\/backuppc-remote<\/em>: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">#\n#       Configuraci\u00f3n para que osr sea cliente para backuppc remoto\n#\nDefaults        env_keep += MAINTAINER\n\nosr     ALL=NOPASSWD: \/usr\/bin\/rsync --server *<\/code><\/pre>\n\n\n\n<p>Podremos emplear el programa <em>osr<\/em> -al que ya tenemos acceso- para efectuar la copia de seguridad. En caso de tener dudas despu\u00e9s de crear el archivo basta con hacer lo siguiente para saber si podremos emplearlo o ha habido alg\u00fan error: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">osr@server1.empresa.net $ sudo -l\nMatching Defaults entries for osr on erp:\n    env_reset, mail_badpass, secure_path=\/usr\/local\/sbin\\:\/usr\/local\/bin\\:\/usr\/sbin\\:\/usr\/bin\\:\/sbin\\:\/bin,\n    env_keep+=MAINTAINER\n\nUser osr may run the following commands on erp:\n    (ALL : ALL) ALL\n    (root) NOPASSWD: \/usr\/bin\/rsync --server *\nosr@server1.empresa.net $ <\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Retoques en configuraci\u00f3n de copia de seguridad en backup.home<\/h3>\n\n\n\n<p>En el servidor de copias se deben cambiar algunas cosas, bien empleando el interfaz web, bien retocando el archivo de configuraci\u00f3n correspondiente en <em>\/etc\/backuppc\/server1.empresa.net.pl<\/em>. Los par\u00e1metros clave son los siguientes (c\u00f3digo fuente Perl): <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">$Conf{PingMaxMsec} = 100;\n$Conf{RsyncClientPath} = 'sudo \/usr\/bin\/rsync';\n$Conf{RsyncSshArgs} = [\n  '-e',\n  '$sshPath -l osr'\n];\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Asegurar que el tiempo de respuesta de los paquetes <em>ping<\/em> es lo bastante alto como para que se pueda iniciar la copia.<\/li><li>El programa cliente se debe llamar directamente con <em>sudo<\/em>.<\/li><li>La cuenta de acceso al sistema remoto no es <em>root<\/em> (como valor predeterminado) si no<em> osr<\/em> que es la que hemos configurado antes. <\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Rendimiento<\/h3>\n\n\n\n<p>El rendimiento no es malo. En mi caso el servidor es bastante monstruoso para mis est\u00e1ndares y la copia inicial se ha cortado en media docena de ocasiones. No ha importado porque BackupPC ha vuelto a intentarlo un tiempo m\u00e1s tarde y ha seguido y seguido hasta que lo ha conseguido. <\/p>\n\n\n\n<p>Ahora me queda conseguir que el resto de los servidores (<em>server<\/em>2 y <em>server3<\/em>) tengan el mismo tratamiento. Como ninguna de las dos tiene un registro CNAME y no pretendo crearlo quiz\u00e1s sea m\u00e1s complicado. Uno de los mayores defectos que le veo al programa es que est\u00e1 dise\u00f1ado inicialmente para realizar copias de m\u00e1quinas Windows y eso implica que utiliza NetBIOS para localizarlas y hay que forzarlo un poco para que se deje de tonter\u00edas y haga caso de SSH directamente. <\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pues s\u00ed, me ha tocado jugar con ello y al final he conseguido que funcione.<\/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,903,41,42,93,565],"class_list":["post-4139","post","type-post","status-publish","format-standard","hentry","category-software","tag-administracion-de-sistemas","tag-backuppc","tag-debian","tag-rsync","tag-ssh","tag-sudo"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/4139","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=4139"}],"version-history":[{"count":6,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/4139\/revisions"}],"predecessor-version":[{"id":4147,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/4139\/revisions\/4147"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=4139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=4139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=4139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}