{"id":2192,"date":"2019-04-05T08:00:54","date_gmt":"2019-04-05T06:00:54","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=2192"},"modified":"2019-06-20T13:31:41","modified_gmt":"2019-06-20T11:31:41","slug":"verzeichnis-well-known-ueberwachen","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/verzeichnis-well-known-ueberwachen\/","title":{"rendered":"Verzeichnis &#8222;\/.well-known\/&#8220; \u00fcberwachen"},"content":{"rendered":"\n<p>In einem bei <a rel=\"noreferrer noopener\" aria-label=\"heise online ver\u00f6ffentlichten Artikel (\u00f6ffnet in neuem Tab)\" href=\"https:\/\/www.heise.de\/security\/meldung\/Verzeichnis-well-known-beliebtes-Malware-Versteck-auf-gehackten-Webservern-4359145.html\" target=\"_blank\">heise online ver\u00f6ffentlichten Artikel<\/a> ist zu lesen, dass das Verzeichnis &#8222;\/.well-known\/&#8220; ein beliebtes Malware-Versteck auf gehackten Webservern ist. Der heise-Artikel empfiehlt Admins, den Inhalt von &#8222;\/.well-known\/&#8220; und ggf. weiterer Unterverzeichnisse von Zeit zu Zeit zu pr\u00fcfen. Um dies nicht manuell tun zu m\u00fcssen, biete ich mit diesem Artikel ein Tutorial, das beschreibt, wie man diese Aufgabe mit Hilfe von <a rel=\"noreferrer noopener\" aria-label=\"systemd.path-Units (\u00f6ffnet in neuem Tab)\" href=\"https:\/\/www.my-it-brain.de\/wordpress\/unit-typ-systemd-path-kurz-vorgestellt\/\" target=\"_blank\">systemd.path-Units<\/a> automatisieren kann.<\/p>\n\n\n\n<p>Ziel ist es, dass das System in dem Fall, dass sich der Verzeichnisinhalt von &#8222;\/.well-known\/&#8220; oder eines darin enthaltenen Unterverzeichnisses \u00e4ndert, eine E-Mail mit einem aktuellen Verzeichnis-Listing an eine konfigurierte E-Mail-Adresse sendet.<\/p>\n\n\n\n<p><a href=\"#update-2019-06-20\">Update 2019-06-20: Neuen Abschnitt eingef\u00fcgt<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Voraussetzungen<\/h2>\n\n\n\n<p>Um diesem Tutorial folgen zu k\u00f6nnen, muss das betrachtete System<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>systemd als Init-System verwenden und<\/li><li>in der Lage sein, E-Mails zu versenden.<\/li><\/ul>\n\n\n\n<p>Dar\u00fcber hinaus werden Kenntnisse in der Bearbeitung von Dateien mit einem Texteditor im Terminal vorausgesetzt.<\/p>\n\n\n\n<p><em>Hinweis:<\/em> Das Tutorial wurde mehrfach erfolgreich unter Ubuntu Bionic getestet. Der Leser Daniel hat versucht es unter Ubuntu Xenial nachzuvollziehen, was jedoch nicht gegl\u00fcckt ist. Details dazu finden sich in den Kommentaren zum Artikel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Erstellung der Path-Unit<\/h2>\n\n\n\n<p>Im Verzeichnis <code>\/etc\/systemd\/system\/<\/code> wird die Datei <code>beispiel.path<\/code> mit folgendem Inhalt erstellt. Der Dateiname kann selbstverst\u00e4ndlich frei gew\u00e4hlt werden. Er muss lediglich auf <code>.path<\/code> enden.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>[Unit]\nDescription=\"Meine '\/.well-known\/' Verzeichnisse auf \u00c4nderungen hin \u00fcberwachen\"\n\n[Path]\nPathModified=\/var\/www\/site1\/public\/.well-known\/\nPathModified=\/var\/www\/site1\/public\/.well-known\/acme-challenge\/\nPathModified=\/var\/www\/site2\/public\/.well-known\/\nPathModified=\/var\/www\/site2\/.well-known\/acme-challenge\/\nPathModified=\/var\/www\/site3\/public\/.well-known\/\nPathModified=\/var\/www\/site3\/public\/.well-known\/acme-challenge\/\nUnit=beispiel.service\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p>In obigem Beispiel wird davon ausgegangen, dass der Webserver drei verschiedene Seiten ausliefert, die jeweils \u00fcber ein eigenes &#8222;\/.well-known\/&#8220;-Verzeichnis mit jeweils einem Unterverzeichnis verf\u00fcgen.<\/p>\n\n\n\n<p>In der Sektion <code>[Path]<\/code> wird mit <code>PathModified=<\/code> der absolute Pfad zu den zu \u00fcberwachenden Verzeichnissen spezifiziert, w\u00e4hrend <code>Unit=<\/code>  angibt, welche Service-Unit ausgef\u00fchrt werden soll, wenn sich der Inhalt eines der spezifizierten Verzeichnisse \u00e4ndert. Diese Unit soll gestartet werden, wenn sich das System im  Multi-User-Mode befindet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Erstellung der Service-Unit<\/h2>\n\n\n\n<p>Als n\u00e4chstes wird die auszuf\u00fchrende Service-Unit erstellt. Diese sollte den gleichen Namen wie die Path-Unit haben, im Unterschied zu dieser jedoch auf <code>.service<\/code> enden. Die Datei <code>beispiel.service<\/code> wird ebenfalls im Verzeichnis <code>\/etc\/systemd\/system\/<\/code> erstellt.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>[Unit]\nDescription=\"F\u00fchrt Skript aus, wenn eine Datei sich ge\u00e4ndert hat.\"\n\n[Service]\nType=simple\nExecStart=\/home\/oglattermann\/skript.sh\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p>In der Service-Unit wird definiert, was getan werden soll, wenn die dazugeh\u00f6rige Path-Unit ausgel\u00f6st wird. In diesem Beispiel soll das hinter <code>ExecStart=<\/code> angegebene Skript ausgef\u00fchrt werden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Erstellung des auszuf\u00fchrenden Skripts<\/h2>\n\n\n\n<p>Findet eine \u00c4nderung in einem der \u00fcberwachten Verzeichnisse statt, wird folgendes Skript ausgef\u00fchrt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\nMAIL_TEXT=\"\/tmp\/well-known\"\nMAIL_RCP=\"foo@example.com\"\ncreate_mail() {\ncat >\"${MAIL_TEXT}\" &lt;&lt;EOF\nAchtung, der Inhalt der '\/.well-known\/'-Verzeichnisse wurde ver\u00e4ndert. Die Verzeichnisse haben aktuell folgenden Inhalt:\n\n$(find \/var\/www\/ -type d -name \".well-known\" -exec ls -lRa {} \\;)\nEOF\n}\n\nsend_mail() {\n    \/usr\/bin\/mailx -s 'Achtung: Inhalt von \/.well-known\/ ge\u00e4ndert' ${MAIL_RCP} &lt;\"${MAIL_TEXT}\"\n}\n\ncreate_mail\nsend_mail<\/code><\/pre>\n\n\n\n<p>Das obige Skript ist abends auf dem Sofa entstanden und erhebt nicht den Anspruch sch\u00f6n oder perfekt zu sein. Es erf\u00fcllt jedoch seinen Zweck und sendet eine E-Mail an eine angegebe Empfangsadresse. In der Mail werden alle &#8222;\/.well-known\/&#8220;-Verzeichnisse inkl. enthaltener Dateien und Unterverzeichnisse aufgelistet, welche sich innerhalb des Suchpfads <code>\/var\/www<\/code> befinden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die \u00dcberwachung scharf schalten<\/h2>\n\n\n\n<p>Um die \u00dcberwachung zu aktivieren, sind noch die folgenden Schritte mit root-Rechten auszuf\u00fchren:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Die Units zu aktivieren<\/li><li>Die Path-Unit zu starten<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl enable beispiel.path beispiel.service\nsudo systemctl start beispiel.path<\/code><\/pre>\n\n\n\n<p>Zum Test kann man nun eine neue Datei oder ein Verzeichnis in einem der \u00fcberwachten Pfade erstellen. Daraufhin, sollte man eine E-Mail erhalten, welche \u00fcber die \u00c4nderung informiert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"update-2019-06-20\">Update 2019-06-20: Auff\u00e4lliges Verhalten erkannt<\/h2>\n\n\n\n<p>In den letzten Tagen habe ich sporadisch eine E-Mail von meinem Server bekommen, welche mich \u00fcber eine \u00c4nderung in den \u00fcberwachten Verzeichnissen informieren sollte. Jedoch konnte ich im Inhalt der E-Mail keinerlei \u00c4nderung an den Verzeichnisinhalten erkennen. Diese waren wie erwartet leer.<\/p>\n\n\n\n<p>Meine Hypothese warum ich dennoch eine E-Mail bekam war, dass die erfolgte \u00c4nderung umgehend r\u00fcckg\u00e4ngig gemacht wurde. So dass die Verzeichnisse bereits wieder leer waren, als die Service-Unit ausgef\u00fchrt wurde, welche mir die Verzeichnisinhalte per E-Mail sendet. Um diese Hypothese zu pr\u00fcfen, habe ich folgendes Kommando ausgef\u00fchrt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># touch \/var\/www\/site1\/public\/.well-known\/test &amp;&amp; rm \/var\/www\/site1\/public\/.well-known\/test<\/code><\/pre>\n\n\n\n<p>Der kurze Test best\u00e4tigte meine Hypothese. Es wurde wie erwartet eine Datei erstellt und direkt wieder entfernt. Die Path-Unit aktivierte die verkn\u00fcpfte Service-Unit und ich erhielt eine E-Mail nach welcher der Inhalt von <em>\/var\/www\/site1\/public\/.well-known\/ <\/em>leer war.<\/p>\n\n\n\n<p>Das beobachtete Verhalten empfinde ich als unsch\u00f6n, da ich so nicht mehr feststellen kann, was f\u00fcr eine \u00c4nderung stattgefunden hat und die E-Mail-Benachrichtigung damit nicht zum gew\u00fcnschten Erkenntnisgewinn f\u00fchrt.<\/p>\n\n\n\n<p>Noch ist unklar, ob dies einer fehlerhaften Konfiguration meinerseits, einem Bug, oder dem Design geschuldet ist. Falls jemand von euch einen besseren Einblick in diese Thematik besitzt, freue ich mich \u00fcber euren Kommentar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ein Hinweis zum Schluss<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Erw\u00e4hnt werden muss, dass nur \u00c4nderungen signalisiert werden k\u00f6nnen, die vom Kernel ausgef\u00fchrt werden. F\u00fchren andere Maschinen auf per Netzwerk eingebundenen Pfaden \u00c4nderungen durch, wird das nicht signalisiert.<\/p><cite>https:\/\/www.my-it-brain.de\/wordpress\/unit-typ-systemd-path-kurz-vorgestellt\/#comment-1624<\/cite><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Quellen und weiterf\u00fchrende Links<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/unit-typ-systemd-path-kurz-vorgestellt\/\">https:\/\/www.my-it-brain.de\/wordpress\/unit-typ-systemd-path-kurz-vorgestellt\/<\/a><\/li><li>systemd.unit(5)<\/li><li>systemd.path(5)<\/li><li>systemd.service(5)<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In einem bei heise online ver\u00f6ffentlichten Artikel ist zu lesen, dass das Verzeichnis &#8222;\/.well-known\/&#8220; ein beliebtes Malware-Versteck auf gehackten Webservern ist. Der heise-Artikel empfiehlt Admins, den Inhalt von &#8222;\/.well-known\/&#8220; und ggf. weiterer Unterverzeichnisse von Zeit zu Zeit zu pr\u00fcfen. Um dies nicht manuell tun zu m\u00fcssen, biete ich mit diesem Artikel ein Tutorial, das beschreibt,<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/verzeichnis-well-known-ueberwachen\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[3],"tags":[524,430,305,481,523],"class_list":["post-2192","post","type-post","status-publish","format-standard","hentry","category-tutorials","tag-acme-challenge","tag-osbn","tag-planet","tag-systemd-path","tag-well-known"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2192","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=2192"}],"version-history":[{"count":8,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2192\/revisions"}],"predecessor-version":[{"id":2229,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/2192\/revisions\/2229"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=2192"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=2192"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=2192"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}