{"id":1106,"date":"2021-10-24T19:51:50","date_gmt":"2021-10-24T17:51:50","guid":{"rendered":"https:\/\/torstenzimmermann.de\/wordpress\/?p=1106"},"modified":"2022-02-10T13:59:18","modified_gmt":"2022-02-10T12:59:18","slug":"ssh-tarpit-im-docker-einrichten","status":"publish","type":"post","link":"https:\/\/torstenzimmermann.de\/wordpress\/ssh-tarpit-im-docker-einrichten\/","title":{"rendered":"SSH-Tarpit im Docker einrichten"},"content":{"rendered":"\n<p class=\"has-vivid-red-color has-text-color\"><strong>Bitte beachten Sie, dass es sich um einen Eingriff auf eigene Gefahr handelt! Alle Angaben sind ohne Gew\u00e4hr von Richtigkeit und Vollst\u00e4ndigkeit<\/strong>.<strong> Lesen Sie nur weiter, wenn Ihnen bewusst ist, dass dadurch Ihr System besch\u00e4digt werden kann. Wir \u00fcbernehmen keine Haftung!<\/strong><\/p>\n\n\n\n<p>Wie man (im Docker) ein SSH-Tarpit einrichtet und wozu das ganze \u00fcberhaupt.<\/p>\n\n\n\n<p>Im folgenden wird das Synology DSM Docker genutzt, funktioniert nat\u00fcrlich so (oder so \u00e4hnlich) in jedem anderen Linux auch.<\/p>\n\n\n\n<p>Zuerst einmal m\u00f6chte ich das &#8222;Wozu&#8220; erkl\u00e4ren.<\/p>\n\n\n\n<p>Das Tarpit &#8222;f\u00e4ngt&#8220; SSH anfragen ein und l\u00e4sst diese dann &#8222;versumpfen&#8220; bis der Angreifer die Verbindung trennt.<\/p>\n\n\n\n<p>Dieser Vorgang kann seitens tarpit unendlich lange dauern und verschwendet damit Bot Zeit. In dieser Zeit in der er gefangen ist im tarpit kann er mit dieser resource niemand anderen versuchen zu hacken. Ob man das machen m\u00f6chte ist also rein optional. Das beste ist: es frisst eigentlich fast keine Resourcen.<\/p>\n\n\n\n<p>Setze ich mich dadurch eine Gefahr aus gehackt zu werden ?<br>Kurzum: Nein. <br>In Lang: Endlessh schickt unendlich lange und sehr langsam an den Client pseudo Daten f\u00fcr den Verbindungsaufbau. Der Verbinundsaufbau wird nie zustande kommen und, wenn der Client es mitmacht, ewig im Verbindungsaufbau stehen bleiben. Aber selbst wenn er auf magische Weise irgendwie die Verbindung hacken w\u00fcrde: Er w\u00e4re in einem Docker Container ohne alles. Er k\u00e4me da eh nicht raus oder k\u00f6nnte irgendwas machen. Aber wie gesagt, das ist unm\u00f6glich das es passieren kann. <\/p>\n\n\n\n<p>siehe auch: <a href=\"https:\/\/www.youtube.com\/watch?v=EJdobdjI3xg\">https:\/\/www.youtube.com\/watch?v=EJdobdjI3xg<\/a><\/p>\n\n\n\n<p>Jetzt das &#8222;Wie&#8220;:<\/p>\n\n\n\n<p>Wir \u00f6ffnen in der DSM das Docker und suchen bei &#8222;Registrierung&#8220; folgendes Paket: harshavardhanj\/endlessh<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"193\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-1024x193.png\" alt=\"\" class=\"wp-image-1107\" srcset=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-1024x193.png 1024w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-300x56.png 300w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-768x145.png 768w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik.png 1057w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>hier der Link zum Projekt:<br><a href=\"https:\/\/registry.hub.docker.com\/r\/harshavardhanj\/endlessh\/\">https:\/\/registry.hub.docker.com\/r\/harshavardhanj\/endlessh\/<\/a><\/p>\n\n\n\n<p>und f\u00fcr die Leute Compose.yml Leute:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: \"3.4\"\nservices:\n    endlessh:\n        image: harshavardhanj\/endlessh:latest\n        ports:\n        - \"2222:2222\"\n        restart: always<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>Wir brauchen allerdings noch folgende Umgebungsvariable:<\/p>\n\n\n\n<p>TZ: Europe\/Berlin<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"555\" height=\"89\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-1.png\" alt=\"\" class=\"wp-image-1108\" srcset=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-1.png 555w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-1-300x48.png 300w\" sizes=\"auto, (max-width: 555px) 100vw, 555px\" \/><\/figure>\n\n\n\n<p>damit stellen wir die Timezone auf unsere Breitengrade.<\/p>\n\n\n\n<p>Ich empfehle ausserdem ein Volume f\u00fcr die Config zu erstellen, das kann so aussehen<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"559\" height=\"162\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-2.png\" alt=\"\" class=\"wp-image-1109\" srcset=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-2.png 559w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-2-300x87.png 300w\" sizes=\"auto, (max-width: 559px) 100vw, 559px\" \/><figcaption>Damit bleiben unsere Einstellungen auch nach einem evtl Containerupdate bestehen und erleichtert und ggfs. die Config zu editieren (wenn Bedarf besteht, z.b. nur IPv4 zu nutzen oder der Container soll einen anderen Port nutzen oder was auch immer). Eigentlich ist das aber nicht notwendig.<\/figcaption><\/figure>\n\n\n\n<p>Dann sollten wir noch den Port f\u00fcr den Docker-Container definieren:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"655\" height=\"240\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-3.png\" alt=\"\" class=\"wp-image-1110\" srcset=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-3.png 655w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-3-300x110.png 300w\" sizes=\"auto, (max-width: 655px) 100vw, 655px\" \/><\/figure>\n\n\n\n<p>haben wir das alles eingestellt k\u00f6nnen wir den Container starten. Er nimmt kaum Resourcen ein, ein Raspberry PI der ersten generation w\u00fcrde den auch schultern k\u00f6nnen und sich langweilen wie ihr seht.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"582\" height=\"292\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-12.png\" alt=\"\" class=\"wp-image-1119\" srcset=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-12.png 582w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-12-300x151.png 300w\" sizes=\"auto, (max-width: 582px) 100vw, 582px\" \/><\/figure>\n\n\n\n<p>Last but noch least m\u00fcssen wir im Router, in folgenden eine Fritzbox noch einen Port 22 auf machen und ihn an den Docker host mit dem Port 2222 weiterleiten. Wir wollen ja so tun als h\u00e4tten wir ein verwundbares Ger\u00e4t im Internetz.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"747\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-5-1024x747.png\" alt=\"\" class=\"wp-image-1112\" srcset=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-5-1024x747.png 1024w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-5-300x219.png 300w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-5-768x560.png 768w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-5.png 1176w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>das Netzwerkger\u00e4t ausw\u00e4hlen und auf &#8222;Neue Freigabe&#8220;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"902\" height=\"799\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-6.png\" alt=\"\" class=\"wp-image-1113\" srcset=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-6.png 902w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-6-300x266.png 300w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-6-768x680.png 768w\" sizes=\"auto, (max-width: 902px) 100vw, 902px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"580\" height=\"560\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-7.png\" alt=\"\" class=\"wp-image-1114\" srcset=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-7.png 580w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-7-300x290.png 300w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/figure>\n\n\n\n<p>Fertig ist eure Teergrube um Bots zu fangen und zu nerven. Damit macht ihr das Internet ein st\u00fcck sicherer.<br>Viele Bots verlieren mit der Zeit auch das Interesse an der IP wenn sie merken das sie hier nicht weiterkommen, noch ein Pluspunkt.<\/p>\n\n\n\n<p>So, wenn ihr jetzt aber auch zu den Menschen geh\u00f6rt die jetzt wissen wollen wieviel Zeit hab ich denn bei den Bots jetzt verschwendet ? Dann geht in euren DSM Aufgaben Planer:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"657\" height=\"616\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-8.png\" alt=\"\" class=\"wp-image-1115\" srcset=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-8.png 657w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-8-300x281.png 300w\" sizes=\"auto, (max-width: 657px) 100vw, 657px\" \/><\/figure>\n\n\n\n<p>Lasst den task als &#8222;root&#8220; laufen, lasst euch das Ergebnis per E-Mail zusenden und gebt bei Benutzerdefiniertes Script folgendes ein:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>docker logs tarpit &gt; \/volume1\/docker\/ssh-tarpit\/log\/endlessh.log &amp;&amp; echo &#8222;7 Tage Auswertung des ssh-tarpit:&#8220; &amp;&amp; echo &#8222;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8220; &amp;&amp; grep -i &#8218;time&#8216; \/volume1\/docker\/ssh-tarpit\/log\/endlessh.log | echo &#8222;Angreifer:&#8220; $(awk -v date=&#8220;$(date +&#8217;%Y-%m-%d&#8216; &#8211;date &#8218;7 days ago&#8216;)&#8220; -F, &#8218;{if($1&gt;date){print $0}}&#8216; | wc -l) &amp;&amp;grep -i &#8218;time&#8216; \/volume1\/docker\/ssh-tarpit\/log\/endlessh.log | awk -v date=&#8220;$(date +&#8217;%Y-%m-%d&#8216; &#8211;date &#8218;7 days ago&#8216;)&#8220; -F, &#8218;{if($1&gt;date){print $0}}&#8216; | cut -f6 -d &#8220; &#8220; | cut -f2 -d &#8222;=&#8220; | awk &#8218;{ SUM += $1; print $1 } END {print SUM\/60}&#8216; | awk &#8218;{printf &#8222;Verschwendete Zeit in Minuten: &#8220; &#8222;%.2f\\n&#8220;, $1}&#8217;| tail -1 &amp;&amp; grep -i &#8218;time&#8216; \/volume1\/docker\/ssh-tarpit\/log\/endlessh.log | awk -v date=&#8220;$(date +&#8217;%Y-%m-%d&#8216; &#8211;date &#8218;7 days ago&#8216;)&#8220; -F, &#8218;{if($1&gt;date){print $0}}&#8216; | cut -f6 -d &#8220; &#8220; | cut -f2 -d &#8222;=&#8220; | awk &#8218;{ SUM += $1; print $1 } END {print SUM\/60\/60}&#8216; | awk &#8218;{printf &#8222;Verschwendete Zeit in Stunden: &#8220; &#8222;%.2f\\n&#8220;, $1}&#8217;| tail -1 &amp;&amp; grep -i &#8218;time&#8216; \/volume1\/docker\/ssh-tarpit\/log\/endlessh.log | awk -v date=&#8220;$(date +&#8217;%Y-%m-%d&#8216; &#8211;date &#8218;7 days ago&#8216;)&#8220; -F, &#8218;{if($1&gt;date){print $0}}&#8216; | cut -f6 -d &#8220; &#8220; | cut -f2 -d &#8222;=&#8220; | awk &#8218;{ SUM += $1; print $1 } END {print SUM\/60\/60\/24}&#8216; | awk &#8218;{printf &#8222;Verschwendete Zeit in Tage: &#8220; &#8222;%.2f\\n&#8220;, $1}&#8217;| tail -1<br>echo &#8220; &#8222;<br><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p>ggfs m\u00fcsst ihr die Pfade anpassen. Das sieht dann so aus:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"577\" height=\"607\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-10.png\" alt=\"\" class=\"wp-image-1117\" srcset=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-10.png 577w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-10-285x300.png 285w\" sizes=\"auto, (max-width: 577px) 100vw, 577px\" \/><\/figure>\n\n\n\n<p>Was macht der Monstertext da ?<\/p>\n\n\n\n<p>Zuerst mal holt er sich die Log files und schreibt sie ins Docker Verzeichnis und sucht mit &#8222;grep&#8220; nach im Logfile nach Anzahl der Angreifer, Verbindungszeiten und rechnet das ganze in Minuten, Stunden und Tage um.<\/p>\n\n\n\n<p>Das Ergenis sieht etwa so aus:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"477\" height=\"300\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-11.png\" alt=\"\" class=\"wp-image-1118\" srcset=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-11.png 477w, https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/uploads\/2021\/10\/grafik-11-300x189.png 300w\" sizes=\"auto, (max-width: 477px) 100vw, 477px\" \/><\/figure>\n\n\n\n<p>In meinen Fall lass ich die letzten 7 Tage nur auswerten. Bei bedarf kann man den &#8222;Monstertext&#8220; leicht anpassen auf jeden anderen Zeitraum, z.b. alle 28 tage. alle 31 tage. Der genutzte Befehl &#8222;AWK&#8220; w\u00fcrde auch 1 Month ago verstehen oder 4 weeks ago.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n<div class=\"thanks_button_div\" \n                  style=\"float: left; margin-right: 10px;\"><div id=\"thanksButtonDiv_1106_1\" style=\"background-image:url(https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/plugins\/thanks-you-counter-button\/images\/thanks_large_blue.png); background-repeat:no-repeat; float: left; display: inline;\"\n                onmouseover=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_1106_1', true);\" \n                onmouseout=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_1106_1', false);\"\n                onclick=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_1106_1', false);\" >\n                <input type=\"button\" onclick=\"thankYouButtonClick(1106, 'You left &ldquo;Thanks&rdquo; already for this post')\" value=\"Thank You 10\"\n                  class=\"thanks_button thanks_large thanks_blue\"\n                  style=\"  font-family: Verdana, Arial, Sans-Serif; font-size: 14px; font-weight: normal;; color:#ffffff;\"\n                  id=\"thanksButton_1106_1\" title=\"Click to leave &ldquo;Thanks&rdquo; for this post\"\/>\n             <\/div><div id=\"ajax_loader_1106_1\" style=\"display:inline;visibility: hidden;\"><img decoding=\"async\" alt=\"ajax loader\" src=\"https:\/\/torstenzimmermann.de\/wordpress\/wp-content\/plugins\/thanks-you-counter-button\/images\/ajax-loader.gif\" \/><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Bitte beachten Sie, dass es sich um einen Eingriff auf eigene Gefahr handelt! Alle Angaben sind ohne Gew\u00e4hr von Richtigkeit und Vollst\u00e4ndigkeit. Lesen Sie nur weiter, wenn Ihnen bewusst ist, dass dadurch Ihr System besch\u00e4digt werden kann. Wir \u00fcbernehmen keine Haftung! Wie man (im Docker) ein SSH-Tarpit einrichtet und wozu das ganze \u00fcberhaupt. Im folgenden [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45],"tags":[47,48],"class_list":["post-1106","post","type-post","status-publish","format-standard","hentry","category-synonlogy-nas","tag-synology","tag-tarpit"],"_links":{"self":[{"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/posts\/1106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/comments?post=1106"}],"version-history":[{"count":6,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/posts\/1106\/revisions"}],"predecessor-version":[{"id":1159,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/posts\/1106\/revisions\/1159"}],"wp:attachment":[{"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/media?parent=1106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/categories?post=1106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/torstenzimmermann.de\/wordpress\/wp-json\/wp\/v2\/tags?post=1106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}