Add: article relayd log

master
HUC Stéphane 2020-05-17 17:40:16 +02:00
parent f54c157b9d
commit 7d84168879
Signed by: hucste
GPG Key ID: C4ED64222D9B037F
11 changed files with 196 additions and 32 deletions

View File

@ -3,7 +3,7 @@ title: "CORS : Cross-origin Resource Sharing (header)"
date: 2017-08-16T13:31:25+01:00
description: "Explication sur l'entête HTTP nommée CORS : Cross-Origin Resource Sharing"
draft: false
lastmod: 2018-10-12T02:44:25+01:00
lastmod: 2020-05-17T04:44:25+01:00
tags: ["HTTP", "Header", "CORS"]
---
@ -27,12 +27,6 @@ des autres entêtes, telles que
{{< inside "web:http:x-xss-protections" X-XSS-Protections >}},…
## Documentations
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
* Support actuel de l'entête : http://caniuse.com/#search=cors
## Exemples
`Access-Control-Allow-Origin: *`
@ -48,4 +42,25 @@ son binôme {{< man relayd 8 >}} que l'on utilisera !
`match response header set "Access-Control-Allow-Origin" value "huc.fr.eu.org"`
----
## Documentations
* https://developer.mozilla.org/fr/docs/Web/HTTP/CORS
* [Access-Control-Allow-Credentials][1]
* [Access-Control-Allow-Headers][2]
* [Access-Control-Allow-Methods][3]
* [Access-Control-Allow-Origin][4]
* [Access-Control-Expose-Headers][5]
* [Access-Control-Max-Age][6]
* Support actuel de l'entête : [http://caniuse.com/#search=cors](http://caniuse.com/#search=cors)
---
[1]: https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials
[2]: https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Access-Control-Allow-Headers
[3]: https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Access-Control-Allow-Methods
[4]: https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
[5]: https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Access-Control-Expose-Headers
[6]: https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Access-Control-Max-Age
---

View File

@ -245,6 +245,6 @@ cdnjs.cloudflare.com netdna.bootstrapcdn.com ;"`
### Autres sites intéressants
* https://report-uri.io
* Support actuel : http://caniuse.com/#search=csp
* Support actuel : [http://caniuse.com/#search=csp](http://caniuse.com/#search=csp)
------------------------------------------------------------------------

View File

@ -3,7 +3,7 @@ title: "Referrer (header)"
date: 2017-08-16T13:35:25+01:00
description: "Explications sur l'entête HTTP nommée Referrer"
draft: false
lastmod: 2018-10-12T02:46:25+01:00
lastmod: 2020-05-17T04:51:25+01:00
tags: ["HTTP", "header", "Referrer"]
---
@ -17,11 +17,6 @@ voire interdisant les informations que peuvent contenir cette entête.
Cette entête complète la directive 'referrer' de l'entête {{< inside "web:http:csp" CSP >}}
## Documentations
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy
* Support actuel : http://caniuse.com/#search=Referrer
## Options
4 options sont utiles :
@ -39,5 +34,16 @@ Cette entête complète la directive 'referrer' de l'entête {{< inside "web:htt
`add_header Referrer-Policy same-origin;`
### relayd
------------------------------------------------------------------------
Et, oui, malheureusement, {{< tag httpd >}} ne peut pas gérer les entêtes, ce sera
son binôme {{< man relayd 8 >}} que l'on utilisera !
`match response header set "Referrer-Policy" value "same-origin"`
## Documentations
* https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Referrer-Policy
* Support actuel : [http://caniuse.com/#search=Referrer](http://caniuse.com/#search=Referrer)
---

View File

@ -26,10 +26,6 @@ des autres entêtes X-*-Options, telles que
{{< inside "web:http:x-frame-options" "X-Frame-Options" >}}, ou
{{< inside "web:http:x-xss-protections" X-XSS-Protections >}}…
## Documentations
* {{< wp Cross-site_scripting >}}
## Exemples
`X-Content-Type-Options: nosniff`
@ -45,4 +41,8 @@ son binôme {{< man relayd 8 >}} que l'on utilisera !
`match response header set "X-Content-Type-Options" value "nosniff"`
----
## Documentations
* {{< wp Cross-site_scripting >}}
---

View File

@ -34,11 +34,6 @@ des autres entêtes X-*-Options, telles que
* `SAMEORIGIN` : permet d'être mis dans une frame, à-partir de votre propre site.
* `ALLOW-FROM uri` : Cette option est {{< color red >}}dépréciée{{< /color >}} - il est clairement recommandée de ne plus l'utiliser au profit de la directive `frame-ancestors` gérée par l'entête {{< inside "web:http:csp" CSP >}}.
## Documentations
* Différentes techniques de protections : https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet
* Support actuel : http://caniuse.com/#search=X-Frame-Options
## Exemples
`X-Frame-Options: DENY`
@ -55,5 +50,9 @@ son binôme {{< man relayd 8 >}} que l'on utilisera !
`match response header set "X-Frame-Options" value "DENY"`
## Documentations
------------------------------------------------------------------------
* Différentes techniques de protections : https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet
* Support actuel : http://caniuse.com/#search=X-Frame-Options
---

View File

@ -24,10 +24,6 @@ des autres entêtes X-*-Options, telles que
{{< inside "web:http:x-content-type-options" "X-Content-Type-Options" >}},
{{< inside "web:http:x-frame-options" "X-Frame-Options" >}}…
## Documentations
* {{< wp Cross-site_scripting >}}
## Exemples
`X-XSS-Protection: 1; mode=block`
@ -43,5 +39,8 @@ son binôme {{< man relayd 8 >}} que l'on utilisera !
`match response header set "X-Xss-Protection" value "1; mode=block"`
## Documentations
------------------------------------------------------------------------
* {{< wp Cross-site_scripting >}}
---

View File

@ -0,0 +1,106 @@
---
date: 2020-05-17T13:09:05+02:00
description: "Mettre en place et visualiser la journalisation dans relayd, serveur relai(s) sous OpenBSD"
draft: false
tags: ['relayd','log','OpenBSD','astuce']
title: "Relayd : Journalisation (Log)"
---
## Description
**OpenBSD** intègre par défaut dans le système de base, depuis 5.7, le
serveur de relais nommé **relayd**.
* Site web : https://bsd.plumbing/
---
Le but de cet article est de savoir comment mettre en place une journalisation
du flux HTTP(S) qui passe au-travers de **relayd**.
C'est très simple !
## Configuration
* Par défault, le fichier de configuration : `/etc/relayd.conf`
### Configuration Globale
Dans un premier temps, nous devons déclarer le paramètre global `log` dans
le fichier de configuration de **relayd**.
Les déclarations de journal suivantes ont pour signification les suivantes :
* `log state changes` ou `log host checks` sont utiles pour suivre l'état
de l'hôte ou les contrôles effectués dessus.
* les états peuvent être de type :
* `up` si l'état de santé de l'hôte est positif
* `down` si celui est arrété ou si les contrôles ne sont pas bons.
* en état `unknown` si l'hôte est désactivé ou n'a pas encore été
contrôlé.
* `log connection` nous permet de journaliser les connexions TCP, **si relayd
est configuré en tant que relai(s)** <sup>{{< color orange >}}1{{</color>}}</sup>.
À noter l'ajout de l'option `errors` pour le cas où nous voulons journaliser
que les erreurs de connexions TCP.
<sup>{{< color orange >}}1{{</color>}}</sup> *En effet, **relayd** peut aussi
être configuré en tant que routeur ou serveur de redirection*.
### Règles de filtrage
Toujours dans le contexte du fichier de configuration de **relayd**, les
relais ont la possibilité de filtrer les connexions par le biais de paramètres
de filtrage spécifiques.
Ainsi nous utiliserons l'action de correspondance `match` sur laquelle
nous appliquons l'option de journalisation `log`. Cette action de correspondance
s'appliquera sur un type d'action ; actuellement, 5 types d'actions sont
définies :
* `cookie` : une action qui a lieu sur un cookie. <sup>{{< color orange >}}2{{</color>}}</sup>
* `header` : une action ciblant le protocol d'entête HTTP - les fameuses **header**s
* `path` : une action qui analyse le chemin de l'URL demandée. <sup>{{< color orange >}}2{{</color>}}</sup>
* `query` : une action pour chercher la partie query de l'URL demandée. <sup>{{< color orange >}}2{{</color>}}</sup>
* `url` : l'action récupérant l'URL complète… <sup>{{< color orange >}}2{{</color>}}</sup>
<sup>{{< color orange >}}2{{</color>}}</sup> *seulement disponible sur une requête HTTP.*
### Exemple de configuration
L'exemple ci-dessous nous montre cinq règles de filtrage :
* les quatre premières ayant lieu sur une correspondance d'entête
* la dernière journalisant l'URL dans son ensemble.
{{< file "web-httpd-relayd-log-example" sh "/etc/relayd.conf" >}}
## Journaux
Là encore, tout simplement, une fois la configuration établie, validée,
et le service relayd fonctionnel, les différents journaux se retrouvent
principalement dans :
* `/var/log/daemon`,
* `/var/log/message`.
### Exemple log daemon
{{< code "web-httpd-relayd-log-example-daemon" sh >}}
Cet exemple nous restitue :
* des connexions réussies `done`
* des connexions échouées, ici de type erreur 403, bloquées selon des règles
de filtrage bloquantes `block` - *non expliquées ici*
### Exemple log message
{{< code "web-httpd-relayd-log-example-messages" sh >}}
Cet exemple nous montre 3 écritures de journalisation de règles bloquantes,
provoquant une erreur 403, sur des critères de filtrage non expliqués ici.
## Documentations
### Manpages
* {{< man "relayd.conf" 5 log >}}
---

View File

@ -0,0 +1,25 @@
### ips externe auth
ip4 = "addresse-ipv4-public"
### manage logs
log state changes
log connection
#log connection errors
http protocol "hw" {
match header log "Host"
match header log "X-Forwarded-For"
match header log "User-Agent"
match header log "Referer"
match url log
block
(…)
}
relay "www" {
listen on $ip4 port 80
protocol hw
forward to 127.0.0.1 port 80
}

View File

@ -0,0 +1,8 @@
$ grep relayd /var/log/daemon
May 17 16:37:21 sh1 relayd[25237]: relay www, session 13 (2 active), 0, 192.168.1.1 -> :80, done
May 17 16:37:21 sh1 relayd[45869]: relay www, session 7 (2 active), 0, 192.168.1.1 -> :80, done
May 17 16:37:21 sh1 relayd[45869]: relay www, session 8 (1 active), 0, 192.168.1.1 -> :80, done
May 17 16:37:22 sh1 relayd[25237]: relay www, session 14 (1 active), 0, 192.168.1.1 -> :80, done
May 17 17:01:19 sh1 relayd[45869]: relay www, session 9 (1 active), 0, 207.180.140.98 -> :80, Forbidden (403 Forbidden), [<em>Stop scanning for PHP: none</em>!, User-Agent: polaris] GET: Invalid argument
May 17 17:01:19 sh1 relayd[45869]: relay www, session 10 (1 active), 0, 207.180.140.98 -> :80, done
May 17 17:02:43 sh1 relayd[7531]: relay www, session 13 (1 active), 0, 84.161.80.36 -> :80, Forbidden (403 Forbidden), [<em>Stop scanning for an admin interface: none</em>!, Host: 88.136.16.221] [<em>Stop scanning for an admin interface: none</em>!, User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36] [<em>Stop scanning for an admin interface: none</em>!, 88.136.16.221/phpmyadmin/] GET: Invalid argument

View File

@ -0,0 +1,4 @@
$ grep relayd /var/log/messages
May 17 16:22:23 sh1 relayd[7531]: relay www, session 11 (1 active), 0, 37.49.230.25 -> :80, Forbidden (403 Forbidden), [<em>Stop scanning for PHP: none</em>!, User-Agent: Uirusu/2.0] GET: Invalid argument
May 17 17:01:19 sh1 relayd[45869]: relay www, session 9 (1 active), 0, 207.180.140.98 -> :80, Forbidden (403 Forbidden), [<em>Stop scanning for PHP: none</em>!, User-Agent: polaris] GET: Invalid argument
May 17 17:02:43 sh1 relayd[7531]: relay www, session 13 (1 active), 0, 84.161.80.36 -> :80, Forbidden (403 Forbidden), [<em>Stop scanning for an admin interface: none</em>!, Host: 88.136.16.221] [<em>Stop scanning for an admin interface: none</em>!, User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36] [<em>Stop scanning for an admin interface: none</em>!, 88.136.16.221/phpmyadmin/] GET: Invalid argument

2
man2.html Normal file
View File

@ -0,0 +1,2 @@
{{ $txt := .Get 0 | safeHTML }}{{ $nb := .Get 1 | safeHTML }}{{ $anchor := .Get 2 | anchorize }}
<a class="man" href="https://man.openbsd.org/{{ $txt }}{{ if $nb }}{{ print "." $nb }}{{ end }}{{ if $anchor }}{{ print "#" $anchor }}{{ end }}" title="{{ i18n "manpageTitle" }}{{ $txt }}">{{ $txt }}{{ if $nb }}{{ print "(" $nb ")" }}{{ end }}</a>