Le REXEC est un protocole qui a été déclassifié pour des questions de sécurité depuis plusieurs années et qui ne devrait plus être utilisés mais il est possible qu’ils soit encore ouvert chez vous, c’est le port 512.
Voici une solution pour connaitre qui se connecte en REXEC sur votre partition IBM
1) Création d’une table pour la log des tentatives de REXEC
CREATE TABLE GTOOLS/CTLREXEC (REXIP CHAR ( 15) NOT NULL WITH
DEFAULT, REXUSR CHAR ( 10) NOT NULL WITH DEFAULT, REXDAT DATE NOT
NULL WITH DEFAULT, REXTIM TIME NOT NULL WITH DEFAULT)
2) Création d’un Programme CLP
//
/* / / Exemple REXEC Server Logon exit program. / / PGM CTLREXEC / / / /*/
TSTLOGCL: PGM PARM(&APPIDIN &USRIN &USRLENIN &AUTIN &AUTLENIN &IPADDRIN &IPLENIN +
&RETCDOUT &USRPRFOUT &PASSWDOUT &CURLIBOUT)
/* Declare input parameters */
DCL VAR(&APPIDIN) TYPE(CHAR) LEN(4)
/* Application identifier */ /* 1 FTP server program */ /* 2 REXEC server program */
DCL VAR(&USRIN) TYPE(CHAR) LEN(999)
/* User ID */
DCL VAR(&USRLENIN) TYPE(CHAR) LEN(4)
/* Length of user ID */
DCL VAR(&AUTIN) TYPE(CHAR) LEN(999)
/* Authentication string */
DCL VAR(&AUTLENIN) TYPE(CHAR) LEN(4)
/* Length of auth. string */
DCL VAR(&IPADDRIN) TYPE(CHAR) LEN(15)
/* Client IP address */
DCL VAR(&IPLENIN) TYPE(CHAR) LEN(4)
/* IP address length */
DCL VAR(&RETCDOUT) TYPE(CHAR) LEN(4)
/* return code (out) / / 1 OK / / 0 KO */
DCL VAR(&USRPRFOUT) TYPE(CHAR) LEN(10)
/* user profile (out) */
DCL VAR(&PASSWDOUT) TYPE(CHAR) LEN(10)
/* password (out) */
DCL VAR(&CURLIBOUT) TYPE(*CHAR) LEN(10) /* current library (out) */
/* Declare local copies of parameters (in format usable by CL) */
DCL VAR(&APPID) TYPE(DEC) LEN(1 0)
DCL VAR(&USRLEN) TYPE(DEC) LEN(5 0)
DCL VAR(&AUTLEN) TYPE(DEC) LEN(5 0)
DCL VAR(&IPLEN) TYPE(*DEC) LEN(5 0)
MONMSG CPF0000 exec(goto fin)
addlible gtools
monmsg CPF2103
CHGJOB LOG(4 0 *SECLVL) LOGCLPGM(YES)
/* Assign input parameters to local copies * /
CHGVAR VAR(&APPID) VALUE(%BINARY(&APPIDIN))
CHGVAR VAR(&USRLEN) VALUE(%BINARY(&USRLENIN))
CHGVAR VAR(&AUTLEN) VALUE(%BINARY(&AUTLENIN))
CHGVAR VAR(&IPLEN) VALUE(%BINARY(&IPLENIN))
/* Renvoyer OK */
CHGVAR VAR(%BINARY(&RETCDOUT)) VALUE(1)
/* Loguer les informations */
RUNSQL SQL('INSERT INTO CTLREXEC VALUES(''' *TCAT +
%SST(&IPADDRIN 1 &iplen) *TCAT ''', ''' +
*TCAT %SST(&USRIN 1 &USRLEN) *TCAT ''', +
current date, current time)') COMMIT(*NONE)
monmsg sql0000 exec(do)
sndusrmsg msg(&IPADDRIN *bcat %sst(&USRIN 1 10)) msgtype(*info)
enddo
goto end
fin:
CHGVAR VAR(%BINARY(&RETCDOUT)) VALUE(1)
END: ENDPGM
3) Compiler le programme en adoption de droit par rapport à QSECOFR
4) Associer au programme d’exit QIBM_QTMX_SVR_LOGON
ENDTCPSVR *REXEC
ADDEXITPGM EXITPNT(QIBM_QTMX_SVR_LOGON) +
FORMAT(TCPL0100) PGMNBR(1) +
PGM(gtools/ctlrexec)
STRTCPSVR *REXEC
5) Pour le suivi
select * from gtools/ctlrexec
REXIP REXUSR REXDAT REXTIM
10.10.10.10 GAIA 2021-03-29 21:39:11
10.2.0.8 PLB 2021-03-29 22:06:36
10.2.0.8 PLB 2021-03-30 06:38:02
10.2.0.8 PLB 2021-03-30 06:40:47
10.2.0.8 QSECOFR 2021-03-30 06:42:40