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/
-
OpenBSD : 6.6, 6.7
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.
relayd.conf(5)#log
Les déclarations de journal suivantes ont pour signification les suivantes :
log state changes
oulog 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 positifdown
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é.
- les états peuvent être de type :
log connection
nous permet de journaliser les connexions TCP, si relayd est configuré en tant que relai(s) 1 . À noter l’ajout de l’optionerrors
pour le cas où nous voulons journaliser que les erreurs de connexions TCP.
1 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
.
relayd.conf(5)#match
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. 2 relayd.conf(5)#cookieheader
: une action ciblant le protocol d’entête HTTP - les fameuses headers relayd.conf(5)#headerpath
: une action qui analyse le chemin de l’URL demandée. 2 relayd.conf(5)#pathquery
: une action pour chercher la partie query de l’URL demandée. 2 relayd.conf(5)#queryurl
: l’action récupérant l’URL complète… 2 relayd.conf(5)#url
2 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.
Fichier : /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 : sh
$ 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
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 : sh
$ 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
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.