{"id":1165,"date":"2022-01-06T15:09:07","date_gmt":"2022-01-06T14:09:07","guid":{"rendered":"https:\/\/www.howto-do.it\/de\/?post_type=howto&#038;p=1165"},"modified":"2022-01-06T15:09:07","modified_gmt":"2022-01-06T14:09:07","slug":"sshguard-unter-debian-installieren-und-nutzen","status":"publish","type":"howto","link":"https:\/\/www.howto-do.it\/de\/howto\/sshguard-unter-debian-installieren-und-nutzen\/","title":{"rendered":"sshguard unter Debian installieren und nutzen"},"content":{"rendered":"<p>\u00c4hnlich wie <strong><a href=\"https:\/\/www.howto-do.it\/de\/howto\/fail2ban-ueberwacht-logfiles-nicht\/\">fail2ban<\/a><\/strong> ist <strong>sshguard<\/strong> ein Programm das im Hintergrund die wichtigsten System-Logs mitliest und<strong> fehlgeschlagene Anmeldeversuche<\/strong> erkennt. Bei wiederholten falschen Anmeldungen sperr sshguard den Rechner mit dem fehlgeschlagenen Anmeldeversuch (z.B. via ssh). So werden mit sshguard etwa die Risiken einer Brute-Force Attacke via secure shell auf ein Minimum reduziert.<\/p>\n<p>In diesem Howto erkl\u00e4re ich, wie man sshguard unter <strong>Debian 10 bzw. Debian 11 installiert und konfiguriert<\/strong>. Lost geht&#8217;s:<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Inhalt<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69d4eb7be2578\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69d4eb7be2578\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.howto-do.it\/de\/howto\/sshguard-unter-debian-installieren-und-nutzen\/#Schritt_1_%E2%80%93sshguard_installieren\" >Schritt 1 &#8211;sshguard installieren<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.howto-do.it\/de\/howto\/sshguard-unter-debian-installieren-und-nutzen\/#Schritt_2_%E2%80%93_sshguard_anpassen\" >Schritt 2 &#8211; sshguard anpassen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.howto-do.it\/de\/howto\/sshguard-unter-debian-installieren-und-nutzen\/#Schritt_3_%E2%80%93_sshguard_pruefen\" >Schritt 3 &#8211; sshguard pr\u00fcfen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.howto-do.it\/de\/howto\/sshguard-unter-debian-installieren-und-nutzen\/#Schritt_4_%E2%80%93_den_Debian_Server_bzw_sshguard_testen\" >Schritt 4 &#8211; den Debian Server bzw. sshguard testen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.howto-do.it\/de\/howto\/sshguard-unter-debian-installieren-und-nutzen\/#Schritt_5_%E2%80%93_sshguard_checken\" >Schritt 5 &#8211; sshguard checken<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.howto-do.it\/de\/howto\/sshguard-unter-debian-installieren-und-nutzen\/#Schritt_6_%E2%80%93_sshguard_anpassen\" >Schritt 6 &#8211; sshguard anpassen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.howto-do.it\/de\/howto\/sshguard-unter-debian-installieren-und-nutzen\/#Fazit_zu_sshguard\" >Fazit zu sshguard<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Schritt_1_%E2%80%93sshguard_installieren\"><\/span>Schritt 1 &#8211;sshguard installieren<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Unter Debian 10 wird sshguard wie jedes andere Programm via &#8220;apt install&#8221; installiert<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">apt -y install sshguard<\/pre>\n<p>Unter <strong>Debian 11<\/strong> ist das Programm sshguard leider nicht mehr in den Standard-Repositories enthalten. Wir m\u00fcssen dazu das experimentelle &#8220;SID&#8221; Repository anlegen. Dazu erstellen wir tempor\u00e4r die Datei \/etc\/apt\/sources.list.d\/debian-sid.list mit dem passenden Repository und installieren danach sshguard. Die Datei debian-sid.list l\u00f6schen wir anschlie\u00dfend wieder, da wir sonst alle m\u00f6glichen Software-Pakete aktualisiert bekommen.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">echo 'deb-src http:\/\/ftp.de.debian.org\/debian\/ sid main non-free contrib\r\ndeb http:\/\/ftp.de.debian.org\/debian\/ sid main non-free contrib' &gt; \/etc\/apt\/sources.list.d\/debian-sid.list\r\n\r\napt update\r\napt -y install sshguard\r\nrm \/etc\/apt\/sources.list.d\/debian-sid.list\r\n<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Schritt_2_%E2%80%93_sshguard_anpassen\"><\/span>Schritt 2 &#8211; sshguard anpassen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Damit l\u00e4uft sshguard zwar schon. Wir sollten es aber noch an das jeweilige Server-System und die installierten Programme anpassen. Etwa Secure Shell, ftp (?) oder postfix. Dazu bauen wir zumindest die passenden Log-Files in die Datei \/etc\/sshguard\/sshguard.conf ein:<\/p>\n<p>F\u00fcr ein Standard-Debian mit ssh und postfix<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">FILES=\"\/var\/log\/auth.log \/var\/log\/mail.log\"<\/pre>\n<p>F\u00fcr ein Debian Server mit ssh, postfix und einem ftp daemon mit proftpd:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">FILES=\"\/var\/log\/auth.log \/var\/log\/mail.log \/var\/log\/proftpd\/proftpd.log\"<\/pre>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Schritt_3_%E2%80%93_sshguard_pruefen\"><\/span>Schritt 3 &#8211; sshguard pr\u00fcfen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Anschlie\u00dfend starten wir sshguard neu:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">systemctl restart sshguard<\/pre>\n<p>Pr\u00fcfen mit:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">systemctl status sshguard<\/pre>\n<p>Im Output erkennen wir ob schon jemand ins Netz gegangen ist:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">root@host:~# systemctl status sshguard\r\n\u25cf sshguard.service - SSHGuard\r\n     Loaded: loaded (\/lib\/systemd\/system\/sshguard.service; enabled; vendor preset: enabled)\r\n     Active: active (running) since Thu 2022-01-06 13:54:07 CET; 1h 12min ago\r\n       Docs: man:sshguard(8)\r\n    Process: 81637 ExecStartPre=\/usr\/sbin\/nft add table ip sshguard (code=exited, status=0\/SUCCESS)\r\n    Process: 81638 ExecStartPre=\/usr\/sbin\/nft add table ip6 sshguard (code=exited, status=0\/SUCCESS)\r\n   Main PID: 81639 (sshguard)\r\n      Tasks: 12 (limit: 4675)\r\n     Memory: 3.1M\r\n        CPU: 210ms\r\n     CGroup: \/system.slice\/sshguard.service\r\n             \u251c\u250081639 \/bin\/sh \/usr\/sbin\/sshguard\r\n             \u251c\u250081640 \/bin\/sh \/usr\/sbin\/sshguard\r\n             \u251c\u250081641 \/bin\/sh \/usr\/sbin\/sshguard\r\n             \u251c\u250081642 \/usr\/libexec\/sshguard\/sshg-blocker -a 30 -p 120 -s 1800 -w \/etc\/sshguard\/whitelist\r\n             \u251c\u250081643 \/bin\/sh \/usr\/sbin\/sshguard\r\n             \u251c\u250081644 \/usr\/libexec\/sshguard\/sshg-parser\r\n             \u251c\u250081645 \/bin\/sh \/usr\/libexec\/sshguard\/sshg-fw-nft-sets\r\n             \u251c\u250081646 journalctl -afb -p info -n1 -t sshd -o cat\r\n             \u251c\u250081647 grep --line-buffered ^\r\n             \u251c\u250081648 tail -F -n 0 \/var\/log\/auth.log \/var\/log\/mail.log \/var\/log\/proftpd\/proftpd.log\r\n             \u2514\u250081649 grep --line-buffered ^\r\n\r\nJan 06 15:00:13 radius sshguard[81642]: 222.187.232.39: unblocking after 483 secs\r\nJan 06 15:01:43 radius sshguard[81642]: Attack from \"221.181.185.143\" on service SSH with danger 10.\r\nJan 06 15:01:43 radius sshguard[81642]: Attack from \"221.181.185.143\" on service SSH with danger 10.\r\nJan 06 15:01:47 radius sshguard[81642]: Attack from \"221.181.185.143\" on service SSH with danger 10.\r\nJan 06 15:01:47 radius sshguard[81642]: Blocking \"221.181.185.143\/32\" for 120 secs (3 attacks in 4 secs, after 1 abuses over 4 secs.)\r\nJan 06 15:04:18 radius sshguard[81642]: 221.181.185.143: unblocking after 151 secs\r\nJan 06 15:05:18 radius sshguard[81642]: Attack from \"222.187.232.39\" on service SSH with danger 10.\r\nJan 06 15:05:18 radius sshguard[81642]: Attack from \"222.187.232.39\" on service SSH with danger 10.\r\nJan 06 15:05:22 radius sshguard[81642]: Attack from \"222.187.232.39\" on service SSH with danger 10.\r\nJan 06 15:05:22 radius sshguard[81642]: Blocking \"222.187.232.39\/32\" for 960 secs (3 attacks in 4 secs, after 4 abuses over 3333 secs.)\r\n<\/pre>\n<p>&#8230; und siehe da: Der erste ungebetene Besucher wurde schon gesperrt. Sshguard funktoniert also und tut was es soll. Wir wollen es aber genau wissen und unser frusch installiertes Debian System etwas &#8220;stressen&#8221;.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Schritt_4_%E2%80%93_den_Debian_Server_bzw_sshguard_testen\"><\/span>Schritt 4 &#8211; den Debian Server bzw. sshguard testen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Um die Funktion von sshguard zu pr\u00fcfen, verbinden wir uns per ssh auf einen zweiten Host via ssh. Das kann ein anderes Debian Server System sein oder ein Host mit Centos oder RHEL.<\/p>\n<p>Wir installieren zuerst das Programm &#8220;sshpass&#8221; (Auf Centos oder RHEL: yum -y install sshpass)<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">apt install sshpass -y<\/pre>\n<p>Nun erstellen wir den Ordner \/root\/scripts und kopieren dorthin ein Skript, dass 10 willk\u00fcrliche Versuche des ssh Zugriffs auf den Host &#8220;host.domain.tld&#8221; unternimmt. Ersetzen Sie &#8220;host.domain.tld&#8221; mit ihrem neuen Debian System auf dem wir sshguard testen wollen.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">mkdir \/root\/scripts\/\r\necho '#!\/bin\/bash\r\nfor i in {1..10}; do\r\nsshpass -p $RANDOM ssh -o StrictHostKeyChecking=no root@host.domain.tld\r\ndone' &gt; \/root\/scripts\/sshpass.sh\r\n\r\nchmod +x \/root\/scripts\/sshpass.sh\r\n\/root\/scripts\/sshpass.sh<\/pre>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Schritt_5_%E2%80%93_sshguard_checken\"><\/span>Schritt 5 &#8211; sshguard checken<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Noch mal zur\u00fcck auf dem &#8220;angegriffenen&#8221; Host pr\u00fcfen wir mit &#8220;nft list table sshguard&#8221; welche IP-Adressen uns bis jetzt ins Netz gegangen sind. Die IP-Adresse des Hosts aus Schritt 4 sollte auf jeden Fall darunter sein:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\">nft list table sshguard\r\ntable ip sshguard {\r\nset attackers {\r\ntype ipv4_addr\r\nflags interval\r\nelements = { 37.235.54.83, 62.75.189.88,\r\n162.252.172.13}\r\n}\r\n\r\nchain blacklist {\r\ntype filter hook input priority filter - 10; policy accept;\r\nip saddr @attackers drop\r\n}\r\n}<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Schritt_6_%E2%80%93_sshguard_anpassen\"><\/span>Schritt 6 &#8211; sshguard anpassen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Angreifer werden bei sshguard\u00a0 im standard f\u00fcr <strong>120 Sekunden (2 Minuten) blockiert<\/strong>. Wem das zu wenig ist der setzt die &#8220;BLOCK_TIME&#8221; ggf. h\u00f6her. Sshguard merkt sich einmal blockierte IPs f\u00fcr 1800 Sekunden (eine halbe Stunde). Auch diese Einstellung kann man ver\u00e4ndern. die Variable hei\u00dft &#8220;DETECTION_TIME&#8221;.<\/p>\n<p><strong>Wichtig<\/strong>: Wenn die Variablen in der \/etc\/sshguard\/sshguard.conf angepasst wurden, muss der Daemon einmal neu gestartet werden mit:<br \/>\nsystemctl restart sshguard<\/p>\n<p>Danach sind dann allerdings die bisherigen Eintr\u00e4ge in der nft Tabelle f\u00fcr sshguard weg. Aber keine Sorge: Der n\u00e4chste Angreifer kommt bestimmt und l\u00e4\u00dft nicht lange auf sich warten.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Fazit_zu_sshguard\"><\/span>Fazit zu sshguard<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Im Gegensatz zu fail2ban ist sshguard relativ leicht zu installieren und konfigurieren. Damit sollten (meiner Meinung nach) auch Linux-Anf\u00e4nger schnell und sicher ihr frisch installiertes Linux-System absichern k\u00f6nnen. Umso unverst\u00e4ndlicher ist es dass bei Debian 11 sshguard nicht mehr im Standard-Repository drin ist.<\/p>\n<p>Link: <a href=\"https:\/\/www.sshguard.net\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.sshguard.net\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00c4hnlich wie fail2ban ist sshguard ein Programm das im Hintergrund die wichtigsten System-Logs mitliest und fehlgeschlagene Anmeldeversuche erkennt. Bei wiederholten falschen Anmeldungen sperr sshguard den Rechner mit dem fehlgeschlagenen Anmeldeversuch (z.B. via ssh). So werden mit sshguard etwa die Risiken einer Brute-Force Attacke via secure shell auf ein Minimum reduziert. In diesem Howto erkl\u00e4re ich,&#8230;<\/p>\n","protected":false},"author":3,"featured_media":1171,"template":"","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[48,45],"tags":[68,81,82,83],"class_list":["post-1165","howto","type-howto","status-publish","has-post-thumbnail","hentry","category-sicherheit","category-linux","tag-debian","tag-firewall","tag-ssh","tag-sshguard"],"_links":{"self":[{"href":"https:\/\/www.howto-do.it\/de\/wp-json\/wp\/v2\/howto\/1165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.howto-do.it\/de\/wp-json\/wp\/v2\/howto"}],"about":[{"href":"https:\/\/www.howto-do.it\/de\/wp-json\/wp\/v2\/types\/howto"}],"author":[{"embeddable":true,"href":"https:\/\/www.howto-do.it\/de\/wp-json\/wp\/v2\/users\/3"}],"version-history":[{"count":0,"href":"https:\/\/www.howto-do.it\/de\/wp-json\/wp\/v2\/howto\/1165\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.howto-do.it\/de\/wp-json\/wp\/v2\/media\/1171"}],"wp:attachment":[{"href":"https:\/\/www.howto-do.it\/de\/wp-json\/wp\/v2\/media?parent=1165"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.howto-do.it\/de\/wp-json\/wp\/v2\/categories?post=1165"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.howto-do.it\/de\/wp-json\/wp\/v2\/tags?post=1165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}