GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Erhöhen Sie Ihre IPv4-Sicherheit mit Fail2Ban und Tinyhoneypot auf Debian Jessie

Es ist eine fünfminütige Übung, um die Sicherheit auf einem IPv4-adressierten Computer zu erhöhen. Der Zweck des in diesem Tutorial beschriebenen Setups besteht darin, Port-Scanner und böswillige Port-Öffner für einen bestimmten Zeitraum zu sperren. Diese Übung wird nur auf Debian Jessie ausprobiert und angewendet. Während der Übung wird jeder Befehl als root festgeschrieben. Es ist Ihre Sache, wie Sie Root-Zugriff erhalten.

Entweder su -, sudo, Konsolenanmeldung usw....

Anleitung für faule Anfänger:Wenn ich den Bash-Prompt darstelle, kopieren Sie einfach den fettgedruckten Teil des Textes in Ihren eigenen.

Die Zutaten

  • Die fail2ban-Software ist in der Lage, Ihre Firewall-Regeln dynamisch zu handhaben, um Bösewichte auszusperren.
  • Der tinyhoneypot ist in der Lage, einen TCP/IP-Port abzuhören und Details des Öffners zu protokollieren.
  • Der xinetd-Dienst startet tinyhoneypot und verwaltet seine Überwachungsports.

Zutaten installieren: (Kopieren Sie einfach den fett gedruckten Teil des Textes)

[email protected]:~# apt-get install tinyhoneypot fail2ban xinetd 

Einstellungen

Um SSH dazu zu bringen, auf einem anderen Port zu lauschen, ersetzen Sie Ihre SSH-Konfigurationsdatei durch einen alternativen SSH-Port:

[email protected]:~# sed -i.orig 's/Port 22/Port 2201/m' /etc/ssh/sshd_config 

Ihre ursprüngliche /etc/ssh/sshd_config-Konfiguration wird als /etc/ssh/sshd_config.orig

gespeichert

Wenn Sie Ihren SSH-Dienst neu starten, lauscht er jetzt auf Port 2201 (nicht auf Port 22).

[email protected]:~# Service-SSH-Neustart 
[E-Mail geschützt]:~# netstat -lptn | grep ssh
tcp 0 0 0.0.0.0:2201 0.0.0.0:* LISTEN 4313/sshd
tcp6 0 0 :::2201 :::* LISTEN 4313/sshd

So weit, so gut..

Konfigurieren Sie Xinetd so, dass es tinyhoneypot startet und Port 22 von TCP abhört:

[email protected]:~# cp -v /usr/share/doc/tinyhoneypot/examples/xinetd.d/thp-pasv /etc/xinetd.d/ 

Bearbeiten Sie Ihre /etc/xinetd.d/thp-pasv wie folgt:

[email protected]:~# cat /etc/xinetd.d/thp-pasv 
# default:on# description:thp-ftpd ruft das generische thpsvcs mit param "ftp" auf,# was zu einer ftpd emulation.service thp-pasv{ type =UNLISTED socket_type =stream protocol =tcp port =22 wait =no user =thpot server =/usr/sbin/thpot server_args =nullresp nice =10 disable =no instances =1 per_source =1}

(RE)Starten Sie xinetd mit Ihren neuen Einstellungen und stellen Sie sicher, dass es auf Port 22 lauscht.

[email protected]:~# Dienst xinetd neu starten 
[E-Mail geschützt]:~# netstat -lptn | grep xinetd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4567/xinetd

Stellen Sie sicher, dass es funktioniert

Öffnen Sie eine SSH-Verbindung von einem anderen Computer aus.

[email protected]:~$ ssh 192.168.88.212 

Nach einer Weile sollte nichts passieren, unterbrechen Sie es mit [Strg + C]

Und überprüfen Sie die Protokolleinträge auf Ihrem Testcomputer:

[email protected]:~# cat /var/log/thpot/captures 
29. Februar 13:02:10 SID=56D4334221165.nullresp PID=4837 SRC=192.168.88.242 SPT=47187 ET=00:00:11 BYTES=39

Falls alles gut gegangen ist, sollte es einen Eintrag in Ihrem Erfassungsprotokoll geben.

Lassen Sie uns Ihren Fail2Ban so einstellen, dass er mit TinyHoneyPot zusammenarbeitet

[E-Mail-geschützt]:~# cd /etc/fail2ban/ 
[email protected]:/etc/fail2ban# cp -v jail.conf jail.local

Bearbeite niemals deine jail.conf!! Erstellen Sie eine Kopie davon als jail.local und nehmen Sie NUR Änderungen in der .local-Datei vor!

Suchen Sie den Abschnitt [ssh] in Ihrer jail.local und ändern Sie ihn abhängig von [Port 2201] von /etc/ssh/sshd_config

[ssh]enabled =trueport =2201filter =sshdlogpath =/var/log/auth.logmaxretry =6

Make und Eintrag im Abschnitt JAIL von jail.local:

Dadurch wird Fail2Ban dazu veranlasst, die Protokolldatei von tinyhoneypot zu lesen und die abzulehnende IPv4-Adresse abzurufen. Ich empfehle, es nach dem Abschnitt [ssh] zu platzieren. Es geht um die 137. Reihe.

[thp-ssh]enabled =trueport =allfilter =thpotlogpath =/var/log/thpot/capturesbanaction =iptables-allportsmaxretry =1findtime =1800bantime =99999

Fail2ban sollte einen Filter haben, um zu wissen, was abzulehnen ist. Dort ist ein Makro, das die IPv4-Adresse ersetzt. Erstellen Sie einen Filter dafür:

[email protected]:~# cat /etc/fail2ban/filter.d/thpot.local 
[Definition]

failregex =SRC=
ignoreregex =

Es ist vollbracht!

Nur ein kurzer Test....

[email protected]:~# Dienst fail2ban Neustart 

Am Ende von /var/log/fail2ban.log

sollte etwas Ähnliches zu sehen sein
2016-02-29 13:54:06,915 fail2ban.jail [6102]:INFO Neues Jail 'thp-ssh' erstellen2016-02-29 13:54:06,915 fail2ban.jail [6102]:INFO Jail 'thp -ssh' verwendet pyinotify2016-02-29 13:54:06,920 fail2ban.jail [6102]:INFO Initiiertes 'pyinotify'-Backend2016-02-29 13:54:06,922 fail2ban.filter [6102]:INFO Hinzugefügte Protokolldatei =/var/ log/thpot/captures2016-02-29 13:54:06,923 fail2ban.filter [6102]:INFO Set maxRetry =12016-02-29 13:54:06,925 fail2ban.filter [6102]:INFO Set findtime =18002016-02- 29 13:54:06,926 fail2ban.actions[6102]:INFO Set banTime =999992016-02-29 13:54:06,934 fail2ban.jail [6102]:INFO Jail 'ssh' started2016-02-29 13:54:06,940 fail2ban .jail [6102]:INFO Jail 'thp-ssh' gestartet

Sie können Ihre benutzerdefinierten Werte von jail.local sehen und sie bei Bedarf anpassen.

findtime =1800bantime =99999

Sehen Sie sich Ihre aktuellen iptables-Regeln an:

[email protected]:~# iptables-save 
# Generiert von iptables-save v1.4.21 am Mo. Feb 29 14:05:17 2016*filter:INPUT ACCEPT [2:64]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [0:0]:fail2ban -ssh - [0:0]:fail2ban-thp-ssh - [0:0]-A INPUT -p tcp -j fail2ban-thp-ssh-A INPUT -p tcp -m multiport --dports 2201 -j fail2ban- ssh-A fail2ban-ssh -j RETURN-A fail2ban-thp-ssh -j RETURNCOMMIT# Abgeschlossen am Mo. Feb. 29 14:05:17 2016

Lassen Sie uns die Verweigerungsregel von einem anderen Computer aus überprüfen:

[E-Mail-geschützt]:~# ssh 192.168.88.212 
^C
[E-Mail-geschützt]:~# ssh 192.168.88.212
ssh:Verbindung zu Host 192.168.88.212 Port 22 herstellen:Verbindung abgelehnt

Die erste Aktion wird nichts tun. Der Angreifer wird es wahrscheinlich nach einer Weile unterbrechen. Die zweite Aktion wird abgelehnt.

Ihre iptables-Regeln sollten jetzt so aussehen:

[email protected]:~# iptables-save 
# Generiert von iptables-save v1.4.21 am Mo. Feb 29 14:10:53 2016*filter:INPUT ACCEPT [4:542]:FORWARD ACCEPT [0:0]:OUTPUT ACCEPT [1:88]:fail2ban -ssh - [0:0]:fail2ban-thp-ssh - [0:0]-A INPUT -p tcp -j fail2ban-thp-ssh-A INPUT -p tcp -m multiport --dports 2201 -j fail2ban- ssh-A fail2ban-ssh -j RETURN-A fail2ban-thp-ssh -s 192.168.88.242/32 -j REJECT --reject-with icmp-port-unreachable-A fail2ban-thp-ssh -j RETURNCOMMIT# Abgeschlossen am Mo 29. Februar 14:10:53 2016

Das Ergebnis ist:Der PC des Angreifers wird auf jedem Port ABGEWIESEN.

Das Postscript

Als dieses HowTo geschrieben wurde, war weder Fail2Ban noch tinyhoneypot in der Lage, mit IPv6 umzugehen. Wenn Sie dieses HowTo nützlich finden, teilen Sie es! Informieren Sie Ihre Freunde darüber.


Debian
  1. Beschleunigen Sie Apache mit mod_pagespeed und Memcached auf Debian 8

  2. So schützen Sie Ihren Server mit badIPs.com und melden IPs mit Fail2ban unter Debian

  3. Einrichten der Master-Master-Replikation mit MySQL unter Debian 8 (Jessie)

  4. So installieren Sie WebDAV mit Lighttpd unter Debian 8 (Jessie)

  5. Linux-Sicherheit:Schützen Sie Ihre Systeme mit fail2ban

Debian 8 Jessie LAMP-Server-Tutorial mit Apache 2, PHP 5 und MariaDB (anstelle von MySQL)

So installieren und konfigurieren Sie vsftpd mit TLS unter Debian 8 (Jessie)

So verschlüsseln Sie Ihre Daten mit EncFS unter Debian 8 (Jessie)

So installieren Sie TYPO3 7 mit Nginx und MariaDB auf Debian 8 (Jessie)

Chrooting von Apache 2.4 mit mod_unixd auf Debian 8 (Jessie)

Installieren und konfigurieren Sie Fail2ban unter Debian 11