I had a request some time ago to track sign on/off and disables etc. I use
this sql if you need to go back more than 3 days then change the 3 to what
you need. I run this in ACS Run SQL Script. I also put it in a program so
the manager can run it and see what happened.
;;
with tempA as (
-- Start of all jobs
SELECT
FROM_JOB,
MESSA00003 as Started_Time_Stamp,
from_user, message_text, message_id
FROM TABLE(QSYS2.HISTORY_LOG_INFO(CURRENT TIMESTAMP - 3 DAY,
CURRENT TIMESTAMP))
where message_id in('CPF1124')
),
-- End of all jobs
TempB as (
SELECT
FROM_JOB,
MESSA00003 as Ended_Time_Stamp,
from_user, message_text, message_id
FROM TABLE(QSYS2.HISTORY_LOG_INFO(START_TIME => CURRENT TIMESTAMP - 3 DAY,
END_TIME => CURRENT TIMESTAMP))
where message_id in ('CPC1126', 'CPI59F0', 'CPI1126', 'CPI1127' -- Time-out
, 'CPF1164' -- end
, 'CPF5140', 'CPC1125' -- stopped
)
),
-- Why end of jobs
TempC as (
SELECT
FROM_JOB,
MESSA00003 as Ended_Time_Stamp,
from_user, message_text, message_id
FROM TABLE(QSYS2.HISTORY_LOG_INFO(CURRENT TIMESTAMP - 3 DAY,
CURRENT TIMESTAMP))
where message_id in ('CPI1127') -- Time-out
),
-- Bad password or disabled
TempD as (
SELECT case
when message_id = 'CPF2234' -- Bad Password
THEN substr(trim(cast(replace(
REGEXP_SUBSTR(trim(message_text), '([^ ]*) ?', 1, 9, '', 1)
,'.',' ')as char(10) ccsid 37)),1,10)
when message_id = 'CPF1393' -- User Disabled
THEN substr(trim(cast(replace(
REGEXP_SUBSTR(trim(message_text), '([^ ]*) ?', 1, 3, '', 1)
,'.',' ')as char(10) ccsid 37)),1,10)
end from_user
,from_job as from_job
,message_timestamp as start_TS
,message_timestamp as end_TS
,case
WHEN message_id = 'CPF2234' THEN 'Bad Password '
WHEN message_id = 'CPF1393' THEN 'User Disabled '
end Reason
,message_id as msg_ID
,message_text as msg_txt
FROM TABLE(QSYS2.HISTORY_LOG_INFO(START_TIME => CURRENT TIMESTAMP - 3 DAY,
END_TIME => CURRENT TIMESTAMP))
where Message_id = 'CPF2234' -- Bad password
or Message_id = 'CPF1393' -- Disabled Profile
)
-- Display results
select --a.from_user, A.FROM_JOB,
distinct
case when b.message_id = 'CPC1125'
THEN substr(trim(cast(
REGEXP_SUBSTR(trim(b.message_text), '([^/]*)/?', 1, 2, '',
1)
as char(10) ccsid 37)),1,10)
else a.from_user
end as From_User,
case when b.message_id = 'CPC1125'
THEN substr(trim(cast(
REGEXP_SUBSTR(trim(b.message_text), '([^ ]*) ?', 1, 2, '',
1)
as char(30) ccsid 37)),1,30)
else a.from_job
end as From_job,
Started_Time_Stamp as Started_time_stamp,
b.Ended_time_stamp as Ended_Time_stamp,
substr(trim(cast(
CASE WHEN b.message_id = 'CPF1164' and
c.message_id is null THEN 'Sign On/Off'
WHEN b.message_id = 'CPF1164' and
c.message_id = 'CPI1127' THEN 'Timeout ' --||
-- (
-- SELECT right(Current_Character_value,3)
-- FROM qsys2.SYSTEM_VALUE_INFO
-- WHERE SYSTEM_VALUE_NAME = 'QINACTITV' ) ||
-- ' min'
WHEN b.message_id = 'CPF5140' THEN 'Click X'
WHEN b.message_id = 'CPC1125' THEN 'Ended by ' ||
REGEXP_SUBSTR(trim(b.message_text), '([^ ]*) ?', 1, 7, '', 1)
else 'Sign Off??'
END as char(25) ccsid 37)),1,25) as Reason
,a.message_id as A_Msg_ID
,b.message_id as B_Msg_ID
,c.message_id as C_Msg_ID
,' ' as D_Msg_ID
,substr(cast(b.message_Text as char(200) ccsid 37),1,100) as
Message_Text
from TempA A inner join TempB b on A.FROM_JOB = B.FROM_JOB
full outer join TempC c on substr(char(b.ended_time_stamp),1,20) =
substr(char(c.ended_time_stamp),1,20)
where a.from_user not like 'Q%' and
a.from_user not in ('ASI', 'ASIIBMI', 'MIMIXOWN', 'E2A1ADMIN',
'ONLINE', 'ONLINE2', 'CENT', 'EV1') and
a.from_job not like '%/UNIMSG%' and
a.from_job not like '%/DCNEWCRD%' and
a.from_job not like '%/REORG%' and
a.from_job not like '%/INFO01%' and
a.from_job not like '%/REPRUN%' and
a.from_job not like '%/RPWRKX%' and
a.from_job not like '%/SVCLT%' and
a.from_job not like '%/RVIEDO%' and
a.from_job not like '%/RVIEDT%' and
a.from_job not like '%/DEQRKPCTST%' and
a.from_job not like '%/QUSER/QSRCSRVS%' and --TCP RmtCmd Srvr jobs
a.from_job not like '%/QUSER/QCTXDMON%' and --Transform Services
a.from_job not like '%/QUSER/QZDASOINIT%' and --Transform Services
a.from_job not like '%/QB5SERVER%' and --Debugger
a.from_job not like '%/QB5PHSRV%' and --Debugger
a.from_job not like '%/QS%' and
a.from_job not like '%/QUSER/QZRCSRVS%' --Transform Services
union all
select d.from_user as from_user
,'N/A' as from_job --d.from_job
,d.start_ts as Started_Time_Stamp
,d.end_ts as ended_Time_Stamp
,d.reason as reason
,' ' as A_Msg_ID
,' ' as B_Msg_ID
,' ' as C_Msg_ID
,d.msg_ID as d_Msg_ID
,cast(d.msg_txt as char(100) ccsid 37) as message_text
from TempD d
order by 1, 3
;;
On Mon, Nov 1, 2021 at 10:42 AM Rob Berendt <rob@xxxxxxxxx> wrote:
https://www.ibm.com/docs/en/i/7.4?topic=journal-setting-up-security-auditing
https://www.ibm.com/docs/en/i/7.4?topic=auditors-unauthorized-access
https://www.ibm.com/docs/en/i/7.4?topic=journal-using-chgsecaud-set-up-security-auditing
Rob Berendt
--
IBM Certified System Administrator - IBM i 6.1
Group Dekko
Dept 1600
Mail to: 7310 Innovation Blvd, Suite 104
Ft. Wayne, IN 46818
Ship to: 7310 Innovation Blvd, Dock 9C
Ft. Wayne, IN 46818
http://www.dekko.com
-----Original Message-----
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Jim
Hawkins
Sent: Monday, November 1, 2021 11:35 AM
To: midrange-l@xxxxxxxxxxxxxxxxxx
Subject: RE: Disabled User ID without a corresponding invalid sign-in
CAUTION: This email originated from outside of the organization. Do not
click links or open attachments unless you recognize the sender and know
the content is safe.
Thank you Rob,
I got nothing from the journal history, I even added PW and SO to the
list. We had a user that I know used the incorrect password on Friday
enough times to get disabled, and that doesn't even show up.
I used *curchain. *first (date) and *last.
I did apply the latest Cume over the weekend, prior to that we were 1 back
on v7.4.
I have rarely found a need for the journaling, and haven't really looked
at it. So it may not be configured to capture this information, or I could
be missing something in what I am doing .
Regards,
Jim Hawkins
Programmer Analyst
Interkal LLC
Kalamazoo, MI
If you're very current on OS and PTF's you can try the AF and CP entries
at https://www.ibm.com/docs/en/i/7.4?topic=services-audit-journal-entry
If you're not too far behind you can try those same entries here:
https://www.ibm.com/docs/en/i/7.4?topic=services-display-journal-table-function
and get remote port, remote IP address, etc.
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related
questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com
As an Amazon Associate we earn from qualifying purchases.