web-dev-qa-db-fra.com

Comment dois-je écrire les règles fail2ban -> Apache-badbots.conf?

Je dois souvent ajouter de nouvelles règles au fichier Apache-badbots.conf, et chaque fois j'ai le doute que cela ne fonctionne plus ...

Par exemple, voici mon fichier Apache-badbots.conf actuel:

    [Definition]

badbotscustom = MQQBrowser|LieBaoFast|Mb2345Browser|zh-CN|python-requests|LinkpadBot|MegaIndex|Buck|SemrushBot|SeznamBot|JobboerseBot|AhrefsBot|AhrefsBot/6.1|MJ12bot|[email protected]|SemrushBot/6~bl|cortex|Cliqzbot|Baiduspider|serpstatbot|Go 1.1 package http|Python-urllib|StormCrawler|archive.org_bot|CCBot|BLEXBot|ltx71|DotBot|EmailCollector|WebEMailExtrac|Track$
badbots = Atomic_Email_Hunter/4\.0|atSpider/1\.0|autoemailspider|bwh3_user_agent|China Local Browse 2\.6|ContactBot/0\.2|ContentSmartz|DataCha0s/2\.0|DBrowse 1\.4b|DBrow$

#failregex = ^<Host> -.*"(GET|POST|HEAD).*HTTP.*"(?:%(badbots)s|%(badbotscustom)s)"$
failregex = ^<Host> -.*"(GET|POST).*HTTP.*".*(?:%(badbots)s|%(badbotscustom)s).*"$

ignoreregex =

datepattern = ^[^\[]*\[({DATE})
              {^LN-BEG}

Hier, j'ai ajouté "MQQBrowser | LieBaoFast | Mb2345Browser | zh-CN" et aujourd'hui, je vois beaucoup de MQQBrowser et LieBaoFast dans mes journaux d'accès.

Sudo cat /var/log/Apache2/access.log | awk -F\" '{print $6}' | sort | uniq -c | sort -n
    ...
3408 Mozilla/5.0(Linux;U;Android 5.1.1;zh-CN;OPPO A33 Build/LMY47V) AppleWebKit/537.36(KHTML,like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.7.0.953 Mobile Safari/537.36
3418 Mozilla/5.0(Linux;Android 5.1.1;OPPO A33 Build/LMY47V;wv) AppleWebKit/537.36(KHTML,link Gecko) Version/4.0 Chrome/42.0.2311.138 Mobile Safari/537.36 Mb2345Browser/9.0
3444 Mozilla/5.0 (Linux; Android 7.0; FRD-AL00 Build/HUAWEIFRD-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043602 Safari/537.36 MicroMessenger/6.5.16.1120 NetType/WIFI Language/zh_CN
3473 Mozilla/5.0(Linux;Android 5.1.1;OPPO A33 Build/LMY47V;wv) AppleWebKit/537.36(KHTML,link Gecko) Version/4.0 Chrome/43.0.2357.121 Mobile Safari/537.36 LieBaoFast/4.51.3

Qu'est-ce qui ne va pas? Ça marche? Existe-t-il un moyen de savoir s'il y a une erreur et quelle est l'erreur?


Je mets à jour car il ne comprend toujours pas quelque chose, par exemple aujourd'hui j'ai trouvé d'autres bots qui devraient être bannis dans mes logs.

Juste pour comprendre, ce filtre recherche la chaîne que j'ajoute dans Apache-badbots.conf dans le journal d'accès du serveur, et s'il le trouve, il ajoute une règle à fail2ban, à droite ?

  • Par exemple, y a-t-il une différence si j'écris "netEstate NE Crawler" ou simplement "netEstate"?
  • Pourquoi cette chaîne "atSpider/1\.0 "ont toutes ces barres obliques?
  • Tous les "." doit être précédé d'une barre oblique? (China Local Browse 2\.6|DataCha0s/2\.0|DBrowse 1\.4b)
  • Un e-mail peut-il être utilisé comme chaîne? (ex: [email protected])
  • Chaînes avec des espaces comme "Go 1.1 package http "sont corrects ou génèrent une erreur?
  • Le caractère "-" peut-il être utilisé? (ex: requêtes python, Python-urllib)
  • Le caractère "_" peut-il être utilisé? (ex: archive.org_bot)
5
alebal

Avez-vous un fichier robots.txt? C'est pour les robots tellin où et comment ramper. Il y a plus d'une question ici, alors voyons-les une par une.

Si vous souhaitez vérifier si cela fonctionne, accédez simplement au journal fail2ban. Pour comprendre COMMENT son fonctionnement, veuillez aller dans/usr/share/doc/fail2ban/README ou d'autres documents. En bref: fail2ban lit votre fichier journal par les filtres définis et crée des règles de pare-feu pour les adresses IP problématiques trouvées dans les lignes de journal problématiques. Si le bot défini a une adresse IP, il sera banni après quelques tentatives. Dans ce cas particulier, il y a des milliers de demandes avec MQQBrowser et LieBaoFast à partir de nombreuses adresses IP différentes. Donc, jusqu'à ce qu'ils aient une IP qui n'est pas bloquée, il y aura de nouvelles entrées de journal.

Ces lignes de configuration sont expressions régulières , et ceci est la réponse courte à certaines des autres questions, comme:

  • y a-t-il une différence si j'écris "netEstate NE Crawler" ou simplement "netEstate"? oui le premier est plus précis, probablement inutilement.
  • il y a \. au lieu de . car le point simple correspond à n'importe quel caractère
  • les espaces, les tirets et les traits de soulignement (-, _) sont corrects mais pas les crochets.

Si vous souhaitez vraiment sélectionner vos clients en fonction de la chaîne useragent, vous devez utiliser .htaccess, BBQ ou un autre plugin.

1
n3ko