domingo, 23 de julio de 2017

Policy Agent, AT TLS, Certificados, FTP y otras frutas. Parte 1


El motivo de esta serie de entradas es el de la instalación de un servidor FTP utilizando TLS, también conocido como FTP over SSL, que no es lo mismo que SFTP. Para esto, hay que entender varias cosas más aparte del funcionamiento del servidor de transferencia de archivos.

Para marcar la cancha, arrancamos definiendo el ambiente:
1. Vamos a usar Certificados y Claves alojadas en el SAF, es decir que no usamos gskkyman
2. Utilizamos AT TLS con politicas centralizadas (Policy Agent) fuera de la aplicación , o sea no informamos el keyring o los cyphers en la configuracion del FTP Server.
3. La autoridad certificante (CA), vamos a ser nosotros mismos.
4. Los ejemplos para el SAF van a ser con ACF2.

Si se preguntan porqué usar el Policy Agent? Por el hecho que una vez que lo tenemos funcionando, luego podemos pasar Telnet, CSSMTP, Politicas de Ruteo, bloqueos y otras cosas relacionadas a la seguridad etc, por ahí, y evitar que cada aplicación gestione la seguridad de manera distinta. Luego, si manejamos muchas particiones, podemos tener un Policy Agent que actue como server y el resto como clientes.

La otra pregunta es porqué usar FTP cifrado. Yo digo que por seguridad. Y no me digan "Pero nunca me pasó nada", entonces, si prefieren esperar a que les pase algo, bien por uds. Pero yo prefiero anticipar, si es posible.

A continuación, vemos como se transmite en texto plano todos nuestros datos: Usuario y Contraseña, al hacer un FTP:

Y  así en Telnet :


martes, 8 de marzo de 2016

SYSLOGD

SYSLOGD (Daemon SYSLOG)

Esta es una de las muchisimas maneras que hay para configurar el syslogd, y no signfica que una sea mejor que otra. La mejor, es la que se adapta de la forma más adecuada a los requerimientos que tenemos y a los recursos que disponemos.

Estos son los ingredientes para la mezcla:
1 zFS
1 GDG
1 STC
1 Archivo de configuración

La preparación es la siguiente:
Tomamos el archivo de configuración y lo colocamos (en preferencia) en /etc. Supongamos, como suele convenirse, que este archivo se llama syslog.conf (como el ejemplo que encuentra en /usr/lpp/tcpip/samples).
En mi caso, decidí que algunos logs se separaban, como ser ftp, telnet, inetd, pero que no se guardarían, sino que al momento del archivado se borran. Luego, todo el log entero, va a ir a parar una vez por día (o cuando el filesystem llega al 75%) a un GDG.

Por qué separar algunos logs si después los borramos? Para una lectura más fácil cuando hay algun error, o cuando queremos implementar/cambiar algun componente, como por ejemplo el FTP.
Si no quiero guardar todo el log, puedo solamente archivar en una generación del GDG algunas partes? Si, se puede. Unicamente tenemos que estar seguros que la información se encuentra disponible.
Puedo guardar los logs en archivos dentro de USS? Si, pero no hay que olvidarse evaluar el crecimiento de la información, el purgado. Si, se puede hacer con cron). Aunque estas opciones son posibles, tienen origen en el uso de systemas *nix. Si realmente queremos hacer las cosas centralizadas del lado mainframe, usemos  un GDG que sea manejado por el sistema.
 Para el resto de las preguntas, se recomienda se recomienda enfáticamente la lectura de /usr/lpp/tcpip/samples/syslog.conf, ya que cuenta con ejemplos de parametrización que se adapten mejor a nuestras necesidades.


zFS: Una vez que lo creamos y lo montamos, no hay que olvidarse agregarlo en la BPXPRMxx que corresponda.



//CHKPOINT EXEC PGM=IDCAMS
//SYSPRINT   DD SYSOUT=A
//SYSIN      DD *
 DELETE                           +
       (dsn)                      +
    CLUSTER
 SET MAXCC = 0
 DEFINE CLUSTER(                  +
   NAME(dsn)                      +
   LINEAR                         +
   MEGABYTES(500 50)              +
   SHAREOPTIONS(2) )              +
  DATA(NAME(dsn.DATA) )

 LISTCAT ENT(dsn) ALL
/*

Ayuda: Usar el Syntaxcheck de OMVS para evaluar si la sintaxis es correcta.
"SETOMVS SYNTAXCHECK=(xx)" Donde xx es el sufijo del miembro de la parmlib que modificamos.

Ejemplo STC:


//SYSLOGD  PROC
//*
//SYSLOGD  EXEC PGM=BPXBATCH,REGION=4096K,TIME=1440,
//           PARM='PGM /usr/sbin/syslogd -c -i -D 0755 -F 0644'
//*
//STDIN    DD PATH='/etc/syslog.conf'
//STDOUT   DD PATH='/tmp/syslogd.stdout',
//         PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
//         PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP)
//STDERR   DD PATH='/tmp/syslogd.stderr',
//         PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
//         PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP)
//CEEDUMP  DD SYSOUT=*,DCB=(RECFM=FB,LRECL=132,BLKSIZE=132)
//         PEND
//*

Ejemplo Syslog.conf


ArchiveThreshold  75
ArchiveCheckInterval  30
ArchiveTimeOfDay  00:01
#
BeginArchiveParms
DSNPrefix  # GDG
EndArchiveParms
#
*.crit             /dev/console
*.alert            /dev/console
*.err              /var/log/error.log -X
auth.*             /var/log/auth.log -X
local1.debug       /var/log/telnet.debug -X
daemon.debug       /var/log/server.debug -X
#####################################################################
*.FTPD*.*.*        /var/log/ftpd -X
#####################################################################
*.INETD*.*.*       /var/log/inetd -X
#####################################################################
*.SYSLOGD*.*.none;*.INETD*.*.none /var/log/daemon -X
#####################################################################
*.*;local1.none;daemon.none;auth.none  /var/log/garbagecan.log -X
#####################################################################
*.*               /var/log/syslog        -N SYSLOGD(+1)


La STC de syslog debe tener permisos para escribir en el GDG, caso contrario en los logs del syslogd encontramos :
FSUM1263 File system /SYSTEM/var/log archive failed on allocation,- file /var/log/syslog - destination "GDG"(+1) - error code,FFFF9700, info code 0000

Y en el output de la STC (si tenemos ACF2)vemos :
CF99913 ACF2 VIOLATION-08,06,SYSLOGD,,GDG
SUM1259 SYSLOGD  ARCHIVE FAILED FOR 1 FILES