[PYTHON] Installation et configuration du client PyFilter pour surveiller les connexions SSH au serveur Alibaba Cloud Ubuntu

Ce tutoriel décrit comment configurer le client PyFilter pour surveiller les connexions SSH (Secure Socket Shell) sur ʻAlibaba Cloud`.

Exigences du didacticiel

Les conditions requises pour ce didacticiel sont les suivantes:

Téléchargez et configurez le client PyFilter

Commencez par cloner PyFilter à partir du référentiel GitHub. Enregistrez le référentiel dans un répertoire temporaire sur votre machine.

Accédez au répertoire / tmp avec la commande suivante.

cd /tmp

Exécutez maintenant la commande git clone.

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

Le processus crée un nouveau répertoire appelé PyFilter dans votre répertoire personnel. Exécutez la commande suivante pour confirmer le téléchargement.

ls

L'extrait ci-dessous montre la sortie de la commande précédente.

PyFilter
Other files and directories

Puis déplacez PyFilter vers / usr / local comme suit:

sudo mv PyFilter /usr/local/PyFilter

Exécutez également la commande suivante pour accéder au répertoire / usr / local / PyFilter.

cd /usr/local/PyFilter

Ensuite, configurez un fichier de travail pour PyFilter. Nous avons déjà un fichier de configuration par défaut avec accès à Config / config.default.json, nous allons donc l'utiliser comme base pour notre fichier de configuration de travail. Conserver les fichiers par défaut n'est pas obligatoire, mais il est important d'éviter les erreurs.

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

Utilisez l'éditeur pour afficher et modifier le contenu du fichier de configuration.

sudo nano config.json

L'extrait de code suivant montre la section Redis qui est particulièrement intéressante dans ce didacticiel.

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

Installons Redis et corrigeons la partie ci-dessus dans les segments suivants.

Installez Redis

Redis bloque les robots automatisés qui tentent d'accéder au système. Exécutez la commande suivante pour installer Redis sur votre serveur.

sudo apt install python3-pip
pip3 install redis

L'extrait ci-dessous montre la sortie de la commande précédente.

Installing collected packages: redis
Successfully installed redis-3.2.1

Modifiez maintenant le fichier config.json de Redis. Exécutez la commande suivante pour ouvrir le fichier dans l'éditeur.

sudo nano config.json

Apportez les modifications nécessaires au fichier comme suit:

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


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

 Le paramètre Redis permet à Pyfilter de se connecter au serveur Redis. Redis est généralement très important pour synchroniser les adresses IP interdites entre les instances de serveur. Le paramètre sync_bans partage la liste d'interdiction avec tous les serveurs, mais le système doit avoir un nom unique, sinon la synchronisation échouera.

 Enregistrez vos modifications et quittez l'éditeur. Ensuite, exécutons PyFilter.

# Lancer le client PyFilter
 Démarrez maintenant le client à l'aide du script run.sh ou de la méthode de script run.py. Pour ce tutoriel, utilisons un fichier python comme celui ci-dessous.

```
sudo python3 run.py
```
 L'extrait de code suivant montre la sortie du fichier journal au démarrage du client.

 production

```
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!
```
 Le client PyFilter interdit les adresses IP s'il tente de faire une demande 5 secondes après son échec. Cependant, le fichier de configuration a toujours une option pour modifier ces paramètres. Pour continuer, vous avez besoin d'un service PyFilter qui s'exécute automatiquement. Maintenant, installons le même service à l'étape suivante.

# Créer un service PyFilter
 Si le client PyFilter s'exécute avec succès, essayez de configurer le service pour qu'il s'exécute automatiquement lorsque le serveur redémarre.

 Les fichiers du répertoire PyFilter contiennent des scripts run.sh et install.sh qui aident à lancer les clients et à créer des services.

 Tout d'abord, exécutez la commande suivante pour modifier les autorisations des deux scripts afin de les rendre exécutables.

```
sudo chmod +x run.sh
sudo chmod +x install.sh
```
 Exécutez la commande suivante pour voir le contenu du script `run.sh`.

```
nano run.sh
```
 L'extrait ci-dessous montre la sortie de la commande précédente.

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

sudo python3 run.py
```
 Notez qu'il s'agit d'un script qui lance le client comme auparavant.

 Vérifiez à nouveau le script install.sh en exécutant la commande suivante:

```
nano install.sh
```
 L'extrait ci-dessous montre la sortie de la commande précédente.

```
#!/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
```
 Lorsque vous lancez le script, une série de commandes sont exécutées pour créer le service PyFilter dans votre système.

 Commencez par la commande suivante.

```
./install.sh
```
 Si le script s'exécute avec succès, vous obtiendrez une sortie similaire à la suivante:

 production

```
Service created and enabled, check the status of it by using "sudo systemctl status PyFilter"
```
 Tout semble bien fonctionner.

 Exécutez la commande suivante pour exécuter le contrôle d'état.

```
sudo systemctl status PyFilter
```

 Lorsque j'exécute la commande ci-dessus, j'obtiens la sortie suivante:

```
- 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
```

 Ne sautez pas la vérification de l'état pour vous assurer que tout fonctionne correctement. Voici un exemple d'erreur.

```
- 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'.
```

 Si vous rencontrez des erreurs, réinstallez le client et suivez les étapes mises en évidence ci-dessus.

# Interdiction d'utiliser l'adresse IP
 Il est très important de savoir comment supprimer l'interdiction d'adresse IP, car PyFilter peut vous verrouiller hors de votre serveur. Dans de tels cas, connectez-vous à partir de la console et supprimez manuellement l'adresse IP interdite. Le fichier qui stocke les informations IP interdites est `- / usr / local / PyFilter / Config / blacklist.v4`. De plus, le fichier `/ usr / local / PyFilter / Config / blacklist.v6` contient des informations sur les règles IP.

 Obtenez la liste des IPS interdits en exécutant la commande suivante:

```
cd /usr/local/PyFilter/Config
sudo nano blacklist.v4
```
 L'extrait suivant montre une adresse IP interdite.

```
# 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
```
 Accédez au fichier de liste noire correspondant dans l'éditeur pour supprimer l'interdiction des adresses IP bloquées, comme indiqué ci-dessous.

```
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
```
 Enregistrez le fichier et quittez l'éditeur.

 Utilisez maintenant la commande suivante pour redémarrer le client afin que les modifications prennent effet.

```
sudo systemctl restart PyFilter
```

# Collecte de données de localisation IP
 PyFilter collecte également les informations de localisation des adresses IP interdites pour analyser l'emplacement de l'attaque. Pour inclure ces informations dans le journal, vous devez installer le module `geoip2`.

```
pip3 install geoip2
```
 Exécutez ensuite la commande suivante pour redémarrer PyFilter.

```
sudo systemctl restart PyFilter
```
 Désormais, toutes les adresses IP interdites ressembleront à l'extrait de code ci-dessous.

```
2018-08-14 14518:05 Found IP: 196.4.100.13 from server: my_server. The IP was from Kenya.
```
# Conclusion
 Ce didacticiel vous montrera comment installer et configurer le client PyFilter pour surveiller les connexions SSH au serveur Alibaba Cloud Ubuntu. PyFilter est connu pour ses fonctionnalités simples et efficaces. Alibaba Cloud offre une gamme complète de fonctionnalités de sécurité. Cependant, pour permettre aux utilisateurs une meilleure gestion de la sécurité, PyFilter aide à identifier les adresses IP légitimes et les adresses IP qui ne devraient pas être autorisées à accéder au serveur.

 Si vous n'avez pas encore de compte Alibaba Cloud, créez-en un et cela vaut jusqu'à 1 300 $ [Essayez plus de 40 produits gratuitement](https://account.alibabacloud.com/register) /intl_register.htm?spm=a2c65.11461447.0.0.61797d1294HOzw). Pour plus d'informations sur Alibaba Cloud, veuillez consulter [ici](https://account.alibabacloud.com/register/intl_register.htm?spm=a2c65.11461447.0.0.61797d1294HOzw).

 * Alibaba Cloud est l'opérateur d'infrastructure cloud n ° 1 (Gartner 2019) dans la région Asie-Pacifique avec deux centres de données au Japon et plus de 60 zones de disponibilité dans le monde.
 Cliquez ici pour plus d'informations sur Alibaba Cloud.
 [Page officielle d'Alibaba Cloud Japan](https://www.alibabacloud.com/en) *


Recommended Posts

Installation et configuration du client PyFilter pour surveiller les connexions SSH au serveur Alibaba Cloud Ubuntu
[Postgresql] Connexion SSH au serveur de base de données externe à partir du client
Comment installer et configurer Blackbird
Installer et configurer le serveur TigerVNC sous Linux
Installez Puppet Master and Client sur Ubuntu 16.04
Comment installer Fast.ai sur le GPU Alibaba Cloud et l'exécuter sur un ordinateur portable Jupyter
Comment configurer une passerelle VPN pour établir une connexion entre Alibaba Cloud et AWS
écran et écran partagé avec connexion python et ssh au serveur distant
Connexion SSH à un serveur privé à l'aide d'un serveur de plateforme dans EC2
Ssh vers un serveur externe sous proxy http [à partir d'Ubuntu 18.04]