Auditando AS/400

17

Visto 12336 veces | Publicado el 16/12/2008 | as400


Numerosas veces, durante la realización de una auditoría interna de seguridad, me he tropezado con algún sistema AS/400 y siempre andaba algo perdido sobre qué mirar y qué revisar. Es cierto que esto pasa cada vez menos pero como a alguien aún le puede suceder, desde Hacktimes hemos recopilado toda la información de que disponíamos sobre el sistema y la hemos resumido a modo de metodología para saber de qué forma proceder la próxima vez.

INTRODUCCIÓN

AS/400 significa "Application System/400" y es un sistema integrado de hardware, software, seguridad, base de datos y comunicaciones que pertenece a la rama de equipos denominados "middlerange", debido a que están entre los sistemas "mainframes" y los servidores comunes tipo Wintel.

El sistema operativo de un AS/400 es propietario de IBM y se denomina OS/400(R) que está basado en objetos, casi todo en un servidor AS/400 son objetos. Los objetos incluyen ficheros de datos, perfiles de usuario, colas de trabajo, colas de mensaje, colas de impresión, programas compilados, documentos del procesamiento de textos, menús, etc. Actualmente, el equipo ha cambiado de nombre para pasar a llamarse i5 y el sistema operativo es el i5/OS(R), aprovechando la tecnología de procesadores POWER5 de IBM (Power Optimization With Enhanced RISC).

Dentro de sus distinciones principales, está la capacidad de separar hardware de software, mediante una interfaz de máquina MI. La MI es una API (Application Programming Interface - Interfaz de Programación de Aplicaciones) que permite que el sistema operativo y los programas de aplicaciones se aprovechen de los avances en hardware sin tener que recompilarlo, alcanzando así independencia del software. Las funciones de manejo de memoria, proceso, programa y administración de I/O las realiza el código interno licenciado (LIC). EL LIC es el software del sistema operativo que se ejecuta por debajo de la MI y que protege programas de uso y el sistema operativo contra cambios de hardware (independencia del software como se ha comentado anteriormente).

Existen equipos que permiten correr otros sistemas en particiones secundarias, como Linux, Unix o Windows, teniendo en cuenta que la partición principal siempre será la i5/OS.

En el i5 todo lo que puede almacenarse o recuperarse es un "objeto". Existen más de 50 tipos de objetos, como bibliotecas, archivos, programas ejecutables, colas de trabajo, colas de salida, perfiles de usuario. Los más importantes son:

  • LIB: Bibliotecas
  •  Son objetos contenedores de otros objetos de cualquier tipo MENOS otra biblioteca, dado que utiliza una jerarquía de "single-level". Debido a ésta característica, dos usuarios no pueden poseer bibliotecas con el mismo nombre. Sólo la biblioteca QSYS provista por el sistema, contiene al resto de las bibliotecas. Cada objeto tiene un nombre, compuesto por el nombre de la biblioteca y el nombre del objeto mismo. A esto se lo llama "Qualified name", por ejemplo, se tiene el objeto PRUEBA en la biblioteca MILIB, si se quisiera llamar a ese objeto, se debería llamarlo por su nombre cualificado: "MILIB/PRUEBA". Los objetos cuya denominación empieza con "Q" son los propios de IBM y por ello es recomendable no crear objetos nuevos con "Q" como inicial porque, entre otras cosas, puede tener implicaciones desde el punto de vista de la seguridad.

  • FILE: Archivos
  •  Objeto que contiene datos, pueden ser de una base de datos (archivos físicos y archivos lógicos), datos de un dispositivo o registros relacionados. Los archivos físicos corresponden a datos reales, organizados en un sistema fijo de campos. Cada archivo físico tiene una parte a la cual se le asocia cualidades como el nombre del archivo, el dueño, el tamaño, el número de registros. La segunda parte de un archivo físico contiene los datos. Existen distintos tipos de archivos físicos:
    - de datos (atributo PF-DTA).
    - de fuente (atributo PF-SRC).

  • PGM: programas ejecutables
  •  Son objetos del tipo "programas" compilados para que puedan correr en el sistema. El atributo del programa tendrá el lenguaje en el cual se compiló.

  • OUTQ: Colas de salida
    • Dueño del objeto.
    • Fecha de creación.
    • Fecha de último acceso.
    • Fecha de último salvado (backup).
    • Comando utilizado para el salvado.
    • Datos de la cinta de salvado.
    • Etiqueta de la cinta.
    • Número de secuencia.
    • Tamaño.

El concepto de objeto permite establecer mecanismos de protección altamente complejos, sobre todo a nivel de gestión de autorizaciones sobre cada objeto.

Los objetos tienen atributos que incluyen:

INICIO DE SESIÓN

Al conectar a un sistema AS/400 vía un emulador de Terminal (client access por ejemplo) o vía consola, se despliega una pantalla de inicio de sesión en donde se deberá teclear el nombre del usuario y una contraseña propia del usuario:

Inicio de sesion

Al teclear el nombre de usuario y la contraseña (la cual no es visible) y pulsar la tecla de Intro, aparece el menú principal del sistema AS/400, o el que haya sido seleccionado como menú principal del usuario, la siguiente figura es un ejemplo del menú mencionado:

Menu Principal

1.En la esquina superior izquierda aparece el nombre del menú con el cual se está trabajando.

2.En la parte central superior de la pantalla se despliega el nombre del trabajo o pantalla que se está utilizando.

3.En la siguiente línea hacia el extremo derecho aparece el número de serie del equipo AS/400.

4.Se refiere a los puntos u opciones de menú disponibles en la pantalla que se visualiza

5.Aparecen dos líneas de mandato, en donde se puede teclear un número de opción de las que se encuentran disponibles o bien teclear directamente un mandato del sistema.

6.En la parte inferior de la pantalla aparecen las teclas de función, estas teclas pueden variar de acuerdo al menú o proceso con el cual se esta trabajando. Las más comunes son:

  • F1=Ayuda:
  • esta tecla aunque no es visible en esta pantalla puede ser pulsada y se utiliza para brindar información del contenido y uso de la pantalla con la que se está trabajando, algún punto de opción o campo a teclear.

  • F3= Salir:
  • esta opción es utilizada para salir del menú actual y regresar al menú de inicio o punto de partida, esta tecla de función siempre realiza el mismo proceso.

  • F4=Solicitud:
  • esta tecla es utilizada para complementar la información cuando se desea o se está trabajando con mandatos, es decir se teclea el mandato principal y al pulsar la tecla de F4, desplegará una pantalla con los parámetros disponibles para su uso. Cuando se visualizan los parámetros de algún mandato, es posible que también aparezca la tecla de función F4, pero en estos casos se utiliza para consultar las diferentes opciones de parámetros a teclear.

  • F9=Recuperar:
  • pulsar esta tecla de función si desea recuperar los diferentes mandatos tecleados en la línea de mandatos, estos se irán presentando uno a uno en orden regresivo.

  • F12=Regresar:
  • es utilizada para regresar a la pantalla previa de la que se generó el acceso a la pantalla actual.

  • F13=Information Assistant:
  • si se desea información respecto al contenido y uso de la pantalla que se está visualizando hay que pulsar esta tecla de función (similar a la tecla F1 ayuda).

  • F23=Establecer menú inicial:
  • esta tecla sirve para establecer el menú inicial que utilizara cada usuario, y tiene funcionalidad aún y cuando no aparezca al pie de la pantalla (existen excepciones).

RECOLECTA DE INFORMACIÓN

Este apartado completa las distintas fases necesarias para recolectar la información necesaria con la intención de obtener una imagen completa del estado de seguridad de los servidores.

OBTENCIÓN DE INFORMACIÓN INTERNA

Mediante la ejecución de diversos comandos (con privilegios de administrador) se trata de obtener la información intrínseca a la propia instalación del sistema operativo instalado en el servidor AS/400.
Esta fase cubre la obtención de información referida a configuración de red, usuarios, grupos, servicios activos, procesos, parches aplicados, parches por aplicar, configuración de servicios así como información específica sobre la instalación del sistema.

Para poder recopilar de manera adecuada toda la información de esta fase es necesario ejecutar todos los programas/comandos con privilegios de Administrador Local de la máquina (QSECOFR).

NIVEL DE SEGURIDAD

Antes de hacer nada es preciso determinar cual es el nivel de seguridad existente en el servidor AS/400. En un sistema AS/400 existen los siguientes niveles de seguridad:

  • Nivel 10:
  • los usuarios no disponen de contraseña ni se controla el acceso a los recursos. Este nivel dejó de estar soportado desde la versión v4R2 del sistema operativo de IBM.

  • Nivel 20:
  • proporciona únicamente seguridad por contraseña.

  • Nivel 30:
  • proporciona seguridad por contraseña y recursos.

  • Nivel 40:
  • proporciona seguridad por contraseña y recursos; seguridad de integridad. Este es el nivel de seguridad que por defecto implementan los sistemas actuales.

  • Nivel 50:
  • proporciona seguridad por contraseña y recursos; protección de integridad mejorada. El nivel de seguridad 50 se aplica en sistemas que necesitan un nivel de seguridad certificado C2.

Como mínimo, desde el punto de vista de la seguridad, es necesario disponer de un nivel 30 o superior en el parámetro QSECURITY que es quien establece el nivel de seguridad existente en el servidor AS/400, es decir, se necesita implementar una política de seguridad en el que todos los accesos están controlados por un nombre de usuario único, su contraseña correspondiente y una serie de permisos y privilegios que permiten o no a los usuarios acceder a los recursos.

Para comprobar el nivel de seguridad existente se ejecuta el siguiente comando:

DSPSYSVAL

Para modificar el nivel de seguridad existente a nivel 30 en caso de que no esté configurado se utiliza el siguiente comando:

CHGSYSVAL SYSVAL(QSECURITY) VALUE('30')

LISTADO DE USUARIOS

Listado completo de usuarios del sistema con información detallada sobre cada una de las cuentas que conforman el sistema. Se ejecuta el siguiente comando:

DSPAUTUSR

Comando utilizado para obtener el listado con el nombre de todos los usuarios presentes en el sistema. Además, proporciona por pantalla datos acerca del último cambio de contraseña, aquellos usuarios que no tienen contraseña, el grupo al que pertenecen, etc, tál y como se puede observar en la siguiente figura:

Listado Usuarios

WRKUSRPRF

(“Work User Profile”: comando que permite trabajar con los perfiles de usuario)

ANZDFTPWD
Para listar aquellos usuarios que tienen una contraseña por defecto.

PRTUSRPRF
Este comando significa “Print User Profile” y con él se obtiene la fecha de creación de cada usuario, la última vez que iniciaron sesión, etc.

POLÍTICA DE CONTRASEÑAS

Se obtiene la política de contraseñas para verificar la cantidad de veces que se permiten los intentos de conexión por parte de los usuarios así como para validar si sería posible llevar a cabo una sesión de crackeo de passwords mediante fuerza bruta contra el servidor. La política de contraseñas en un servidor AS/400 se obtiene desde el menú SECTOOLS (comando GO SECTOOLS) mediante la ejecución de los siguientes comandos:
También se puede Imprimir un informe detallado de todos los perfiles de usuario de nuestro sistema ejecutando el comando:

WRKSYSVAL *SEC

Con este comando se extraen todos los aspectos relacionados con la seguridad del sistema pero a veces proporciona demasiada información y es preferible ir controlando cada aspecto destacable para la seguridad del sistema por separado.

WRKSYSVAL QPWDEXPITV

Con este comando se obtiene la frecuencia con la que la contraseña de usuario caduca y es preciso cambiarla, lo recomendable es establecer un periodo de caducidad de contraseñas de entre 30 y 90 días.

ANZPRFACT

Con este comando se establece el periodo máximo de inactividad de los usuarios. Es recomendable establecer un máximo de 45 días de inactividad para desactivar cualquier usuario estándar inactivo.

QPWDLMTAJC

Con este comando se evita el uso de contraseñas triviales por parte de los usuarios y se obliga a introducir passwords que no contengan dígitos adyacentes. Se recomienda establecer un valor 1 para este parámetro de la política de contraseñas.

ANZDFTPWD ACTION(*NONE)

Con este comando se obtiene el listado de aquellos usuarios que tienen mismo nombre de usuario y misma contraseña, el mandato significa “Analyze Default Passwords” y el parámetro ACTION(*NONE) se aplica para que no se efectúe ninguna acción sobre esos usuarios que se podrían deshabilitar (*DISABLE) u obligar a que la contraseña caduque y cambiarla en el siguiente inicio de sesión (*PWDEXP).

QPWDRQDDIF

Con este comando se controla que el usuario no pueda repetir la misma contraseña que la que tenía antes cuando ésta caduca según los parámetros de caducidad de contraseñas establecidos en el sistema. El valor recomendado para este parámetro es 8 (nunca cero) que evita que cualquier usuario pueda utilizar los 4 passwords anteriores.

QPWDLMTREP

Con este comando se controla que el usuario no pueda repetir el mismo carácter en la contraseña para evitar el uso de contraseñas triviales del tipo “11111” y similares. Se recomienda definir un valor 2 para este parámetro y así evitar que se puedan repetir caracteres consecutivos.

QPWMINLEN

Con este comando se define la longitud mínima de la contraseña. El valor recomendado es como mínimo disponer de passwords de 6 o más caracteres. De forma análoga con el mandato QPWDMAXLEN se define la longitud máxima de una contraseña que preferiblemente ha de ser de un valor 10.

QMAXSIGN y QMAXSGNACN

Son dos los valores del sistema que determinan el número de veces que una persona puede intentar iniciar la sesión en el sistema y la acción que el sistema lleva a cabo una vez alcanzado el límite.
El valor del sistema de máximo de intentos de inicio de sesión permitidos (QMAXSIGN) limita el número de intentos de inicio de sesión incorrectos consecutivos que admite el sistema antes de llevar a cabo alguna acción. Un intento de inicio de sesión incorrecto se produce cuando una persona intenta utilizar un perfil de usuario concreto con una contraseña no válida o con la autorización inadecuada para una estación de trabajo. El valor del sistema de acción a tomar ante intentos de inicio de sesión fallidos (QMAXSGNACN) especifica lo que hace el sistema si alguien intenta iniciar la sesión demasiadas veces seguidas.
Los valores recomendados son 3 para QMAXSGNACN y entre 3 y 5 para QMXSIGN.

NIVEL DE PARCHES: APLICADOS Y POR APLICAR

En un sistema AS/400 los parches y actualizaciones se denominan PTFs o “Program Temporary Fix” y el comando para comprobar que actualizaciones están instaladas es el siguiente:

DSPPFT

De “Display PTF”. Con este mandato se puede comprobar qué PTFs están aplicadas y, lo más importante, saber si están activas o no ya que no es lo mismo que estén instaladas y que estén activas, para que una actualización sea correcta el PTF debe de estar en estado activo además de disponible en OS/400.

CONFIGURACIÓN DE RED

Se da por supuesto que el servidor AS/400 a revisar dispone de protocolo TCP/IP y no SNA ni conexiones Token Ring.

Con el comando DSPNETA de “Display Network Atributtes” se obtiene los diferentes atributos de los parámetros de red y con el comando GO CFGTCP de “Config TCP” se obtiene toda la información relacionada con la configuración de la red y el protocolo TCP del servidor AS/400.

NETSTAT OPTION(*CNN)

Con el anterior comando se pueden obtener las conexiones activas que hay contra el servidor AS/400 revisado.

GO TCPADM

Con este mandato se accede al menú de administración de la configuración TCP donde se puede visualizar y cambiar la configuración existente.


diciembre 01 5:30 p.m.
FranMT dijo:

Hola buen día. Estoy auditando las opciones que tienen los usuarios y también comparo que los usuarios activos en el AS/400 sean empleados reales en la nómina de la empresa. Quería saber si existe una forma rápida de obtener un reporte de todos los usuarios y opciones que tiene cada uno. Desde ya muchas gracias por la ayuda. Saludos.

noviembre 25 11:12 p.m.
para glfuentes dijo:

Pues depende de que es lo que quieras ver, si quieres ver que aplicaciones tienes instaladas, puedes utilizar un comando: GO LICPGM y en el menu que te aperece presionas 10 y te aparecera el listado de las aplicaciones que tienes instaladas en tu AS.

agosto 09 2:07 p.m.
Hacktimes dijo:

Leopoldo, Cleunam, la administración de un AS/400 es tan amplia que se hace muy complicado el poder solucionar vuestras dudas aquí con unos simples comentarios. Quizás deberíais acudir a otro tipo de foros más especializados. Un saludo.

agosto 08 8:10 a.m.
leopoldo dijo:

restaure un alibreria y me dice que 9 objetos no pudieron ser restaurados como puedo saber cuales son

julio 25 6:34 p.m.
Cleunam dijo:

Disculpa mis preguntas, pueden no ser del nivel adecuado para este sitio, pero igual espero poder tener tu respuesta. ¿Cuales son los comandos o menus/opciones, para sacar un backup del sistema a disco y luego a cinta?, y ¿como haría si solo quiero un respaldo a cinta, de uno o mas files?...Y viceversa, ¿con que comando o menu/opciones restauro la informacion de la cinta?.

mayo 04 11:54 a.m.
VaxMAN dijo:

Gabriel: puedes usar el comando DSPSYSSTS (Display System Status) y te aparece toda la memoria y como está repartida entre los diferentes susbsistemas. Con WRKSYSSTS sacas la info del estado del sistema (consumo de CPU, tamaños de los discos, etc.). ASP del sistema es la capacidad de almacenamiento... espero que te sirva, un saludo y gracias por leernos.

mayo 02 3:55 p.m.
gabriel buitrago dijo:

quiero saber la capacidad exacta de los discos, la memoria ram y el procesador como hago.

enero 03 8:29 p.m.
Wilmer Diaz dijo:

donde puedo ver la fecha en que se coloco disable un usuario y quien lo hizo, que comando utilizo para esto.

diciembre 09 9:18 p.m.
Raúl Carral Gálvez dijo:

Revisa en el QMAXSGNACN, que valor tiene 1. Inhabilitar dispositivo 2. Inhabilitar perfil 3. Inhabilitar dispositivo y perfil Es la acción a tomar en intentos inicio con error. Si tiene 2, se deshabilita el perfil en automatico, al tener 3 accesos con contraseña invalida. Saludos A tus ordenes para cualquier duda sobre seguridad en el AS400. rcarralg@hotmail.com

octubre 11 7:34 p.m.
VaxMAN dijo:

Jose, perdona pero no entiendo tu pregunta... para mirar quién puede deshabilitar usuarios deberias mirar los permisos de estos, a priori, sólo QSECOFR o alguien con permisos similares puede hacerlo.

octubre 06 11:31 p.m.
jose dijo:

como puedo ver quien desabilita un usuario o varios usuarios en el AS/400

marzo 05 4:37 p.m.
DSC dijo:

GRS..VaxMAN.. Es que tengo que implementar la seguridad, el incoveniente es que casi la mayoria de usuario estan como *ALLOBJ, tengo que empezar por depurar esto,,!

marzo 05 10:43 a.m.
VaxMAN dijo:

No se necesita ninguna configuración previa, lo único necesario es, si subes desde un nivel inferior, verificar que las aplicaciones de diferentes proveedores (si existen) puedan trabajar con un nivel 30. No es habitual tener problems con el nivel 30 como pasa con el 40 ó el 50. En la siguiente URL tienes más información al respecto: http://publib.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/QB3ALC03/2.3.1?DT=19990225164711

marzo 04 5:02 p.m.
DSC dijo:

Para cambiar el parametro QSECURITY a 30.. se requiere alguna configuración previa? Te agradezco si me puedes ayudar..! GRS

diciembre 31 10:32 a.m.
VaxMAN dijo:

Lo único que se me ocurre es usar el comando DSPSFWRSC (Display Software Resources) de la forma "DSPSFWRSC OUTPUT(*)" y así se obtienen por pantalla todas las bibliotecas de software instaladas. Otra forma podría ser con "go licpgm" y la opción de menú 10.

diciembre 31 3:45 a.m.
glfuentes dijo:

Hola, que completo, quisiera saber si pudieras asesorarme: conseguimos un server as400 y quisieramos saber si existe una funcion/rutina/proceso que nos sacara un inventario de los programas existentes, o una serie de pasos, de antemano gracias.

noviembre 26 12:56 p.m.
IaM dijo:

:D Que grande, lo mejor es cuando pones usuario IBM password IBM y tienes permisos de SECOFER ;). p0wn3d total! veo que sigues vivo, un saludo.


Añadir comentario











Búsqueda

Síguenos


El staff de Hacktimes ruega a cualquier persona interesada en la distribución y/o publicación de estos artículos que lo haga sin alterar su contenido y cite a su autor y/o la fuente original. Muchas gracias.

Todos los artículos publicados se encuentran bajo la licencia Creative Commons