¿Hay alguna forma de encriptar o asegurar la salida de log4net?Cómo cifrar los archivos de registro de log4net
Respuesta
Supongo que desea encriptar la salida del registro. En ese caso, tendrá que escribir su propio Appender que pueda manejar el cifrado. Sugeriría averiguar qué mecanismo de salida pretendes usar sin cifrado (es decir, FileAppender, EventLogAppender, etc.), y luego extender ese apéndice y anular la funcionalidad que realmente escribe el resultado.
La documentación de referencia sobre los appenders se puede encontrar en here.
Por ejemplo, extienda FileAppender con EncryptedFileAppender y anule/implemente los miembros que necesita para enganchar en la escritura del archivo.
Como alternativa, podría extender desde IAppender y crear un appender completamente desde cero. Eso le daría más control, pero podría requerir más trabajo si todo lo que intenta hacer es encriptar su carga útil.
Gracias por sus buenos consejos. Entonces, quieres decir, será mejor que encripte mi contenido antes de agregarlo a mis registros implementando un contenedor que haga el trabajo. Entonces, ¿el contenido de mis registros estaría todo encriptado sin configurar nada en el log4net? – paradisonoir
Debería poder enganchar en donde realmente se agrega cada artículo de línea al archivo de registro, lo que le permite encriptar esa línea completa. Una vez que hayas logrado eso, entonces necesitarías configurar log4net para usar tu Appender en lugar de lo que estabas usando antes. En este caso, el EncryptedFileAppender – Joseph
@Joseph, ¿está sugiriendo encriptarlo para cada línea de registros, o cuando se transfiere a un archivo diferente (cuando alcanza el tamaño máximo de los registros)? – paradisonoir
Si está tratando de evitar que los usuarios lo lean en la web, puede cambiar el nombre del archivo en el que está escribiendo los registros a una extensión que no permita que su sitio web la atienda. De esta forma, los usuarios no pueden adivinar su archivo de registro y acceder a él a través de la web.
Si está tratando de evitar que los usuarios que inicien sesión en el servidor vean el contenido del archivo, puede usar el control de permisos para bloquear el archivo para que solo los usuarios de grupos de administradores específicos puedan ver los contenidos.
Como alternativa, puede iniciar sesión en la base de datos para que no haya ningún archivo que deba asegurarse.
No hay soporte listo para usar para el cifrado. Entonces, como otros han declarado aquí, tendrás que implementarlo tú mismo.
Dicho esto, sugeriría que subclases un ForwardingAppender para hacer la encriptación. Esto básicamente le permitirá colocar su appender "en frente" de cualquier apéndice estándar que elija para hacer la escritura real en el disco.
que se dan cuenta de que esta respuesta viene unos pocos años después de la fecha original, pero después de enfrentar el mismo problema que decidieron crear un paquete de código abierto para hacer precisamente este trabajo: Log4net mensaje cifrador
El código fuente puede encontrar en GitHub
y el paquete se puede descargar desde NuGet
Gracias por compartir, estaba buscando una solución similar para nlog, ahora al menos tengo una implementación de ref a seguir. Por cierto, planeé usar la clave pública/privada para cifrar una clave aleatoria para mejorar aún más la seguridad en lugar de una clave simétrica de corrección, ya que cualquier persona con acceso al registro también puede obtener la clave de app.config – faulty
¡Me alegro de poder ayudar! El caso de uso principal para mí se centró en los registros almacenados en una base de datos o fuera del servidor inicial. ¡Mi idea era que si un atacante podía acceder al archivo web.config, probablemente sería un gesto inútil cifrar los registros! Incluso estaba considerando llevar la implementación a NLog también, pero la vida se interpuso en el camino. Si logras crear el proyecto y abrirlo, ¡házmelo saber porque estaría particularmente interesado! –
La otra cosa para mencionar es que la sección de la clave de encriptación en el web.config debe ser encriptada con Aspnet_regiis. Esto significaría que la clave no está en texto plano y sería algo más segura. –
- 1. ¿Log4Net puede eliminar archivos de registro automáticamente?
- 2. Cifrar archivos de guerra
- 3. Log4net: archivos de registro separados para cada clase
- 4. Uso de otros niveles de registro log4net que los habituales
- 5. Registro Log4net y Unity
- 6. ¿Cómo registro un IObjectRenderer personalizado en log4net?
- 7. log4net registro centralizado para múltiples componentes
- 8. Cómo activar/desactivar el registro usando Log4net
- 9. Log4Net o Bloque de aplicación de registro
- 10. Log4Net configurando el nivel de registro
- 11. Log4net EventLogAppender No de registro para registro personalizado Evento
- 12. Cómo cifrar los archivos de iOS (por ejemplo, PDF) desde el acceso de los usuarios?
- 13. Log4net generación de registro de nombre de archivo incorrecto
- 14. Get log4net archivo de registro en C#
- 15. ¿Dónde creará log4net este archivo de registro?
- 16. Uso de Rijndael para cifrar/descifrar archivos
- 17. Configurar Log4net para escribir en varios archivos
- 18. ¿Cómo puedo incluir SessionID en archivos de registro usando log4net en ASP.NET?
- 19. Log4Net/C# - Deshabilitar el registro predeterminado
- 20. ¿Cómo usar log4net como mecanismo de registro para SSIS?
- 21. Cómo habilitar el registro de la dirección IP con Log4Net
- 22. ¿Cómo administro los archivos de registro WCF de forma programática?
- 23. ¿Cómo puedo verificar los archivos de registro de Drupal?
- 24. Lectura del registro de Log4Net generado por varios hilos
- 25. Eliminar el registro duplicado en log4net
- 26. Cómo rastrear los problemas de log4net
- 27. ¿Cómo iniciar sesión en archivos separados por hilo con Log4Net?
- 28. log4net - configurar usando múltiples archivos de configuración
- 29. ¿Cambiar el nivel de registro mediante programación en log4net?
- 30. registro de base de datos de log4net con parámetros personalizados
¿Qué es exactamente lo que quiere cifrar? La salida de registro? ¿O acceso a la API log4net? ¿O algo mas? –
la salida de registro. – paradisonoir