Add: oldier article nginx perishablepress

master
HUC Stéphane 2020-04-21 15:32:33 +02:00
parent 0b6a32a84c
commit 4876234f0a
Signed by: hucste
GPG Key ID: C4ED64222D9B037F
12 changed files with 250 additions and 2 deletions

View File

@ -1,6 +1,6 @@
---
title: "PHP5|7 : un fichier sitemap.xml, ou sitemap.xml.gz"
date: 2020-04-20T19:10:51+02:00
date: 2018-11-13T19:10:51+02:00
description: "Générer un fichier sitemap et sa version compressée en PHP 5 et 7"
draft: false
tags: ['PHP5', 'PHP7', 'sitemap']

View File

@ -0,0 +1,108 @@
---
title: "PerishablePress 6G pour nginx"
date: 2017-07-29T10:52:11+02:00
description: "Comment paramétrer les règles de blocage d'adresses IP du projet 'Perishable Press 6G' avec nginx"
draft: false
tags: ['nginx', 'block', 'PerishablePress', '6G']
---
## Description
Le projet **[Perishable Press 6G][1]** est un projet de règles de filtrage
pour le serveur Apache, version 2 de préférence, à utiliser dans le
fichier `.htaccess`.
Personnellement, j'avoue préférer nginx.
Je rappelle que les règles .htaccess n'existent pas pour nginx, même si
on peut recréer le principe, de manière différente !
Donc, j'ai eu l'idée de convertir ces règles de filtrage et autres blacklistages
pour l'intégrer à l'usage que j'ai de nginx.
À moins que je ne me trompe, cela devrait donner ce qui suit ci-dessous :
## Configuration
### 6G:[QUERY STRINGS]
Dans le fichier de configuration du domaine à gérer, contexte `server` :
{{< code "web-nginx-perishable-press-6g-queries" nginx >}}
#### WordPress: plugin TimThumb
Si jamais vous utilisez le plugin TimTumb, il vous faudra commenter la ligne
suivante :
`location ~* &quot;(thumbs?(_editor|open)?|tim(thumb)?)\.php&quot; { return 444; }`
### 6G:[REQUEST METHOD]
Toujours dans le contexte `server`, utilisons la capacité native de nginx,
si la connexion n'est pas de type GET, ou HEAD, alors bloquons le flux :
{{< code "web-nginx-perishable-press-6g-request-method" nginx >}}
### Nuage informatique
Pour ceux qui utilisent un serveur de nuage informatique, tel que Nextcloud,
ajoutez au moins la méthode `PUT`, tel que : <br>
`if ($request_method !~ ^(GET|HEAD|PUT)$ ) { return 444; }`
### Formulaires
Si vous avez dans votre site, des pages qui ont des formulaires qui envoient
les données par la requête POST, ajoutez la dans la déclaration ci-dessus,
tel que : <br>
`if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; }`
### 6G:[REFERRERS]
Pour ce filtrage, utilisons la déclaration `map`, dans le contexte `http`
du serveur :
{{< code "web-nginx-perishable-press-6g-referrers-map" nginx >}}
La règle `~([a-z0-9]{2000}) 1;` est mis en commentaire - je n'ai pas encore
trouvé comment faire pour l'inclure sans retour d'erreur !
Puis, rajouter dans le contexte `server` ladite déclaration :
{{< code "web-nginx-perishable-press-6g-referrers-context-server" nginx >}}
### 6G:[REQUEST STRINGS]
Les filtres sur les requêtes sont toutes aussi simples que celles sur les
{{< anchor "queries" "6gquery-strings" >}}… de type `location`, dans le
contexte `server` :
{{< code "web-nginx-perishable-press-6g-request-strings" nginx >}}
#### CGI
Pour ceux qui utilisent un service CGI, supprimez la mention `cgi-|` de la
ligne suivante : <br>
`location ~* &quot;/(=|\$&amp;|_mm|(wp-)?config\.|cgi-|etc/passwd|muieblack)&quot; { return 444; }`
### 6G:[USER AGENTS]
Là encore, utilisons l'astuce de la déclaration `map`, dans le contexte `http` :
{{< code "web-nginx-perishable-press-6g-ua-map" nginx >}}
Puis écrivons dans le contexte `server` :
{{< code "web-nginx-perishable-press-6g-ua-context-server" nginx >}}
---
Et, voilà !
PS : Pensez à redémarrer le serveur nginx, après avoir lancé le test de la config !
---
[1]: https://perishablepress.com/6g
---

View File

@ -0,0 +1,92 @@
---
title: "PerishablePress : Blackhole pour les mauvais robots"
date: 2017-07-23T21:42:02+02:00
draft: false
lastmod: 2017-07-29T22:17:58+02:00
tags: ['nginx', 'PerishablePress', 'Blackhole', 'block']
---
## Description
Jeff Starr de PersishablePress vient de publier son [plugin de sécurité pour WP][1],
nommé <span lang="en">[Blackhole for BadBots][2]</span>.
L'idée de départ intéressante est, dû au fait que les robots scrutateurs
du web ne respectent pas tous la déclaration du fichier `robots.txt`
C'est d'ailleurs pour cette raison qu'ils sont appelés "<span lang="en">BadBots</span>"
ou "mauvais robots".
Puisque ces mauvais robots ne respectent rien, on va les piéger, puis bloquer
leurs adresses IP !
## Installation
Commençons par télécharger la dernière mouture des scripts PHP : <br>
https://perishablepress.com/blackhole-bad-bots/#blackhole-download
Une fois l'archive décompressée, ouvrez le script `index.php`, et remplissez/modifiez
correctement les valeurs des variables `$from`, `$recip`<br>
enregistrez la modification.
Pensez à modifiez l'url de contact, en lignes 206 et 229 ; et, idem pour
le script `blackhole.php` en ligne 56.
Dans votre site, créez un répertoire `blackhole`, dans lequel vous déposerez
les fichiers blackhole, précédemment téléchargés - <br>
*bien sûr, pas besoin du fichier `.htaccess`*
Mettez des droits 0600 sur le fichier `blackhole.dat`, si votre serveur
permet cette gestion fine…
## Configuration
Ensuite, modifiez vos scripts PHP de cette manière - *oui, là, c'est un peu la contrainte !* :
* Dans votre code source PHP, rajoutez cette déclaration suivante - *si possible,
avant tout code html… voire tout autre code PHP* : <br>
`include(realpath(getenv('DOCUMENT_ROOT')) .'/blackhole/blackhole.php');`
* Toujours dans le code source PHP, rajoutez la suivante, où vous voulez,
mais le plus probablement dans ce qu'on appelle le 'footer' : <br>
`<a rel="nofollow" style="display:none;" href="http://votre-ndd.tld/blackhole/">NE PAS Suivre ce lien où vous serez bannis - interdits d'accès - à ce site !</a>`
* Puis, terminez par rajouter cette déclaration dans votre fichier `robots.txt` : <br>
`Disallow: /blackhole/`
Maintenant, modifions le fichier de configuration de votre serveur nginx
pour ajouter cette déclaration `location` :
{{< code "web-nginx-perishable-press-blackhole-location" nginx >}}
Puis, pensez à tester votre configuration nginx, et redémarrez votre serveur !
Vous obtiendrez ainsi une belle erreur 404, si le fichier est appelé…
---
À partir de maintenant, quand un mauvais robot, ou quelqu'un cherchera à
pointer sur le répertoire `blackhole`, et/ou un de ses fichiers, il sera
blacklisté, puis quand il reviendra, il ne lui sera pas permis d'avoir
accès au site web…
Le script vous enverra un mail ; si vous ne voulez pas en recevoir, éditez
le script `index.php`, et mettez en commentaire PHP la ligne 226, commençant ainsi : <br>
`//mail($recip, $subject, $message, 'From: '. $from);`
Il existe d'autres options modifiables ; là, je vous renvoie au site [PerishablePress][2] !
---
**Version modifiée**
Retrouvez la [version modifiée sur mon espace git][3], ainsi que l'[archive ZIP correspondante][4] !
L'auteur est informé ; j'espère qu'il intégrera mes modifications ;-)
---
[1]: https://perishablepress.com/new-plugin-blackhole-bad-bots/
[2]: https://perishablepress.com/blackhole-bad-bots/
[3]: https://framagit.org/hucste/tools/tree/master/blackhole
[4]: https://framagit.org/hucste/tools/raw/master/blackhole/blackhole.modified.zip
---

View File

@ -0,0 +1,13 @@
# 6G Perishable Press: Queries String
# @ https://perishablepress.com/6g/
location ~* &quot;(eval\()&quot; { return 444; }
location ~* &quot;(127\.0\.0\.1)&quot; { return 444; }
location ~* &quot;([a-z0-9]{2000})&quot; { return 444; }
location ~* &quot;(javascript\:)(.*)(\;)&quot; { return 444; }
location ~* &quot;(base64_encode)(.*)(\()&quot; { return 444; }
location ~* &quot;(GLOBALS|REQUEST)(=|\[|%)&quot; { return 444; }
location ~* &quot;(&lt;|%3C).*script.*(&gt;|%3)&quot; { return 444; }
location ~* &quot;(\|\.\.\.|\.\./|~|`|&lt;|&gt;|\|)&quot; { return 444; }
location ~* &quot;(boot\.ini|etc/passwd|self/environ)&quot; { return 444; }
location ~* &quot;(thumbs?(_editor|open)?|tim(thumb)?)\.php&quot; { return 444; }
location ~* &quot;(\'|\&quot;)(.*)(drop|insert|md5|select|union)&quot; { return 444; }

View File

@ -0,0 +1 @@
if ($bad_referer) { return 444; }

View File

@ -0,0 +1,6 @@
# @ https://perishablepress.com/6g/
map $http_referer $bad_referer {
default 0;
~*\{.*\: 1; # ShellShock
#~([a-z0-9]{2000}) 1;
~(?i)(semalt.com|todaperfeita) 1;

View File

@ -0,0 +1 @@
if ($request_method !~ ^(GET|HEAD)$ ) { return 444; }

View File

@ -0,0 +1,11 @@
# 6G Perishable Press : Request String
# @ https://perishablepress.com/6g/
location ~* &quot;(https?|ftp|php):/&quot; { return 444; }
location ~* &quot;(=\\'|=\%27|/\\'/?)\.&quot; { return 444; }
location ~* &quot;/(\$(\&amp;)?|\*|\&quot;|\.|,|&amp;|&amp;amp;?)/?$&quot; { return 444; }
location ~* &quot;(\{0\}|\(/\(|\.\.\.|\+\+\+|\\&quot;\\&quot;)&quot; { return 444; }
location ~* &quot;(~|`|&lt;|&gt;|:|;|,|%|\|\s|\{|\}|\[|\]|\|)&quot; { return 444; }
location ~* &quot;/(=|\$&amp;|_mm|(wp-)?config\.|cgi-|etc/passwd|muieblack)&quot; { return 444; }
location ~* &quot;(&amp;pws=0|_vti_|\(null\)|\{\$itemURL\}|echo(.*)kae|etc/passwd|eval\(|self/environ)&quot; { return 444; }
location ~* &quot;\.(aspx?|bash|bak?|cfg|cgi|dll|exe|git|hg|ini|jsp|log|mdb|out|sql|svn|swp|tar|rar|rdf)$&quot; { return 444; }
location ~* &quot;/(^$|mobiquo|phpinfo|shell|sqlpatch|thumb|thumb_editor|thumbopen|timthumb|webshell)\.php&quot; { return 444; }

View File

@ -0,0 +1 @@
if ($bad_bot) { return 444; }

View File

@ -0,0 +1,6 @@
# @ https://perishablepress.com/6g/
map $http_user_agent $bad_bot {
default 0;
~*\{.*\: 1; # ShellShock
#~(?i)([a-z0-9]{2000}) 1;
~(?i)(archive.org|binlar|casper|checkpriv|choppy|clshttp|cmsworld|diavol|dotbot|extract|feedfinder|flicky|g00g1e|harvest|heritrix|httrack|kmccrew|loader|miner|nikto|nutch|planetwork|postrank|purebot|pycurl|python|seekerspider|siclab|skygrid|sqlmap|sucker|turnit|vikspider|winhttp|xxxyy|youda|zmeu|zune) 2;

View File

@ -0,0 +1,4 @@
location /blackhole/blackhole.dat {
satisfy any;
deny all;
}

View File

@ -10,20 +10,25 @@ Header set "Content-Security-Policy" "upgrade-insecure-requests"
Redirect "/fr/blog/urbackup_client_gui_debian" "/fr/sys/debian/urbackup-client-gui/"
Redirect "/fr/?post/Du-bon-usage-sécurisé-de-GPG" "/fr/sec/ssh/configuration-securisee/"
Redirect "fr/dev/php/sitemap_gz" "fr/dev/php/sitemap-gz/"
Redirect "/fr/dev/php/sitemap_gz" "/fr/dev/php/sitemap-gz/"
Redirect "/fr/securite/gpg/gpg_errors" "/fr/sec/gpg/gpg-erreurs/"
RewriteRule "^/fr/securite/(.*)" "/fr/sec/$1" [R]
Redirect "/fr/securite/" "/fr/sec/"
Redirect "/fr/sys/debian/urbackup_client_gui" "/fr/sys/debian/urbackup-client-gui/"
Redirect "/fr/systeme/android/flash-rockchip-4.4" "/fr/sys/android/flash-rockchip/"
Redirect "/fr/systeme/android/synchronisation-xiaomi-nextcloud" "/fr/sys/android/synchronisation-xiaomi-nextcloud/"
Redirect "/fr/systeme/debian/urbackup_client_gui" "/fr/sys/debian/urbackup-client-gui/"
Redirect "/fr/systeme/openbsd/config-smtpd" "/fr/sys/openbsd/smtpd-config-auth/"
Redirect "/fr/systeme/openbsd/mount_crypt_hd" "/fr/sys/openbsd/mount-crypt-hd//"
Redirect "/fr/systeme/openbsd/vm-debian" "/fr/sys/openbsd/vm-debian-stretch/"
RewriteRule "^/fr/systeme/(.*)" "/fr/sys/$1" [R]
Redirect "/fr/systeme/" "/fr/sys/"
Redirect "/fr/web/perishablepress-6g-pour-nginx" "/fr/web/nginx/perishablepress-6g/"
Redirect "/fr/web/perishablepress-blackhole-pour-les-mauvais-robots" "/fr/web/nginx/perishablepress-blackhole/"
RewriteRule "^/web/(.*)" "/fr/web/$1" [R]
# Brotli