Using VESOFT Products To Implement The Hewlett-Packard
   Recommendations For Tuning Up Your HP3000 System Security
                 by Michael D. Hensley, VESOFT


Dear HP3000 System Manager:

The June 1990 issue of InterexPress included an article by Hewlett-
Packard information security program manager Jim Schindler entitled
"Step by Step: A set of security procedures for system managers".
As a vendor of HP3000 system software since 1980
(with over 10,000 packages -- MPEX, SECURITY, and VEAUDIT --
installed worldwide), VESOFT
shares HP's concerns and applauds their desire to help System
Managers improve system security.
However, most of the recommendations made by HP can not be
practically followed in a "real-world" environment using only MPE
commands and utilities.

Enclosed is a copy of HP's recommendations, together with information on
how our software  can be used to satisfy (and in most cases exceed) them.

Please note that there are a number of computer security issues that
HP did not address.
This letter merely presents the ways that VESOFT can help you
implement the procedures they did mention.
MPEX, SECURITY, and VEAUDIT all provide many more security
features; there just isn't enough space to describe them all here
(the combined reference manuals are now over 500 pages long)!

PLEASE NOTE: while the enclosed list may seem lengthy, we believe
that all of the information contained within it can be of great
benefit to you and your company.
Computer security is a complex subject, but a few minutes spent now
can save you much time later (especially if you have an audit coming
up soon) and may help prevent a serious loss of valuable company data
(and protect your own resume).

If you have any questions about any of these issues, or would like a
free demo tape of our products, please let us know.

Thank you,


Step One: Maintain account passwords:

   1. Verify that ALL accounts have passwords.
      Note that some HP and third-party software is installed without
      passwords. The system manager should promptly assign passwords
      to these accounts.
   2. Change passwords on all accounts, beginning immediately with
      accounts which have special capabilities (PM, SM, OP)...
   3. Change passwords on accounts that are installed with
      "default" passwords.

      Verifying that accounts have passwords, making sure that the
      passwords are not easily guessable, not too short, etc.
      -- these ideas all require that the System Manager
      or Security Manager visually scan a complete list of all
      account passwords.
      No one else can do it, because they aren't supposed to know the
      passwords.
      The list, which can only be produced by the :LISTACCT command,
      will be very big.
      There is no way to select subsets of accounts, like "accounts
      with special capabilities".
      Most importantly, doing this task manually is both extremely
      time-consuming and extremely error-prone.

      SECURITY/3000 can prevent anyone from logging on to any account
      that doesn't have an account password, and/or any user id that
      doesn't have a user password (or a SECURITY/3000 User Profile).
      Like virtually all SECURITY/3000 options, this can be enabled
      for all accounts, particular accounts, accounts with special
      capabilities -- the possibilities are too numerous to list here!

      VEAUDIT reports will show you:

         * passwordless users with SM/PM/OP capability;
         * all passwordless users;
         * a concise directory listing of all users, groups,
           and accounts and their capabilities, etc.,
           that indicates which ones don't have passwords.

   4. Purge accounts that are not needed for ongoing system operation.

      MPEX allows you to LISTF, STORE and/or PURGE files based on the
      last access, modify, restore, or create date. After purging all
      of the old files you no longer need, a single VEAUDIT command can
      purge all empty accounts on the system (except the ones you need
      to keep, even though they are empty).

      Of course, the VEAUDIT concise directory listing mentioned above
      is a very good way to make sure that you know what accounts are
      on your system, what capabilities they have, and more -- in a
      short, easy-to-use format.

   5. Institute procedures for changing all account passwords
      on a regular basis...

      Any manual procedure to ensure that passwords are regularly
      changed will, at least occasionally, fail to do so.
      SECURITY/3000 can automatically enforce password obsolescence,
      for both MPE and SECURITY/3000 passwords,
      guaranteeing that passwords will be changed on a regular basis;
      and, SECURITY/3000 keeps a "password history" to make sure users
      don't simply switch back and forth between the same two passwords.
      SECURITY/3000 can also immediately expire all SM/PM/OP account
      passwords; you can then change them all, knowing no one can log
      on using an old, unchanged one in the meantime.

      VEAUDIT provides a report that shows, among other things, account
      passwords that haven't been changed in the last 30 (or however
      many you like) days.

   6. Ensure that passwords cannot be guessed easily.

      With MPE alone, of course, you're left to a manual inspection
      of a long report again...

      SECURITY/3000 provides an extremely flexible password
      edit-checking mechanism.
      VEAUDIT, as we mentioned earlier, provides a report that shows
      passwords you currently have that are "easily guessable" (like
      SECRET, PASS, etc.), or are well-known "vendor defaults" (like
      HPONLY and RESTOREP, the default when :RESTORE creates an
      account, group, or user).

   7. Change relevant account passwords when employees with
      knowledge of passwords leave the organization.

      This is easier to say than to do.
      You must also change all jobs that contain the account
      password (and you have to find them first)!
      If you have multiple systems connected by NS, you must also
      find and change all jobs on other systems that log on via the
      :REMOTE HELLO command!

      STREAMX, part of SECURITY/3000, allows you to stream jobs that
      don't have embedded passwords or that have invalid embedded
      passwords -- in the !JOB-card or !REMOTE HELLO commands
      (STREAMX does a lot more than just insert passwords -- it is a
      virtual "job stream programming language"; see the SECURITY/3000
      reference manual for details)!

      If you are using SECURITY/3000 User Profiles, simply delete the
      user's profile from the SECUR database -- he will no longer be
      able to log on even if he does know the account password!


Step Two: Maintain user passwords:

   Note: All of the features described above for account
   passwords also apply to user passwords -- obsolescence, flexible
   password editing, VEAUDIT reports, etc.  These features are all
   designed both to replace very difficult, error-prone, manual
   methods and to implement things that can't be done manually
   at all.

   1. All users within special capability (PM, SM, OP, NM, NA)
      accounts should have user passwords.

      As mentioned above, SECURITY/3000 can prevent any user from
      logging on to any account (or just to "special capability"
      accounts) without an MPE user password or, optionally, a
      SECURITY/3000 User Profile (with its own password).

      Since a user with AM capability can give himself any capability
      that his account has, VEAUDIT reports consider an AM user in an
      account that has SM, PM, or OP to already have SM, PM, or OP;
      whether his AM-user id currently has it or not.

      Some of the relevant VEAUDIT reports include:

         * passwordless users with SM/PM/OP capability;
         * all passwordless users;
         * users protected only by account-level passwords
         * users with AM capability

   2. All users within accounts accessible by more than one
      person should have individual user passwords.

      With MPE alone, this requires assigning a separate MPE user ID
      to each user.
      Although MPE provides session names, there is no way to ensure
      that a given user will log on with a particular session name.
      Sometimes you may have to have users share a functional user id,
      like CLERK, but you
      still want to provide a unique identifier for each user.
      SECURITY/3000 User Profiles allow you to put one-way encrypted
      SECURITY/3000 passwords on individual session names.

   3. Purge obsolete and unused users from all accounts.
   4. Change relevant user passwords when employees with
      knowledge of passwords leave the organization.

      This is a good policy to establish, but... what if you forget?
      Or what if the user's manager forgets to notify you that someonehas
      left his department? And which passwords are "relevant", anyway?

      SECURITY/3000 obsolescence lets you ensure that old MPE user IDs
      cannot be used indefinitely to log on to your system.
      If no one is regularly using and changing a password, it will
      expire and no one can later "discover" (or remember!) it and log on.
      If someone is using the password, he will be given the chance
      to change it at logon time shortly before it expires.
      SECURITY/3000 also lets any user change his own password, any
      time he wants to (the easier it is for a user to change his
      password, the more likely he is to do it).

      Don't forget -- any user with AM capability can add as many MPE
      user IDs (without passwords) as he likes, whenever he wants to.
      Not only are there VEAUDIT reports to show directory changes
      (see below), but if you enable SECURITY/3000 User Profiles,
      simply adding a new MPE user id will not let anyone log on.
      You can selectively permit and/or forbid AM (and other) users
      to maintain User Profiles, account by account (or user by user,
      or by capability...), and log every add, change, delete, etc.

      VEAUDIT reports show (among many other things):

         * MPE passwords unchanged in the last nn (however many) days;
         * SECURITY/3000 passwords unchanged in the last nn days;
         * SECURITY/3000 user listing
         * recent MPE directory changes
         * recent SECURITY/3000 users changes


Step three: Control system access:

   1. Configure all modem ports to TYPE 16, SUBTYPE 1 to ensure
      that sessions will terminate when the associated line is
      disconnected.

      This configuration change indeed ensures that anyone who hangs
      up a dial-in line will be logged off.

      A much more serious problem, however, is the user who logs on
      (whether through a dial-in line or not), and then walks away
      from his terminal.
      Since, as far as the system knows, anyone who uses that terminal
      is the same user that was so carefully identified by passwords
      at logon time, this becomes a major security violation.

      The LOGOFF feature of SECURITY/3000, simply put, will log off
      anyone who leaves an unused terminal (dial-in or not) logged on.

   2. Investigate whether your PSDN [X.25] vendor can restrict
      access to your system to specific X.25 addresses.

   3. :DOWN modem ports until required.

      Unfortunately, this won't do you much good unless you have 24-hour
      operations support so that someone is there to :UP the modem port
      when you do need it!
      Even if you do have someone there, there are weaknesses in this
      method (Do you always remember to :DOWN it again when they're
      done?  Did you :DOWN all of your modem ports again after the last
      system restart?).  See our response to point 5 below for a better
      solution.

   4. Investigate hardware and software technologies for
      restricting dial-in access to authorized users.

      SECURITY/3000 provides terminal passwords, requiring anyone who
      logs on to a specific port or set of ports (like "all dial-in
      lines") to enter an extra password.
      This way, even normally authorized users can't dial in unless they
      know the terminal password.

      SECURITY/3000 also allows you to prohibit users from logging on
      to particular user IDs or accounts by: time-of-day, day-of-week,
      terminal, number of jobs running in a given account, existence
      of a particular file, etc. -- almost any arbitrary condition (or
      combination of conditions) you may want to specify!

   5. Require positive authentication of any caller requesting
      access to your system, such as the HP support engineer
      asking to connect to your system to gather data.

      One possible use of SECURITY/3000's ability to prohibit users
      from logging on based on "arbitrary conditions" (mentioned above)
      would be to set up a logon for MANAGER.TELESUP that requires a
      console operator to ":REPLY pin,YES" every time someone
      tries to log on as MANAGER.TELESUP (or, maybe, whenever they
      log on to a dial-in line)!

   6. Assign PSDN [X.25] passwords, if possible, and change them
      on a regular basis.


Step Four: Restrict privileges:

   1. When appropriate, use LOGON UDCs (with NOBREAK and
      :CONTINUE) for users that do not require access to MPE.

      This one is easy to set up!  However,
      the main problem here is that the user will have to re-log on
      to change from one application to another.
      Logging on is one of the slowest activities on an HP3000 (for
      many good reasons).

      SECURITY/3000 provides a much more flexible solution via its
      logon MENUs.  If you set up a user with a logon MENU, then
      when that user logs on he won't get direct access to MPE
      -- instead, he'll be shown the menu and asked to select the
      option he desires from it.
      SECURITY/3000 MENU options can execute MPE commands (or, if you
      own MPEX, MPEX commands), stream jobs, RUN programs, and more!
      MENUs can be used to perform virtually any task on the HP3000
      that could be performed without them!

      VEAUDIT reports will show you if your system UDCs can be
      easily disabled by anybody!

   2. Review the need for special capabilities (PM, SM, OP, NM,
      NA) at the account, group and program levels, and remove any
      unnecessary capabilities.  A group with PM capability should
      not have SAVE:ANY access.

      Note: that last sentence is so important, it will be discussed
      below.

      Special capabilities are perhaps one of the most frequently
      misunderstood aspects of system security.
      Not granting them to users who need them is just as bad as giving
      them out freely to everyone.
      A common example: in order for a user to control a printer in his
      own department, he must be :ALLOWed each of the spooler commands
      every time he logs on, or every user on the system must be
      :ALLOWed these commands at all times!
      We have even seen users given SM capability so that they could
      execute the :CONSOLE command to do what they want (sort of like
      opening a lock with a cannon -- it works, but makes it hard to
      close the door again afterwards...).  SECURITY/3000 has a way
      to automatically grant spooler (and other console) commands to
      particular users each time they log on.

      The VEAUDIT concise directory listing, as mentioned earlier, is
      a much more convenient way to determine what capabilities each
      account, group, and user has.  In addition, VEAUDIT reports:

         * users with SM/PM/OP capability;
         * groups with PM capability that don't need it;
         * users with AM capability -- including all capabilities their
           account has, which they can easily obtain.

   3. Remove all programs from your system which allow
      unprivileged users to obtain special capabilities.

      VEAUDIT provides a report of all privileged programs, so that
      you can identify them, determine what they do, and remove the
      ones that don't belong on your system.

   4. Program files with PM capability should not be RELEASEd.

      This is a very important recommendation, but -- how are you
      going to find these files?
      In fact, the PM program doesn't even have to be RELEASEd; simply
      having Write:ANY access is bad!  (For details, you might consult
      the book "Thoughts And Discourses On HP3000 Software"
      by Eugene Volokh).

      A single MPEX command,
      "%LISTF @.@.@(ISPROG and PROG.PMCAP and ISRELEASED),SEC",
      will show you all :RELEASEd PM program files.  (Do you notice
      how closely the command syntax matches the wording of the HP
      requirement?)

      Other kinds of :RELEASEd (or globally-writable or even -readable)
      files can create security loopholes, too.  VEAUDIT will reveal:

         * globally-writable program files in PM groups (of course);
         * globally-writable job streams that logs on as SM/PM/OP users
           (or do you read every line of every SM job before you :STREAM
           it?);
         * globally-readable job streams that contain SM/PM/OP
           passwords;
         * globally-readable job streams that contain any embedded
           passwords;
         * globally writable jobs that log on anywhere;
         * all globally writable files (including :RELEASEd).

      Of course, simply finding all :RELEASEd files is not
      enough -- how will you :SECURE them?  One at a time?
      MPEX's fileset-handling capabilities, combined with its many file
      attribute variables and functions, allow you to very easily
      :SECURE all :RELEASEd PM programs on your system.

   5. User-developed and third-party programs with PM capability
      should be reviewed for security implications and should be
      secured by a lockword if appropriate.

      As we mentioned above, VEAUDIT will find all PM programs on
      the system for you so that you can make sure you know what they
      all are.


Step five: Restrict access to sensitive information

   1. Restrict READ access to UDC files, job streams and other
      files containing user names, account names, passwords,
      remote system names, remote logons, phone numbers and other
      sensitive information.

      Restricting READ access only applies to the disc file; it won't
      help much if a copy of an SM job you were working on (or a
      program with embedded IMAGE passwords...) is later found in
      a trash can!
      R:GU access doesn't work on printouts!

      STREAMX allows you to completely avoid embedded passwords,
      lockwords, :REMOTE HELLO passwords, and much, much more!
      This applies to job streams, SECURITY/3000 menus, and
      MPEX command files, all of which can be executed by users
      who only have eXecute access!

   2. Secure the NETCON database and other files containing
      system or network configuration information.

   3. If possible, remove embedded passwords from job streams.

      But, of course it isn't possible!  MPE requires you
      to embed passwords in job streams!

      STREAMX lets you avoid having to embed passwords.
      It automatically inserts passwords (both
      "!JOB-card" and "!REMOTE HELLO" passwords) into job streams at
      job submission time.
      If the job contains an invalid password, STREAMX will replace
      it with the correct one; this allows you to change passwords
      immediately without having to find and edit all of your jobs.
      STREAMX will also automatically insert file lockwords.
      (All of this is, of course, subject to normal security
      restrictions).

      VEOPEN, another SECURITY/3000 feature, eliminates the need to
      embed IMAGE passwords in jobs and programs!

      VEAUDIT report 303 will show you job streams that have embedded,
      valid, passwords in them.

   4. Move sensitive files created by system maintenance
      processes such as BULDACCT.PRV.TELESUP.

   5. Restrict access to documentation relating to sensitive
      utility programs.


Step six: Monitor system activity:

   1. Enable System Logging events #2 (Job Initiation), #3 (Job
      Termination) and #15 (Console Log Event).

   2. Review system logs regularly for suspicious activity.

      Unfortunately, although MPE can log all kinds of interesting
      information, there is no convenient way to select from and
      report on these log files.

      SECURITY/3000 has its own logging facility, with very flexible
      reporting capabilities.  You can log all logons, job stream
      submissions, password changes, attempted security violations,
      and more.  You can sort and select log records based on any
      arbitrary conditions; e.g., you can list all access to the
      PAYROLL from the dialup lines, or all jobs submitted by the
      user JOE,CLERK.AP, or all attempted (but disallowed) logons
      between 10 PM and 5 AM.


Conclusion:

   Computer security is a very complex subject.  As we have seen,
   HP is doing their best to make you aware of many of the potential
   pitfalls and the need to "cover them up".
   VESOFT provides many tools (shovels?) to help you accomplish this.

Go to Adager's index of technical papers