Politique de sécurité
et IBM i
Utilisateurs et gestion des droits
Commencons par un peu de
théorie :
La gestion de la sécurité s'appuie sur la notion de
profil utilisateur (objet *USRPRF dans QSYS)
pour gérer la liste des utilisateurs : WRKUSRPRF *ALL

l'option 1 permet de créer un nouvel utilisateur :

remarquons les paramètres :
- État : *ENABLED (actif) ou *DISABLED (désactivé, après
trois mauvais mot de passe)
- classe d'utilisateur
- *USER : sans droits particuliers
- *SYSOPR : de type opérateur (droit de sauvegarde et de gestion
des travaux)
- *PGMR : developpeur (droit de gestion des travaux)
- *SECADM : droits de création des utilisateurs
- *SECOFR : tous les droits, pour cet utilisateur les droits sur les
objets ne sont pas vérifiés
- Droits spéciaux, la classe d'utilisateur ne représentant qu'un
assemblage par défaut
- *ALLOBJ : droits sur TOUS les objets (type QSECOFR)
- *AUDIT : droit de paramétrer l'audit système
- *IOSYSCFG : droit de gérer la configuration (lignes, paramétrage
IP, etc...)
- *JOBCTL : droit de contrôler les travaux des autres et les OUTQ
avec OPRCTL(*YES)
- *SAVSYS : droit de sauvegarde global
- *SECADM : droit de gérer les utilisateurs
- *SPLCTL : droit absolu de gestion des spools
- *SERVICE : droit d'accès aux commandes de la maintenance
Ne pas confondre profil utilisateur OS/400 (même QSRV)
et les profils DST (en dessous l'OS/400).
DST est
un environnement lié à la maintenance, accessible
lors de l'IPL, avec l'option 21(mode manuel) ou partiellement
avec la commande STRSST.
il faut alors indiquer un profil DST (par défaut QSECOFR
mot de passe QSECOFR) n'ayant aucun rapport (et donc PAS le même
mot de passe) avec le QSECOFR de l'OS/400. |
Attention, avec le niveau de sécurité 20,
tous les profils sont *ALLOBJ, il est impossible d'interdire le moindre objet
à un profil
(tout le monde peut tout détruire) et tout ce qui suit en gestion
des droits sur les objets ne s'applique pas !

sur cet écran nous pouvons attribuer à l'utilisateur un profil
de groupe afin de gérer les droits sur quelques groupes
cohérents d'utilisateurs.
quelques remarques :
- depuis la version 3.10 on peut associer à un profil 16 profils
de groupe, les droits sont alors cumulatifs
- le paramètre OWNER permet d'indiquer qui est
propriétaire des objets créés
- *USRPRF le profil reste propriétaire
- *GRPPRF il y a transfert de propriété au groupe
à chaque création
- n'utilisez pas QPGMR comme profil propriétaire des
applications (trop d'objets possédés)
la gestion des utilisateurs pouvant être
réalisée depuis NAVIGATOR for i :

La gestion des droits est la base de la sécurité sur
un AS/400, tout objet possède des droits publics
(indiquant les droits par défaut pour un utilisateur "lambda"
indiqué par *PUBLIC) et des droits
nominatifs ou privés.
les droits sont révisables par EDTOBJAUT en indiquant le type
d'objet (WRKAUT pour les fichiers IFS)

- *EXCLUDE marque une absence de droit
- *USE donne un droit de consultation
- *CHANGE le droit de modification du contenu (fichier BD
particulièrement)
- *ALL donne tous les droits (destruction incluse)
F11 permet de voir le détail.
Là encore, vous pouvez utiliser Navigator for i


- Pour la base de données :
- Bibliothèques (Schéma)

Remarquez le paramètre CRTAUT (Nouveaux Objets= Droits à attribuer aux objets créés)
- Aux tables


Cette fois nous pouvons même descendre au niveau colonne (mais est-ce bien raisonnable ?)

- Fichiers de l'IFS


Quelques conseils :
Utilisez au maximum la notion de groupe
1/ groupe d'utilisateur d'une part (profil de groupe)
2/ groupe d'objets d'autre part.
et c'est la partie la plus délicate, en effet la notion de groupe
d'objets est représentée sur AS/400 par les bibliothèques, or les
droits que vous indiquez sur la bibliothèque ne permettent pas de
préciser ce qu'il est possible de faire AVEC LES OBJETS de celle-ci.
==> une bibliothèque est un bon moyen d'INTERDIRE.
mais pour les utilisateurs ayant le droit d'utiliser la bibliothèque
il faudra être plus précis.
La meilleure solution semble être les listes d'autorisations
le principe est de pouvoir définir un "modèle" de droits (une règle)
et d'appliquer ensuite cette règle à x objets.
Le système identifie la liste d'autorisation comme un type d'objet
spécifique, dont l'identificateur est *AUTL.
|
Ordre de recherche des autorisations sur un objet
---------------------------------------------------
1/ avec le profil de référence
+ le profil est il de type QSECOFR ?------OUI ----------->!
NON !
! !
+ le profil a-t-il des droits sur l'objet OUI ----------->!
NON !
! !
+ le profil est-il indiqué dans la liste OUI ----------->!
d'autorisation (s'il y a une liste) !
NON !
! !
2/ avec le profil de groupe ! !
(s'il n'y a pas de profil de groupe --> 3/ ) !
! !
+ le groupe est il SPCAUT(*ALLOBJ) ? ! OUI ----------->!
NON !
! !
+ le groupe a-t-il des droits sur l'objet OUI ----------->!
NON !
! ! ! !
! !
+ le groupe est-il indiqué dans la liste OUI ----------->!
d'autorisation (s'il y a une liste) !
NON !
! !
3/ avec *PUBLIC ! !
! !
+ *PUBLIC est-il indiqué sur l'objet ! OUI ----------->!
NON !
! !
+ *PUBLIC EST indiqué dans la liste --------------------->!
!
####################### !
# les droits trouvés # <-----------------------------!
# sont pris en compte #
#######################
|
Quelques remarques
- le système privilégie toujours les exceptions sur le cas général
.
- un individu peut avoir des droits différents du groupe auquel
il appartient
- un objet peut avoir des droits différents de ceux de la liste
d'autorisation qui le protège
- Sur ce modèle un profil peut appartenir à un groupe ayant
*ALLOBJ et avoir lui même des interdictions (*exclude)
- Listes d'autorisation
- l'OS fait du cache sur les 16 dernières utilisées
- la gestion de n objets protégés par une liste
d'autorisation est beaucoup plus simple, puisque qu'une
manipulation va impacter n objets.
- assigner une liste d'autorisation peut se faire
- en masse, par la commande GRTOBJAUT, penser alors au paramètre
REPLACE(*YES)
- pour les objets à venir, par CHGLIB xxx CRTAUT(nom-de-la-liste)
- CHGAUT pour IFS, le paramètre SUBTREE permet de répercuter
en cascade
PGP en V3R10
Notion de groupe principal (ou PGP Primary Group Profile) :
A partir de la V3R10, un profil de groupe principal peut être défini pour
chaque objet du système.
Le nom de ce groupe principal et les droits qui lui sont accordés pour cet
objet, sont stockés avec l'objet lui-même.
Seuls les droits publics (*PUBLIC) étaient stockés avec l'objet.
(ainsi que le propriétaire)
Les droits privés (accordés nominativement à un profil particulier) sont
stockés dans l'objet *USRPRF.
- ce qui explique qu'il faille utiliser une commande particulière
(SAVSECDTA) pour sauvegarder ces autorisations.
- ce qui rend la fonction recherche des autorisations assez longue,
puisqu'il faut adresser l'objet *USRPRF et peut-être le profil de groupe
pour savoir si un utilisateur à des droits.
|
Les performances de la fonction contrôle des droits seront améliorées, si
vous utilisez les droits du groupe principal au lieu de droits privés.
(puisque mémorisés dans l'objet)
- Mais : il faut que cela soit un profil de groupe
ce ne peut pas être le propriétaire
il doit représenter le groupe utilisant le plus fréquemment
cette application.
vous devez éviter les droits privés pour en tirer profit.
(les droits de groupe n'étant testés qu'après les droits individuels)
Il est probable que le gain de performances ne justifiant pas
la remise en cause de l'existant, il faille réserver cette notion
aux nouvelles applications.
Le groupe principal est indiqué sur les écrans de gestion des objets
(WRKOBJ, DSPOBJD, DSPOBJAUT,...)
|
Les
commandes permettant d'utiliser le groupe principal :
- CHGOBJPGP (Change Object Primary Groupe)
- WRKOBJPGP (Work with Objects by Primary Groupe)
- DSPUSRPRF avec le type *OBJPGP
L'option sécurité de system i navigator
permet de définir les principales options de
sécurité

ATTENTION, la valeur par défaut
"application immédiate", modifie immédiatement
vos valeurs système. Prenez plutôt l'option "sauvegarde
des modifications" |
Quelques valeurs système liées à
la sécurité :
- QSECURITY
40 est la bonne valeur
indiquent le nombre de tentatives d'ouverture de session
infructueuses admises et l'action à entreprendre :
- désactiver l'unité (peu intéressant avec
TELNET)
- désactiver le profil
- les deux
affiche des informations sur la dernière ouverture de session
et le nombre de tentatives infructueuses :
- particulièrement intéressant pour QSECOFR
indique si un profil de type *SECOFR(*ALLOBJ ou *SERVICE) peut se signer sur
n'importe quel écran :
- oui (valeur 0) : n'importe qui peut être QSECOFR (s'il trouve le
mot de passe)
- non (valeur 1) il faut des droits (*CHANGE) sur l'unité pour pouvoir
se signer QSECOFR ce qui ajoute à la sécurité logique
(mot de passe) une sécurité physique (il faut pouvoir entrer
dans la salle machine ...)
indique un temps d'inactivité maxi (sans E/S écran), ce paramètre
est reconnu par TELNET depuis la V4R20
- si vous indiqué un temps maxi (l'assistant IBM recommande 15 mn),
indiquez alors la valeur *DSCJOB pour la val.système QINACTMSGQ et
pensez à paramètrer le temps maxi ou un job peut-être
déconnecté à 60 Mn par exemple.
- QPWDEXPITV et tout ce qui a trait à la validité d'un mot
de passe
indique une durée de validité d'un mot de passe.
- Une bonne politique de mot de passe est reconnue par tous les responsables
sécurité comme la méthode encore la plus sure. Sachant
qu'une bonne politique de sécurité n'est bonne que si elle
est acceptée dons acceptable.
- Un délai de 60 ou 90 jours semble raisonnable
(moins c'est difficile, au delà ATTENTION aux "prêts" de
mot de passe)
- on peut raisonnablement imposer 5 ou 6 c. (l'idéal c'est 8)
- on doit imposer le mot de passe différent des 4 ou 6 précédents
(suivant le délai)
- on peut interdire certains caractères, imposer des chiffres,
empêcher des caractères identiques à la même
place lors du changement, ....

- QPWDLVL, nouveauté de la version 5.10 permet les mots de passe
longs (128 c.) et complexes:
- 0 : mot de passe à 10 c., les mots de passes
pour Netserver compatible Windows 95/98/Me sont stockés
- 1 : mot de passe à 10 c. les mots de passe
compatibles 95/98 ne sont plus stockés (clients NT4 ou 2000/XP)
- 2.: mot de passe complexes, à 128 c. et sensibles
à la casse. les mots de passe 95/98 sont stockés
- 3 : mot de passe longs et complexes, les mots de
passe 95/98 ne sont plus stockés
ATTENTION :
Une modification de cette valeur système
ne prend effet qu'à l'IPL et doit être précédée
d'une sauvegarde système.
Il est ensuite, d'autre part, assez difficile de
revenir en arrière et impossible de se connecter à
un autre AS/400 en V4. |
- pensez à l'utilitaire Security Toolkit qui permet d'analyser
les profils ayant un mot de passe par défaut (cde ANZDFTPWD) et plein
d'autres listes très utiles (GO SECTOOLS)
- profils ayant un mot de passe par défaut
SECTOOLS Outils de sécurité Système: AS400 Choisissez l'une des options suivantes : Gestion des profils 1. Analyser les mots de passe par défaut <-- ANZDFTPWD 2. Afficher la liste des profils actifs 3. Modifier la liste des profils actifs 4. Analyser l'activité des profils 5. Afficher le planning d'activation 6. Modifier le planning d'activation 7. Afficher le planning de péremption 8. Modifier le planning de péremption 9. Imprimer les postes internes de profil A suivre... |
- profils avec *ALLOBJ
passez la commande DSPUSRPRF dans un OUTFILE, par curiosité
faites une jointure avec QUSRSYS/QASECPWD, généré
par ANZDFTPWD
- ou mieux, utilisez "SQL as a service"
- QSYS2.USER_INFO (liste des utilisateurs)
- QSYS2.GROUP_PROFILE_ENTRIES (liste des membres d'un Groupe)
- QSYS2.ACTIVE_JOB_INFO (liste des travaux actifs)
- QSYS2.SCHEDULED_JOB_INFO (liste des travaux planifiés)

- profils non connectés depuis x mois
SECTOOLS , option 4 (les profils "inactifs", sont automatiquement
désactivés)
- profils avec LMTCPB(*NO)
réservé aux personnel informatique, pour les autres vous
pouvez autoriser des commandes particulières par
CHGCMD ALWLMTUSR(*YES) rendant cette commande disponible
aux profils ayant LTMCPB(*YES)
- profils IBM :
- ont-ils le mot de passe par défaut ?
-> GO SETUP , option 11
- Sont -ils actifs ?
-> inutile pour QSRV, QSRVBAS
- Attention aux mots de passe DST (voir plus haut)
indique si l'on accepte un IPL à distance (un simple appel téléphonique
suffit)
indique si des objets sensibles peuvent être restaurés
- *ALWLSYSSTS : Des objets à l'état système peuvent
être restaurés
- *ALWPGMADP : des pgms adoptants les droits du propriétaires peuvent
être restaurés
- *ALWPTF : des PTFs peuvent être restaurées
- *ALL toutes les options précédents sont admises (val. par
défaut)
- *NONE aucune option n'est admise (val. conseillée, il faut cependant
penser à modifier cette valeur système avant tout changement
de version et installation de cumulative)
indique si des opérations de service à distance sont admises
- cela avec le processus d'identification des incidents (ANZPRB)
indique la liste des personnes habilitées à gérer des programmes
adoptant
- *NONE : toute personne peut compiler des programmes avec le paramètre
USEADPAUT(*YES)
- un-nom-de-liste d'autorisation : seuls les profils ayant au moins les
droits *USE dans cette liste peuvent gérer de tels programmes.
Qu'est-ce qu'un programme adoptant les droits du propriétaire
ou "en *OWNER " :
Il s'agit d'un attribut lié à un programme compilé
indiquant que pendant l'exécution de ce programme, toute
personne qui va en demander l'exécution (si elle possède
le droit d'exécution) aura, pendant cette exécution
uniquement, les droits du propriétaire du programme
ajoutés à ces propres droits.
Cela permet de placer dans un programme, CL par exemple, une commande
qui serait autrement interdite.
Deux paramètres sont à considérer :
USRPRF(*OWNER) indiqué lors d'une compilation
ou par CHGPGM
USEADPTAUT(*YES) indiqué sur CHGPGM qui
indique que si ce programme est appelé par un programme en
OWNER, cet attribut se répercute en cascade (*NO
par défaut) |
.
Autres listes d'autorisation particulières
- QPWFSERVER : permet de limiter l'accès à QSYS.LIB via l'IFS
- QOPTSEC : permet de limiter l'accès au système optique (QOPT)
- QPMCDATA , QPMCCFCN : liste des autilisateurs autorisés à utiliser PDI (Navigator for i)
- QINAVMNTR : liste des utilisateurs autorisés à utiliser les moniteurs de NAvigator for i
- QSYLMTJAVA : utilisateurs autorisés à utiliser Java
- QLWISVR : utilisateurs autorisés à utiliser le serveur d'applicaiton intégré
Vous trouverez un équivalent sur le web à http://www-1.ibm.com/servers/security/planner/ (mais multi-plateformes)
En V5R20, L'option 7 du menu STRSST, permet de fixer certaines options de sécurité :
...........................................................................
: Work with System Security :
: System: AS400:
: Type choices, press Enter. :
: :
: Allow system value security changes . . . . . 1 1=Yes, 2=No :
: Allow new digital certificates . . . . . . . 1 1=Yes, 2=No :
: Allow a service tools user ID with a :
: default and expired password to change :
: its own password . . . . . . . . . . . . . . 2 1=Yes, 2=No :
:.........................................................................:
La première option permet d'empêcher la modification de certaines valeurs
système (on dit alors qu'elles sont verrouillées)
voici la liste des valeurs système devenant non modifiables si vous
indiquez 2 (jusqu'à ce que vous indiquez 1)
|
QALWOBJRST QDSCJOBITV QPWDPOSDIF
QALWUSRDMN QINACTMSGQ QPWDRQDDGT
QAUDCTL QLMTDEVSSN QPWDRQDDIF
QAUDENACN QLMTSECOFR QPWDVLDPGM
QAUDFRCLVL QMAXSGNACN QRETSVRSEC
QAUDLVL QMAXSIGN QRMTSIGN
QAUTOCFG QPWDEXPITV QRMTSRVATR
QAUTORMT QPWDLMTAJC QSECURITY
QAUTOVRT QPWDLMTCHR QSHRMEMCTL
QCRTAUT QPWDLMTREP QUSEADPAUT
QCRTOBJAUD QPWDLVL QVFYOBJRST
QDEVRCYACN QPWDMAXLEN QPWDMINLEN
QDSPSGNINF
lors de l'utilisation de la commande CHGSYSVAL, vous recevez CPF18C0
La valeur système &1 ne peut pas être modifiée
|
Risques liés à la Sécurité
· dans
l'environnement 5250
ligne de commandes sur les menus [suivant le paramètre LMTCPB(
) sur le profil]
écrans restant "ouverts" [suivant val. systèmes QINACTITV
et QINACTMSGQ ]
accès aux applications sensibles (menus non personnalisés)
QUERY/400 :
accès aux données confidentielles (fichiers ET spools)
écrasement de fichiers (Query avec sortie
dans un fichier, puis opération inverse)
Rexec et autres commandes entrantes FTP mêmes problèmes
qu'avec QUERY
FTP toujours, passer des commandes avec "rcmd..."

FTP tiens compte du paramètre LMTCPB, Rmtcmd de Client Access
NON !
clients FTP graphiques (DEL possible)
Accès aux données avec HTTP (mauvaise configuration d'Apache),
Attention aux options : +ExecCGI , +Indexes
Authentification HTTP
- liste de validation (notion d'"utilisateur internet")
- CRTVLDL
- Passer par l'administration HTTP (sur le port 2001) pour gérer
les entrées
- authentification applicative (par N° d'adhérent, de client,
etc...)
- mettre en place HTTPS (config Apache uniquement, sans incidence
sur la codification java/php)
avec l'authentification, sinon les mots de passe circulent en clair
- on peut aussi configurer FTPS, pour ceux qui veulent monter un
Serveur FTP
voyez alors les points d'exit pour :
- configurer une entrée "anonymous"
- limiter l'utilisation de commandes CL, etc...
- voyez si vous ne devez pas préférer HTTP et
les fonctions upload (transfert
de fichier depuis le client)
- différencier les profils pour différencier les applications
java/php si elles se multiplient.
vérifier alors :
- que ce profil ne peux pas ouvrir de session 5250, ni passer de
commandes
- voyez l'Audit (*DELETE par exemple) pour ce profil particulièrement.
Coding Http :
- Injection SQL et XSS
- Injection SQL
- - un formulaire demande un N° de client
- - la requête associée est DELETE FROM
CLIENTS WHERE NOCLI = $nocli
- - un malveillant saisi "1 or 0=0"
- ==> il n'y a plus rien dans le fichier client !
- XSS
- On arrive à insérer du Javascript dans la base,
qui s'affiche tel que et agit sur les navigateurs qui consultent
(par exemple)
- Parade : vérifier les données recues !
vérification de la longueur et du type des variables
-numérique
-date
-email, etc...
désactiver tout ce qui peut ressembler à du html ou du
code
- crypter les données sensibles (clé, mot de passe,
etc..) avec ENCRYPT_RC2 et ENCRYPT_TDES
- "Préparer" les requêtes, quand c'est possible
(db2_connect sous PHP, par exemple)
les requêtes préparées s'exécutent en deux
fois :
- Préparation
le moteur SQL calcul un plan d'accès, optimise et attend
des paramètres
Ex (php): $stmt = db2_prepare($db,
"select * from clients where nocli = ? or depcli < ?")
;
- Exécution
lancement de la requête avec attribution de valeurs pour
les paramètres attendus
Ex (php): $rc = db2_execute($stmt,
array(2222, 44) ) ;
si les paramètres envoyés ne sont corrects, cela
sera refusé par SQL qui attendait 2 informations numériques
du fait du PREPARE
- Faire les mises à jour par procédures cataloguées
Procédures cataloguées
une procédure cataloguée peut être écrite
en SQL ou externe.
Dans le cas d'une procédure externe, il ne s'agit que
"d'enregistrer" en tant que procédure un exécutable
existant (description destinée à SQL et enregistrée
dans SYSPROCS et SYSPARMS de QSYS2)
- dans le cas d'un pgm ILE (RPG4 ou CLLE), cette information
est aussi stockée dans l'exécutable, se faisant
une simple restauration re-enregistre cet exécutable
en tant que procédure.
- dans le cas d'un pgm GAP3 ou CL simple(CLP), il faut redéclarer
la procédure par CREATE PROCEDURE
(script SQL lancé par iSeries Navigator ou par RUNSQLSTM)
|
cas particulier de PHP et php.ini
- Ne pas afficher les erreurs, mais un message générique
("logger" quand même)
- display_error dans php.ini à Off
- consulter le fichier error_log,généré
par apache, régulièrement
- les procédures cataloguées ne doivent jamais "planter"
(gestion d'erreur rigoureuse, voir Monitor/On-error en
RPG4)
- Autres paramètres :
- register_global à Off
- création automatique des variables de formulaire, c'est
vraiment dangereux
- error_reporting = E_ALL, en dev. uniquement
- indique les variables utilisées, non déclarées
- masquer php (ne pas montrer que c'est du php en masquant l'extension)
?
- si oui, c'est de la configuration Apache (redéfinition
des types mime, par exemple)
- Voyez http://www.php.net/manual/fr/security.php
le cache mot de passe sous windows 95/98 et client access V3R2M0
Operation navigator installé sur un poste utilisateur( sauf utilisation
d'Administration d'application)
Netserver (partages trop ouverts, en lecture/écriture, utilisation
d'un profil par défaut)
–› ODBC , MSQUERY (livré avec EXCEL) et
autre produits du genre (Access ....)

il est simple de créer une nouvelle source de données


il est toujours simple d'être en mise à jour
sur le fichier

l'ordre SQL est modifiable

ici, nous pouvons supprimer une table (un fichier physique)
·
Ce qu'il ne faut surtout
pas faire
·
Profils utilisateurs OS/400
Droits *ALLOBJ (sur les profils ou profils de groupe)
Laisser LMTCPB(*NO) à tout le monde
Pgm en *OWNER avec ligne de commande
Travailler avec QSECOFR (voir l'utilitaire SU sur volubis.fr)
·
Droits
Objets Base de Données : droits à *ALL
Netserver : partager QSYS.LIB en lecture/écriture
Serveur WEB : autoriser /* (pass ou bloc <directory> sous Apache)
·
Divers
politique de mot de passe trop laxiste (1 ou 2c autorisés, jamais modifiés)
politique de mot de passe trop sévère (mot de passe à
10c , différent des 32 précédents)
ce qui se
termine par des mot de passe écrits en clair sur des pense-bête.
profil banalisé connu de tous pour connexion automatique ("PCS
/ PCS" par exemple)
·
Quelques suggestions
la politique du tout sécuritaire.
les pgm sont le point
de passage obligé.
Profils utilisateurs de classe *USER
Droits *EXCLUDE sur les objets
Compiler les Pgm en *OWNER
pour la mise en place : faire un RVKOBJAUT
utiliser CRTAUT sur les bibliothèques (droit
des objets à venir)
CHGCMDDFT sur les commandes de compilation
-Limiter les actions possibles du réseau avec
l'administration d'applications (iseries navigator)
-Limiter l'accès QSECOFR aux unités autorisées
(DSP01 + qq postes privilégiés)
-Changer le mot de passe DST
-Enlever les mots de passe QSRV etc.. ainsi qu'aux
profils de groupe
.
une politique plus modérée
permettant une restitution
des données aux utilisateurs
(Query / odbc et autres produits de restitution)
-droits *USE sur les objets
(*exclude sur certaines bibliothèques sensibles [paie, ...] )
-compiler les pgm normalement
-gérer les profils par groupe utilisateurs et
donner à certains groupes le droit *change
en fonction des besoins applicatifs.
-compiler en *OWNER les pgm CL utilisant certaines
commandes (DLTF, CLRPFM, RMVM)
faire un GRTOBJAUT en REPLACE(*YES)
utiliser CRTAUT sur les bibliothèques , probablement
par listes d'autorisation.
faire une analyse des sources par FNDSTRPDM
(ou PRTCMDUSG, mais non disponible avec le type CLLE, uniquement
CLP)
Limiter les actions possibles du réseau avec
l'administration d'applications (iseries navigator)
Changer le mot de passe DST (sous DST)
Enlever les mots de passe QSRV, QSRVBAS et aux profils de groupe
les fichiers IFS
difficiles à gérer,
- ne respectent pas la notion de programme adoptant (en *Owner)
- utilisez au maximum
la notion d'héritage à la création
*INDIR sur la commande MKDIR pour les répertoires
Pour les droits sur objets pour un fichier stream, le propriétaire du fichier (le créateur) aura les mêmes droit que le propriétaire du répertoire.
le groupe principal aura les même droit que le groupe principal du répertoire
*PUBLIC aura les mêmes droits que *PUBLIC sur le répertoire.
Imaginons un répertorie DIR1 ayant :
Objet . . . . . . . . . . . . : /DIR1 Type . . . . . . . . . . . . . : DIR Propriétaire . . . . . . . . . : QPGMR Droits sur ---Droits sur objet---- Opt Utilisat données Exist Gest Modif Réf *PUBLIC *R X QPGMR *RW X
|
la création d'un fichier par FORMATION1 donnera les droits :
Imaginons un répertorie DIR1 ayant
Objet . . . . . . . . . . . . : /DIR1/fichier.txt Type . . . . . . . . . . . . . : DIR Propriétaire . . . . . . . . . : FORMATION1 Droits sur ---Droits sur objet---- Opt Utilisat données Exist Gest Modif Réf *PUBLIC *R X FORMATION1 *RW X
|
Les droits sur les données sont attribués par la commande de création, voyez
http://www-912.ibm.com/s_dir/SLKBase.nsf/0/e3dc97d7f1aeaf348625685f005c6263?OpenDocument
les fichiers spools.
la règle est la suivante :
par défaut, tout le monde peut accéder
et manipuler ses propres spools
avec une OUTQ DSPDTA(*YES),
toute personne ayant les droits de lecture sur l'outq peut consulter les
spools des autres (ce n'est pas la valeur par défaut)
- le profil utilisateur possède
un attribut droits spéciaux pouvant être *JOBCTL
et/ou *SPLCTL
- l'OUTQ en possède
un paramètre OPRCTL
• avec OPRCTL(*YES), toute personne ayant
les droits *JOBCTL peut gérer tous les spools de cette OUTQ.
• avec OPRCTL(*NO),
les droits de l'OUTQ sont alors considérés pour déterminer
qui peut manipuler les spools de l'OUTQ :
> AUTCHK(*OWNER) il
faut être le propriétaire de l'OUTQ
> AUTCHK(*DTAAUT)
il faut avoir les droits *CHANGE sur l'outq
• ATTENTION le droit spécial *SPLCTL
donne le droit de gérer les spools d'une OUTQ quelque soit le paramétrage
de cette dernière (c'est un peu comme *ALLOBJ , mais sur les spools),
sauf à interdire explicitement la bibliothèque de l'OUTQ (enlever
le droit *Execute) .
Mise en place
- Pour les services réseau, ne démarrer que ce qui est utile
!
- pour tous les services SNA voyez CHGNETNA , particulièrement :
- pour IP soyez vigilant et ne démarrez pas (ou sous contrôle)
:
- ROUTED si vous ne vous en servez pas (protocole RIP)
- REXECD (commandes à distance)
- DDM sur IP qui lui aussi permet de passer des commandes à distance
- Surtout ne démarrer par DDM sur IP avec le paramètre
PWDRQD(*NO) sur la commande CHGDDMTCPA
- INETD (le serveur qui démarre ECHO, DAYTIME et autres services
assez inutiles sur AS)
- Attention avec NFS qui utilise les RPC (remote procédures call)
très prisées des HACKERS si vous êtes sur le NET
- POP : permet l'énumération des profils utilisateurs
Encore une fois, voyez la liste des travaux de type serveur et les ports IP associés
http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/topic/rzaku/rzakuservertable.htm
« binder » quand c'est possible (mettre le
serveur à l'écoute sur la bonne adresse IP et non sur
toutes)

ici SMTP, pour Apache, voyez la directive listen
- Avec Client Access express, puis Navigator for I, vous pouvez utiliser l'administration d'application
:

Choisir "Gestion locale"

la première fois, cliquez sur "Applications" en bas à gauche.
Ajoutez les applications manquantes 
Vous pouvez rafraîchir pendant l'enregistrement des applications
->
Enfin, vous aurez accès aux même dialogue qu'avec System I navigator, dont les deux nouvelles options pour la base de données


- Personnalisation par personne ou par groupe

Ces restrictions sont bien respectées par ACS
- Pour la fonction spool

Personnalisation


Résultat

Le nom de la fonction qui vous est rappelé, est celui montré par le mode commande WRKFCNUSG
- Accès à l'IFS

- Accès à l'émulateur et au transfert de fichiers
- Accès aux scripts SQL et à performance Center

Si vous souhaitez aller plus loin
• voyez les points d'exit
Registration Facility
Nouvelle fonction de l'OS permettant d'associer à une fonction logiciel
un pgm de contrôle entreprise chargé de valider une action.
DEUX NOTIONS :
- Exit POINT : association d'un point d'appel de programme à une
action logiciel.
ce point d'appel est nommé sur 20 caractères.
Exemple : QIBM_QPWSF_File_Serveur la fonction serveur de fichier
de Client/Access est reconnue, il est possible de lui associer un pgm de validation.
- Exit program : programme associé à un point d'exit.
(l'écriture est à votre charge)
il reçoit deux paramètres
1/ 1 alpha renvoyé par le programme : '0'
= refus, '1' = validation
2/ données reçues (description suivant le format)
- Commandes : WRKREGINF (ADDEXITPGM
/ RMVEXITPGM)
Attributs du réseau
Système: S4409790
Nombre maximal d'étapes . . . . . . . . . . . . : 16
Accès aux demandes DDM . . . . . . . . . . . . . : *OBJAUT
Accès aux demandes Client Access . . . . . . . . : *REGFAC <--
Type du réseau RNIS par défaut . . . . . . . . . :
Liste de connexion RNIS par défaut . . . . . . . : QDCCNNLANY
Support ANYNET admis . . . . . . . . . . . . . . : *NO
Domaine du serveur de réseau . . . . . . . . . . : S4409790
########################################################################
# #
# Pour utiliser ces concepts avec Client/Access vous devez saisir : #
# CHGNETA PCSACC(*REGFAC) #
# #
# ce qui permet d'avoir un pgm de contrôle par fonction #
# (et non un pgm général comme en V2R30) #
# #
######################################################################## Fin
Appuyez sur ENTREE pour continuer.
F3=Exit F12=Annuler
|
Work with Registration Info (WRKREGINF)
Indiquez vos choix, puis appuyez sur ENTREE.
Exit point . . . . . . . . . . . EXITPNT *REGISTERED
Exit point format . . . . . . . FORMAT *ALL
Output . . . . . . . . . . . . . OUTPUT *
#########################################################################
# #
# Puis utilisez WRKREGINF qui affiche tous les points d'exit définis. #
# #
#########################################################################
Fin
F3=Exit F4=Invite F5=Réafficher F12=Annuler F13=Mode d'emploi invite
F24=Autres touches
|
Work with Registration Information
Type options, press Enter.
5=Display exit point 8=Work with exit programs <--
Exit
Exit Point
Opt Point Format Registered Text
QIBM_QHQ_DTAQ DTAQ0100 *YES Original Data Queue Server
QIBM_QLZP_LICENSE LICM0100 *YES Original License Mgmt Server
QIBM_QMF_MESSAGE MESS0100 *YES Original Message Server
QIBM_QNPS_ENTRY ENTR0100 *YES Network Print Server - entry
QIBM_QNPS_SPLF SPLF0100 *YES Network Print Server - spool
QIBM_QOE_OV_USR_ADM UADM0100 *YES OfficeVision/400 Administrati
QIBM_QOK_SUPPLIER SUPL0100 *YES System Directory Supplier Exi
QIBM_QOK_VERIFY VRFY0100 *YES System Directory Verify Exit
8 QIBM_QPWFS_FILE_SERV PWFS0100 *YES File Server
QIBM_QRQ_SQL RSQL0100 *YES Original Remote SQL Server
A suivre...
Command
===>
F3=Exit F4=Prompt F9=Retrieve F12=Cancel
|
Work with Exit Programs
Exit point: QIBM_QPWFS_FILE_SERV Format: PWFS0100
Type options, press Enter.
1=Add 4=Remove 5=Display 10=Replace
Exit
Program Exit
Opt Number Program Library
1
(No exit programs found.)
##########################################################################
# # # Sur cet écran 1 = ADDEXITPGM : ajout d'un pgm d'exit #
# 4 = RMVEXITPGM : retrait d'un pgm d'exit # #
##########################################################################
Fin
Command
===>
F3=Exit F4=Prompt F5=Refresh F9=Retrieve F12=Cancel
|
Quelques précisions :
un point d'exit peut avoir plusieurs "formats".
il s'agit de la définition de plusieurs actions pouvant être réalisées
par la même fonction.
exemple du point d'exit QIBM_QZDA_NDB1 serveur de données (ODBC)
format ZDAD0100 : gestion de la base (CREATE, DROP, etc...)
ZDAD0200 : Gestion de la liste de bibliothèques (ADDLIBLE)
chaque format définit la structure des données envoyées au pgm.
pour connaitre le détail d'un format voir la documentation
SC41-374 : "OS/400 server concept and administration "
Ci-dessous, un exemple :
|
PGM PARM(&APPLI &WUSER &USERLG + &WPWD &PWDLG + &WADR &ADRLG + &CODERETOUR + &PROFIL &PASSWORD &CURLIB)
DCL VAR(&APPLI) TYPE(*CHAR) LEN(4) DCL VAR(&WUSER) TYPE(*CHAR) LEN(50) DCL VAR(&USERLG) TYPE(*CHAR) LEN(4) DCL VAR(&WPWD) TYPE(*CHAR) LEN(50) DCL VAR(&PWDLG) TYPE(*CHAR) LEN(4) DCL VAR(&WADR) TYPE(*CHAR) LEN(50) DCL VAR(&ADRLG) TYPE(*CHAR) LEN(4) DCL VAR(&CODERETOUR) TYPE(*CHAR) LEN(4) DCL VAR(&PROFIL) TYPE(*CHAR) LEN(10) DCL VAR(&PASSWORD) TYPE(*CHAR) LEN(10) DCL VAR(&CURLIB) TYPE(*CHAR) LEN(10) DCL VAR(&USER) TYPE(*CHAR) LEN(10) DCL VAR(&POS) TYPE(*DEC) LEN(3 0)
/*********************************************************************/ /*QIBM_QTMF_SVR_LOGON : serveur FTP */ /* */ /*Format TCPL0100 : - APPLICATION 1 = FTP */ /* - IDENTIFIANT */ /* - LG DE IDENTIFIANT */ /* - MOT DEPASSE */ /* - LG DE MOT DE PASSE */ /* - ADRESSE IP */ /* - LG DE ADRESSE IP */ /* EN RETOUR */ /* - CODE RETOUR 0 = 1 REJET */ /* >0 = OK */ /* - PROFIL A UTILISER */ /* - MOT DE PASSE A UTILISER */ /* - CURLIB A UTILISER */ /* */ /*********************************************************************/ /* EXTRACTION */ CHGVAR &POS %BIN(&USERLG) CHGVAR &USER %SST(&WUSER 1 &POS) /* TEST DU PROFIL */
IF (&USER = 'QUSER') (DO) CHGVAR %bin(&CODERETOUR) 0 SNDMSG MSG('FTP : connexion QUSER refusée !') + TOUSR(*SYSOPR) ENDDO ELSE (CHGVAR %bin(&CODERETOUR) 1) ENDPGM
|
• Répliquez les mots de passe entre Iseries et Windows
200x
- installez sur un serveur Client access et demandez le
démarrage automatique de la commande à distante entrante
- indiquez à la valeur système QPWDVLDPGM *REGFAC
- associez au point d'exit QIBM_QSY_VLD_PASSWRD,
le programme suivant :
PGM PARM(&DATA &RETOUR) DCL VAR(&DATA) TYPE(*CHAR) LEN(2000) DCL VAR(&RETOUR) TYPE(*CHAR) DCL VAR(&CDE) TYPE(*CHAR) LEN(256) DCL &PROFIL *CHAR 10 DCL &MOTDEPASSE *CHAR 10 DCL &OFFSET *DEC (9 0) DCL &LG *DEC (9 0) MONMSG CPF0000
/* DECOUPAGE DU PARAMETRE RECU */ CHGVAR &PROFIL %SST(&DATA 33 10) CHGVAR &OFFSET %BIN(&DATA 57 4) CHGVAR &OFFSET (&OFFSET + 1) CHGVAR &LG %BIN(&DATA 61 4) CHGVAR &MOTDEPASSE %SST(&DATA &OFFSET &LG)
/* RUNRMTCMD GENERE UN SPOOL (QSYSPRT), PLACÉ DANS QPRINT */ OVRPRTF FILE(*PRTF) OUTQ(QPRINT) /* SOUMISSION DE LA CDE SUR LE SERVEUR NT */ CHGVAR VAR(&CDE) VALUE('NET USER' *BCAT &PROFIL + *BCAT &MOTDEPASSE *BCAT '/DOMAIN') RUNRMTCMD CMD(&CDE) RMTLOCNAME(VMCHGPWDW *IP) + RMTUSER(AS400) RMTPWD('as400') DLTOVR FILE(*PRTF) /* SUPRESSION AUTO DU SPOOL QSYSPRT */ DLTSPLF FILE(QSYSPRT) JOB(*) SPLNBR(*LAST)
/* ACCEPTATION DU MOT DE PASSE */ CHGVAR VAR(&RETOUR) VALUE('0') ENDPGM
|
OU mieux utilisez EIM pour du SSO
1/ Paramétrage IP
- voyez s'il faut une deuxième carte, deuxième interface (adresse
IP)
- voir les routes
- CHGTCPA
- Enlever IP Forwarding (fonction de passerelle)
- enlever IP Source Routing (réponse aux Loose Source and Record
Route[LSRR], utilisé par Traceroute)
2/ Filtrage IP
permettant de définir (adresse IP par adresse IP) qui a le
droit d'utiliser certains services IP (le test se fait sur le n° de
port)
ATTENTION
TOUT CE QUI n'est pas EXPLICITEMENT autorisé est INTERDIT (automatiquement)
Le filtrage IP lit vos règles dans L'ORDRE DE SAISIE.
(si vous êtes trompé, passez à la console RMVTCPTBL
*IPFTR qui enlève tous les filtres)
VOUS DEVEZ prévoir les services autorisés en entrée/sortie.
+ prenons le WEB, naturellement tout le monde pense à autoriser
en sortie, les ports source > 1023 (client) vers 80 (serveur www).
mais il faut aussi prévoir en entrée (les réponses) de 80 vers
> à 1023.
pour cela on peut tester sur TCP, s'il s'agit de la première trame
(demande de connexion), ou d'une autre trame (dialogue déja établit)
Si vous êtes connectés directement sur le NET, il est conseillé, de COMMENCER vos filtres par :
direction ! port-src ! port-cible ! protocole ! accord/refus !
------------------------------------------------------------------!
entrée ! * ! >1023 ! tcp/start ! refus !
ATTENTION, client access utilise les ports 6000 pour ses serveurs en IP.
Si vous acceptez une connexion sur un port > 1023, vous acceptez de fait
les transferts de fichiers, l'utilisation d'operation navigator, ...
ce qui permet de placer ensuite :
direction ! port-src ! port-cible ! protocole ! accord/refus !
------------------------------------------------------------------!
entrée ! * ! >1023 ! tcp/start ! refus !
sortie ! >1023 ! 80 ! tcp ! accord !
entrée ! 80 ! >1023 ! tcp ! accord !
et ainsi de suite pour tous les services que vous souhaitez autoriser
(SMTP, TELNET, DNS, ICMP (Ping et tracert), HTTPS, ...)
|
FTP est un cas plus complexe à gérer.
1/ il utilise deux ports 21 pour le mode commande
20 pour le transfert de données
2/ FTP traditionnellement utilise le scénario suivant :
le client se connecte (port > 1023) sur le port 21
on peut gérer par :
direction ! port-src ! port-cible ! protocole ! accord/refus !
------------------------------------------------------------------!
sortie ! >1023 ! 21 ! tcp ! accord !
entrée ! 21 ! >1023 ! tcp ! accord !
mais le client s'alloue un deuxième n° de port aléatoire (> 1023) et
demande au serveur de LE contacter sur ce port (commande PORT).
cas typique d'une connexion en entrée sur un port > 1023.
|
la seule solution acceptable est d'utiliser un FTP en mode passif
- le début de connexion est le même (sur le port 21)
- mais le client utilise la commande FTP PASV (et non port) demandant au
serveur de choisir un n° de port aléatoire (> 1023) pour le canal data.
- c'est alors le client qui initialisera cette deuxieme connexion.
L'AS/400 essai le mode passif, s'il recoit une erreur, il envoi alors la
commande PORT
DNS :
+ port d'écoute 53, port client > 1023
en fait la règle est la suivante :
source >1023, cible = 53 ==> client vers serveur (et inversement)
source = 53 , cible = 53 ==> serveur DNS à serveur DNS
|
Nous avons implémenté les règles suivantes :
direction ! port-src ! port-cible ! protocole ! accord/refus !
------------------------------------------------------------------!--------
entrée ! * ! >1023 ! tcp/start ! refus !
sortie ! >1023 ! 80 ! tcp ! accord ! http
entrée ! 80 ! >1023 ! tcp ! accord !
sortie ! >1023 ! 443 ! tcp ! accord ! https
entrée ! 443 ! >1023 ! tcp ! accord !
sortie ! >1023 ! 25 ! tcp ! accord ! smtp
entrée ! 25 ! >1023 ! tcp ! accord !
* ! 53 ! 53 ! udp ! accord !dns/dns
sortie ! >1023 ! 53 ! udp ! accord !host/dns
entrée ! 53 ! >1023 ! udp ! accord !
sortie ! >1023 ! 21 ! tcp ! accord !ftp/cde
entrée ! 21 ! >1023 ! tcp ! accord !
sortie ! >1023 ! >1023 ! tcp ! accord !ftp/data
entrée ! >1023 ! >1023 ! tcp ! accord !ftp/data
* ! * ! * ! icmp ! accord ! ping
* = colonne non testée.
|

pour implémenter ces règles :
a/ (optionnel) attribuez des noms symboliques aux services
+ indiquez un protocole
port source / port cible pour TCP
b/ définissez des règles, avec les éléments suivants
- un nom symbolique à la règle
- une direction
- des adresses (entrante/sortante)
- journalisation oui/non
- un service : en indiquant + soit un nom symbolique ( vu en a/ )
+ soit un protocole
(port source / port cible)
c/ attribuez à une interface des filtres
en indiquant, dans le bon ordre , les noms des règles vues en b/.
|
Exemple avec HTTP sortant (l'action Propriété permet de voir cet assistant)


Par exemple, pour un serveur web, autorisez ports 80 et 443
# ----------------------------------------------------------------------
# Instructions permettant le service HTTP entrant HTTP(80) et HTTPS(443)
# ----------------------------------------------------------------------
INCLUDE FILE = /QIBM/UserData/OS400/TCPIP/PacketRules/Services.i3p
FILTER SET HTTP_INBOUND ACTION = PERMIT DIRECTION = OUTBOUND SRCADDR = 1.2.3.4 DSTADDR = * SERVICE = HTTP_80_FS JRN = OFF
FILTER SET HTTP_INBOUND ACTION = PERMIT DIRECTION = INBOUND SRCADDR = * DSTADDR = 1.2.3.4 SERVICE = HTTP_80_FC JRN = OFF
FILTER SET HTTP_INBOUND ACTION = PERMIT DIRECTION = OUTBOUND SRCADDR = 1.2.3.4 DSTADDR = * SERVICE = HTTP_443_FS JRN = OFF
FILTER SET HTTP_INBOUND ACTION = PERMIT DIRECTION = INBOUND SRCADDR = * DSTADDR = 1.2.3.4 SERVICE = HTTP_443_FC JRN = OFF
FILTER_INTERFACE LINE = ETHERNET SET = HTTP_INBOUND
# ---------------------------------------------------------------------
Puis activez, sur la bonne interface
Retrait : en cas de problème, utiliser la commande RMVTCPTBL
EN V7 + SI47941, nouvelle commande
LODIPFTR OPTION(*LOAD | *UNLOAD) |
Journaliser les rejets ? Ajouter :
FILTER SET journal ACTION = DENY DIRECTION = INBOUND SRCADDR = * DSTADDR = 1.2.3.4 PROTOCOL = TCP DSTPORT = * SRCPORT = * JRN = FULL
FILTER_INTERFACE LINE = ETHERNET SET = HTTP_INBOUND, journal
Le Journal -> QIPFILTER dans QUSRSYS
• ET ENFIN, , à défaut d'empêcher peut-être
souhaitez-vous savoir qui a fait quoi :
Audit sécurité

Le système propose depuis la V2 une fonction d'audit (via un journal)
permettant de garder trace de certaines actions utilisateur.
Depuis la V2R30 il est possible de paramétrer cette fonction
...
. par objet
définir les actions entreprises sur cet objet à tracer
*NONE aucune trace
*CHANGE les modifications
*ALL toute utilisation
*USRPRF suivant le profil utilisant cet objet <---------
. par profil !
!
définir le niveau de trace pour les objets ayant *USRPRF <------ Fin
définir les actions système à tracer *NONE = suivant QAUDLVL
*xxxx = action à tracer |
valeur système QAUDCTL ( *NONE = aucune action de trace)
et/ou
trace/objet ! trace/actions du profil
*OBJAUD ! *AUDLVL
! ! !
! ! ------------------------------
! ! ! ! ...
CHGOBJAUD OBJ() ! ! !
! ! !
OBJAUD(*NONE) =rien ! ! !
(*CHANGE)=modifs! CHGUSRAUD USRPRF() ! QAUDLVL
(*ALL) =tout ! ! (sysval)
(*USRPRF)= <----!--> OBJAUD(*NONE) !
! (*CHANGE) ! actions à tracer
! (*ALL) ! pour tous les
*USRPRF = suivant indications ! ! profils du système
liées au profil. ! !--AUDLVL(*xxxx) !
! ! ! ^ Fin
! -> actions à tracer ! !
! (en plus de QAUDLVL)-!-----!
! pour ce profil ! |
Pour les objets :
La valeur par défaut est *NONE
Vous pouvez forcer une valeur pour les objets sensibles
(certaines commandes système par exemple)
ou bien indiquer que cela est fonction du profil
DANS CE CAS UNIQUEMENT on tiendra compte du paramètre OBJAUD
de la commande CHGUSRAUD.
Pour les actions utilisateur :
La valeur système prime avant toutes choses. (dft = *NONE)
Les actions à auditer indiquées au niveau de l'utilisateur sont
considérées en plus.
SI QAUDLVL = *CREATE et profil P1 = *DELETE, le système audit toutes
les créations ET pour P1 les créations et les suppressions.
|
..............................................................................
: Audit des actions utilisateur (AUDLVL) - Aide :
: :
: :
: *NONE :
: Aucun niveau d'audit n'est indiqué. Le niveau d'audit pour cet :
: utilisateur provient de la valeur système QAUDLVL. :
: :
: *CMD :
: Les chaînes de commande CL, les commandes de contrôle opérateur et :
: les procédures de l'environnement 36 sont consignées pour cet :
: utilisateur. :
: :
: *CREATE :
: Des postes d'audit sont envoyés lorsque des objets sont créés par :
: cet utilisateur. :
: :
: *DELETE :
: Des postes d'audit sont envoyés lorsque des objets sont supprimés :
: par cet utilisateur. :
: :
: : |
: :
: *JOBDTA :
: Audit de toutes les données de démarrage et d'arrêt de travail pour :
: cet utilisateur. :
: :
: *OBJMGT :
: Audit des modifications de gestion des objets effectuées par cet :
: utilisateur (un déplacement ou un changement de nom par exemple). :
: :
: *OFCSRV :
: Audit des modifications des services bureautiques effectuées par cet :
: utilisateur (sur le répertoire du système ou l'utilisation du :
: courrier OfficeVision/400 par exemple). :
: :
: *PGMADP :
: Audit des droits pour cet utilisateur obtenus via une adoption de :
: programme. :
: :
: *SAVRST :
: Audit des actions de sauvegarde et de restauration effectuées par :
: cet utilisateur. :
: : |
: :
: :
: *SECURITY :
: Audit des modifications de sécurité effectuées par cet utilisateur. :
: :
: *SERVICE :
: Audit de l'utilisation des outils de maintenance du système (SST) :
: par cet utilisateur. :
: :
: *SPLFDTA :
: Audit des opérations sur les fichiers spoule effectuées par cet :
: utilisateur. :
: :
: *SYSMGT :
: Audit de l'utilisation des fonctions de gestion du système par cet :
: utilisateur. :
..............................................................................
Mise en place 1/ création d'un récepteur de journal
2/ création d'un journal QAUDJRN dans QSYS
3/ renseignement des valeurs système QAUDCTL et QAUDLVL
4/ CHGOBJAUD et CHGUSRAUD , puis DSPJRN pour analyse .... |
Créer un récepteur de journal (CRTJRNRCV)
Indiquez vos choix, puis appuyez sur ENTREE.
Récepteur de journal . . . . . . AUDITRCV Nom
Bibliothèque . . . . . . . . . *CURLIB Nom, *CURLIB
ID pool mémoire secondaire . . . *LIBASP 1-16, *LIBASP
Seuil d'alerte du récepteur . . *NONE 1-1919999, *NONE
Texte 'descriptif' . . . . . . . Récepteur pour journal d'audit
Fin
F3=Exit F4=Invite F5=Réafficher F10=Autres paramètres F12=Annuler
F13=Mode d'emploi invite F24=Autres touches |
Créer un journal (CRTJRN)
Indiquez vos choix, puis appuyez sur ENTREE.
Journal . . . . . . . . . . . . QAUDJRN Nom
Bibliothèque . . . . . . . . . QSYS Nom, *CURLIB
Récepteur de journal . . . . . . AUDITRCV Nom
Bibliothèque . . . . . . . . . *LIBL Nom, *LIBL, *CURLIB
*LIBL
ID pool mémoire secondaire . . . *LIBASP 1-16, *LIBASP
File att msg seuil d'alerte . . QSYSOPR Nom
Bibliothèque . . . . . . . . . *LIBL Nom, *LIBL, *CURLIB
Texte 'descriptif' . . . . . . . journal d'audit
Fin
F3=Exit F4=Invite F5=Réafficher F10=Autres paramètres F12=Annuler
F13=Mode d'emploi invite F24=Autres touches |
Gestion des valeurs système
Système: S4409790
Afficher à partir de . . Premiers caractères valeur système
Sous-ensemble par type *SEC F4 pour liste
Indiquez vos options, puis appuyez sur ENTREE.
2=Modifier 5=Afficher
Valeur
Option système Type Description
QALWUSRDMN *SEC Admission objets domaine utilisateur dans biblio
5 QAUDCTL *SEC Contrôle d'audit
QAUDENDACN *SEC Action d'arrêt d'audit
QAUDFRCLVL *SEC Forçage des données d'audit
QAUDLVL *SEC Niveau d'audit de sécurité
QCRTAUT *SEC Droits publics par défaut pour objets créés
QCRTOBJAUD *SEC Audit pour objets créés
A suivre...
Commande
===>
F3=Exit F4=Invite F5=Réafficher F9=Rappel F11=Noms seuls
F12=Annuler |
Valeur système
Valeur système . . . . : QAUDCTL
Description . . . . . : Contrôle d'audit
Contrôle
audit
*OBJAUD (objet par objet) *AUDLVL (profil par profil)
Fin
Appuyez sur ENTREE pour continuer.
F3=Exit F12=Annuler |
Gestion des valeurs système
Système: S4409790
Afficher à partir de . . Premiers caractères valeur système
Sous-ensemble par type *SEC F4 pour liste
Indiquez vos options, puis appuyez sur ENTREE.
2=Modifier 5=Afficher
Valeur
Option système Type Description
QALWUSRDMN *SEC Admission objets domaine utilisateur dans biblio
QAUDCTL *SEC Contrôle d'audit
QAUDENDACN *SEC Action d'arrêt d'audit
QAUDFRCLVL *SEC Forçage des données d'audit
5 QAUDLVL *SEC Niveau d'audit de sécurité
QCRTAUT *SEC Droits publics par défaut pour objets créés
QCRTOBJAUD *SEC Audit pour objets créés
A suivre...
Commande
===>
F3=Exit F4=Invite F5=Réafficher F9=Rappel F11=Noms seuls
F12=Annuler |
Valeur système
Valeur système . . . . : QAUDLVL
Description . . . . . : Niveau d'audit de sécurité
Options Options
audit audit
*AUTFAIL *SERVICE
*CREATE *SPLFDTA
*DELETE *SYSMGT
*JOBDTA
*OBJMGT
*OFCSRV
*PGMADP
*PGMFAIL
*PRTDTA
*SAVRST
*SECURITY
Fin
Appuyez sur ENTREE pour continuer.
F3=Exit F12=Annuler |
Gestion des valeurs système
Système: S4409790
Afficher à partir de . . Premiers caractères valeur système
Sous-ensemble par type *SEC F4 pour liste
Indiquez vos options, puis appuyez sur ENTREE.
2=Modifier 5=Afficher
Valeur
Option système Type Description
QALWUSRDMN *SEC Admission objets domaine utilisateur dans biblio
QAUDCTL *SEC Contrôle d'audit
QAUDENDACN *SEC Action d'arrêt d'audit
QAUDFRCLVL *SEC Forçage des données d'audit
QAUDLVL *SEC Niveau d'audit de sécurité
QCRTAUT *SEC Droits publics par défaut pour objets créés
5 QCRTOBJAUD *SEC Audit pour objets créés
A suivre...
Commande
===>
F3=Exit F4=Invite F5=Réafficher F9=Rappel F11=Noms seuls
F12=Annuler |
Valeur système
Valeur système . . . . : QCRTOBJAUD
Description . . . . . : Audit pour objets créés
Option d'audit . . . . . . . : *NONE *NONE
*USRPRF
*CHANGE
*ALL
Appuyez sur ENTREE pour continuer.
F3=Exit F12=Annuler |
Modifier l'audit d'objet (CHGOBJAUD)
Indiquez vos choix, puis appuyez sur ENTREE.
Objet . . . . . . . . . . . . . *all Nom, générique*, *ALL
Bibliothèque . . . . . . . . . af400 Nom, *LIBL, *USRLIBL...
Type d'objet . . . . . . . . . . *all *ALL, *ALRTBL, *AUTHLR...
Valeur d'audit d'objet . . . . . *usrprf *NONE, *USRPRF, *CHANGE, *ALL
Fin
F3=Exit F4=Invite F5=Réafficher F12=Annuler F13=Mode d'emploi invite
F24=Autres touches |
Modifier audit d'utilisateur (CHGUSRAUD)
Indiquez vos choix, puis appuyez sur ENTREE.
Profil utilisateur . . . . . . . TOTO Nom
+ si autres valeurs
Valeur d'audit d'objet . . . . . <<< *SAME, *NONE, *CHANGE, *ALL
Audit des actions utilisateur . <<< *SAME, *NONE, *CMD...
+ si autres valeurs
Fin
F3=Exit F4=Invite F5=Réafficher F12=Annuler F13=Mode d'emploi invite
F24=Autres touches |
Pour lire le contenu du journal, vous devez utiliser la commande DSPJRN,
le type de poste, indique l'événement :
- AF violation de sécurité
- CA modification des droits
- CD Chaînes de commande.
- CO Créations d'objet.
- CP Modifications de profil utilisateur.
- DO Suppressions d'objets.
- JS Actions sur les travaux.
- ND Violations des filtres de recherche de
répertoire.
- NE Violations des filtres
d'extrémité.
- OR Restauration d'objets.
- OW Modifications de propriété
d'objet.
- PG Modification du groupe principal d'un objet.
- PO Sorties imprimées.
- PW Mots de passe incorrects.
- SF Actions sur les fichiers spoule.
- SV Modifications de valeurs système.
- VO Actions de la liste de validation.
- YR Lecture d'objets de la bibliothèque
de documents.
- YC Modifications d'objets de la
bibliothèque de documents.
- ZR Lecture d'objets.
- ZC Modifications d'objets.
Pour une analyse plus complète, placez le résultat de DSPJRN
dans un fichier base de données ou utilisez DSPAUDJRNE
Autre Surveillance
- V5R40 : détection d'intrusions
On peut détecter
- les problèmes de fragments IP
datagrames trop gros ou mal numérotés
- les paquets malformés
- SYN floods (débordements)
de multiples connections sont initialisées avec un
tiers usurpé et jamais achevées
- redirections ICMP
- ECHO perpétuel
- utilisation de LSRR (voir en début de cours)
- le scannage de ports
- Mise en place
- Mettre en place QOS
- Activer l'audit (QAUDCTL)
- Mettre *ATNEVT dans QAUDLVL ou QAUDLVL2
- Copier /QIBM/PRODATA/OS400/QOS/IDSPOLICY.CONF dans /QIBM/USERDATA/OS400/QOS/ETC
et éditez le.
- démarrer QOS par STRTCPSVR *QOS
- analyse des résultats : CPYAUDJRNE TYPE(IM)
Copyright © 1995,2018 VOLUBIS