{"id":394,"date":"2011-01-22T21:56:01","date_gmt":"2011-01-23T02:56:01","guid":{"rendered":"https:\/\/rafael.bonifaz.ec\/blog\/?p=394"},"modified":"2011-01-22T21:56:01","modified_gmt":"2011-01-23T02:56:01","slug":"ssh-y-https-en-puerto-443","status":"publish","type":"post","link":"https:\/\/rafael.bonifaz.ec\/blog\/2011\/01\/ssh-y-https-en-puerto-443\/","title":{"rendered":"SSH y HTTPS en puerto 443"},"content":{"rendered":"<p>En el art\u00edculo anterior explique como navegar a trav\u00e9s de un <a href=\"http:\/\/bonifaz.ec\/sshsocks\">servidor socks creado con ssh<\/a>. Eso va a funcionar siempre y cuando no tengamos bloqueado el puerto en el que estamos corriendo ssh en nuestro servidor (por defecto el 22). Es muy probable que el puerto 22 este bloqueado, pero muy poco probable que el 443 sea bloqueando.<\/p>\n<p>Una soluci\u00f3n simple podr\u00eda ser ejecutar SSH en el puerto 443, pero lo m\u00e1s probable es que necesitemos correr alguna aplicaci\u00f3n HTTPS en ese puerto. La soluci\u00f3n a este problema se llama <a href=\"http:\/\/www.rutschle.net\/tech\/sslh.shtml\">SSLH<\/a>. Sus autores lo llaman un multiplexor SSH\/HTTPS.<\/p>\n<p>B\u00e1sicamente lo que hace este servicio es redirigir las peticiones de SSH a localhost:22 y las de HTTPS a localhost:443. Para que todo funcione bien debemos deber\u00edamos configurar nuestro servidor web para que escuche en: 127.0.0.1:433 en lugar de *:443.<!--more--><\/p>\n<h2>Manos a la Obra<\/h2>\n<p style=\"padding-left: 30px;\"><strong>Nota<\/strong>: Si se va hacer esto en un servidor remoto podr\u00eda perder la conexi\u00f3n al mismo. Trabaje con atenci\u00f3n y mantenga una conexi\u00f3n de ssh abierta por si las moscas.<\/p>\n<p>Lo primero que tenemos que hacer es instalar\u00a0<a href=\"http:\/\/www.rutschle.net\/tech\/sslh.shtml\">SSLH<\/a>.\u00a0En las distribuciones basadas en Debian (ej. Ubuntu) bastar\u00e1 instalarlo desde repositorios. En otras distros supongo que el procedimiento debe ser muy similar.<\/p>\n<p style=\"padding-left: 30px;\"><code>aptitude install sslh<\/code><\/p>\n<p>Una vez instalado, lo primero que debemos hacer es configurar nuestro servidor web para que el puerto 443 sea solo escuchado en localhost y no en el ip p\u00fablico. \u00a0En mi caso personal uso <a href=\"http:\/\/www.cherokee-project.com\/\">Cherokee<\/a> y para esto en el Cherokee admin debemos ir a: General-&gt; puertos. Una vez ah\u00ed a\u00f1adimos la direcci\u00f3n ip junto a la directiva de 443. \u00a0En el caso de <a href=\"http:\/\/httpd.apache.org\/docs\/2.0\/bind.html\">Apache<\/a> o cualquier otro servidor web se aplica el mismo concepto.<\/p>\n<p>El servicio ssh si queremos lo podemos configurar para que escuche solo en 127.0.0.1:22 ya que ahora podr\u00edamos acceder desde el 443. No recomiendo hacer esto hasta que todo este funcionando.<\/p>\n<p>Una vez que tenemos configurado el servidor web, tenemos que configurar el sslh. Para esto editamos el archivo \/etc\/default\/sslh. B\u00e1sicamente se debe a\u00f1adir la lista RUN=yes y configurar el ip p\u00fablica de nuestro servidor. Deber\u00edamos tener algo similar a esto:<\/p>\n<p style=\"padding-left: 30px;\"><code> DAEMON_OPTS=\"-u sslh -p 200.200.200.200:443 -s 127.0.0.1:22 -l 127.0.0.1:443 -P \/var\/run\/sslh.pid\"<br \/>\nRUN=yes<\/code><\/p>\n<p style=\"padding-left: 30px;\"><strong>Nota<\/strong>: Son solo 2 l\u00edneas la primera define la variable DAEMON_OPTS y la segunda la variable RUN.<\/p>\n<p>Ahora solo queda arrancar el servicio<\/p>\n<p style=\"padding-left: 30px;\"><code>\/etc\/init.d\/sslh start<\/code><\/p>\n<p>Listo ahora podemos ingresar a nuestro servidor utilizando el puerto 443<\/p>\n<p style=\"padding-left: 30px;\"><code>ssh -p 443 usuario@servidorremoto.com<\/code><\/p>\n<p>Ahora si quisieramos navegar utilizando un <a href=\"http:\/\/bonifaz.ec\/sshsocks\">proxy socks<\/a> b\u00e1sicamente deber\u00edamos hacer algo as\u00ed:<\/p>\n<p style=\"padding-left: 30px;\"><code>ssh -p 443 -ND 8080 usuario@servidorremoto.com<\/code><\/p>\n<p>Ahora ya estamos preparados para redes hostiles donde les gusta bloquear lo que m\u00e1s pueden.<\/p>\n<p>Les recomiendo leer el siguiente art\u00edculo de Linux Magazine donde Charlie nos <a href=\"http:\/\/www.linux-magazine.es\/issue\/61\/061-061_Charly61.pdf\">cuenta sobre sslh<\/a>. Si no hubiera sido por Charlie, no supiera como hacer esto y no hubiera escrito este art\u00edculo. Sin lugar a dudas mi columna favorita de Linux Magazine.<\/p>\n<h3 class='related_post_title'>Art\u00edculos relacionados<\/h3><ul class='related_post'><li><a href=\"https:\/\/rafael.bonifaz.ec\/blog\/2011\/02\/tips-ssh\/\" title=\"11 + 1 Tips SSH\">11 + 1 Tips SSH<\/a><\/li><li><a href=\"https:\/\/rafael.bonifaz.ec\/blog\/2011\/02\/proteger-ssh-con-fail2ban\/\" title=\"Proteger SSH con Fail2Ban\">Proteger SSH con Fail2Ban<\/a><\/li><li><a href=\"https:\/\/rafael.bonifaz.ec\/blog\/2011\/02\/sincronizar-yo-respaldar-directorios-con-ssh-y-rsync\/\" title=\"Sincronizar y\/o Respaldar directorios con SSH y RSYNC\">Sincronizar y\/o Respaldar directorios con SSH y RSYNC<\/a><\/li><\/ul>","protected":false},"excerpt":{"rendered":"<p>En el art\u00edculo anterior explique como navegar a trav\u00e9s de un servidor socks creado con ssh. Eso va a funcionar siempre y cuando no tengamos bloqueado el puerto en el que estamos corriendo ssh en nuestro servidor (por defecto el 22). Es muy probable que el puerto 22 este bloqueado, pero muy poco probable que [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[70,1,3],"tags":[178,83,84],"class_list":["post-394","post","type-post","status-publish","format-standard","hentry","category-comos","category-general","category-software-libre","tag-comos","tag-ssh","tag-tips"],"_links":{"self":[{"href":"https:\/\/rafael.bonifaz.ec\/blog\/wp-json\/wp\/v2\/posts\/394","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rafael.bonifaz.ec\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rafael.bonifaz.ec\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rafael.bonifaz.ec\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rafael.bonifaz.ec\/blog\/wp-json\/wp\/v2\/comments?post=394"}],"version-history":[{"count":3,"href":"https:\/\/rafael.bonifaz.ec\/blog\/wp-json\/wp\/v2\/posts\/394\/revisions"}],"predecessor-version":[{"id":397,"href":"https:\/\/rafael.bonifaz.ec\/blog\/wp-json\/wp\/v2\/posts\/394\/revisions\/397"}],"wp:attachment":[{"href":"https:\/\/rafael.bonifaz.ec\/blog\/wp-json\/wp\/v2\/media?parent=394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rafael.bonifaz.ec\/blog\/wp-json\/wp\/v2\/categories?post=394"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rafael.bonifaz.ec\/blog\/wp-json\/wp\/v2\/tags?post=394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}