X-Space - Mot-clé - knockLe blog à ED2023-12-12T09:33:18+00:00urn:md5:b0787ed53bd0d97f9dad924afffcb11aDotclearConnexion SSH au travers d'un proxyurn:md5:d127d420e51de8cf02904e7dcf83f66c2011-03-13T17:44:00+01:002011-03-13T17:49:02+01:00jeansebDev's Blogiptablesknockport knockingtunnel SSH <h3>Préambule</h3>
<p>La méthode que je vais vous décrire offre la possibilité de contourner des protections/limitations mises en place par le biais d'un proxy ou d'un firewall. Son usage est sous votre entière responsabilité et peut être contraire à la politique de sécurité du lieu ou vous vous trouvez.</p>
<h3>SSH over HTTPS</h3>
<p>Dans mon entreprise actuelle, seuls deux ports sont disponibles en sortie : les ports web 80 et 443. Il m'est donc impossible de me connecter à mon serveur via SSH pour intervenir en cas de dysfonctionnement.</p>
<p>La première solution, que j'ai mise en place, a été d'utiliser un des deux ports disponibles et de rediriger son trafic vers le port SSH. Rien de plus facile avec iptables.</p>
<blockquote><p>iptables -t nat -A PREROUTING -i eth0 -s 10.20.30.40 -p tcp --dport 443 -j REDIRECT --to-ports 22</p>
</blockquote>
<p>Mais...</p>
<p>Dans ce cas, il n'est plus possible de me connecter à mes pages en HTTPS (webmail par exemple). Et d'autre part, l'ip est fixe. Cette solution est donc limitée.</p>
<h3>Port-knocking à votre service</h3>
<p>Voici donc qu'arrive le port knocking. Je vous renvois à l'article de <a hreflang="en" href="http://en.wikipedia.org/wiki/Port_knocking">Wikipedia</a> pour comprendre de quoi il retourne.</p>
<p>Maintenant, il me suffit de faire des requêtes dans un certain ordre sur les ports 80 et 443 et une fois la séquence finie : le port 443 est redirigé vers le 22 (SSH). 10 secondes plus tard tout est rentré dans l'ordre.</p>
<h5>Installation :</h5>
<blockquote><p>sudo aptitude install knockd</p>
</blockquote>
<p>Editer : /etc/knockd.conf</p>
<blockquote><p>[options]<br /> UseSyslog<br /><br />[opencloseSSH]<br /> sequence = 443:udp,80:udp<br /> seq_timeout = 10<br /> tcpflags = syn,ack<br /> start_command = /sbin/iptables -t nat -A PREROUTING -i eth0 -s %IP% -p tcp --dport 443 -j REDIRECT --to-ports 22<br /> cmd_timeout = 10<br /> stop_command = /sbin/iptables -t nat -D PREROUTING -i eth0 -s %IP% -p tcp --dport 443 -j REDIRECT --to-ports 22</p>
</blockquote>
<p>Et on lance le démon : </p>
<blockquote><p>sudo knockd -d -c /etc/knockd.conf</p>
</blockquote>
<h5>Utilisation :</h5>
<blockquote><p>knock IP_SERVEUR 443:udp 80:udp</p>
</blockquote>
<p>Il reste alors 10 secondes pour se connecter en SSH.</p>
<h5>Debbuging</h5>
<p>knockd peut se lancer comme une commande simple avec console. C'est pratique pour comprendre ce qui ne marche pas. </p>
<blockquote><p>sudo knockd -D -v -c /etc/knockd.conf</p>
</blockquote>
<h3>Quelques références :</h3>
<ul><li><a hreflang="en" href="http://www.zeroflux.org/projects/knock">Knock</a> : client & serveur pour faire du port-knocking. Très simple à configurer.</li>
<li><a hreflang="en" href="http://www.portknocking.org/">portknocking.org</a></li>
</ul>https://www.x-space.net/post/2011/03/13/Connexion-SSH-au-travers-d-un-proxy#comment-formhttps://www.x-space.net/feed/atom/comments/160