[PYTHON] Installieren und Konfigurieren des PyFilter-Clients zur Überwachung von SSH-Verbindungen zum Alibaba Cloud Ubuntu-Server

In diesem Tutorial wird beschrieben, wie Sie den PyFilter-Client so konfigurieren, dass SSH-Verbindungen (Secure Socket Shell) in der Alibaba Cloud überwacht werden.

Anforderungen an das Tutorial

Die erforderlichen Anforderungen für dieses Tutorial sind:

--Alibaba Cloud ECS Instanz, auf der Ubuntu 18.04 ausgeführt wird. [Dieses Tutorial](https://www.alibabacloud.com/blog/how-to-set-up-your-first-ubuntu-16-04-server-on-alibaba-cloud_593747?spm=a2c65.11461447.0.0.61797 d1294HOzw) zeigt, wie ein Ubuntu 18.04-Server in der Alibaba Cloud eingerichtet wird.

Laden Sie den PyFilter-Client herunter und konfigurieren Sie ihn

Beginnen Sie mit dem Klonen von PyFilter aus dem GitHub-Repository. Speichern Sie das Repository in einem temporären Verzeichnis auf Ihrem Computer.

Wechseln Sie mit dem folgenden Befehl in das Verzeichnis / tmp.

cd /tmp

Führen Sie nun den Befehl git clone aus.

git clone https://github.com/Jason2605/PyFilter.git

Der Prozess erstellt ein neues Verzeichnis namens PyFilter in Ihrem Home-Verzeichnis. Führen Sie den folgenden Befehl aus, um den Download zu bestätigen.

ls

Das folgende Snippet zeigt die Ausgabe des vorherigen Befehls.

PyFilter
Other files and directories

Verschieben Sie PyFilter dann wie folgt nach / usr / local:

sudo mv PyFilter /usr/local/PyFilter

Führen Sie außerdem den folgenden Befehl aus, um in das Verzeichnis / usr / local / PyFilter zu wechseln.

cd /usr/local/PyFilter

Richten Sie als Nächstes eine Arbeitsdatei für PyFilter ein. Wir haben bereits eine Standardkonfigurationsdatei mit Zugriff auf "Config / config.default.json", daher werden wir diese als Grundlage für unsere Arbeitskonfigurationsdatei verwenden. Das Beibehalten der Standarddateien ist nicht obligatorisch, es ist jedoch wichtig, Fehler zu vermeiden.

cd Config
sudo cp config.default.json config.json

Verwenden Sie den Editor, um den Inhalt der Konfigurationsdatei anzuzeigen und zu bearbeiten.

sudo nano config.json

Die folgenden Ausschnitte zeigen den Abschnitt Redis, der in diesem Tutorial besonders interessant ist.

  "redis": {
    "host": "127.0.0.1",
    "password": null,
    "database": 0,
    "sync_bans": {
      "active": true,
      "name": "1",
      "check_time": 600
    }

Lassen Sie uns Redis installieren und den obigen Teil in den folgenden Segmenten reparieren.

Installieren Sie Redis

Redis blockiert automatisierte Bots, die versuchen, auf das System zuzugreifen. Führen Sie den folgenden Befehl aus, um Redis auf Ihrem Server zu installieren.

sudo apt install python3-pip
pip3 install redis

Das folgende Snippet zeigt die Ausgabe des vorherigen Befehls.

Installing collected packages: redis
Successfully installed redis-3.2.1

Bearbeiten Sie nun Redis 'config.json`. Führen Sie den folgenden Befehl aus, um die Datei im Editor zu öffnen.

sudo nano config.json

Nehmen Sie die erforderlichen Änderungen an der Datei wie folgt vor:

Config.json
{
  "settings": {
    "database": "redis",


  "redis": {
    "host": "127.0.0.1",
    "password": null,
    "database": 0,
    "sync_bans": {
      "active": true,
      "name": "hostname",
      "check_time": 600
    }
  },
```

 Mit dem Redis-Parameter kann Pyfilter eine Verbindung zum Redis-Server herstellen. Redis ist normalerweise sehr wichtig für die Synchronisierung verbotener IP-Adressen zwischen Serverinstanzen. Der Parameter sync_bans teilt die Sperrliste mit allen Servern, das System muss jedoch einen eindeutigen Namen haben, da sonst die Synchronisierung fehlschlägt.

 Speichern Sie Ihre Änderungen und beenden Sie den Editor. Als nächstes führen wir PyFilter aus.

# Starten Sie den PyFilter-Client
 Starten Sie nun den Client mit dem Skript run.sh oder der Skriptmethode run.py. Verwenden Sie für dieses Tutorial eine Python-Datei wie die folgende.

```
sudo python3 run.py
```
 Das folgende Snippet zeigt die Ausgabe der Protokolldatei beim Starten des Clients.

 Ausgabe

```
No file to check within rule: Mysql
No file to check within rule: Apache
No file to check within rule: Nginx
Checking Ssh logs
IP: 58.242.83.35 has been blacklisted and the firewall rules have been updated.                                                                                         Acquired 5 bad connections via ssh.
IP: 168.227.56.242 has been blacklisted and the firewall rules have been updated                                                                                        . Acquired 5 bad connections via ssh.
IP: 103.28.57.86 has been blacklisted and the firewall rules have been updated.                                                                                         Acquired 5 bad connections via ssh.
IP: 51.158.69.8 has been blacklisted and the firewall rules have been updated. Acquired 5 bad connections via ssh.
Saving newly blacklisted IP's!
```
 Der PyFilter-Client sperrt IP-Adressen, wenn er 5 Sekunden nach dem Fehlschlagen versucht, eine Anforderung zu stellen. In der Konfigurationsdatei gibt es jedoch immer eine Option, um solche Einstellungen zu ändern. Um fortzufahren, benötigen Sie einen PyFilter-Dienst, der automatisch ausgeführt wird. Lassen Sie uns nun im nächsten Schritt denselben Dienst installieren.

# Erstellen eines PyFilter-Dienstes
 Wenn der PyFilter-Client erfolgreich ausgeführt wird, versuchen Sie, den Dienst so einzustellen, dass er beim Neustart des Servers automatisch ausgeführt wird.

 Die Dateien im PyFilter-Verzeichnis enthalten die Skripte run.sh und install.sh, mit denen Clients gestartet und Dienste erstellt werden können.

 Führen Sie zunächst den folgenden Befehl aus, um die Berechtigungen beider Skripte so zu ändern, dass sie ausführbar sind.

```
sudo chmod +x run.sh
sudo chmod +x install.sh
```
 Führen Sie den folgenden Befehl aus, um den Inhalt des Skripts `run.sh` anzuzeigen.

```
nano run.sh
```
 Das folgende Snippet zeigt die Ausgabe des vorherigen Befehls.

```
#!/usr/bin/env bash

sudo python3 run.py
```
 Beachten Sie, dass es sich um ein Skript handelt, das den Client wie zuvor startet.

 Überprüfen Sie das Skript install.sh erneut, indem Sie den folgenden Befehl ausführen:

```
nano install.sh
```
 Das folgende Snippet zeigt die Ausgabe des vorherigen Befehls.

```
#!/usr/bin/env bash

if ![ -f "/etc/systemd/system/PyFilter.service" ]
then
    sudo python3 create_service.py
    sudo mv PyFilter.service /etc/systemd/system/PyFilter.service
    sudo chmod +x run.sh
    sudo systemctl daemon-reload
    sudo systemctl start PyFilter
    sudo systemctl enable PyFilter
    echo Service created and enabled, check the status of it by using \"sudo systemctl status PyFilter\"
else
    echo Service already created.
    echo Check the status of it by using \"sudo systemctl status PyFilter\"
fi
```
 Wenn Sie das Skript starten, werden eine Reihe von Befehlen ausgeführt, um den PyFilter-Dienst in Ihrem System zu erstellen.

 Beginnen Sie mit dem folgenden Befehl.

```
./install.sh
```
 Wenn das Skript erfolgreich ausgeführt wird, erhalten Sie eine Ausgabe ähnlich der folgenden:

 Ausgabe

```
Service created and enabled, check the status of it by using "sudo systemctl status PyFilter"
```
 Alles scheint gut zu funktionieren.

 Führen Sie den folgenden Befehl aus, um die Statusprüfung durchzuführen.

```
sudo systemctl status PyFilter
```

 Wenn ich den obigen Befehl ausführe, erhalte ich die folgende Ausgabe:

```
- PyFilter.service - PyFilter
   Loaded: loaded (/etc/systemd/system/PyFilter.service; enabled; vendor preset: enabled)
   Active: <^>active^> (running) since Wed 2019-05-01 07:50:38 UTC; 38min ago
 Main PID: 12474 (bash)
   CGroup: /system.slice/PyFilter.service
           \A9\C0\A9\A412474 bash /usr/local/PyFilter/run.sh
           \A9\C0\A9\A412475 sudo python3 run.py
           \A9\B8\A9\A412478 python3 run.py
```

 Überspringen Sie nicht die Statusprüfung, um sicherzustellen, dass alles einwandfrei funktioniert. Hier ist ein Beispiel für einen Fehler.

```
- PyFilter.service - PyFilter
   Loaded: loaded (/etc/systemd/system/PyFilter.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2019-05-01 07:50:38 UTC; 38min ago
  Process: 12474 ExecStart=/usr/local/PyFilter/run.sh (code=exited, status=1/FAILURE)
 Main PID: 12474 (code=exited, status=1/FAILURE)

May 01 07:50:38 Tuts sudo[12475]: pam_unix(sudo:session): session opened for user root by (uid=0)
May 01 07:50:38 Tuts run.sh[12474]: Traceback (most recent call last):
May 01 07:50:38 Tuts run.sh[12474]:   File "run.py", line 4, in <module>
May 01 07:50:38 Tuts run.sh[12474]:     p = PyFilter()
May 01 07:50:38 Tuts run.sh[12474]:   File "/usr/local/PyFilter/pyFilter/py_filter.py", line 22, in __init__
May 01 07:50:38 Tuts run.sh[12474]:     with open(file_path, "r") as config:
May 01 07:50:38 Tuts run.sh[12474]: FileNotFoundError: [Errno 2] No such file or directory: 'Config/config.json'
May 01 07:50:38 Tuts sudo[12475]: pam_unix(sudo:session): session closed for user root
May 01 07:50:38 Tuts systemd[1]: PyFilter.service: Main process exited, code=exited, status=1/FAILURE
May 01 07:50:38 Tuts systemd[1]: PyFilter.service: Failed with result 'exit-code'.
```

 Wenn Sie auf Fehler stoßen, installieren Sie den Client neu und befolgen Sie die oben hervorgehobenen Schritte.

# Verbot der Verwendung der IP-Adresse
 Es ist sehr wichtig zu wissen, wie Sie das IP-Adressverbot aufheben können, da PyFilter Sie von Ihrem Server ausschließen kann. Melden Sie sich in solchen Fällen über die Konsole an und entfernen Sie die verbotene IP manuell. Die Datei, in der die verbotenen IP-Informationen gespeichert sind, lautet "- / usr / local / PyFilter / Config / blacklist.v4". Außerdem enthält die Datei "/ usr / local / PyFilter / Config / blacklist.v6" Informationen zu IP-Regeln.

 Rufen Sie die Liste der verbotenen IPS ab, indem Sie den folgenden Befehl ausführen:

```
cd /usr/local/PyFilter/Config
sudo nano blacklist.v4
```
 Das folgende Snippet zeigt eine verbotene IP.

```
# Generated by iptables-save v1.6.1 on Wed May  1 08:20:22 2019
*filter
:INPUT ACCEPT [49:4006]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [50:5180]
-A INPUT -s 51.158.69.8/32 -j DROP
-A INPUT -s 104.248.140.212/32 -j DROP
-A INPUT -s 149.202.55.176/32 -j DROP
-A INPUT -s 112.161.29.50/32 -j DROP
-A INPUT -s 58.242.83.38/32 -j DROP
-A INPUT -s 128.199.230.16/32 -j DROP
-A INPUT -s 58.163.88.42/32 -j DROP
-A INPUT -s 76.79.74.58/32 -j DROP
-A INPUT -s 106.51.54.198/32 -j DROP
-A INPUT -s 180.151.8.180/32 -j DROP
-A INPUT -s 109.207.159.178/32 -j DROP
-A INPUT -s 120.29.156.251/32 -j DROP
-A INPUT -s 148.70.11.143/32 -j DROP
-A INPUT -s 179.110.29.67/32 -j DROP
-A INPUT -s 118.89.229.244/32 -j DROP
-A INPUT -s 193.112.174.67/32 -j DROP
-A INPUT -s 134.175.154.182/32 -j DROP
-A INPUT -s 36.103.243.247/32 -j DROP
-A INPUT -s 103.28.57.86/32 -j DROP
-A INPUT -s 168.227.56.242/32 -j DROP
-A INPUT -s 58.242.83.35/32 -j DROP
COMMIT
# Completed on Wed May  1 08:20:22 2019
```
 Greifen Sie im Editor auf die entsprechende Blacklist-Datei zu, um das unten gezeigte Verbot blockierter IP-Adressen aufzuheben.

```
sudo nano blacklist.v4
# Generated by iptables-save v1.6.1 on Wed May  1 08:20:22 2019
*filter
:INPUT ACCEPT [49:4006]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [50:5180]
-A INPUT -s 51.158.69.8/32 -j DROP
-A INPUT -s 104.248.140.212/32 -j DROP
-A INPUT -s 149.202.55.176/32 -j DROP
-A INPUT -s 112.161.29.50/32 -j DROP
-A INPUT -s 58.242.83.38/32 -j DROP
COMMIT
# Completed on Wed May  1 08:20:22 2019
```
 Speichern Sie die Datei und beenden Sie den Editor.

 Verwenden Sie nun den folgenden Befehl, um den Client neu zu starten, damit die Änderungen wirksam werden.

```
sudo systemctl restart PyFilter
```

# Erfassung von IP-Standortdaten
 PyFilter sammelt auch Standortinformationen von gesperrten IPs, um den Ort des Angriffs zu analysieren. Um solche Informationen in das Protokoll aufzunehmen, müssen Sie das Modul "geoip2" installieren.

```
pip3 install geoip2
```
 Führen Sie dann den folgenden Befehl aus, um PyFilter neu zu starten.

```
sudo systemctl restart PyFilter
```
 Jetzt sehen alle verbotenen IPs wie das unten stehende Ausgabeausschnitt aus.

```
2018-08-14 14518:05 Found IP: 196.4.100.13 from server: my_server. The IP was from Kenya.
```
# Fazit
 Dieses Tutorial zeigt Ihnen, wie Sie den PyFilter-Client installieren und konfigurieren, um SSH-Verbindungen zum Alibaba Cloud Ubuntu-Server zu überwachen. PyFilter ist bekannt für seine einfachen und effektiven Funktionen. Alibaba Cloud bietet eine breite Palette von Sicherheitsfunktionen. Um Benutzern ein besseres Sicherheitsmanagement zu ermöglichen, hilft PyFilter jedoch dabei, legitime IP-Adressen und IP-Adressen zu identifizieren, denen kein Zugriff auf den Server gewährt werden sollte.

 Wenn Sie noch kein Alibaba Cloud-Konto haben, melden Sie sich für eines an und es ist bis zu 1.300 US-Dollar wert [Probieren Sie über 40 Produkte kostenlos aus](https://account.alibabacloud.com/register) /intl_register.htm?spm=a2c65.11461447.0.0.61797d1294HOzw). Weitere Informationen zur Alibaba Cloud finden Sie unter [hier](https://account.alibabacloud.com/register/intl_register.htm?spm=a2c65.11461447.0.0.61797d1294HOzw).

 * Alibaba Cloud ist der Cloud-Infrastrukturbetreiber Nr. 1 (2019 Gartner) im asiatisch-pazifischen Raum mit zwei Rechenzentren in Japan und mehr als 60 Verfügbarkeitszonen weltweit.
 Klicken Sie hier, um weitere Informationen zu Alibaba Cloud zu erhalten.
 [Offizielle Seite von Alibaba Cloud Japan](https://www.alibabacloud.com/de) *


Recommended Posts

Installieren und Konfigurieren des PyFilter-Clients zur Überwachung von SSH-Verbindungen zum Alibaba Cloud Ubuntu-Server
[Postgresql] SSH-Verbindung zum externen DB-Server vom Client
So installieren und konfigurieren Sie Amsel
Installieren und konfigurieren Sie den TigerVNC-Server unter Linux
Installieren Sie Puppet Master und Client unter Ubuntu 16.04
So installieren Sie Fast.ai auf einer Alibaba Cloud-GPU und führen es auf einem Jupyter-Notebook aus
So richten Sie ein VPN-Gateway ein, um eine Verbindung zwischen Alibaba Cloud und AWS herzustellen
Bildschirm und geteilter Bildschirm mit Python- und SSH-Anmeldung am Remote-Server
SSH-Verbindung zu einem privaten Server über einen Plattformserver in EC2
Ssh zu einem externen Server unter http Proxy [von Ubuntu 18.04]