, Utiliser SYSLOG sur IBMi

Les nouvelles organisations informatiques imposent parfois la mise en place d’un Siem.

Chez IBM on vous proposera QRADAR, PLUNK est aussi une solution très

connue.

https://fr.wikipedia.org/wiki/Security_information_management_system

Pour échanger avec votre concentrateur, vous devrer utiliser un format spécifique qui se nomme SYSLOG.

https://fr.wikipedia.org/wiki/Syslog

Comment produire du format syslog sur L’IBMi?

Il y a principalement 3 manières d’en produire.

SQL as a service à prévu des passerelles pour produire ces fichiers.

1) Sur les sorties d’audit journal QAUDJRN

Exemple :

SELECT
SYSLOG_EVENT ,
SYSLOG_FACILITY ,
SYSLOG_SEVERITY ,
SYSLOG_PRIORITY
FROM TABLE(QSYS2.DISPLAY_JOURNAL(‘QSYS’, ‘QAUDJRN’,
STARTING_RECEIVER_NAME => ‘*CURCHAIN’,
JOURNAL_ENTRY_TYPES => ‘PW’,
STARTING_TIMESTAMP => CURRENT TIMESTAMP -24 HOURS,
GENERATE_SYSLOG => ‘RFC5424’
)) AS X

Cette requête produira une liste des erreur de mot de passe sur les dernières 24 heures

2) sur la log du système

SELECT
SYSLOG_EVENT ,
SYSLOG_FACILITY ,
SYSLOG_SEVERITY ,
SYSLOG_PRIORITY
FROM TABLE(QSYS2.HISTORY_LOG_INFO(
START_TIME=> NOW() – 1 HOURS,
GENERATE_SYSLOG => ‘RFC3164’
)) AS X

cette requête extrait la liste des commandes du dsplog sur 1 heures

La fonction table ne prévoit pas de filtre vous serez surement obliger de rajouter une clause WHERE pour par exemple, choisir des messages.

Il y a 2 formats de sortie :

https://tools.ietf.org/html/rfc3164

https://tools.ietf.org/html/RFC5424

3) en utilisant SYSLOG

Syslog n’est pas qu’un formatage de données c’est aussi un logiciel unix de remontée d’alerte.
Ca peut être interessant si par exemple vous utilisez des logiciel open source sur votre partition.

https://fr.wikipedia.org/wiki/Syslog

l’installation est très classique :

Vous avez un executable qui se trouve ici, /QOpenSys/usr/sbin/syslogd.
Vous devrez avoir un fichier de conf ici,
/QOpenSys/etc/syslog.conf
Ce fichier doit être en ccsid 819 et avoir *LF comme délimiteur.
Dans ce fichier vous indiquerez votre fichier de sortie.
Vous démarrer SYSLOG
SBMJOB CMD( CALL QP2SHELL PARM(‘/QOpenSys/usr/sbin/syslogd’) ) JOB(SYSLOGD)

Par convention on l’appelle SYSLOGD du nom du deamon UNIX.
Si vous n’avez pas de sous système dédié à ce type d’opération mettez le dans la jobq QSYSNOMAX , il tournera alors dans le sous système QSYSWRK.

Une fois que vous avez produit vos fichiers, il suffira de les envoyer en CSV par exemple à votre concentrateur SIEM.

vous devrez faire attention au ccsid à produire

Le logs peuvent prendre beaucoup de place , n’oubliez pas de les extraire pour les consolider et de faire le ménage.

Une fréquence journalière peut être adaptée à ce type de traitement.

Il existe des solutions plus ou moins packagées, que vous pouvez trouver chez des éditeurs.

, , Comment suivre l’évolution des pools mémoire ?

Rappel


Les pools partagés sont des espaces mémoire dans lequel les sous systèmes place des travaux.
*MACHINE Utilisé par les fonctions internes du pool machine
liste des pools
*BASE Pool système par défaut
*INTERACT Travail interactif
*SPOOL Impression
*SHRPOOL1 à *SHRPOOL60 pools spécifiques
et sur ces pools il y a 2 valeurs importantes à ajuster, la taille et le niveau d’activité.

Ajustement

Il existe une valeur système pour ajuster automatiquement ces pools
La valeur systéme QPFRADJ à 2 ou à 3 permet de mettre en place cette ajustement automatique la différence étant un ajustementant à l’IPL avec la valeur 2.
Ce mécanisme fonctionne très bien …
l’ajustement par défaut est fait toutes les 60 secondes ce qui la plupart temps convient bien.
Si vous voulez ajuster ce temps vous pouvez créer une dtaara :
CRTDTAARA DTAARA(QUSRSYS/QPFRADJWT) TYPE(*DEC) LEN(3 0) VALUE(60) vous pouvez indiquer une valeur en seconde de 20 à 120.

Mais on a aucune visibilité sur l’ajustement sur une période données , exemple mon pool de base une journée.

Voici comment on peut faire :


il faut créer un récepteur de journal, il peut être dans une bibliothèque privée, et vous pouvez choisir son nom
CRTJRNRCV JRNRCV(QUSRSYS/QPFRADJ)
il faut créer le journal QPFRADJ qui pointe sur votre récepteur
CRTJRN JRN(QSYS/QPFRADJ) JRNRCV(QUSRSYS/QPFRADJ)
Il vous faut un fichier pour faire votre analyse le fichier qui contient la structure est QAWCTPJE
CRTDUPOBJ OBJ(QAWCTPJE) FROMLIB(QSYS) OBJTYPE(FILE) TOLIB(votrebib) NEWOBJ(QPFRADJ) récupérer les informations du journal DSPJRN JRN(QSYS/QPFRADJ) ENTTYP(TP) OUTPUT(OUTFILE) OUTFILE(votrebib/votrefic)
Créer un fichier à exporter.
create table qtemp/analyse as(
SELECT TPTIME as heure , TPCSIZ as taille
FROM votrebib/votrefic WHERE
TPPNAM = ‘*BASE ‘ and tpdate = ‘070320’
) with data
dans notre cas le pool de base, le 7 mars 2020
vous devez ensuite exporter ce fichier pour faire un diagramme, par exemple sous excel .

Remarque :

il ne faut pas utiliser des pools privés qui ne seront pas ajuster.
Vous devez faire le ménage sur les récepteurs de journaux que vous créer.
Et règle fondamentale, si on fait de l’ajustement, on fait une mesure avant et une mesure après sur des périodes significatives

Comment administrer le démarrage des services TCP/IP ?

Rappel :

Il faut d’abord comprendre comment TCP/IP démarre sur votre partition

Quand votre machine démarre, vous avez les attributs de l’ipl qui sont lus
Vous pouvez les voir par commande, DSPIPLA .
Dans cette commande vous avez un paramètre STRTCP(YES), il va donc démarrer TCP/IP c’est la commande STRTCP qui est utilisée, elle a un paramètre STRSVR(YES).


Oui mais quels serveurs va t il démarrer ?

La réponse est dans Le fichier QATOCSTART de QUSRSYS vous avez en gros une ligne par service et la zone AUTOSTART peut prendre comme valeur *YES ou *NO
le plus souvent vous pouvez changer le paramétre par la commande de paramétrage du logiciel spécifique , exemple CHGFTPA AUTOSTART(*YES ou *NO) pour FTP
Vous pouvez également modifier le fichier
QATOCSTART exemple UPDATE QUSRSYS/QATOCSTART SET AUTOSTART = ‘NO’ ou ‘YES’ WHERE
server = ‘*FTP’ ;

Vous avez aussi les hosts SVR que vous pouvez voir par :

SELECT * FROM QATOCSTART WHERE SERVER like(‘HOST%’)

A ce moment la on connait tous les services qui vont démarrer .

Mais ça ne suffit pas pour la partie WEB / HTTP il faut connaitre les instances qui sont démarrées.


rappel :

le serveur HTTP sur votre IBM i est un APACHE.
La aussi il va falloir aller regarder dans la bibliothèque QUSRSYS.
Il y a 2 fichiers
QATMHINSTA , pour l’instance apache admin
QATMHINSTC , pour les instances apache customer
Dans ce fichier, vous avez un membre par service
dans chaque membre vous avez des informations
Le nom, le répertoire racine des fichiers, le fichier de conf et un paramètre -AutoStart :
-AutoStartY pour démarrage automatique
-AutoStartN pour démarrage manuel

Pour modifier cette valeur, vous pouvez modifier par l’interface d’adminitration web, ou par SQL, attention à cause des membres, il vous faudra utliser des Alias.

Conclusion :


Voila comment démarre TCP/IP et les services qu’il lance.
Le principe est le suivant pour des questions de ressources et surtout de sécurité ne démarrer que les services que vous utilisez.(
Pour vous aidez dans cette administration, vous retrouverez une commande (WRKTCPSTR) à compiler à l’adresse suivante : https://github.com/Plberthoin/PLB/tree/master/GTCPIP