10
votes

Comment chiffrer les fichiers journaux log4net

Y a-t-il un moyen de chiffrer ou de sécuriser la sortie log4net?


1 commentaires

Que voulez-vous crypter exactement? La sortie du journal? Ou l'accès à l'API log4net? Ou autre chose?


4 Réponses :


8
votes

Je suppose que vous voulez crypter la sortie du journal. Dans ce cas, vous devrez écrire votre propre ami qui peut gérer le cryptage. Je suggérerais de déterminer le mécanisme de sortie que vous avez l'intention d'utiliser sans cryptage (c'est-à-dire FILEAppender, EventLogAppender, etc.), puis prolonger cette opération et remplacer les fonctionnalités qui écrivent réellement la production.

La documentation de référence sur les annexes peut être trouvée ici . < / p>

Par exemple, étendez le fichier-fessendrier avec un chiffrementFileAppender et remplacer / implémenter les membres dont vous avez besoin pour connecter l'écriture de fichier.

Alternativement, vous pourriez aller de l'IAPPender et créer un appendeur complètement à partir de zéro. Cela vous donnerait plus de contrôle, mais peut nécessiter plus de travail si tout ce que vous essayez de faire est de chiffrer votre charge utile.


4 commentaires

Merci pour vos beaux conseils. Donc, vous voulez dire, je ferais mieux de chiffrer mon contenu avant d'ajouter à mes journaux en mettant en œuvre une enveloppe qui fait le travail. Ensuite, le contenu de mes journaux serait tout crypté sans rien configurer dans le log4net?


Vous devriez être capable de vous connecter là où il append chaque élément de ligne au fichier journal, ce qui vous permet de chiffrer toute la ligne. Une fois que vous avez accompli cela, vous auriez besoin de configurer Log4Net pour utiliser votre appendend au lieu de tout ce que vous utilisiez auparavant. Dans ce cas, le cryptéfileAppender


@Joseph, suggérez-vous de le chiffrer à chaque ligne de journaux ou lorsqu'il se retourne dans un fichier différent (car il atteint la taille maximale des journaux)?


@paradisonoir selon votre préférence. N'oubliez pas que quel que soit le choix que vous faites, vous devrez avoir une fonctionnalité identique pour pouvoir déchiffrer.



3
votes

Si vous essayez d'empêcher les utilisateurs de le lire sur le Web, vous pouvez modifier le nom de fichier que vous écrivez les enregistrements de journal dans une extension que vous ne permettez pas de servir par votre site Web. De cette façon, les utilisateurs ne peuvent pas deviner dans votre fichier journal et y accéder via le Web.

Si vous essayez d'empêcher les utilisateurs connectés au serveur lui-même de la visualisation du contenu du fichier, vous pouvez utiliser le contrôle de l'autorisation pour verrouiller le fichier vers le bas afin que seuls les utilisateurs dans des groupes d'administrateur spécifiques puissent visualiser le contenu.

Alternativement, vous pouvez vous connecter à la base de données afin qu'il n'y ait aucun fichier qui doit être sécurisé du tout.


0 commentaires

3
votes

Il n'y a pas de prise en charge hors de la boîte pour le cryptage. Ainsi, comme les autres ont déclaré ici, vous devrez mettre en œuvre cela vous-même.

Cela dit, je suggérerais de sous-classer un ForwardingAppender faire le cryptage. Cela vous laissera fondamentalement mettre votre appendend "devant" quel que soit l'appendeur standard que vous choisirais de faire l'écriture réelle sur le disque.


0 commentaires

2
votes

Je me rends compte que cette réponse vient quelques années après la date de post d'origine, mais après avoir été confrontée au même problème, j'ai décidé de créer un package open source pour faire juste ce travail: Log4Net Message Encryptor

Le code source peut être trouvé sur Github

et le paquet peut être téléchargé à partir de Nuget


3 commentaires

Merci d'avoir partagé, je cherchais une solution similaire à Nlog, maintenant au moins, j'ai une implémentation de REF à suivre. BTW, j'ai prévu d'utiliser la clé publique / privée pour chiffrer une clé aléatoire pour améliorer encore la sécurité au lieu d'une clé symétrique corrective, car toute personne ayant accès au journal peut également obtenir la clé d'app.config.


Heureux d'avoir pu aider! L'étui principal d'utilisation pour moi centré sur les journaux étant stockés dans une base de données ou éteint le serveur initial. Ma pensée était que si un attaquant pouvait accéder au fichier web.config, il serait probablement un geste futile de chiffrer les journaux! J'avais même envisagé de porter la mise en œuvre à Nlog aussi, mais la vie a eu lieu dans la voie. Si vous parvenez à créer le projet et à ouvrir la source, laissez-moi savoir comme je l'intéresserais particulièrement!


L'autre chose à mentionner est que la section clé de cryptage dans le Web.config doit être cryptée avec aspnet_regiis. Cela signifierait que la clé n'est pas en texte brut et serait quelque peu plus sûre.