Alle Beiträge von Don Matteo

lebt in Zürich, ist System Engineer MCP bei A-Enterprise GmbH. Mitglied des UNBLOG Network. Author und Blogger zu den Themen, Linux und Open Source. Tutorials für Windows, VMware, Synology, Fortinet.

netstat: command not found, net-tools fehlt

Der Fehler: -bash: netstat: command not found, tritt auf, nachdem bei Debian und Ubuntu Linux, versucht wird den Befehl „netstat“ in der bash auszuführen. Da dieser Befehl standardmäßig nicht mehr enthalten ist. In diesem Tutorial erfährst du, wie das Paket net-tools auf einem Debian-basierten Linux installiert wird, das unter anderem den Befehl netstat beinhaltet.

netstat: command not found, net-tools fehlt

netstat Fehlermeldung in der bash

Wenn der Befehl netstat ausgeführt wird, kommt es zur Fehlermeldung:

-bash: netstat: command not found

Dies bedeutet lediglich, dass das entsprechende Paket „net-tools“, das die ausführbare Datei netstat enthält, nicht installiert ist und daher fehlt. Das Paket net-tools ist möglicherweise nicht standardmäßig auf dem System installiert, es muss manuell installiert werden.

Das Paket net-tools installieren

Um netstat auf dem System verfügbar zu machen, installiere einfach das net-tools Paket mit dem folgenden Befehl:

$ sudo apt update
$ sudo apt install net-tools -y

Das Paket net-tools enthält außerdem zusätzliche Dienstprogramme wie arp, ifconfig, netstat, rarp und route.

Paket net-tools und netstat ermitteln

Das net-tools Paket ermitteln basierend auf dem Paketnamen.

$ apt list net-tools
Listing... Done
net-tools/oldstable,now 1.60+git20181103.0eebece-1 amd64 [installed]

net-tools ist eine Sammlung mit Basis-Netzwerkprogramme. Ist das Paket net-tools installiert, stehen die netstat Befehle auf dem Host zur Verfügung.

$ apt show net-tools

Beispiele mit netstat

Nachdem net-tools auf dem System installiert ist, können wir nun einige der folgenden netstat Befehle verwenden.

Sehen wir uns zunächst die Prozesse an, die auf Verbindungen warten. Dazu geben wir den folgenden netstat Befehl ein.

$ sudo netstat -tulpen

Werfen wir nun einen Blick auf alle aktuellen Netzwerkverbindungen. Dazu geben wir den folgenden netstat Befehl ein, der dem vorherigen ähnelt, mit der Ausnahme, dass wir -a verwenden, um alle Sockets anzuzeigen, und nicht wie mit -l, nur die Listening Sockets anzuzeigen.

$ sudo netstat -atupen

Möchte man nur die HERGESTELLTEN Verbindungen sehen, kann man die Ausgabe von netstat weiterleiten an grep.

$ sudo netstat -atupen | grep ESTABLISHED

Befehl ss ersetzt den veralteten Befehl netstat

Mit den net-tools wird die Verfügbarkeit der veralteten Linux Netzwerk Befehle wiederhergestellt, folgende Tabelle zeigt die veralteten Linux „netstat“ Befehle, und die neuen Ersetzungsbefehle mit „ss„:

Veraltete BefehleNeue Befehle
arpip n (ip neighbor)
ifconfigip a (ip addr), ip link
iptunnelip tunnel
iwconfigiw
nameifip link
netstatss -t (für netstat -t), ss -u (für netstat -u)
ip route (für netstat -r)
ip -s link (für netstat -i)
ip maddr (für netstat -g)
routeip r (ip route)

  ss – ist ein neues Dienstprogramm zum Untersuchen von Sockets, der Befehl ss wird verwendet um Socket-Statistiken auszugeben. Es ermöglicht die Anzeige von Informationen ähnlich wie netstat.

Beispiel mit Befehl ss

Beispiel zur Anwendung von ss anstelle von netstat (net-tools):

$ ss -atulpen4

Amnerkung

In diesem Tutorial haben wir gesehen, wie man den fehlenden Befehl netstat auf einem Debian-basierten Linux oder Ubuntu mit dem Paket net-tools installiert. Wir haben auch einige grundlegende Verwendungsmöglichkeiten des Befehls netstat kennengelernt, um mit der Verwendung beginnen zu können. Es wird auch auf den Befehl ss hingewiesen, der netstat ersetzt, aber eine andere Syntax hat.

WordPress vor Brute-Force Attacken schützen

WordPress Server vor Brute-Force Login Attacken durch fail2ban schützen

WordPress Schutz bietet sich durch mehrere Methoden an, neben Lock-Down Plugins, die IP-Adressen und Zeitstempel jedes fehlgeschlagenen Anmeldeversuchs aufzeichnen und blockieren, wird mit fail2ban die Kernel Firewall gesteuert, und damit der host für eine vorgegebene Zeit gesperrt.

  Zur Installation von fail2ban auf CentOS 7 muss das EPEL Repository hinzugefügt werden. Für Debian ist fail2ban im Standard Repository.

WordPress vor Brute-Force schützen

WordPress vor Brute-Force Login Attacken schützen mit fail2ban.

$ yum install epel-release

Die Installation hier wie folgt als root, es wird eine Standard Konfiguration bereitgestellt, und erfordert keine weiteren Anpassungen:

$ yum install fail2ban -y

Nachdem fail2ban auf dem Server installiert ist, können die Apache access_log nach Anmeldeversuchen untersucht werden.

10.241.83.170 - - [02/Jul/2017:21:23:17 +0200] "POST /xmlrpc.php HTTP/1.1" 200 406
10.241.83.170 - - [02/Jul/2017:21:23:19 +0200] "GET /wp-login.php HTTP/1.1" 200 6387
10.241.83.170 - - [02/Jul/2017:21:23:19 +0200] "POST /wp-login.php HTTP/1.1" 200 6561
10.120.13.157 - - [02/Jul/2017:21:27:55 +0200] "POST /xmlrpc.php HTTP/1.1" 200 406
10.120.13.157 - - [02/Jul/2017:21:27:56 +0200] "GET /wp-login.php HTTP/1.1" 200 6440
10.120.13.157 - - [02/Jul/2017:21:27:56 +0200] "POST /wp-login.php HTTP/1.1" 200 6614

Damit fail2ban weiss nach welchen parser in der Logdatei gesucht werden soll, wird ein Filter erzeugt, durch editieren mit vim oder anderen bevorzugten Editoren, erstellen wir die Filter Datei mit vi /etc/fail2ban/filter.d/wp-auth.conf:

# WordPress brute force auth filter: /etc/fail2ban/filter.d/wp-auth.conf:
#
# Block IPs trying to auth wp wordpress
#
[Definition]
failregex = ^<HOST> .*"POST \/wp-login\.php HTTP\/.*$
            ^<HOST> .*"POST \/xmlrpc\.php HTTP\/.*$
ignoreregex =

Die Hauptkonfiguration von fail2ban befindet sich in der Datei /etc/fail2ban/jail.conf, diese kopiert man zu jail.local, oder es genügt auch nur die zusätzliche Filter Einstellung einzutragen, die Konfiguration hinzufügen mit vi /etc/fail2ban/jail.local

[wp-auth]
enabled = true
filter = wp-auth
action = iptables-multiport[name=AuthFailures, port="http,https"]
logpath = %(apache_access_log)s
bantime = 1800
maxretry = 5

Nach 6 Anmeldeversuche (maxretry) wird für 30 min. blockiert.

Bevor fail2ban eingesetzt wird, ist ein blick in /etc/fail2ban/jail.conf gegeben, unter der Sektion [INCLUDES] sind die Pfade der gerade verwendeten Linux Distribution definiert, bei der Zeile before = paths-distro.conf, hier verwenden wir CentOS 7 dabei ist die passende Datei /etc/fail2ban/paths-fedora.conf :

[INCLUDES]
before = paths-centos.conf

Die Datei paths-fedora.conf  kopieren wir zu paths-centos.conf. Es sollen alle Logs unter /var/www/*/logs ausgelesen werden, dabei die Pfade zu den Apache Logs ggf. anpassen:

# apache server log
apache_error_log = /var/log/httpd/*error_log
apache_access_log = /var/log/httpd/*access_log

# apache virtual hosts
apache_error_log = /var/www/*/logs/*error_log
apache_access_log = /var/www/*/logs/*access_log

Nun fail2ban neu starten um den Filter zu aktivieren.

 $ systemctl restart fail2ban

fail2ban Status überprüfen wie folgt.

$ fail2ban-client status wp-auth

Der iptables Status des Filters in der Kette ausgeben.

$ iptables -vnL | grep AuthFailures

Die iptables Ausgabe des Filter AuthFailures in etwa viel folgt.

Chain f2b-AuthFailures (1 references)
 pkts bytes target     prot opt in     out     source               destination
 252K   32M RETURN     all  --  *      *       10.241.83.170/0            0.0.0.0/0
 232K   29M RETURN     all  --  *      *       10.120.13.157/0            0.0.0.0/0

Hat man sich selber durch zu viel Fehlversuche und Tests ausgesperrt, kann man sich mit folgendem Command wieder entsperren.

$ fail2ban-client set wp-auth unbanip 10.110.51.25

  Der vorteil dieser Methode ist es, durch fail2ban wird der host und alle Dienste blockiert, der Bot wird in der regel zur nächsten Webseite gehen, um die Attacken fortzusetzen, auch ssh und ftp anfragen gehen ins leere, und ICMP anfragen bleiben für die IP-Adresse unbeantwortet.