Qui cherche à vous pirater ?

Vous avez réalisé ou vous voulez réaliser un truc impensable avec votre Raspberry Pi ? Cet endroit est pour vous...

Modérateur : Francois

Répondre
piper
Raspinaute
Messages : 654
Enregistré le : sam. 5 juin 2021 18:57

Qui cherche à vous pirater ?

Message par piper » sam. 11 juin 2022 18:52

Bonjour,
Bon, le contrôle d'accès, c'est fait
Et j'ai une idée pour mes temps perdus qui me trotte dans la tête.

Ceux qui ont déjà loué un serveur dédié ou qui ont mis leur pi en accès internet le savent : internet, c'est la guerre ouverte, la jungle, sans police, l'anarchie.
C'est pour cela qu'on a des pare-feu. Mais le pare-feu n'empêche pas la tentative.

Alors pour limité la casse (et les denis de services), on utilise tous fail2ban.
Pour ceux qui ne connaissent pas, fail2ban est exactement ce qu'il veut dire :
C'est un service qui va analyser les logs à la recherche de tentatives de connexion à votre serveur qui ont échoué
Ex : votre pi est accessible via internet par son port 22 en ssh (pas bien, mais vous mettriez le 3022 que ce serait pareil au bout de quelques mois) , un pirate essayera de se connecter en root
Vous avez probablement bloqué l'accès en root mais le pirate essayera quand même. Il se fera jeté chaque fois et ça va remplir les logs

Et là, fail2ban , entièrement paramétrable va suivre vos recommandation qui peuvent être du genre : "si cette ip tente 3 fois en 10 minutes de se connecter en ssh et qu'elle échoue, bannis là moi pour 1 mois".... sauf évidement si c'est mon ip à moi....gros bêta qui a oublié le mot de passe de son propre serveur et se fait bannir.

Pour ça, fail2ban va lancer un ordre à votre firewall (quelqu'il soit) et vous envoyer un email (je déconseille l'usage des mails.....à moins de vouloir faire exploser sa boite mail)

fail2ban va aussi loger ces informations : il peut vous dire : j'ai banni l'ip machin pour violation de la règle tartampion (tartampion = accès ssh ou accès ftp ou accès à votre page admin wordpress ... tout ce que vous voulez : c'est paramétrable)

Et donc vous savez qui fail2ban a banni.
Donc sur votre pi qui répond à un nom de domaine et est accessible en ssh sur le port 22 (pas bien) depuis 2 ans. Regardez ce qui se passe :
C'est 100 voir 400 ip par jours qui se font bannir !

Qui sont ces gens ?
Evidement, je ne vais pas pouvoir le dire
Mais où est localiser cette ip, ça on peut
Alors vous me direz oui mais on s'en fout de toute manière, les pirates utilisent des VPN.
Vrai et faux
Vrai dans les pays où le pirate souhaite cacher son identité (mais que risque-t-il avec vous, vous n'êtes ni la CIA ni le FBI, ni une instance gouvernementale)
Vrai si le pirate vous souhaite vraiment du mal
Mais il y a une majorité de pirates en herbes (on explique en formation en quoi consiste l'attaque en brute force les dénis de services et des étudiants s'inventent des TP !!)
Il y a aussi des entreprises concurrentes à la votre qui ne se gênent pas pour tenter le coup.
Et puis des écoles où c'est carrément enseigné avec travaux pratiques.
Bref, dans une majorité des cas, la tentative de piratages n'est qu'une tentative sans réel volonté de tout casser (elle doit pourtant être bloquée par votre système de sécurité)
Et puis ça me dirait aussi autre chose :
Puisque des pirates (surement la moitié au moins ) utiliseront de VPN : quelle localisation vont-ils choisir ?

En fait je connais déjà les réponses, j'ai déjà fait des stats là-dessus.

Donc je reprends :
fail2ban peut me dire quels ip sont bloquées pour quelle violation de règle
geoip (une bibliothèque python) peut me donner le pays des ip en question
Reste plus qu'à faire :
- une tâche python qui fait tout ça et remplit une base de données avec un horodatage (genre année / mois, ça suffit, si on stocke jour et heure, la base de données va faire 10 Go en 6 mois... je sais ce qui m'attend, on l'a déjà fait par analyse de trames de piratage avec tcpdump)
- une site web avec charts pour représenter les résultats.

Pour ceux qui auraient des doutes, voici un chart réalisé sur juin 2019 avec tcpdump sur un serveur web situé en France qui ne sert qu'à 3 personnes membres d'une association en France de 30 membres vivant tous en France : le trafique provenant de France ne représente que 25% du trafic total
Image

La base de données est déjà modélisées et créée ( 15 minutes : 3 tables)
J'ai longuement hésité : Firebird (léger, complète, facile, ultra-fiable) , sqlite (très léger, trop, limitée : pas de PL) ou Mysql (connue, complète, mais usine à gaz)
Finalement j'ai opté pour Mysql mais je sais que certains vont galérer avec (processus de création de la base de de l'utilisateur qui change selon la version que vous utilisez)
Le script python est déjà réalisé (2h)
La tâche est en place sur un de mes serveurs.
Ne me manque que le site web à faire pour représenter les données.
Une fois fini je mettrai tout ça (les codes) accessibles si vous connaissez déjà fail2ban, vous vous rendrez compte à quel point une protection de ce type est indispensable et à quel point le monde du web est une zone de non droit.
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

jelopo
Raspinaute
Messages : 310
Enregistré le : mer. 11 oct. 2017 10:23

Re: Qui cherche à vous pirater ?

Message par jelopo » dim. 12 juin 2022 13:19

Bonjour,

Belle initiative. J'ai eu la même démarche, mais je ne suis pas allé au bout...

Pour info, de mon coté, j'utilisais fail2ban + iptables pour bloquer les tentatives.

Pour la localisation :

Code : Tout sélectionner

wget -qO- ipinfo.io/<ADRESSE_IP>
ou bien

Code : Tout sélectionner

whois <ADRESSE_IP>
Avec ce second choix on récupère aussi l'adresse mail de l'administrateur et/ou le compte abuse.
Je me posait la question s'il serait pertinent d'alerter que des IP de cette entreprise étaient utilisées pour des tentatives de piratage ?
Sachant le pourcentage de bande passante utilisée pour cette activité, faire du ménage pour une entreprise pourrait libérer sans doute de la charge sur les machine du réseau ?

Pour le stockage/affichage si le site web a juste besoin d'afficher des graphiques, il me semble que le couple influxdb+grafana devrait répondre au besoin.

A+

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Qui cherche à vous pirater ?

Message par Artemus24 » dim. 12 juin 2022 15:55

Salut à tous.
Piper a écrit :Alors pour limité la casse (et les denis de services), on utilise tous fail2ban.
Ben non, tout le monde n'utilise pas ce logiciel pour se protéger car je n'en ai jamais eu besoin. Pourquoi ?
Parce que tous mes accès depuis internet se font en utilisant une clef SSH.
Du coup, plus besoin de mots de passe pour accéder à mes comptes dans mes raspberry.
Le compte "root" (qui ne s'appelle plus ainsi) n'est pas accessible, même si le pirate connait le mot de passe.
De même, le compte "pi" (qui ne s'appelle plus ainsi) n'est pas accessible par mot de passe.
Il est nécessaire d'avoir sur son ordinateur la clef SSH ou y accéder.

Le pare-feu (iptables) permet de réduire le filtrage au niveau des adresses IP.
Je ne procède pas en autorisant "tout le monde, sauf", mais plutôt en "interdisant tout le monde, sauf".
Cela permet d'aoir une liste d'IP à autoriser plus réduite.

Mais si tu as des adresses dynamiques, ce qui n'est pas mon cas, cela ne te sert à rien.
Le cas le plus classique est l'accès par un téléphone mobile (je n'en possède pas).

Dans l'évolution de mon réseau local, et donc de sa protection, j'envisage de passer à "PFSENSE".
Piper a écrit :Ex : votre pi est accessible via internet par son port 22 en ssh (pas bien, mais vous mettriez le 3022 que ce serait pareil au bout de quelques mois) , un pirate essayera de se connecter en root
Ce port est dédié à SSH et c'est normal de l'utiliser ainsi. Il n'est pas recommandé de modifier les ports pour d'autres usages que ceux prévus à cet effet.
Piper a écrit :Vous avez probablement bloqué l'accès en root mais le pirate essayera quand même. Il se fera jeté chaque fois et ça va remplir les logs
Que le pirate fasse des tentatives, ça le regarde (enfin, s'il aime perdre son temps).
Après avoir lu la totalité de ton sujet, tu as fait une étude sur qui désire te pirater.

Il y a quelques années, j'ai recherché pour windows un pare-feu et j'ai trouvé Komodo.
A vrai dire, il ne fonctionnait pas très bien pour ce que je désirai faire.
Je me suis penché sur celui de windows et j'ai actuellement plus aucun problème de tentative de piratage.
J'ai fait le test avec "Gibson Research Corporation / Shield up" et je ne suis pas visible sur internet.
Piper a écrit :En fait je connais déjà les réponses, j'ai déjà fait des stats là-dessus.
Tous les accès à ton site ne sont pas des tentatives de piratage.
Il faut faire la distinction entre les bots et les tentatives de piratage.

Un bot passe régulièrement et teste tes ports mais il ne fait rien de plus.
Une attaque se fait par un déclenchement manuelle et dure plusieurs secondes.
Le pirate cherche un fichier en particulier avant d'essayer de pénétrer ton système.

Dans la plupart des cas, j'ai constaté que les tentatives de piratage sont chinois.
Et en plus, ils ne sont pas très doués, enfin, c'est ce que j'ai constaté.

Pour mon site web, j'ai créé deux tables contenant les informations dont j'avais besoin.
Entre autre les adresses IPv4 & IPv6, la date et l'heure d'accès et le nombre de tentatives.
Puis si elle a été bloquée ou pas en fonction du nombre de tentative dans une journée.
Piper a écrit :J'ai longuement hésité : Firebird (léger, complète, facile, ultra-fiable) , sqlite (très léger, trop, limitée : pas de PL) ou Mysql (connue, complète, mais usine à gaz)
Mysql n'est pas une usine à gaz. Je connais bien et je sais m'en servir.
Je connais aussi Firebird qui est léger et répond bien à un traitement de ce type.
Je connais Microsft SQL server qui est trop lourd à mettre en oeuvre pour ce genre de test.
Je ne connais pas sqlite.

Comme mon site a été développé sous WampServer, c'est en Mysql que j'ai fait les tests.

Sinon, bravo pour ton initiative. :D

Cordialement.
Artemus24.
@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

domos
Messages : 75
Enregistré le : lun. 9 mars 2015 19:17

Re: Qui cherche à vous pirater ?

Message par domos » lun. 13 juin 2022 14:33

Bonjour,

Le but des attaquants c'est plutôt d'exploiter des failles de sécurité connus dans OpenSSH par exemple.
Le fait d'utiliser des clés ssh et de désactiver l’accès par login/passwd ne sera pas suffisant pour sécuriser dans ce cas et fail2ban apporte un plus pour éviter qu'il y ai trop de tentatives

Par contre un filtrage IP qui limite à un pool de plage d'@IP, c'est forcement mieux mas pas toujours possible.

Je le vois aussi dans les log de nginx, c'est plutot des bots qui essaient des accès pour des applications connues accessibles en http/https.
Je refuse les connexion http(s) a tout bot de type scripting comme dans cette liste (mstshash|masscan|python|perl|curl|wget|zgrab|Hakai|ZmEu|Go-http-client|CensysInspect) ou si le "http_user_agent" n'est pas renseigné

piper
Raspinaute
Messages : 654
Enregistré le : sam. 5 juin 2021 18:57

Re: Qui cherche à vous pirater ?

Message par piper » lun. 13 juin 2022 18:27

Bien sûr que je fait aussi du filtrage d'ip, des limitations d'écoute sur les sockets et j'utilise même des captcha sur mes pages d'identifications . et des clés ssh pour l'accès en terminal distant. Mon accès à mysql se fait au travers d'un accès ssh etc....
Fail2ban n'est qu'un outil avec de protection au même titre que les autres méthodes qui offrent un complément.
J"ai même un système de bannissement automatique par scan des 404 (le type qui cherche dans les sous dossiers d'un site à la recherche de qqchose d'intéressant et un filtrage par pays sur certains sites sensibles.
On est pas là pour donner un cours complet sur la sécurité des serveurs !

Je m'intéresse juste aux pays d'origine des ips bannies par fail2ban et à démontrer que dès qu'on rend un objet connecté accessible par internet, les "loups" de jettent dessus.

La technique est simple une fois fail2ban installé et configuré plus mysql :
Une table contient la liste des règles qu'on a paramétré, c'est mis à jour automatiquement dans la tâche grâce à la commande suivante qui la liste :

Code : Tout sélectionner

fail2ban-client status
Une autre table contient la liste des ip bannies pour chaque règle c'est mis à jour automatiquement dans la tâche grâce à la commande suivante qui la liste :
Ex :

Code : Tout sélectionner

fail2ban-client status sshd
A celui qui me dit que j'aurais pu utiliser iptables, je vais répondre que moi, j'utilise firewalld et qu'il existe encore de nombreux pare-feux compatibles avec fail2ban.
En plus, la sortie de fail2ban-client est simplissime à parser de donne tout de suite un tableau d'ip

La clé primaire c'est Annee, Mois, Regle, IP
La méthode d'insertion des données est simple : "INSERT IGNORE" (pas d'insertion ni d'erreur si l'ip est déjà présente dans la table)
Je ne souhaite pas compter le nombre de tentatives de chaque ip, seulement le nombre d'ip distinctes bannies.

Juste avant l'insertion, je géolocalise l'ip mais pas avec les outils habituels du shell (exécution trop longues pour chaque interrogation d'ip) , je le fais avec la librairie python3-geoip2 et sa base de données gratuite GeoLite2-Country.mmdb que je mets à jour régulièrement automatiquement.

Comme tout ça ira sur un site, il y a aussi une table utilisateurs avec des fonctionnalités de création, modification, suppression d'utilisateurs et un compte admin.

La tâche qui remplit la base de données va la créer automatiquement si elle n'existe pas ainsi qu'un compte utilisateur par défaut du site et le user de connexion à la base de données.

Comme pour tout ça j'utilise on MVC que j'ai développé il y a 15 ans, la présentation graphique sera un peu "passée de mode" mais je m'en fous. Je ne compte pas m'embêter à faire du node.js pour ça
Du coup, ne reste plus qu'à faire des charts si l'envie m'en prend

Et en 3 jours voilà ce que ça donne : 491 ip bannies et les plus haut scores sont ..... ça je le savais. Ce serait amusant si on me disait que les Russes utilisent des VPN basés aux USA ... ça m'étonnerait.
Image
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

piper
Raspinaute
Messages : 654
Enregistré le : sam. 5 juin 2021 18:57

Re: Qui cherche à vous pirater ?

Message par piper » mer. 22 juin 2022 17:08

Et voici après 10jours :
Les USA sont largement en tête des origines des attaques.
Alors soit, les pirates prennent systématiquement des VPN là-bas.
Soit, ceux que nous pensons être les gentils, ne le sont pas.
Image
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

Répondre

Retourner vers « Utilisateurs avancés »