Archive for the ‘auditoría.’ Category

Seguridad en la Gestión de Procesos Batch

Tuesday, June 9th, 2009

A la hora de asegurar un sistema, un factor importante es la ejecución de procesos de fondo en SAP.

La posibilidad de ejecutar procesos de fondo es agradecida por muchos usuarios, y administradores ya que permite descargar los workprocess de diálogo de tareas pesadas para el sistema, pero que no necesitan una mayor interacción con el mismo.

De esta manera, procesos de cálculo, queries, largos reportes, etc, son ejecutados desde la SM36/SM37 o desde el menú de los mismos cuando lo permiten.

Para poder ejecutar procesos batch es necesario contar con el objeto S_BTCH_JOB, el cual tiene como opciones en su campo:

DELE – Eliminar jobs de fondo
LIST – Visualizar órdenes SPOOL creadas mediante job
PLAN – Copiar o repetir jobs
PROT – Visualizar logs de proceso de job
RELE – Liberar jobs (se realiza automáticamente si se planifica)
SHOW – Visualizar cola de jobs

Estas opciones deben configurarse funcionalmente a la necesidad del rol, aunque probablemente no sean para usuarios comunes los permisos de PLAN, DELE y la autorización de RELE puede estar segregada en el administrador del sistema. (Los usuarios planifican un job, y el administrador lo libera cuando considera que el sistema tiene menos carga)

También tenemos el objeto S_BTCH_ADM, que solo tiene las posibilidades de Yes y NO (Y/N), lo cual brinda autorización cross mandantes, y todos los permisos, la cual solo debe asignarse a administradores de de corresponder.

Y por último, uno que nos resulta interesante a la hora de revisar la seguridad es el S_BTCH_NAM. Este curioso objeto nos brinda la posibilidad que los jobs que nosotros creemos sean ejecutados por otro usuario, especificamente puede ser cualquiera de los usuarios que enumeremos en este objeto (seleccionable a la hora de crear el job, por parte del usuario).

Este objeto es de especial importancia, ya que en caso de poseerlo, nos permitiría ejecutar un proceso de fondo con permisos que no son los nuestros, y claramente el riesgo está en que es una práctica común utilizar un usuario con amplios permisos como BATCH, de manera que no “de errores”.

De esta manera un usuario podría ejecutar reportes para los que habitualmente no tiene permiso en forma batch y consultar el spool resultante del mismo.

En caso de requerirse este tipo de ejecución “impersonada”, los permisos deberían estar correctamente restringidos, para las necesidades específicas de la organización.

VN:F [1.9.10_1130]
Rating: 4.0/5 (2 votes cast)
VN:F [1.9.10_1130]
Rating: 0 (from 0 votes)

Seguridad en la ejecución de programas

Friday, June 5th, 2009

A la hora de asegurar la ejecución de actividades sobre el sistema SAP habitualmente nos acordamos de restringir el acceso a determinadas transacciones, objetos de autorización, etc.

Pero muchas veces, por necesidades incorrectamente satisfechas al momento de la implementación, o por un apresurado mantenimiento del código, entre otras posibilidades, quedan puertas abiertas que podrían permitir la ejecución de actividades no deseadas en el sistema.

Personalmente, pienso que muchas de estos permisos se dan por inconsciencia, o desconocimiento de lo que se está autorizando por parte de los dueños o responsables de los datos. Ya que ellos conocen la información que quieren restringir, pero no conocen los medios por los que se puede acceder a la misma. Cuantas veces uno habrá escuchado: “Los sueldos solo los pueden ver un grupo reducido de personas”, y por otro lado se entregan los permisos de visualización de tablas indiscriminados, el debug con modificación de variables, la ejecución libre de programas, entre tantos otros.

Hablando de estas posibilidades, una de ellas es la de permitir la ejecución directa de programas en el ambiente de producción. Para muchos puede sonar a una atrocidad, pero otros probablemente digan que ven esa posibilidad habitualmente habilitada en su sistema.

Principalmente estamos hablando de las transacciones SA38 y SE38.

A veces encontramos que los programadores pueden acceder a producción con estos permisos, otras veces los parametrizadores, e incluso otras veces hasta los usuarios finales, con el inocente fin de poder “Ejecutar un reporte”.

El primer tema a plantear a la hora de resolver estos inconvenientes es el de que todo desarrollo para ser ejecutado en un ambiente productivo debería tener asignado un código de transacción. Como adminsitradores de seguridad deberíamos exigir el cumplimiento de esto, más siendo que la tarea de utilizar la transacción SE93 para crear un código no demanda más de 1 minuto. De esta manera podríamos restringir la ejecución de cualquier programa como si una transacción estándar se tratara.

Ahora el segundo caso es cuando no podemos lograr esto, ya se por falta peso de nuestro sector, o porque las necesidades organizacionales son otras (casos puntuales, ejecución de programas estándar, pedidos ridículos pero con suficiente peso, etc). Ante esta situación lo ideal es no brindar permisos excesivos.

La ejecución de programas está restringida por el objeto S_PROGRAM, el cual tiene un “grupo de autorización de programas” y un código de acción posible (SUBMIT – Ejecutar un programa, BTCSUBMIT – Ejecutar como proceso de fondo, VARIANT – Ejecutar con una variante)

Lo primordial es la utilización de este grupo de autorizaciones, el cual puede definirse en la misma transacción SE38 a la hora de crear el programa. Pero hay que tener en cuenta que un número importante de programas estándar de SAP NO TIENEN GRUPO DE AUTORIZACION ASIGNADO, permitiendo así la ejecución de los mismos con sin chequear el campo de grupo. En este caso existe un programa estándar que permite el mantenimiento masivo de los grupos de autorización llamado SREPOAUTH.

También hay que tener en cuenta que los programas pueden ser ejecutados como proceso de fondo (de no tener las transacciones SA38/SE38) con las transacciones SM36/SM37, las cuales también hay que prever, sobre todo para quienes tienen permisos para la ejecución de procesos de fondo.

De esta manera tenemos bastante herramientas para restringir la ejecución de programas ante distintas circunstancias que se nos planten, en el trabajo cotidiano.

VN:F [1.9.10_1130]
Rating: 4.6/5 (5 votes cast)
VN:F [1.9.10_1130]
Rating: 0 (from 2 votes)

Protección de Mandantes

Wednesday, May 6th, 2009

Un tema sumamente importante que solo fue tratado brevemente en este blog es el tema de la protección de los mandantes. Los disintos niveles de protección que SAP nos brinda para los mismos tienen una importancia mayúscula dentro del marco general de seguridad del sistema y gestión de ambientes.

Por ejemplo, dentro de los parámetros a definir se puede establecer que el mandante sea modificable, la posibilidad de copiar el mismo, realizar modificaciones independientes de mandante, etc.

Desde la transacción SCC4 podemos consultar y/o modificar la configuración de los mandantes, y dentro de las mismas se nos presentan varias opciones que es importante que nos queden claras y bien definidas.

1- Modificar objetos dependientes de mandante:

- Permitir libremente las modificaciones sin realizar órdenes de transporte automáticamente (No recomendado su uso, solo factible para ambientes Sandbox con rutas cerradas de transporte)
- Permitir modificaciones pero realizar automáticamente las órdenes de transporte respectivas (para reforzar la nivelación de ambientes hacia adelante, y la ejecución del proceso transporte, recomendable para ambientes de parametrización o customizing)
- No permitir modificaciones (o lo que se conoce como mandante cerrado, recomendable para ambientes productivos… y no solo recomendable… indispensable para mantener “cierto” control)
- Permitir las modificaciones de customizing pero anular las posibilidades de transporte incluso manuales (no recomendable, solo para entornos cerrados de pruebas)

2- Modificaciones de objetos independientes de mandante:

- Permitir todos los cambios (Recomendable para ambientes de desarrollo)
- Permitir solo cambios de Repository o workbench (Son solo modificables los programas, reportes, diccionario de datos, etc.)
- Permitir solo cambios de Customizing independiente de mandante (Solo el customizing y no el workbench)
- No permitir ningún cambio independiente de mandante (Ambientes de producción)

3- Protección contra copias de mandante:

- Sin restricciones
- Sin posibilidad de sobrescribir el mandante (habitual para la mayoría de los mandantes, salvo excepción puntual)
- Eliminar la posibilidad de tomarlo como origen de una copia de mandante (Es para evitar que un mandante que tiene información confidencial pueda ser copiado a otro mandante)

3- Protección contra uso de CATTS:

- Las herramientas de CATT o ECATT pueden ser utilizadas para realizar cargas masivas de datos en el sistema y por lo tanto se recomienda que se limite la posibilida de su uso en los ambientes productivos.

Es importante destacar que estas configuraciones son solo aproximaciones a lo que debería ser, y que sin embargo muchas veces ocurren excepciones a las reglas aquí definidas, ya que se habilitan temporalmente las posibilidades de copiar mandantes de producción para realizar pruebas (deberían anonimizarse sus datos), o copiar ambientes de desarrollo, etc.

VN:F [1.9.10_1130]
Rating: 4.8/5 (5 votes cast)
VN:F [1.9.10_1130]
Rating: +2 (from 2 votes)

Tips: Auditoría sin activar la auditoría

Friday, April 3rd, 2009

Estrenando un nuevo diseño en el blog creamos un artículo que puede llegar a ser útil aunque el título suene un tanto ambicioso. La realidad es que la idea básica es la de conocer si un usuario determinado ejecutó una transacción en SAP, o que usuarios ejecutaron una transacción (desde cualquiera de los dos puntos de vista).

La realidad es que la herramienta más idonea que podemos encontrar en SAP, es la transacción SM20N, y la veremos en profundidad en un futuro post.

Pero por ahora y en caso de una emergencia, y teniendo en cuenta que solo nos brinda información sobre acciones recientes, y no nos especifica la fecha y hora de esta ejecución (la cual puede aproximarse) vamos a ver como podemos ver esa información a través de la transacción ST03N.

Esta transacción nos permite evaluar la performance de ejecución en los distintos application servers, y su fin no es brindar información de seguridad, pero en determinados casos donde la auditoría no esté activada puede ser útil para nosotros.

En la misma seleccionando el Modo Experto, disponemos de un frame donde se encuentran las instancias de nuestro SAP. Una vez seleccionada una instancia en esta ventana, seleccionamos un período. Y vamos a la ventana que se encuentra inmediatamente abajo, seleccionando la vista Estadística de Usuario – Perfil de Usuario. Luego en la ventana principal vemos todos los usuarios con sus datos de performance, y si hacemos doble click en los mismos podemos ver que transacciones ejecutaron en el período de tiempo previamente seleccionado.

También existe la posiblidad de hacerlo a la inversa (desde la transacción los usuarios) a través de la vista “Perfil de Transacción”.

Es una alternativa interesante, si bien nunca debe ser la única, y el tiempo de la información resguardada va a depender de la configuración del sistema.

Es posible que nos resulte útil cuando se desea investigar de forma URGENTE, QUIEN EJECUTO tal transacción QUE ORIGINÓ TAL PROBLEMA, y nunca antes nos permitieron activar la auditoría por “cuestiones de performance” (o desconocimiento). Paradojicamente el Trace de performance nos puede brindar ALGO de esa información.

PD: Si necesitan algún capture de pantalla para hacerlo diganmé en los comments.

VN:F [1.9.10_1130]
Rating: 4.8/5 (4 votes cast)
VN:F [1.9.10_1130]
Rating: +1 (from 1 vote)

Tips: Sistema de Transporte

Wednesday, March 18th, 2009

Existe un control poco conocido y utilizado en el sistema SAP que permite crear advertencias, o errores en el sistema de transporte si una orden modifica algún objeto definido como crítico. Es un útil sistema de control para hacer más simple y práctica, la revisión de las órdenes de transporte.

Para definir los objetos primero debemos asegurarnos que este chequeo esté activado en el perfil de transporte. El parámetro es CHK_CRIOBJ_AT_EXPORT y puede cambiarse su valor desde la transacción STMS - Resumen (documentación de sap), el valor 0 no realizara chequeo alguno, W crea un warning y por último E genera un error en caso de encontrar un objeto crítico e impide el transporte. La configuración ideal habitualmente es W, para alertar al usuario responsable de los transportes.

Los objetos críticos se definen también en la transacción STMS - Resumen, luego Detalles y Objetos Críticos.

Este control es de suma utilidad a la hora de ayudar a la siempre ardua tarea de controlar que lo transportes realizados en el sistema no comprometan la seguridad del mismo, o la confidencialida de la información que en el poseemos.

VN:F [1.9.10_1130]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.10_1130]
Rating: 0 (from 0 votes)

Riesgos: Debug con modificación de variables

Wednesday, March 11th, 2009

Empezamos con un tipo de post nuevo, donde vamos a ir enumerando entrada tras entrada diversos tipos de riesgos a los que podemos estar expuestos en la plataforma SAP y cuando sea posible las formas conocidas de minimiarlos.

En este primer caso vamos a enumerar uno de los más graves que puede ocurrir, y es el que el existan usuarios que en el ambiente productivo posean permisos para realizar debug o depuración, y a su vez el permiso de modificar el valor de las variables (y en las versiones más nuevas como ECC 6.0, ir a una línea de ejecución específica).

¿Qué es el DEBUG?

El debug o depuración es la capacidad de recorrer línea por línea el código fuente ABAP de la transacción que se ejecuta, en el caso de poseer el permiso en la actividad 02, uno puede a su vez modificar los valores de las variables de los programas.

El riesgo de poseer estos permisos es que prácticamente el usuario que lo ejecute puede saltearse todos los controles de autorización, ya que en el momento de  ejecutar una transacción, podría ir paso a paso por el código y cuando sus permisos no le permitieran seguir tras un AUTHORITY-CHECK fallido el podría cambiar ese valor de error, autorizándose a si mismo a continuar.

Un usuario con los permisos adecuado puede acceder al modo debug utilizando en la barra de acceso rápido de SAP el código “/h”.

Este modo de ejecución se permite cuando el usuario posee entre sus roles el permiso al objeto de autorización S_DEVELOP, el cual entre sus campos tiene el valor de ACTVT en 02 (modificar) y el valor de OBJTYPE en “DEBUG“.

Si se da esta condición (sin importar los valores de otros campos, pueden incluso estar vacíos), el usuario puede acceder al modo debug y modificar el valor de las variables.

La manera de evitar este inconveniente es justamente no brindando estos permisos en un ambiente productivo, salvo en un caso excepcional por tiempo limitado y a un usuario específico y nomenclado, para solucionar un error importante en el sistema.

Incluso este tipo de permisos no debiera otorgarse en los ambientes de desarrollo (modificar, el DEBUG común puede realizarse) , ya que también permite vulnerar la seguridad de los mismos y por consiguiente el entorno productivo podría llegar a verse afectado.

Para realizar la búsqueda de quienes tienen permisos para realizar esta acción lo ideal es utilizar la transacción SUIM y buscar los usuarios que posean este objeto de autorización y estos valores de campo.

En un próximo post vamos a hacer una explicación integral del uso de la transacción SUIM (probablemente en más de un post por lo extenso del tema)

VN:F [1.9.10_1130]
Rating: 4.8/5 (4 votes cast)
VN:F [1.9.10_1130]
Rating: 0 (from 0 votes)

Parámetros: Mejores prácticas (parte II)

Tuesday, March 10th, 2009

Siguiendo con el post del día de ayer nos quedaron algunos parámetros para seguir con las recomendaciones de “las mejores prácticas”:

Multiloguin

login/disable_multi_gui_login = Debe estar configurado en uno (1) para minimizar dos riesgos. Primero, que los usuarios no compartan su Id y su contraseña de manera que no sea identificable el responsable de las acciones, y segundo que no pueda loguearse concurrentemente un usuario que obtuvo una contraseña de otro, si el primero ya estaba logueado al sistema (quedando registrado el intento de loguin)

login/multi_login_users = Bajo este parámetro pueden definirse excepciones al caso anterior, pero lo ideal es no hacerlo salvo necesidad explícita y justificada.

login/failed_user_auto_unlock = Esto debe ser (0) para evitar que los usuarios bloqueados se habiliten automáticamente. Como mecanismo de control es importante la participación y control por parte del administrador para desbloquearlo.

login/fails_to_session_end = Si bien no es una medida de seguridad en si misma, permite molestar en los intentos de adivinar una contraseña. Lo ideal sería definirlo al menos en un número menos al valor de login/fails_to_user_lock

login/fails_to_user_lock = Para evitar los multiples intentos de adivinar una contraseña lo ideal es definir este parámetro en (3).

Otros parámetros

login/disable_cpic = Si no son necesarias este tipo de conexiones lo ideal es deshabilitar este tipo de acceso. (1)

login/no_automatic_user_sapstar = Lo ideal es deshabilitarlo (1) deshabilita). Para más información ver el artículo:  http://www.seguridadsap.com/sap/usuarios-por-defecto-sap-ddic-earlywatch-etc/.

rdisp/gui_auto_logout = Es interesante definir este parámetro por cuestiones de performance (sesiones activas) y para evitar que las estaciones de trabajo queden logueadas en ausencia del usuario (en conjunto con las políticas locales de las estaciones). Un valor lógico sería  20 minutos (1200)

login/system_client = Preferentemente podría dejarse que el usuario tenga que especificar el número de mandante como una medida adicional de seguridad para los intentos casuales de acceso.

La lista no trata de ser exhaustiva, y tiene fines didácticos e incluso está abierta a la discusión por parte de ustedes si así lo desean en los comments.

VN:F [1.9.10_1130]
Rating: 3.5/5 (2 votes cast)
VN:F [1.9.10_1130]
Rating: +3 (from 3 votes)