It's a well-known fact that many auditors aren't knowledgeable about IBM i. But they're learning! Here are several IBM i configuration settings that you'd better hope your auditor never fully understands.
Because auditors aren't usually IBM i-savvy, administrators will often choose a configuration or provide an answer that, if fully understood by their auditor, would never be allowed. Here are some of the things that fall into that category. And yes, I'm hoping that your auditor reads this article!
Many auditors - and system administrators - put too much emphasis on profiles' user class settings. While the user class can be used to initially create the profile, it is never used as a source for user's authority. Therefore, ensuring most users are in the *USER user class could be ignoring the fact that all users have been granted *ALLOBJ special authority, for example. Focus on the User class setting must stop and be redirected to the special authorities granted. Which brings me to my next topic...
Special Authority Granted to the User's Groups
Assigning a user's special authority to their group profile is something I advocate. I actually encourage this behavior as a way of implementing role-based access (RBAC). The problem is when auditors aren't aware of this feature and only examine the user's special authorities and never look to see what might be inherited by one or more groups. While this is an issue of auditors not understanding IBM i, this next issue is solely administrators trying to fool their auditors. That's when a user gets *ALLOBJ via one of their groups and then, to make it appear that users are prevented from running one or more commands or from accessing sensitive files, the administrator grants the users a private authority of *EXCLUDE. Because authority granted to the user itself takes precedence over authorities or special authorities granted to the user's groups, when the user attempts to open one of the files, for example, they receive the "Not authorized to file ABC in library XYZ." The auditors accept the error and go on to the next issue. The problem is that all the user has to do is simply submit a job to run as a profile that isn't restricted; then they have all authority to the sensitive files as well as the ability to run commands that they supposedly can't access. Assigning *ALLOBJ to a user's group and then thinking you can prevent users' access to selected commands or objects is a theory fraught with numerous opportunities to bypass the controls you've attempted to put into place. That's an approach I do not recommend. Note to auditors: Heads up if an administrator says they're not authorized to specific commands or files! Be sure to have them show you how they've been restricted.
What Special Authorities Are and the Capabilities They Provide
Most auditors seem to be aware of *ALLOBJ special authority. They equate it to root in the UNIX/Linux world and Admin in the Windows world. Many also are aware of *SECADM special authority, understanding that it's required when working with user profiles. But I've found very few who are aware of the capabilities provided by the rest of the special authorities. Since this was the topic of a previous article, I'll just refer them here.
Most auditors have a "playbook" or set of instructions from their company that explains what the auditor should be examining. Most auditor playbooks describe that the system should be running at QSECURITY level 40 or 50. But I saw one auditing firm a few years ago that was using outdated information and tried to demand that their client down-level their system to security level 30! We used IBM documentation to help them understand that that would be a bad idea!
Another misunderstanding is that one can pick and choose which parts of the operating system use the features that cause the system to be at security level 40. At least that's the excuse I heard a customer attempt to give their auditor for why their system was not running at security level 40. They claimed that their application wasn't using the features of security level 40. (Huh?!) All applications - regardless of vendor-supplied or written in-house - use the operating system, and it's the operating system that changes behavior at the various security levels. One cannot choose which parts of the operating system your application uses; therefore, this argument has no logic and should not be believed or accepted as a valid reason for a system not running at security level 40 or 50!
What the Limited Capability Attribute Does and Doesn't Do
Back in the day, setting a user to be limited capability (LMTCPB) *YES was the way to lock a user into a menu. It's still the method used to lock users into a menu if they sign on interactively, but it is not an effective method of restricting access via interfaces such as FTP and ODBC. If administrators claim their users are locked into a menu and can't access data directly but the administrators haven't either implemented object-level security or fully implemented an exit point solution such as HelpSystems' NetworkSecurity product, then their claim is not true. End users can access data - at least to download it and quite possibly to modify it.
That said, setting user profiles to LMTCPB *YES is a good thing. You don't want to give end users the ability to enter all commands on the system. Most commands are not allowed to be run by a limited user. Which brings me to my next point. Commands can be changed to allow them to be run by a limited user. I've run into a situation where many commands had been changed so even those users set to limited capability *YES were allowed to be run by a limited user, including all of the commands a programmer needs to debug production issues: Display Physical File Member (DSPPFM), Display File Description (DSPFD), Start Debug (STRDBG), etc. For some reason, this organization thought it was better to have all (and I do mean all) of their users set to LMTCPB(*YES) and to change these commands so all users could run them. Clearly, they were relying on "security by obscurity." Now I'm not saying you should never change any command, but you must consider the full ramifications of changing a command to be allowed by a user. Auditors: Ask for the list of commands that can be allowed by a limited user.
Finally, let me clarify what the setting of limited capability *PARTIAL restricts. Users with limited capability *PARTIAL cannot modify the Program/procedure field on the sign-on display. In addition, they can't modify their current library or attention program once logged on. They can enter commands.
Overriding Attributes in the User Profile
As you know, a handful of system value settings can be overridden at the user profile, including the limit device sessions and block password change attributes. But the one I see overridden most often is the password expiration interval. This attribute is appropriately set to *NOMAX (meaning that the password never expires) for profiles such as service accounts - those profiles that are typically used to make connections to or from other servers. However, what I see on occasion are profiles associated with people - especially administrators - that have been set to *NOMAX (meaning that the administrator's profile never has to be changed!). While there has been some debate over the benefits of changing passwords regularly, I am still an advocate that profiles should be changed periodically. The worst cases are when literally every profile has been overridden at the profile level to a value of *NOMAX while the system value, QPWDEXPITV, is set to 90 (days.) To an auditor, it would appear that passwords are being changed regularly, but under the covers, they aren't. Auditors: Make sure you are examining profiles' password expiration interval!
I've heard all sorts of excuses from administrators about how profiles with a default password aren't a risk. My favorite is when the assertion is made that it isn't a risk because the password has been set to be expired so it will have to be changed the first time the user signs on. Someone intending to do harm could just as easily change the password at first sign-on as the individual to whom the profile belongs, so that's not a rational argument! The second excuse that I hear is that the profile can't be used for sign-on because the initial program is set to *NONE and the initial menu to *SIGNOFF. While the profile may not be able to sign on interactively, it can absolutely be used to make an ODBC connection or FTP transfer. Another excuse I hear is that the profile is status of disabled and so can't be used for sign-on. I will agree that this is of less risk than either of the first two excuses. But I'm still uncomfortable with it because profiles can often be re-enabled. I've seen Identity Management systems that automatically enable all of a user's accounts throughout an organization. In this case, it would also enable any IBM i account associated with the user - including one with a default password. I've also seen instances where all profiles on the system have been enabled during a role swap. The safest configuration is to not have default passwords! Auditors: Don't listen to justifications for profiles having a default password. Even profiles created by vendor software should be able to be changed to be something other than a default.
I'm hoping that none of these situations apply to you, but if they do, please consider what you're actually doing. You're only harming your organization by not taking full advantage of IBM i security features. Please reconsider your choices.