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 :


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 :

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)

F11 permet de voir le détail.

Là encore, vous pouvez utiliser Navigator for i





 


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


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é :


indiquent le nombre de tentatives d'ouverture de session infructueuses admises et l'action à entreprendre :

     

affiche des informations sur la dernière ouverture de session et le nombre de tentatives infructueuses :

    indique si un profil de type *SECOFR(*ALLOBJ ou *SERVICE) peut se signer sur n'importe quel écran :

     

    indique un temps d'inactivité maxi (sans E/S écran), ce paramètre est reconnu par TELNET depuis la V4R20

     

    indique une durée de validité d'un mot de passe.

    indique si l'on accepte un IPL à distance (un simple appel téléphonique suffit)

     

    indique si des objets sensibles peuvent être restaurés

     

    indique si des opérations de service à distance sont admises

     

    indique la liste des personnes habilitées à gérer des programmes adoptant

    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

 

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 :

    cas particulier de PHP et php.ini

    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)

    Laisser les mots de passe QSRV etc... au défaut (penser à DST)

     

    Démarrer tous les services réseau

     Faites la liste de ce dont vous avez vraiement besoin

      (Voyez la liste des travaux de type serveur ici http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/topic/rzaku/rzakuservertable.htm )

    ·                     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)
    pour la mise en place :   (voyez un exemple de CL)
    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

     

    ·                     Cas particuliers

    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

 

 

Ces restrictions sont bien respectées par ACS


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

  1. installez sur un serveur Client access et demandez le démarrage automatique de la commande à distante entrante
  2. indiquez à la valeur système QPWDVLDPGM *REGFAC
  3. 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

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 :

Pour une analyse plus complète, placez le résultat de DSPJRN dans un fichier base de données ou utilisez DSPAUDJRNE

Autre Surveillance

 

    Copyright © 1995,2018 VOLUBIS