In diesem Tutorial wird beschrieben, wie Sie den PyFilter-Client so konfigurieren, dass SSH-Verbindungen (Secure Socket Shell) in der Alibaba Cloud überwacht werden.
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.
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.
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) *