18
Seguridad en Tryton

Seguridad en Tryton

  • Upload
    nan-tic

  • View
    70

  • Download
    0

Embed Size (px)

Citation preview

Seguridad en Tryton

1/Proyecto

● Si se notifica de un possible problema de seguridad a https://bugs.tryton.org se debe indicar que se trata de un problema de seguridad de forma que sólo unos pocos desarrolladores tienen acceso

● La revisión de código se hace también en privado● Se pide un número CVE● Se saca una nueva versión menor n.n.X para todas las

versiones afectadas

1.1/Seguridad, en serio

2/Usuario

● Administrador a nivel de aplicación (por encima de las bases de datos). Permite:● Crear y borrar bases de datos● Realizar copias de seguridad y restaurarlas (no

escalable)● Password hash con crypt en el fichero de configuración

(cuidado con los permisos!)

2.1/Superadministrador

● Configurable a partir de la 4.2 (password + SMS por ejemplo)

● Hash de la contraseña con sha1 o bcrypt si disponible (más lento!)

2.2/Login

● Se puede limitar acceso según:● Objeto:

● Tabla● Campo● Botón/función

● Reglas de registros (corte horizontal) mediante dominio:● Ejemplo: [('code', 'ilike', '7%')]

● Nivel:● Lectura● Creación● Modificación● Borrado

2.3/Grupos y usuarios

● Timeout para volver a pedir contraseña después de X tiempo de inactividad (timeout en fichero de configuración)

● Cada intento fallido aumenta el tiempo de espera del login (limitado por el tiepo de timeout)● ¡¡¡Aumento exponencial!!!

2.4/Conexión y desconexión

● Reglas para nivel mínimo de dificultad de contraseñas● Número de días de validez de una misma contraseña para

un usuario● Pide contraseña si ha expirado el tiempo● Botón de reset de password para mandar correo

electrónico al usuario

2.5/Módulo password_expiry

● audit_trail● Registrar histórico de logins y logouts de los usuarios

del sistema● audit_log

● Permite ver en una sola pantalla todas las acciones realizadas por los usuarios

● Datos:● Usuario● Fecha y hora● Creación/modificación/borrado● Cambios realizados (si la tabla está historizada)

● No genera registro, cálculo a posteriori

2.6/Módulos de auditoría

3/Administración de sistemas

● Conexión local o cifrada● trytond: utilizar usuario NO administrador pero con acceso

a toda la base de datos

3.1/PostgreSQL

● Conexión segura https:● Cliente web● Cliente escritorio● Webservices: XML-RPC y JSON-RPC

● Permisos se aplican también mediante los webservices● Aplicaciones específicas (trytond / flask): Permisos a nivel

de PostgreSQL

3.2/Conexiones

4/Programación

● Problema con los permisos:● Es muuuuuy complejo dar los permisos necesarios para

que un usuario● Podemos utilizar:

with Transaction().set_user(0):● @ModelView.button

4.1/Permisos programación: root

● python-sql: Evita SQL injectioncursor.execute(*action_report.select(action_report.id, action_report.report_content_data, order_by=action_report.id, limit=limit, offset=offset))

● Simpleeval (en sustitución de safe_eval – que no era tant safe)

● PySON

4.2/Seguridad

http://www.NaN-tic.com

Albert Cervera i [email protected]@albertnanlinkedin.com/in/albertca