{"id":3032,"date":"2014-04-16T20:42:21","date_gmt":"2014-04-16T18:42:21","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=3032"},"modified":"2021-11-22T17:15:28","modified_gmt":"2021-11-22T16:15:28","slug":"wie-wird-eine-pushover-benachrichtigung-auf-dem-raspberry-pi-bei-zugriff-per-ssh-versendet-um-einbrueche-zu-erkennen","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=3032","title":{"rendered":"Wie wird eine Pushover Benachrichtigung auf dem Raspberry Pi  bei Zugriff per SSH versendet um Einbr\u00fcche zu erkennen?"},"content":{"rendered":"<p>Damit ich benachrichtigt werde, wenn die NSA oder jemand anders per SSH auf meinen Server einbricht, kann dieses Script dienen, welches eine Pushover Nachricht an das Handy oder iPad sendet wenn jeman sich per SSH auf den Raspberry Pi einloggt. Als Basis diente diese sehr ausf\u00fchrliche <a href=\"https:\/\/jankarres.de\/2014\/03\/raspberry-pi-push-benachrichtigung-bei-ssh-anmeldung\/\" title=\"push\">Seite<\/a> die sowas mit <a href=\"https:\/\/www.pushbullet.com\/\" title=\"push\" target=\"_blank\" rel=\"noopener noreferrer\">Pushbullet<\/a> realisiert hat.<\/p>\n<p>Diese <code>pushover-ssh.sh<\/code> Datei<!--more--><br \/>\n<code><br \/>\n#!\/bin\/sh<br \/>\n#<br \/>\n# pushover-ssh.sh<br \/>\n#<br \/>\n# Dieses Script versendet eine Pushover Nachricht wenn eine Anmeldung per SSH durchgefuehrt wird.<br \/>\n#<br \/>\n# Thomas Wenzlaff 15.04.2014 Installationsanleitung unter http:\/\/www.wenzlaff.info<br \/>\n#<br \/>\n#<br \/>\n# (C) 2014 Thomas Wenzlaff http:\/\/www.wenzlaff.de<br \/>\n#<br \/>\n# This program is free software: you can redistribute it and\/or modify<br \/>\n# it under the terms of the GNU General Public License as published by<br \/>\n# the Free Software Foundation, either version 3 of the License, or<br \/>\n# (at your option) any later version.<br \/>\n#<br \/>\n# This program is distributed in the hope that it will be useful,<br \/>\n# but WITHOUT ANY WARRANTY; without even the implied warranty of<br \/>\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br \/>\n# GNU General Public License for more details.<br \/>\n#<br \/>\n# You should have received a copy of the GNU General Public License<br \/>\n# along with this program. If not, see {http:\/\/www.gnu.org\/licenses\/}.<\/p>\n<p># Hier den User Key von der https:\/\/pushover.net Seite eingeben:<br \/>\nPUSHOVER_USER=\"\"<br \/>\n# Hier den API Token\/Key eingeben. Zu finden unter dem Men\u00fc: Apps & Plugins dann die Application<br \/>\nPUSHOVER_API_TOKEN=\"\"<\/p>\n<p># Ab hier nichts mehr anpassen<br \/>\nif [ -z \"$PUSHOVER_USER\" ]<br \/>\n then echo \"Der Pushover User muss im Script angegeben werden. Einen Wert f\u00fcr PUSHOVER_USER setzen.\"<br \/>\n return 1<br \/>\nfi<br \/>\nif [ -z \"$PUSHOVER_API_TOKEN\" ]<br \/>\n then echo \"Der Pushover Token muss im Script angegeben werden. Einen Wert f\u00fcr PUSHOVER_API_TOKEN setzen.\"<br \/>\n return 1<br \/>\nfi<br \/>\necho \"SSH Zugriff wird nun \u00fcberwacht\"<\/p>\n<p>tail -F \/var\/log\/auth.log | gawk '{if(NR>10 && $0 ~ \/sshd\/ && $0 ~ \/Accepted\/)\\<br \/>\n{ cmd=sprintf(\"curl -s \\<br \/>\n-F \\\"token='$PUSHOVER_API_TOKEN'\\\" \\<br \/>\n-F \\\"user='$PUSHOVER_USER'\\\" \\<br \/>\n-F \\\"message=SSH Zugriff erfolgt durch %s von %s\\\" \\<br \/>\n-F \\\"title=Raspberry Pi\\\" https:\/\/api.pushover.net\/1\/messages.json\",$9,$11); \\<br \/>\nsystem(cmd)}}'<br \/>\n<\/code><br \/>\nin diesem Verzeichnis anlegen:<br \/>\n<code>\/usr\/local\/bin\/<\/code><\/p>\n<p>Die aktuellste Version kann auch von <a href=\"https:\/\/github.com\/IT-Berater\/wenzlaff.de\/blob\/master\/raspberry-pi\/usr\/local\/bin\/pushover-ssh.sh\" title=\"github\" target=\"_blank\" rel=\"noopener noreferrer\">github<\/a> geladen werden. Mit<\/p>\n<pre class=\"lang:default decode:true \" >cd \/usr\/local\/bin\r\nsudo wget https:\/\/github.com\/IT-Berater\/wenzlaff.de\/raw\/master\/raspberry-pi\/usr\/local\/bin\/pushover-ssh.sh<\/pre>\n<p>Mit dem Editor den <strong>Key<\/strong> und den <strong>User<\/strong> von Pushover eintragen und speichern.<\/p>\n<p>Die Datei ausf\u00fchrbar machen mit:<\/p>\n<pre class=\"lang:default decode:true \" >sudo chmod 711 \/usr\/local\/bin\/pushover-ssh.sh<\/pre>\n<p>Testen ob das Script l\u00e4uft mit:<\/p>\n<pre class=\"lang:default decode:true \" >sudo \/usr\/local\/bin\/pushover-ssh.sh<\/pre>\n<p>Wenn die Fehlermeldung: <code>Zeile 37: gawk: Kommando nicht gefunden.<\/code> kommt,<br \/>\nmuss noch <a href=\"http:\/\/www.gnu.org\/software\/gawk\/\" title=\"gawk\" target=\"_blank\" rel=\"noopener noreferrer\">gawk<\/a> installiert werden mit: <\/p>\n<pre class=\"lang:default decode:true \" >\r\nsudo apt-get install gawk<\/pre>\n<p>Wenn eine Leerzeile angezeigt wird ohne Fehlermeldung, dann mit einer <strong>neuen<\/strong> Konsole anmelden. Wenn die Anmeldung geklappt hat, und Pushover richtig eingerichtet war, wird augenblicklich eine Pushbenachrichtigung bei jedem einloggen per SSH versendet.<\/p>\n<p>Dieses Script wird nun noch dauerhaft aufgerufen, in dem es in der <strong>chrontab<\/strong> erg\u00e4nzt wird mit:<\/p>\n<pre class=\"lang:default decode:true \" >crontab -e<\/pre>\n<p>Am ende der Datei <\/p>\n<pre class=\"lang:default decode:true \" >@reboot sudo \/usr\/local\/bin\/pushover-ssh.sh<\/pre>\n<p>anh\u00e4ngen und speichern. Nach einem <code>reboot<\/code> ist alles dauerhaft eingerichtet. Dann noch einmal wie oben beschrieben testen.<\/p>\n<p><em>Was macht das Script?<\/em><\/p>\n<p>Jeder Zugriff per SSH wird in der Datei<code>\/var\/log\/auth.log<\/code> gespeichert.<br \/>\n<a href=\"http:\/\/www.gnu.org\/software\/gawk\/\" title=\"gawk\" target=\"_blank\" rel=\"noopener noreferrer\">gawk<\/a> f\u00fchrt das aus, was zwischen &#8218;{ und }&#8216; steht und zwar f\u00fcr jede Zeile die es als input bekommt. Dabei werden die Zeilen mit NR durchgez\u00e4hlt.<br \/>\nF\u00fcr jede Zeile testet das Programm die if Bedingung ob alle drei Bedingungen erf\u00fcllt sind.<br \/>\n<code>if(NR>10 && $0 ~ \/sshd\/ && $0 ~ \/Accepted\/)<\/code> das bedeutet:<br \/>\n<strong>NR>10:<\/strong> die ersten 10 Zeilen werden ignorieren<br \/>\n<strong>$0 ~ \/sshd\/<\/strong> nur wenn die ganze Zeile ($0) irgendwo das Wort <strong>sshd<\/strong> enth\u00e4lt<br \/>\n<strong>$0 ~ \/Accepted\/<\/strong> nur wenn die ganze Zeile ($0) irgendwo das Wort <strong>Accepted<\/strong> enth\u00e4lt. Dann wird die Nachricht an die REST-Schnittstelle von Pushover per <a href=\"https:\/\/curl.se\/\" title=\"curl\" target=\"_blank\" rel=\"noopener noreferrer\">curl<\/a> gesendet.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Damit ich benachrichtigt werde, wenn die NSA oder jemand anders per SSH auf meinen Server einbricht, kann dieses Script dienen, welches eine Pushover Nachricht an das Handy oder iPad sendet wenn jeman sich per SSH auf den Raspberry Pi einloggt. Als Basis diente diese sehr ausf\u00fchrliche Seite die sowas mit Pushbullet realisiert hat. Diese pushover-ssh.sh &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=3032\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eWie wird eine Pushover Benachrichtigung auf dem Raspberry Pi  bei Zugriff per SSH versendet um Einbr\u00fcche zu erkennen?\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[852,1204,79,1023,1319],"tags":[1398,1627,1401,1400,324,1227,1266,1397,1396,176,740,1399],"class_list":["post-3032","post","type-post","status-publish","format-standard","hentry","category-heimautomatisierung","category-internet-2","category-programmierung","category-raspberry-pi","category-sicherheit-2","tag-anmeldung","tag-einbruch","tag-einbrueche","tag-einlogen","tag-github","tag-nsa","tag-pushover","tag-script","tag-sh","tag-sicherheit","tag-ssh","tag-ssh-script"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/3032","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3032"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/3032\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3032"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3032"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3032"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}