Oracle Solaris Security Policy

Oracle Solaris Compliance baseline and recommended settings for general purpose operating systems installations.
Profile ID(default)

Revision History

Current version: 1.13942

  • accepted

Platforms

  • cpe:/o:oracle:solaris:11

Table of Contents

  1. Verify the OS configuration
  2. Verify file system information.
  3. Enable required services
  4. Tune kernel and network parameters
  5. Verify user configuration
  6. Check various system configuration items
  7. Verify audit configuration

Checklist

contains 210 rules

Verify the OS configurationgroup

The Oracle Solaris OS is installed with packages from a repository. The packages must arrive on the target system unmodified, and a set of protections for default services and executables be put in place.
For more information, see:

  • Installation Guide (http://www.oracle.com/pls/topic/lookup?ctx=solaris11&id=IOSUI)
  • Security Guidelines (http://www.oracle.com/pls/topic/lookup?ctx=solaris11&id=SYSADV7)

In this section, you verify package integrity, ensure that the booted system is protected, and verify that default OS protections are in place.

contains 3 rules

Package integrity is verifiedrule

Run 'pkg verify' to check that all installed Oracle Solaris software matches the packaging database and that ownership, permissions and content are correct.

Remediation description:
'pkg verify' has produced errors. Rerun the command and evaluate the errors. As appropriate, based on errors found, you should run 'pkg fix <package-fmri>' See the pkg(1) man page.
Remediation script:

    # pkg verify
    followed by
    # pkg fix <package-fmri>
      

The OS version is currentrule

Systems should be kept up to date to ensure that the latest security and operational updates are installed. You can run 'pkg update -n' to check the current state of the system against the configured repositories.

Remediation description:
The system is not up to date. Update the system.
Remediation script:

    # pkg update
      

Package signature checking is globally activatedrule

Package signature checking should be globally activated.

Remediation description:
The package signature policy should not be set to "ignore". See the pkg(1) man page.
Remediation script:

    #  pkg set-property signature-policy verify
      

Verify file system information.group

Oracle Solaris uses the ZFS file system by default. ZFS is robust, scalable, and easy to administer. ZFS can lay out filesystems over multiple devices, keeps the file system state consistent on disk, and verifies the data and metadata by using a user-selectable checksum algorithm. ZFS filesystems can hold zettabytes of data, and this data can be encrypted, compressed, mirrored, and backed up easily.
For more information, see http://www.oracle.com/pls/topic/lookup?ctx=solaris11&id=ZFSADMIN.
In this section, you ensure that no UFS filesystems are on the system, and that permissions on sensitive files are set correctly. You also protect the system from rogue files.

contains 16 rules

All local filesystems are ZFSrule

ZFS is the default filesystem for Oracle Solaris. On most systems other filesystem types should not be mounted. See the zfs(7FS) man page.

Remediation description:
Unmount any foreign file systems, such as UFS and HSFS. See the umount(1M) man page.
Remediation script:

    # umount <UFS-filesystem>
    # umount <HSFS-filesystem>>
      

Find and list files with extended attributesrule

Oracle Solaris implements extended attributes as files in an "extended attribute" name space visible only by using extended attribute aware commands. It is possible for attackers or malicious users to hide information in the extended attribute name space. Oracle Solaris currently does not ship any files with extended attributes. See the runat(1) and fsattr(5) man pages.

Remediation description:
Remove files with extended attributes or remove extended attributes from files.
Remediation script:

    # rm </path/to/filename>
    or
    # runat </path/to/filename> rm *
      

Find and list files with no known ownerrule

Files with no owner should be removed. Accounts that are closed should be archived and removed from the system.

Remediation description:
Remove unowned files. If the files were owned by an account that is closed, archive the files before removing them. See the rm(1) man page.
Remediation script:

    # rm <unowned-files>
      

Find and list .forward filesrule

.forward files can provide easy transport of information outside the firewall or outside the user's home directory.

Remediation description:
Remove inappropriate .forward files
Remediation script:

    # rm </path/to/.forward>
      

Find and list .netrc filesrule

The .netrc file contains data for logging in to a remote host over the network for file transfers by FTP.

Remediation description:
Remove unneeded .netrc files
Remediation script:

    # rm </path/to/.netrc>
      

Permissions on User .netrc Files are correctrule

The .netrc file contains login credentials to remote systems for file transfers by FTP. The permissions should be set to disallow read access by group and others. See the chmod(1) man page.

Remediation description:
If .netrc files are allowed, remove group and other permissions.
Remediation script:

    # chmod 600 </path/to/.netrc>
      

Permissions on User "." (Hidden) Files are correctrule

Hidden files in a user's home directory should be owned by the user. Directories should allow read-write-execute (rwx) permissions to the user only. Files should allow read-write (rw) permissions to the user only.

Remediation description:
Change permissions on a user's hidden files to 600 and change permissions on a users hidden directories to 700.
Remediation script:

    # chmod 600 </path/to/hidden-file>

    and

    # chmod 700 </path/to/hidden-directory/>
      

Find and list world writable filesrule

World-writable files are unprotected files. Modification and removal of a file should be limited to the owner of the file.

Remediation description:
Protect the files from being modified by a non-owner. See the chmod(1M) man page.
Remediation script:

    # chmod 644 <world-writable-file>
      

Find and list suid and sgid files other than those in standard Oracle Solaris packagesrule

Programs that set the UID and GID offer entry points for malicious code.

Remediation description:
Remove files that have the setuid or setgid bit set, or remove the bit.
Remediation script:

    # rm <setid-file>

    or

    # chmod -s <setid-file>
      

Find and list .rhosts filesrule

.rhosts files can provide easy access to remote hosts by bypassing the password requirement. These files should be removed.

Remediation description:
While rhosts-based login is also preventable on the remote host, it is best to remove any .rhosts files from user's home directories.
Remediation script:

    # rm </path/to/.rhost>
      

swap(1M) is encryptedrule

Swap space, either a ZFS volume or raw device, should be encrypted. Encryption ensures that any sensitive data, such as user passwords, are protected if the system needs to swap those pages out to disk. See the swap(1M) man page.

Remediation description:
To edit the vfstab file, you must become an administrator with the solaris.admin.edit/etc/vfstab authorization. The root role has this authorization.
Specify the encrypted option in vfstab(4) for the swap device entry.
Remediation script:

    # pfedit /etc/vfstab
    ...
    /dev/zvol/dsk/rpool/swap     -       -      swap     - no    encrypted
      

Non-root ZFS filesystems are encryptedrule

All ZFS file systems that are not the root file system should be encrypted. Encryption must be applied at filesystem creation. You must remember the encryption passphrase. Store it in a safe place. See the zfs(1M) and zfs_encrypt(1M) man pages.

Remediation description:
Back up any data needed from any unencrypted non-root file system. Unmount and destroy those offending file systems. Re-create the file systems with encryption on (default algorithm is aes-128-ccm). Remember the passphrase! Restore data (preserved earlier) to the file systems.
Remediation script:

    # zfs create -o encryption=on  <ZFS-non-root-filesystem>
      

A size limit is set on tmpfs(7FS)rule

The size of the tmpfs file system is not limited by default. To avoid a performance impact, you can limit the size of each tmpfs mount. See the mount_tmpfs(1M) and vfstab(4) man pages.

Remediation description:
To edit the vfstab file, you must become an administrator with the solaris.admin.edit/etc/vfstab authorization. To reboot the system, you must be assigned the Maintenance and Repair rights profile. The root role has all of these rights.
Set a limit on the tmpfs file system in the /etc/vfstab file, then reboot the system. For more information, see the Security Guidelines (http://www.oracle.com/pls/topic/lookup?ctx=solaris11&id=SYSADV7).
Remediation script:

    Determine the limit of the tmpfs file system according to the size
    of your disks.
    # pfedit /etc/vfstab
    ...
    swap  -  /tmp  tmpfs  -  yes  size=sz
    # reboot
      

World-writable directories have sticky bit setrule

The sticky bit on a directory prevents files in a world-writable directory from being deleted or moved by anyone except the owner of the file, or root. This is useful in directories that are common to many users, such as the /tmp directory.

Remediation description:
Set the sticky bit on any world-writable directories. See the chmod(1M) man page.
Remediation script:

    # chmod 1777 <world-writable-directory>
      

coreadm(1M) configuration is correctrule

Core dumps can contain sensitive data. Protections can include file permissions and logging core dump events. See the coreadm(1m) and chmod(1M) man pages.

Remediation description:
Locate the directory and protect the core dumps. Protections include file permissions and logging.
Remediation script:

    Use the coreadm command to view and set the current configuration.
    Configure the core files and protect the core dump directory. 

    $ coreadm
    global core file pattern: /var/share/cores/core.%f.%p
    global core file content: default
    init core file pattern: core
    init core file content: default
    global core dumps: enabled
    per-process core dumps: enabled
    global setid core dumps: disabled
    per-process setid core dumps: disabled
    global core dump logging: enabled

    To set the correct coreadm(1M) configuration:
    # coreadm -g /var/cores/core_%n_%f_%u_%g_%t_%p \
    -e log -e global -e global-setid \
    -d process -d proc-setid

    To check the permissions:
    # ls -ld /var/share/cores
    drwx------   2 root     sys           2 Nov  2  2014 cores/
    #

    To set the permissions correctly on the directory:
    # chmod 700 /var/share/cores
      

/etc/motd and /etc/issue contain appropriate policy textrule

The /etc/issue and /etc/motd (message of the day) files are designed to hold system and security information. The contents of the /etc/issue file are displayed prior to the login prompt on the console, or in a window if the file is called from the GNOME Display Manager (gdm). Several applications call this file, such as Secure Shell and FTP. The /etc/motd contents are displayed after login. By default, the /etc/motd file exists while the /etc/issue file does not. See the issue(4), gdm(1M), and sshd_config(4) man pages.

Remediation description:
Edit the /etc/motd file and create and edit the /etc/issue file to add the security policy text that your legal department supplies. An administrator with the Administrator Message Edit rights profile can edit these files.
Remediation script:

    # pfedit /etc/issue
    <legally-approved-text>
    # chown root:root /etc/issue
    # chmod 644 /etc/issue

    # pfedit /etc/motd
    <legally-approved-text>
      

Enable required servicesgroup

The Service Management Facility (SMF) provides an infrastructure to ease application and system service management. SMF augments the traditional UNIX startup scripts, init run levels, and configuration files. Management information for each service is stored in a configuration repository, which provides a simplified way to manage each service.
For more information, see the Service Management Facility Guide (http://www.oracle.com/pls/topic/lookup?ctx=solaris11&id=SVSVF).
Services that a system requires to function as a standalone system are enabled by default. In this section, you ensure that these services are still enabled.

contains 117 rules

Service svc:/system/coreadm is enabledrule

The coreadm service manages the core files that are produced by processes that terminate abnormally. See the core(4) and coreadm(1M) man pages.

Remediation description:
Use coreadm(1M) to configure the coreadm service, then enable the service.
Remediation script:

    # svcadm enable coreadm
      

Service svc:/system/cron is enabledrule

The cron service manages the cron(1M) command, which runs processes that execute commands at specified dates and times. See the at(1), crontab(1), and cron(1M) man pages.

Remediation description:
Configure your cron services, then enable the service.
Remediation script:

    # svcadm enable cron
      

Use of the cron(1M) and at(1) daemons is restrictedrule

The cron(1M) and at(1) daemons execute commands at specified dates and times. Only qualified accounts should be allowed to run commands at arbitrary times on the system.

Remediation description:

In order to restrict cron(1M) and at(1) properly, the file /etc/cron.d/cron.allow should exist and have only one entry for root.

In addition, the file /etc/cron.d/at.allow should exist and be empty.

To manually remediate failure on this check, run the following commands.

  1. Make sure root is the only entry in the /etc/cron.d/cron.allow
              # pfedit /etc/cron.d/cron.allow
                
    edit the file to only have "root"
  2. Make sure the /etc/cron.d/at.allow file exists and is empty
              # pfedit /etc/cron.d/at.allow
                
Remediation script:

    
    if [ -f /etc/cron.d/cron.allow ]; then
        /bin/mv /etc/cron.d/cron.allow /etc/cron.d/cron.allow.`date '+%FT%T'`
    fi    
    /bin/echo root > /etc/cron.d/cron.allow
    /bin/chmod 644 /etc/cron.d/cron.allow
    /bin/chgrp sys /etc/cron.d/cron.allow 
    if [ -f /etc/cron.d/at.allow ]; then
        /bin/mv /etc/cron.d/at.allow /etc/cron.d/at.allow.`date '+%FT%T'`
    fi
    /bin/touch /etc/cron.d/at.allow
    /bin/chmod 644 /etc/cron.d/at.allow
    /bin/chgrp sys /etc/cron.d/at.allow
      

Service svc:/system/cryptosvc is enabledrule

The cryptosvc service manages the use of cryptographic mechanisms from the Cryptographic Framework feature of Oracle Solaris. See the cryptoadm(1M) man page.

Remediation description:
Enable the cryptosvc service.
Remediation script:

    # svcadm enable cryptosvc
      

Service svc:/system/dbus is enabledrule

The dbus service manages the D-Bus message bus daemon. Programs use the message bus daemon to exchange messages with one another. For example, the Hardware Abstraction Layer (HAL) uses dbus. See the dbus-daemon(1) and hal(5) man pages.

Remediation description:
Enable the dbus service.
Remediation script:

    # svcadm enable dbus
      

Service svc:/system/hal is enabled in global zonerule

The Hardware Abstraction Layer (HAL) service manages dynamic hardware configuration changes. See the hal(5) man page. This service only runs in the global zone.

Remediation description:
Enable the hal service.
Remediation script:

    # svcadm enable hal
      

Service svc:/system/identity:domain is enabledrule

The identity:domain service instance manages system identity. See the domainname(1M) man page.

Remediation description:
Enable the identity:domain service.
Remediation script:

    # svcadm enable identity:domain
      

Service svc:/system/intrd is enabled in global zonerule

The interrupt balancer (intrd) service monitors the assignments between interrupts and CPUs to ensure optimal performance. See the intrd(1M) man page. This service only runs in the global zone.

Remediation description:
Enable the intrd service.
Remediation script:

    # svcadm enable intrd
      

Service svc:/system/keymap is enabled in global zonerule

The keymap service manages the default configuration of the keyboard. See the kbd(1) man page. This service only runs in the global zone.

Remediation description:
Enable the keymap service.
Remediation script:

    # svcadm enable keymap
      

Service svc:/system/picl is enabled in global zonerule

The platform information and control (picl) service manages the publishing of platform configuration information that can respond to client requests for information about the configuration. See the picld(1M) and prtcpicl(1M) man pages. This service only runs in the global zone.

Remediation description:
Enable the picl service.
Remediation script:

    # svcadm enable picl
      

Service svc:/system/scheduler is enabled in global zonerule

The system/scheduler service manages the process scheduler. See the dispadmin(1M) man page. This service only runs in the global zone.

Remediation description:
Enable the system/scheduler service.
Remediation script:

    # svcadm enable system/scheduler
      

Service svc:/system/system-log is enabledrule

The system-log service reads and forwards system messages to the appropriate log files or users. See the syslogd(1M) and rsyslogd(1M) man pages.

Remediation description:
The system-log service has two instances, rsyslog and default. The rsyslog instance is installed with the pkg:/system/rsyslog package. Enable the system-log:rsyslog or system-log:default service.
Remediation script:

    # svcadm enable system/system-log:default 

    or

    # svcadm enable system/system-log:rsyslog
      

Service svc:/system/utmp is enabledrule

The utmp service manages a table of processes, detects when a process has terminated, and updates the table. See the utmpd(1M) man page.

Remediation description:
Enable the utmp service.
Remediation script:

    # svcadm enable system/utmp
      

Service svc:/system/zones is enabled in global zonerule

The zones service manages the autoboot and graceful shutdown of zones. See the zones(5) and zonecfg(1M) man pages. This service only runs in the global zone.

Remediation description:
Enable the zones service.
Remediation script:

    # svcadm enable system/zones
      

Service svc:/system/zones-install is enabledrule

The zones-install service manages the auto-installation of zones.

Remediation description:
Enable the zones-install service.
Remediation script:

    # svcadm enable system/zones-install
      

Service svc:/network/rpc/bind is enabledrule

The rpc/bind service manages the conversion of RPC program numbers to universal addresses. See the rpcbind(1M) man page.

Remediation description:
Enable the rpc/bind service.
Remediation script:

    # svcadm enable rpc/bind
      

Service svc:/system/name-service/switch is enabledrule

The name-service/switch service manages the databases that contain information about hosts, users, and groups. See the nsswitch.conf(4) man page.

Remediation description:
Enable the name-service/switch service.
Remediation script:

    # svcadm enable name-service/switch
      

Service svc:/system/name-service/cache is enabledrule

The name-service/cache service manages the caching of name service information. See the nscd(1M) man page.

Remediation description:
Enable the name-service/cache service.
Remediation script:

    # svcadm enable name-service/cache
      

Service svc:/network/nfs/status is disabled or not installedrule

The NFS status monitor service interacts with lockd(1M) to provide the crash and recovery functions for the locking services on NFS.

Remediation description:
Disable this service if the system is not an NFS client or server.
Remediation script:

    # svcadm disable svc:/network/nfs/status
      

Service svc:/network/nfs/nlockmgr is disabled or not installedrule

The NFS lock manager supports record locking operations on NFS files in NFSv2 and NFSv3. See the lockd(1M) and sharectl(1M) man pages.

Remediation description:
Disable the service if you are either 1) not using NFS at all or 2) using NFSv4.
Remediation script:

    # svcadm disable svc:/network/nfs/nlockmgr
      

Service svc:/network/nfs/client:default is in disabled staterule

The NFS client service is needed only if the system is mounting NFS file systems specified in /etc/vfstab.

If the system is not mounting file systems specified there, the service can be disabled or its package uninstalled. See the mount_nfs(1M) man page.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/nfs/client:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/nfs/client:default
                
Remediation script:

    nfs_client_fmri=svc:/network/nfs/client:default
    policy_nfs_client=disabled
    if [ $policy_nfs_client == enabled ]; then
            svcadm enable -s $nfs_client_fmri
    else
            svcadm disable -s $nfs_client_fmri
    fi
      

Service svc:/network/nfs/server:default is in disabled staterule

The NFS Server service handles client file system requests over NFS version 2, 3, and 4.

If this system is not an NFS server, this service should be disabled or its package uninstalled. See the nfsd(1M) man page.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/nfs/server:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/nfs/server:default
                
Remediation script:

    nfs_server_fmri=svc:/network/nfs/server:default
    policy_nfs_server=disabled
    if [ $policy_nfs_server == enabled ]; then
            svcadm enable -s $nfs_server_fmri
    else
            svcadm disable -s $nfs_server_fmri
    fi
      

Service svc:/network/nfs/fedfs-client:default is in disabled staterule

The Federated Filesystem (FedFS) client service manages defaults and connection information for LDAP servers that store FedFS information.

If this system is not using FedFS for DNS SRV records or LDAP-based referrals, this service must be disabled or its package uninstalled. See the nsdbparams(1M) and fedfs(5) man pages.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/nfs/fedfs-client:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/nfs/fedfs-client:default
                
Remediation script:

    fedfs_client_fmri=svc:/network/nfs/fedfs-client:default
    policy_fedfs_client=disabled
    if [ $policy_fedfs_client == enabled ]; then
            svcadm enable -s $fedfs_client_fmri
    else
            svcadm disable -s $fedfs_client_fmri
    fi
      

Service svc:/network/nfs/rquota is disabled or not installedrule

The remote quota server returns quotas for a user of a local file system which is mounted over NFS. The results are used by quota(1M) to display user quotas for remote file systems. The rquotad(1M) daemon is normally invoked by inetd(1M).

Remediation description:
Disable the rquota service. It provides information about the network to potentially malicious users.
Remediation script:

    # svcadm disable svc:/network/nfs/rquota
      

Service svc:/network/nfs/cbd:default is in disabled staterule

The NFS cbd service manages communication endpoints for the NFS Version 4 protocol. The nfs4cbd(1M) daemon runs on the NFS Version 4 client and creates a listener port for callbacks.

If this system is not an NFS server, this service should be disabled or its package uninstalled.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/nfs/cbd:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/nfs/cbd:default
                
Remediation script:

    nfs_cbd_fmri=svc:/network/nfs/cbd:default
    policy_nfs_cbd=disabled
    if [ $policy_nfs_cbd == enabled ]; then
            svcadm enable -s $nfs_cbd_fmri
    else
            svcadm disable -s $nfs_cbd_fmri
    fi
      

Service svc:/network/nfs/mapid:default is in disabled staterule

The NFS user and group ID mapping daemon service maps to and from NFS version 4 owner and owner_group identification attributes and local UID and GID numbers used by both the NFS version 4 client and server. See the nfsmapid(1M) man page.

If this system is not an NFS server, this service should be disabled or its package uninstalled.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/nfs/mapid:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/nfs/mapid:default
                
Remediation script:

    nfs_mapid_fmri=svc:/network/nfs/mapid:default
    policy_nfs_mapid=disabled
    if [ $policy_nfs_mapid == enabled ]; then
            svcadm enable -s $nfs_mapid_fmri
    else
            svcadm disable -s $nfs_mapid_fmri
    fi
      

Service svc:/network/smb/client is disabled or not installedrule

The SMB/CIFS client allows an Oracle Solaris system to natively mount file systems by means of SMB shares from SMB enabled servers such as a Windows system. See the mount_smbfs(1M) man page.

Remediation description:
Uninstall the pkg:/system/file-system/smb package or disable the service.
Remediation script:

    # pkg uninstall file-system/smb

    or

    # svcadm disable smb/client
      

Service svc:/network/ftp:default is in disabled staterule

The FTP service provides unencrypted file transfer service and uses plain text authentication. The secure copy program (scp(1)) program should be used instead of FTP as it provides encrypted authentication and file transfer.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/ftp:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/ftp:default
                
Remediation script:

    ftp_fmri=svc:/network/ftp:default
    policy_ftp=disabled
    if [ $policy_ftp == enabled ]; then
            svcadm enable -s $ftp_fmri
    else
            svcadm disable -s $ftp_fmri
    fi
      

Service svc:/network/ssh:default is in disabled staterule

The ssh service manages the Secure Shell (ssh) daemon, which provides secure encrypted communications between two untrusted hosts over an insecure network. By default, ssh is the only network service that can send and receive network packets on a newly-installed Oracle Solaris system. See the sshd(1M) man page.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/ssh:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/ssh:default
                
Remediation script:

    ssh_fmri=svc:/network/ssh:default
    policy_ssh=disabled
    if [ $policy_ssh == enabled ]; then
            svcadm enable -s $ssh_fmri
    else
            svcadm disable -s $ssh_fmri
    fi
      

Service svc:/network/smtp:sendmail is enabledrule

The sendmail service should be running. Otherwise, important system mail to root will not be delivered. If receipt of remote mail is not required, sendmail should be in local_only mode. See check OSC-68505-sendmail-local-only to verify that sendmail is running in local_only mode. See the sendmail(1M) man page.

Remediation description:
Enable the smtp:sendmail service.
Remediation script:

    # svcadm enable smtp:sendmail
      

Service svc:/network/sendmail-client is enabledrule

The sendmail-client service manages email on a client. The sendmail-client service needs to be running to ensure delivery of mail to local accounts such as root. See the sendmail(1M) man page.

Remediation description:
Enable the sendmail-client service.
Remediation script:

    # svcadm enable sendmail-client
      

Service svc:/network/inetd is enabledrule

The inetd service manages the restarting of inet services. See the inetd(1M) man page.

Remediation description:
Enable the inetd service.
Remediation script:

    # svcadm enable inetd
      

Service svc:/system/filesystem/autofs:default is in disabled staterule

The autofs service manages the mount points for the automount(1M) daemon.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/system/filesystem/autofs:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/system/filesystem/autofs:default
                
Remediation script:

    autofs_fmri=svc:/system/filesystem/autofs:default
    policy_autofs=disabled
    if [ $policy_autofs == enabled ]; then
            svcadm enable -s $autofs_fmri
    else
            svcadm disable -s $autofs_fmri
    fi
      

Service svc:/system/filesystem/rmvolmgr is disabled or not installedrule

The removable volume manager is a HAL-aware volume manager that can automatically mount and unmount removable media and hot-pluggable storage. Users might import malicious programs, or transfer sensitive data off the system. See the rmvolmgr(1M) man page. This service only runs in the global zone.

Remediation description:
Disable the remote volume manager service.
Remediation script:

    # svcadm disable svc:/system/filesystem/rmvolmgr
      

Service svc:/system/filesystem/rmvolmgr is enabledrule

The removable volume manager is a HAL-aware volume manager that can automatically mount and unmount removable media and hot-pluggable storage. Users might import malicious programs, or transfer sensitive data off the system. See the rmvolmgr(1M) man page.

Remediation description:
Enable the remote volume manager service.
Remediation script:

    # svcadm enable svc:/system/filesystem/rmvolmgr
      

Service svc:/system/power management is enabled in global zonerule

The system/power service manages the power management configuration of an Oracle Solaris system. See the poweradm(1M) man page. This service only runs in the global zone.

Remediation description:
Enable the power management service.
Remediation script:

    # svcadm enable system/power
      

Service svc:/network/dns/multicast:default is in disabled staterule

Multicast DNS (mDNS) implements DNS in a small network where no conventional DNS server has been installed. DNS Service Discovery (DNS-SD) extends multicast DNS to also provide simple service discovery (network browsing). This service is disabled by default, because while it can ease finding hosts and servers, it can also provide information about the network to malicious users. See the named(1M) and mdnsd(1M) man pages.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/dns/multicast:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/dns/multicast:default
                
Remediation script:

    tcp_dns_multicast_fmri=svc:/network/dns/multicast:default
    policy_tcp_dns_multicast=disabled
    if [ $policy_tcp_dns_multicast == enabled ]; then
            svcadm enable -s $tcp_dns_multicast_fmri
    else
            svcadm disable -s $tcp_dns_multicast_fmri
    fi
      

Service svc:/network/dhcp-server:default is in disabled staterule

By default, the dhcp-server service is not installed. If you are not using this system as a DHCP server, you should not install or enable the service.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/dhcp-server:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/dhcp-server:default
                
Remediation script:

    dhcp_server_fmri=svc:/network/dhcp-server:default
    policy_dhcp_server=disabled
    if [ $policy_dhcp_server == enabled ]; then
            svcadm enable -s $dhcp_server_fmri
    else
            svcadm disable -s $dhcp_server_fmri
    fi
      

Service svc:/network/ntp is enabled and properly configured as a clientrule

The Network Time Protocol daemon should be enabled and properly configured as a client. The /etc/inet/ntp.conf file must include at least one server definition. The file should also contain the line "restrict default ignore" to prevent the client from also acting as a server.

Remediation description:
The ntp service should be installed on all systems where security and compliance is desired. If it is not installed on your system, install it using 'pkg install service/network/ntp'. Then configure the service properly as a client and enable the service.
Remediation script:

    If needed
    # pkg install service/network/ntp
    then
    # vi /etc/inet/ntp.conf
    ...
    server <server IP address> iburst
    restrict default ignore
    ...
    # svcadm enable ntp
      

Service svc:/network/rarp:default is in disabled staterule

This legacy service responds to DARPA reverse address resolution protocol (RARP) requests. Historically, RARP was used by machines at boot time to discover their Internet Protocol (IP) address. By default, this service is not installed. See the rarpd(1M) and rarp(7P) man pages.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/rarp:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/rarp:default
                
Remediation script:

    rarp_fmri=svc:/network/rarp:default
    policy_rarp=disabled
    if [ $policy_rarp == enabled ]; then
            svcadm enable -s $rarp_fmri
    else
            svcadm disable -s $rarp_fmri
    fi
      

Service svc:/network/slp:default is in disabled staterule

This legacy service provides common server functionality for the Service Location Protocol (SLP) versions 1 and 2, as defined by IETF in RFC 2165 and RFC 2608. SLP discovers and selects network services. By default, this service is not enabled. See the slpd(1M), slp.conf(4), and slp(7P) man pages.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/slp:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/slp:default
                
Remediation script:

    slp_fmri=svc:/network/slp:default
    policy_slp=disabled
    if [ $policy_slp == enabled ]; then
            svcadm enable -s $slp_fmri
    else
            svcadm disable -s $slp_fmri
    fi
      

Service svc:/network/security/kadmin:default is in disabled staterule

The Kerberos administration daemon service runs on the master key distribution center (KDC), which stores the principal and policy databases. This service should not be run on a system that is not a KDC. See the kadmind(1M) man page.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/security/kadmin:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/security/kadmin:default
                
Remediation script:

    kadmin_fmri=svc:/network/security/kadmin:default
    policy_kadmin=disabled
    if [ $policy_kadmin == enabled ]; then
            svcadm enable -s $kadmin_fmri
    else
            svcadm disable -s $kadmin_fmri
    fi
      

Service svc:/network/security/krb5_prop:default is in disabled staterule

The Kerberos propagation daemon runs on slave KDC servers to update the database from the master KDC. See the kpropd(1M) man page.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/security/krb5_prop:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/security/krb5_prop:default
                
Remediation script:

    krb5_prop_fmri=svc:/network/security/krb5_prop:default
    policy_krb5_prop=disabled
    if [ $policy_krb5_prop == enabled ]; then
            svcadm enable -s $krb5_prop_fmri
    else
            svcadm disable -s $krb5_prop_fmri
    fi
      

Service svc:/network/security/krb5kdc:default is in disabled staterule

The Kerberos key distribution center service manages Kerberos tickets on the master and slave KDCs. See the krb5kdc(1M) man page.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/security/krb5kdc:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/security/krb5kdc:default
                
Remediation script:

    krb5kdc_fmri=svc:/network/security/krb5kdc:default
    policy_krb5kdc=disabled
    if [ $policy_krb5kdc == enabled ]; then
            svcadm enable -s $krb5kdc_fmri
    else
            svcadm disable -s $krb5kdc_fmri
    fi
      

Service svc:/application/management/net-snmp:default is in disabled staterule

The Simple Network Management Protocol (SNMP) is a widely used protocol for monitoring the health and welfare of network equipment. The net-snmp SNMP daemon processes requests from SNMP management software. See the snmpd(8) and snmp_config(5) man pages.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/application/management/net-snmp:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/application/management/net-snmp:default
                
Remediation script:

    snmp_fmri=svc:/application/management/net-snmp:default
    policy_snmp=disabled
    if [ $policy_snmp == enabled ]; then
            svcadm enable -s $snmp_fmri
    else
            svcadm disable -s $snmp_fmri
    fi
      

Service svc:/application/cups/in-lpd:default is in disabled staterule

This service supports the CUPS Line Printer Daemon (LPD) for legacy client systems that use the LPD protocol. By default, this service is not installed. See the cups-lpd(8) man page.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/application/cups/in-lpd:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/application/cups/in-lpd:default
                
Remediation script:

    lpd_fmri=svc:/application/cups/in-lpd:default
    policy_lpd=disabled
    if [ $policy_lpd == enabled ]; then
            svcadm enable -s $lpd_fmri
    else
            svcadm disable -s $lpd_fmri
    fi
      

Service svc:/application/stosreg is enabled in global zonerule

The service tag OS registry inserter (stosreg) service manages the service tag registry. See the stclient(1M) man page. This service only runs in the global zone.

Remediation description:
Enable the stosreg service.
Remediation script:

    # svcadm enable stosreg
      

Service svc:/system/ocm is enabledrule

The Oracle Configuration Manager (ocm) service collects configuration information and uploads it to the Oracle repository. See the configCCR(1M) man page.

Remediation description:
Enable the ocm service.
Remediation script:

    # svcadm enable ocm
      

Service svc:/network/finger is disabled or not installedrule

This legacy service enables users to display information about local and remote users. By default, this service is not installed as part of solaris-small-server. It is however installed as part of solaris-large-server. This service is almost never needed and either should be removed or at least, disabled. See the fingerd(1M) and finger(1) man pages.

Remediation description:
Uninstall the pkg:/service/network/finger and pkg:/network/finger packages or disable the service.
Remediation script:

    # svcadm disable finger

    or

    # pkg uninstall pkg:/service/network/finger
    # pkg uninstall pkg:/network/finger
      

Service svc:/network/login:rlogin is disabled or not installedrule

This legacy service enables users to log in remotely. By default, this service is not installed as part of solaris-small-server. See the rlogind(1M) and rlogin(1) man pages.

Remediation description:
Uninstall the pkg:/service/network/legacy-remote-utilities package or disable the service.
Remediation script:

    # svcadm disable network/login:rlogin

    or

    # pkg uninstall pkg:/service/network/legacy-remote-utilities
      

Service svc:/network/login:klogin is disabled or not installedrule

This service enables users to log in remotely with Kerberos authentication. By default, this service is not installed. See the rlogind(1M) and rlogin(1) man pages.

Remediation description:
Uninstall the pkg:/service/network/legacy-remote-utilities package or disable the service.
Remediation script:

    # svcadm disable network/login:klogin
      

Service svc:/network/login:eklogin is disabled or not installedrule

This service enables users to log in remotely with Kerberos authentication over an encrypted line. By default, this service is not installed. See the rlogind(1M) and rlogin(1) man pages.

Remediation description:
Uninstall the pkg:/service/network/legacy-remote-utilities package or disable the service.
Remediation script:

    # svcadm disable network/login:eklogin
      

Service svc:/network/shell:default is disabled or not installedrule

The remote shell daemon provides remote execution facilities with authentication based on Kerberos V5 or privileged port numbers. The Secure Shell service, svc:/network/ssh, is the best choice for remote execution. See the rshd(1M) and sshd(1M) man pages.

Remediation description:
Disable this service or uninstall the package. To view the contents of the package, run the 'pkg contents legacy-remote-utilities' command.
Remediation script:

    # pkg uninstall legacy-remote-utilities

    or

    # svcadm disable svc:/network/shell:default
      

Service svc:/network/shell:kshell is disabled or not installedrule

The remote shell daemon provides remote execution facilities with authentication based on Kerberos V5 or privileged port numbers. The Secure Shell service, svc:/network/ssh, is the best choice for remote execution. See the rshd(1M) and sshd(1M) man pages.

Remediation description:
Disable this service or uninstall the package. To view the contents of the package, run the 'pkg contents legacy-remote-utilities' command.
Remediation script:

    # pkg uninstall legacy-remote-utilities

    or

    # svcadm disable svc:/network/shell:kshell
      

Service svc:/network/telnet is disabled or not installedrule

This legacy service supports the DARPA standard TELNET virtual terminal protocol to connect to a remote system over the TELNET port. By default, this service is not installed. See the telnetd(1M) and telnet(1) man pages.

Remediation description:
Uninstall the telnet packages or disable the service.
Remediation script:

    # pkg uninstall pkg:/network/telnet
    # pkg uninstall pkg:/service/network/telnet

    or

    # svcadm disable telnet
      

Service svc:/network/uucp is disabled or not installedrule

This legacy service, UNIX to UNIX copy, provides a user interface for requesting file copy operations, typically used when constant connectivity is not possible. By default, this service is not installed. See the uucpd(1M) and uucp(1C) man pages.

Remediation description:
Uninstall the uucp package or disable the service.
Remediation script:

    # pkg uninstall pkg:/service/network/uucp

    or

    # svcadm disable network/uucp
      

Service svc:/network/chargen:stream is disabled or not installedrule

This legacy service provides the server side of the Character Generator Protocol (RFC 864) for TCP. See the in.chargend(1M) man page.

Remediation description:
Remove the legacy-network-services package. To view the contents of the package, run the 'pkg contents legacy-network-services' command.
Remediation script:

    # pkg uninstall legacy-network-services
      

Service svc:/network/chargen:dgram is disabled or not installedrule

This legacy service provides the server side of the Character Generator Protocol (RFC 864) for UDP. See the in.chargend(1M) man page.

Remediation description:
Remove the legacy-network-services package. To view the contents of the package, run the 'pkg contents legacy-network-services' command.
Remediation script:

    # pkg uninstall legacy-network-services
      

Service svc:/network/daytime:stream is disabled or not installedrule

This legacy service provides the server side of the Daytime Protocol (RFC 867) for TCP. See the in.daytimed(1M) man page.

Remediation description:
Remove the legacy-network-services package. To view the contents of the package, run the 'pkg contents legacy-network-services' command.
Remediation script:

    # pkg uninstall legacy-network-services
      

Service svc:/network/daytime:dgram is disabled or not installedrule

This legacy service provides the server side of the Daytime Protocol (RFC 867) for UDP. See the in.daytimed(1M) man page.

Remediation description:
Remove the legacy-network-services package. To view the contents of the package, run the 'pkg contents legacy-network-services' command.
Remediation script:

    # pkg uninstall legacy-network-services
      

Service svc:/network/discard:stream is disabled or not installedrule

This legacy service provides the server side of the Discard Protocol (RFC 863) for TCP. See the in.discardd(1M) man page.

Remediation description:
Remove the legacy-network-services package. To view the contents of the package, run the 'pkg contents legacy-network-services' command.
Remediation script:

    # pkg uninstall legacy-network-services
      

Service svc:/network/discard:dgram is disabled or not installedrule

This legacy service provides the server side of the Discard Protocol (RFC 863) for UDP. See the in.discardd(1M) man page.

Remediation description:
Remove the legacy-network-services package. To view the contents of the package, run the 'pkg contents legacy-network-services' command.
Remediation script:

    # pkg uninstall legacy-network-services
      

Service svc:/network/echo:stream is disabled or not installedrule

This legacy service provides the server side of the Echo Protocol (RFC 862) for TCP. See the in.echod(1M) man page.

Remediation description:
Remove the legacy-network-services package. To view the contents of the package, run the 'pkg contents legacy-network-services' command.
Remediation script:

    # pkg uninstall legacy-network-services
      

Service svc:/network/echo:dgram is disabled or not installedrule

This legacy service provides the server side of the Echo Protocol (RFC 862) for UDP. See the in.echod(1M) man page.

Remediation description:
Remove the legacy-network-services package. To view the contents of the package, run the 'pkg contents legacy-network-services' command.
Remediation script:

    # pkg uninstall legacy-network-services
      

Service svc:/network/time:stream is disabled or not installedrule

This legacy service provides the server side of the Time Protocol (RFC 868) for TCP. See the in.timed(1M) man page.

Remediation description:
Remove the legacy-network-services package. To view the contents of the package, run the 'pkg contents legacy-network-services' command.
Remediation script:

    # pkg uninstall legacy-network-services
      

Service svc:/network/time:dgram is disabled or not installedrule

This legacy service provides the server side of the Time Protocol (RFC 868) for UDP. See the in.timed(1M) man page.

Remediation description:
Remove the legacy-network-services package. To view the contents of the package, run the 'pkg contents legacy-network-services' command.
Remediation script:

    # pkg uninstall legacy-network-services
      

Service svc:/network/comsat is disabled or not installedrule

This legacy service process listens for reports of incoming mail and notifies interested users. By default, this service is not installed as part of solaris-small-server. See the comsat(1M) man page.

Remediation description:
Uninstall the pkg:/service/network/comsat package or disable the service.
Remediation script:

    # pkg uninstall network/comsat

    or

    # svcadm disable comsat
      

Service svc:/network/rexec is disabled or not installedrule

This legacy service provides remote execution facilities with authentication based on user names and passwords. See the in.rexecd(1M) and rexec(3C) man pages.

Remediation description:
Disable the rexec service. You can also uninstall the legacy-remote-utilities package. To view the contents of the package, run the 'pkg contents legacy-remote-utilities' command.
Remediation script:

    # pkg uninstall service/network/legacy-remote-utilities

    or

    # svcadm disable network/rexec:default
      

Service svc:/network/talk is disabled or not installedrule

This legacy program enables two-way, screen-oriented communication. For more information, see the talk(1) and mesg(1) man pages.

Remediation description:
Disable talk(1) by using the mesg(1) command.
Remediation script:

    # mesg -n
      

Service svc:/network/stdiscover is disabled or not installedrule

This legacy program is used to locate the service tag listener. For more information, see the in.stdiscover(1M) man page.

Remediation description:
Disable the stdiscover service.
Remediation script:

    # svcadm disable stdiscover:default
      

Service svc:/network/stlisten is disabled or not installedrule

This legacy program is used to listen for discovery probes. See the in.stlisten(1M) man page.

Remediation description:
Disable the stlisten service.
Remediation script:

    # svcadm disable stlisten:default
      

Service svc:/network/rpc/gss is disabledrule

The generic security service (gss) service manages the generation and validation of Generic Security Service Application Program Interface (GSS-API) security tokens. The gssd(1M) daemon operates between the kernel rpc and the GSS-API.

Remediation description:
Disable the rpc/gss service.
Remediation script:

    # svcadm disable rpc/gss
      

Service svc:/network/rpc/gss is enabledrule

The generic security service (gss) service manages the generation and validation of Generic Security Service Application Program Interface (GSS-API) security tokens. The gssd(1M) daemon operates between the kernel rpc and the GSS-API.

Remediation description:
Enable the rpc/gss service.
Remediation script:

    # svcadm enable rpc/gss
      

Service svc:/network/rpc/gss is enabled if and only if Kerberos is configuredrule

The generic security service (gss) service manages the generation and validation of Generic Security Service Application Program Interface (GSS-API) security tokens. The gssd(1M) daemon operates between the kernel rpc and the GSS-API. Kerberos uses this service.

Remediation description:
Disable the rpc/gss service if Kerberos is not configured and not in use.
Remediation script:

    # svcadm enable rpc/gss
      

Service svc:/network/rpc/mdcommd is disabled, or not installedrule

rpc.mdcommd is an rpc(4) daemon that functions as a server process. rpc.mdcommd manages communication among hosts participating in a multi-node disk set configuration. rpc.mdcommd is invoked by inetd(1M).

Remediation description:
Disable the rpc.mdcommd service.
Remediation script:

    # svcadm disable rpc/mdcomm:default
      

Service svc:/network/rpc/mdcommd is enabledrule

rpc.mdcommd(1M) is an rpc(4) daemon that functions as a server process. rpc.mdcommd(1M) manages communication among hosts participating in a multi-node disk set configuration. rpc.mdcommd is invoked by inetd(1M).

Remediation description:
Enable the rpc.mdcommd service.
Remediation script:

    # svcadm enable rpc/mdcomm:default
      

Service svc:/network/rpc/smserver is disabled or not installedrule

This program is used to access removable media devices. See the rpc.smserverd(1M) man page.

Remediation description:
Disable the smserver service.
Remediation script:

    # svcadm disable rpc/smserver:default
      

Service svc:/network/rpc/smserver is enabledrule

This program is used to access removable media devices. See the rpc.smserverd(1M) man page.

Remediation description:
Enable the smserver service.
Remediation script:

    # svcadm enable rpc/smserver:default
      

Service svc:/network/security/ktkt_warn is disabled or not installedrule

The Kerberos V5 warning messages daemon on Kerberos clients can warn users when their Kerberos tickets are about to expire and can renew the tickets before they expire. By default, this service is disabled. If the system is Kerberos client, then this service should be enabled. See the ktkt_warnd(1M) man page.

Remediation description:
On systems that are not part of a Kerberos realm, uninstall any Kerberos packages. Disable this service on all systems in a Kerberos realm that are not KDCs.`
Remediation script:

    # pkg uninstall pkg:/system/security/kerberos-5
    # pkg uninstall pkg:/service/security/kerberos-5

    or

    # svcadm disable svc:/network/security/ktkt_warn
      

Service svc:/network/security/ktkt_warn is enabledrule

The Kerberos V5 warning messages daemon on Kerberos clients can warn users when their Kerberos tickets are about to expire and can renew the tickets before they expire. By default, this service is disabled. See the ktkt_warnd(1M) man page.

Remediation description:
Enable this service on all systems in a Kerberos realm. On systems that are not part of a Kerberos realms, remove the package.
Remediation script:

    # svcadm enable svc:/network/security/ktkt_warn
      

Service svc:/network/rpc/rstat is disabled or not installedrule

This legacy service displays performance data from a remote system. By default, this service is not installed. See the rstatd(1M) and rstat(3RPC) man pages.

Remediation description:
Uninstall the pkg:/service/network/legacy-remote-utilities package or disable the service.
Remediation script:

    # pkg uninstall legacy-remote-utilities

    or

    # svcadm disable rpc/rstat
      

Service svc:/network/rpc/rusers is disabled or not installedrule

This legacy service displays information about users on a remote system. By default, this service is not installed. See the rusersd(1M) and rusers(1) man pages.

Remediation description:
Uninstall the pkg:/service/network/legacy-remote-utilities package or disable the service.
Remediation script:

    # pkg uninstall legacy-remote-utilities

    or

    # svcadm disable rpc/rusers
      

Service svc:/network/rpc/meta is disabled or not installedrule

This legacy service uses an rpc(4) daemon to manage local copies of metadevice diskset information. By default, this service is not installed. See the rpc.metad(1M) man page.

Remediation description:
Uninstall the package or disable the service.
Remediation script:

    # pkg uninstall storage/svm

    or

    # svcadm disable rpc/meta
      

Service svc:/network/rpc/metamed is disabled or not installedrule

This legacy service manages mediator information for 2-string high availability configurations. See the rpc.metamedd(1M) man page.

Remediation description:
Uninstall the package or disable the service.
Remediation script:

    # pkg uninstall storage/svm

    or

    # svcadm disable rpc/metamed
      

Service svc:/network/rpc/metamh is disabled or not installedrule

This legacy service uses an rpc(4) daemon to manage multi-hosted disks. By default, this service is not installed. See the rpc.metamhd(1M) man page.

Remediation description:
Uninstall the package or disable the service.
Remediation script:

    # pkg uninstall storage/svm

    or

    # svcadm disable rpc/metamh
      

Service svc:/network/rpc/rex is disabled or not installedrule

This program is the Oracle Solaris RPC server for remote program execution. If this service is enabled, the daemon is started by inetd(1M) whenever a remote execution request is made. See the rpc.rexd(1M) man page.

Remediation description:
Disable the rex service.
Remediation script:

    # svcadm disable rpc/rex:default
      

Service svc:/network/rpc/spray is disabled or not installedrule

This program is a server that records the packets sent by spray(1M). See the rpc.sprayd(1M) man page.

Remediation description:
Disable the spray service.
Remediation script:

    # pkg uninstall service/diagnostic/spray

    or

    # svcadm disable rpc/spray:default
      

Service svc:/network/rpc/wall is disabled or not installedrule

This program broadcasts messages to all logged-in users. See the rpc.rwalld(1M) and wall(1M) man pages.

Remediation description:
Disable the wall service.
Remediation script:

    # pkg uninstall legacy-remote-utilities

    or

    # svcadm disable rpc/wall:default
      

Service svc:/system/avahi-bridge-dsd is disabled or not installedrule

This program provides an object-oriented interface to DBUS-enabled applications. See the avahi-daemon-bridge-dsd(1) man page.

Remediation description:
Disable the avahi-bridge-dsd service.
Remediation script:

    # svcadm disable system/avahi-bridge-dsd:default
      

Service cde-ttdbserver is enabled, or not installedrule

The rpc.ttdbserver service is part of the Common Desktop Environment (CDE) which predates the use of GNOME in Solaris. If you are running CDE, then you should enable its services. You should have good reasons to choose CDE over GNOME as your desktop environment.

Remediation description:
If installed, this service should be enabled.
Remediation script:

    # svcadm enable rpc/ttdbserver
      

Service svc:/application/graphical-login/gdm:default is in disabled staterule

The GNOME Display Manager manages the displays on a system, including the console display, attached displays, XDMCP displays, and virtual terminals.

If a windowing display is not needed, this service should be disabled. If a windowing display is needed and installed, this service should be enabled. See the gdm(1M) man page.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/application/graphical-login/gdm:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/application/graphical-login/gdm:default
                
Remediation script:

    gdm_fmri=svc:/application/graphical-login/gdm:default
    policy_gdm=disabled
    if [ $policy_gdm == enabled ]; then
            svcadm enable -s $gdm_fmri
    else
            svcadm disable -s $gdm_fmri
    fi
      

Service cde-calendar-manager is enabled, or not installedrule

The cde-calendar-manager service is part of the Common Desktop Environment (CDE) which predates the use of GNOME in Solaris. If you are running CDE, then you should enable its services. You should have good reasons to choose CDE over GNOME as your desktop environment.

Remediation description:
If installed, this service should be enabled.
Remediation script:

    # svcadm enable svc:/network/rpc/cde-calendar-manager:default
      

Service svc:/application/x11/xfs is disabled or not installedrule

This program provides fonts to X Window System display servers. The server is usually run by inetd(1M). See the xfs(1) and fsadmin(1) man pages.

Remediation description:
Disable the xfs service.
Remediation script:

    # svcadm disable svc:/application/x11/xfs:default
      

Service xvnc-inetd is enabled, or not installedrule

The xvnc-inetd service runs the X VNC server from inetd(1M). See the Xvnc(1) man page.

Remediation description:
To run Xvnc from inetd, this service must be enabled.
Remediation script:

    # svcadm enable application/x11/xvnc-inetd
      

The GNOME desktop has suitable screensaver settingsrule

The timeout parameter for the xscreensaver application specifies the amount of time that the keyboard and mouse can be inactive before a password-protected screensaver appears. See the xscreensaver(1) man page.

Remediation description:
A screensaver timeout provides protection for a desktop that has not been locked by an absent user. To help prevent session hijacking, the timeout value should be set to a fairly short interval.
Remediation script:

    # cd /usr/share/X11/app-defaults
    # cp XScreenSaver XScreenSaver.orig
    # pfedit XScreenSaver
    *timeout:       0:10:00
    *lockTimeout:   0:00:00
    *lock:    True
      

The NIS client service is disabled or not installedrule

By default, NIS client software is not installed. NIS is an RPC-based naming service that does not conform to current security requirements, so can be less secure than the LDAP naming service. See the nis(5) and ypbind(1M) man pages.

Remediation description:
Disable the NIS client service if it is not on a network with an NIS server.
Remediation script:

    # svcadm disable svc:/network/nis/client
      

The NIS server service is disabled or not installedrule

By default, NIS server software is not installed. NIS is an RPC-based naming service that does not conform to current security requirements, that can be less secure than the LDAP naming service. See the nis(5) and ypserv(1M) man pages.

Remediation description:
Disable the NIS server service if it is not being used to distribute system and user configuration information.
Remediation script:

    # svcadm disable svc:/network/nis/server
      

The r-protocols services are disabled in PAMrule

By default, legacy services such as the r-protocols, rlogin(1) and rsh(1), are not installed. Their services, however, are defined in /etc/pam.d. See the pam.d(4) man page.

Remediation description:
If you remove the service definitions from /etc/pam.d, these services would use the "other" service if these legacy services were enabled. Therefore, specify pam_deny.so.1 as the module for the authentication stack for the r-protocol services in the /etc/pam.d directory.
Remediation script:

    # cd /etc/pam.d
    # cp rlogin rlogin.orig
    # pfedit rlogin
    auth definitive    pam_deny.so.1
    auth sufficient    pam_deny.so.1
    auth required    pam_deny.so.1
    # cp rsh rsh.orig
    # pfedit rsh
    auth definitive         pam_deny.so.1
    auth sufficient         pam_deny.so.1
    auth required           pam_deny.so.1
      

Service svc:/network/http:apache22 is in disabled staterule

This program provides Apache web server services by using the Apache hypertext transfer protocol (http). See the httpd(8) man page.

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/http:apache22
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/http:apache22
                
Remediation script:

    apache_fmri=svc:/network/http:apache22
    policy_apache=disabled
    if [ $policy_apache == enabled ]; then
            svcadm enable -s $apache_fmri
    else
            svcadm disable -s $apache_fmri
    fi
      

Service svc:/network/rpc/keyserv is disabled or not installedrule

keyserv is a daemon that is used for storing the private encryption keys of each user logged into the system. These encryption keys are used for accessing secure network services such as secure NFS. For more information, see the keyserv(1M) man page.

Remediation description:
Disable the keyserv service.
Remediation script:

    # svcadm disable network/rpc/keyserv:default
      

Service svc:/network/rpc/keyserv cannot use the nobody user keyrule

The value of ENABLE_NOBODY_KEYS is YES by default. See the keyserv(1M) man page.

Remediation description:
Edit the /etc/default/keyserv file to change the value of ENABLE_NOBODY_KEYS to NO.
Remediation script:

    # pfedit /etc/default/keyserv
    ...
    ENABLE_NOBODY_KEYS=NO
      

ssh(1) is the only service binding a listener to non-loopback addressesrule

By default, ssh(1) is the only network service that can send and receive network packets on a newly-installed Oracle Solaris system. Of course, most useful servers will have some additional service such as a web server on port 80, etc. Also, rpcbind, if it is online, should be configured to listen only for local connections. See the sshd(1M) and rpcbind(1M) man pages.

Remediation description:

Disable any unneeded services listening on the network.

        # svcadm disable <FMRI for unneeded service>
        

Additionally, rpcbind should be set to local only mode so that it does not respond to remote requests, using:

        # /usr/sbin/svccfg -s svc:/network/rpc/bind:default setprop config/local_only = boolean: true
        # svcadm refresh svc:/network/rpc/bind:default
        
Remediation script:

ssh(1) requires passwordsrule

Logins without a password put the system at risk. In the default remote login service, Secure Shell, the PermitEmptyPasswords parameter in the /etc/ssh/sshd_config file should remain set to no. See the sshd_config(4) man page.

Remediation description:
Ensure that PermitEmptyPasswords value in the /etc/ssh/sshd_config file has not been changed. The default value is no. If you reset the value, restart the ssh service.
Remediation script:

    # cd /etc/ssh
    # grep PermitEmpty sshd_config
    ...
    PermitEmptyPasswords no

    # svcadm restart svc:/network/ssh
      

rhost-based authentication in ssh(1) is disabledrule

rhost-based authentication in Secure Shell allows users to remotely log in without supplying a password. The IgnoreRhosts parameter specifies whether .rhosts and .shosts files can be used rather than a password. See the sshd_config(4) and hosts.equiv(4) man pages.

Remediation description:
Ensure that the default value of IgnoreRhosts has not been changed. If the parameter is not in the /etc/ssh/sshd_config file, the value is yes. If IgnoreRhosts is in the file, set its value to yes. Secure Shell parameters are case-sensitive. If you reset the value, restart the ssh service.
Remediation script:

    # pfedit /etc/ssh/sshd_config
    IgnoreRhosts    yes

    # svcadm restart svc:/network/ssh
      

root login by using ssh(1) is disabledrule

By default, remote root logins are not permitted because root is a role and roles cannot log in. If root has been changed to a user, the default value of the PermitRootLogin parameter in the /etc/ssh/sshd_config file prevents root from remotely logging in. See the sshd_config(4) man page.

Remediation description:
If root is a user on your system, ensure that the value of PermitRootLogin has not been changed to yes. If you reset the value, restart the ssh service.
Remediation script:

    # pfedit /etc/ssh/sshd_config
    PermitRootLogin no

    # svcadm restart svc:/network/ssh
      

Service svc:/network/smtp:sendmail only listens on loopbackrule

Check that sendmail listens in local_only mode. This is also called listens on loopback. See the sendmail(1M) and svccfg(1M) man pages

Remediation description:
Set the service to listen in local_only mode.
Remediation script:

    #  svccfg -s svc:/network/smtp:sendmail setprop \
    config/local_only = astring: "true"
      

The umask(1) for SMF services is 022rule

Files that the Service Management Facility (SMF) creates should be created with 644 file permissions.

Remediation description:
Set the umask for SMF services to 022.
Remediation script:

    # svccfg -s svc:/system/environment:init setprop umask/umask = astring: "022"
      

ssh(1) does not forward X11rule

The X11Forwarding parameter in the /etc/ssh/sshd_config file specifies whether users can forward an X Window session through an encrypted tunnel. This parameter allows the remote user to display windows remotely over Secure Shell. See the sshd_config(1M) and X(5) man pages.

Remediation description:
By default, X11Forwarding is set to yes. X11Forwarding could permit a malicious user to secretly open an X11 connection to a different client and perform unobtrusive activities such as keystroke monitoring. If the remote window display is not required, disable or restrict it, then restart the ssh service.
Remediation script:

    # pfedit /etc/ssh/sshd_config
    ...
    X11Forwarding no

    # svcadm restart svc:/network/ssh
      

Consecutive login attempts for ssh(1) are limitedrule

By default, the MaxAuthTries parameter in the /etc/ssh/sshd_config file is set to 6. This parameter specifies the maximum number of authentication attempts that the server permits before ending the connection. By restricting the number of failed authentication attempts, Secure Shell lessens the effectiveness of brute-force login attempts. It is important to note that setting MaxAuthTries to 6 actually provides only 3 failed login attempts because of the way SSH counts failures. See the sshd_config(4) man page.

Remediation description:
Set the MaxAuthTries parameter in the /etc/ssh/sshd_config file to the value that site security requires, then restart the ssh service.
Remediation script:

    # pfedit /etc/ssh/sshd_config
    MaxAuthTries 6

    # svcadm restart svc:/network/ssh
      

gdm(1M) does not accept logins without passwordsrule

Automatic logins are a known security risk for other than public kiosks. By default, GNOME automatic login is disallowed, so users must supply a password. Automatic and Timed login is controlled by the entries in /etc/gdm/custom.conf See the gdm(1M) man page.

Remediation description:
Ensure that GNOME automatic login has not been enabled. If it has, remove the lines from /etc/gdm/custom.conf
Remediation script:

    # cd /etc/gdm
    # pfedit custom.conf
    ... ensure that that the following lines do not exist or are set to false
    AutomaticLoginEnable=true
    TimedLoginEnable=true
      

The ftp(1) banner shows a suitable security messagerule

The banner informs users who are attempting to access the system that the system is monitored. Note that the pkg:/service/network/ftp package must be installed for ftp to work.

Remediation description:
The ftp banner shows the security message in the /etc/issue file prior to login. See the proftpd(1M) man page.
Remediation script:

    # echo "DisplayConnect /etc/issue" >> /etc/proftpd.conf
    # svcadm restart ftp
      

The gdm(1M) banner shows a suitable security messagerule

The banner informs users who are attempting to access the system that the system is monitored. The banner uses the /etc/issue file. See the issue(4) and gdm(1M) man pages.

Remediation description:
Modify the /etc/gdm/Init/Default file to display a dialog box with the contents of the /etc/issue file. zenity(1) displays simple GNOME dialogs.
Remediation script:

    # pfedit /etc/gdm/Init/Default
    /usr/bin/zenity --text-info --width=800 --height=300 \
    --title="Security Message" --filename=/etc/issue
      

The ssh(1) banner shows a suitable security messagerule

By default, the ssh(1) banner displays the contents of the /etc/issue file. See the issue(4) and sshd_config(4) man pages.

Remediation description:
Ensure that the Banner value in the sshd_config(4) file is not commented out.
Remediation script:

    $ grep Banner /etc/ssh/sshd_config
    # Banner to be printed before authentication starts.
    Banner /etc/issue
      

The telnet(1) banner shows a suitable security messagerule

The telnetd(1M) DARPA TELNET protocol server is a legacy service that does not conform to current security requirements. By default, this service is not installed, and systems use the ssh(1M) protocol to communicate.

Remediation description:
If telnet is installed, the default banner is empty. Make sure that the banner contains a suitable security message or is empty. Alternatively, uninstall the package.
Remediation script:

    # grep BANNER /etc/default/telnetd
    BANNER=""

    or

    # pkg uninstall pkg://solaris/service/network/telnet
      

ftp(1) is restricted to a specific set of usersrule

FTP file transfers should not be available to all users, and must require qualified users to supply their names and password. In general, system users should not be allowed to use FTP. This check verifies that system accounts are included in the /etc/ftpd/ftpusers file so that they are not allowed to use FTP. See the ftp(1) man page.

Remediation description:
The file /etc/ftpd/ftpusers is used to prohibit users from using the FTP service. As a minimum, this file should include all system users, such as 'root', 'bin', 'adm', etc.
Remediation script:

    # pfedit /etc/ftpd/ftpusers
    ....
    root
    daemon
    bin
    ...
      

The tcp_wrappers feature is enabledrule

TCP wrappers provides a way of implementing access controls by checking the address of a host that is requesting a particular network service against an ACL. Requests are granted or denied accordingly. TCP wrappers also logs host requests for network services, which is a useful monitoring function. The ssh(1) and sendmail(1M) services are configured to use TCP wrappers. Network services that might be placed under access control include proftpd(8) and rpcbind(1M). See the tcpd(1M) man page.

Remediation description:
For most TCP services, see the Network Administration Guide (http://www.oracle.com/pls/topic/lookup?ctx=solaris11&id=NWIPA). For FTP, see the Security Guidelines (http://www.oracle.com/pls/topic/lookup?ctx=solaris11&id=SYSADV7).
Remediation script:

    1) Create an /etc/hosts.deny file containing the one line:
      ALL:ALL
    2) Create an /etc/hosts.allow file containing those connections which you
    want to allow. For detailed instructions, see the hosts_access(4),
    and tcpd(1M) man pages.
      

Files written in ftp(1) sessions have a suitable umaskrule

The FTP server does not necessarily use the user's system file creation mask. Setting the FTP umask ensures that files transmitted over FTP use a strong file creation umask. See the umask(1) and proftpd(8) man pages.

Remediation description:
Set a strong default file creation mask for files that are created by the FTP server.
Remediation script:

    # pfedit /etc/proftpd.conf
    Umask         027
      

Tune kernel and network parametersgroup

Oracle Solaris is a multithreaded, scalable UNIX operating system that runs on SPARC and x86 processors. It is self-adjusting to system load and requires minimal tuning. Kernel and network variables are tuned to secure values by default. In some cases, however, tuning is necessary.
For more information, see:

  • Tunables Parameters (http://www.oracle.com/pls/topic/lookup?ctx=solaris11&id=SOLTUNEPARAMREF)
  • Network Security Guide (http://www.oracle.com/pls/topic/lookup?ctx=solaris11&id=NWSEC)

In this section, you verify that a TCP/IP kernel variable is still set to its default value, and that you modify network tunables for security reasons.

contains 17 rules

Directed broadcasts are not forwardedrule

By default, Oracle Solaris forwards broadcast packets. To reduce the possibility of broadcast flooding, change the default. Note that you are also disabling broadcast pings.

Remediation description:
Directed broadcasts are manged using the ipadm command. See the ipadm(1M) man page.
Remediation script:

    To fix
    # ipadm set-prop -p _forward_directed_broadcasts=0 ip
    or
    # ipadm reset-prop -p _forward_directed_broadcasts ip
      

Responses to ICMP netmask requests are disabledrule

To prevent the dissemination of information about the network topology, disable these responses if they are currently enabled.

Remediation description:
Responses to ICMP netmask requests are managed using the ipadm command. See the ipadm(1M) man page.
Remediation script:

    To fix, use
    # ipadm set-prop -p _respond_to_address_mask_broadcast=0 ip
    or
    # ipadm set-prop -p _respond_to_address_mask_broadcast ip
      

Responses to ICMP broadcast timestamp requests are disabledrule

To prevent the dissemination of information about the network topology, disable these responses if they are currently enabled.

Remediation description:
Responses to ICMP broadcast timestamp requests are managed using the ipadm command. See the ipadm(1M) man page.
Remediation script:

    To fix, use
    # ipadm set-prop -p _respond_to_timestamp_broadcast=o ip
    or
    # ipadm reset-prop -p _respond_to_timestamp_broadcast ip
      

Responses to ICMP timestamp requests are disabledrule

The default value removes additional CPU demands on systems and prevents the dissemination of information about the network.

Remediation description:
Responses to ICMP timestamp requests are managed using the ipadm command. See the ipadm(1M) man page.
Remediation script:

    To fix
    # ipadm set-prop -p _respond_to_timestamp=0 ip
    or
    # ipadm reset-prop -p _respond_to_timestamp ip
      

Source-routed packets are not forwardedrule

To prevent DOS attacks from spoofed packets, ensure that source-routed packets are not forwarded. The default is not to forward them.

Remediation description:
Forwarding of source-routed packets is managed using the ipadm command. See the ipadm(1M) man page.
Remediation script:

    To fix, use
    # ipadm set-prop -p _forward_src_routed=0 ipv4
    and
    # ipadm set-prop -p _forward_src_routed=0 ipv6
      

TCP reverse source routing is disabledrule

The default value prevents packets from bypassing network security measures. Source-routed packets allow the source of the packet to suggest a path different from the path configured on the router. Note - This parameter might be set to 1 for diagnostic purposes. After diagnosis is complete, return the value to 0.

Remediation description:
TCP reverse source routing is managed using the ipadm command. See the ipadm(1M) man page.
Remediation script:

    To fix
    # ipadm set-prop -p _rev_src_routes=0 tcp
    or
    # ipadm reset-prop -p _rev_src_routes tcp
      

The maximum number of half-open TCP connections is set to the defaultrule

Setting the maximum half-open TCP connections to 4096 per IP address per port helps to defend against SYN flood denial of service attacks. 1024 is the default.

Remediation description:
The maximum number of half-open TCP connections is managed using the ipadm command. See the ipadm(1M) man page.
Remediation script:

    To fix
    # ipadm set-prop -p _conn_req_max_q0=1024 tcp
      

The maximum number of waiting TCP connections is set to the defaultrule

Setting the maximun number of queued incoming connections TCP to at least 1024 can help prevent certain Distributed Denial of Service (DDoS) attacks. The default is 128.

Remediation description:
The maximum number of waiting TCP connections is managed using the ipadm command. See the ipadm(1M) man page.
Remediation script:

    To fix
    # ipadm set-prop -p _conn_req_max_q=128 tcp
      

Responses to echo requests on multicast addresses are disabledrule

To prevent the dissemination of information about the network topology, disable these responses.

Remediation description:
Responses to echo requests are managed using the ipadm command. See the ipadm(1M) man page.
Remediation script:

    To fix
    # ipadm set-prop -p _respond_to_echo_multicast=0 ipv4
    and
    # ipadm set-prop -p _respond_to_echo_multicast=0 ipv6
      

Responses to ICMP echo requests on broadcast addresses are disabledrule

To prevent the dissemination of information about the network topology, disable these responses if they are currently enabled.

Remediation description:
Responses to ICMP echo requests on broadcast addresses are managed using the ipadm command. See the ipadm(1M) man page.
Remediation script:

    To fix
    # ipadm set-prop -p _respond_to_echo_broadcast=0 ip
      

Strict multihoming is enabledrule

For systems that are gateways to other domains, such as a firewall or a VPN node, strict multihoming must be enabled. The hostmodel property controls the send and receive behavior for IP packets on a multihomed system.

Remediation description:
Strict multihoming should be set to "1" so that packets don't get accepted on a different interface. The default is "0"
Remediation script:

    To fix
    # ipadm set-prop -p _strict_dst_multihoming=1 ipv4
    and
    # ipadm set-prop -p _strict_dst_multihoming=1 ipv6
      

ICMP redirects are disabledrule

Routers use ICMP redirect messages to inform hosts of more direct routes to a destination. An illicit ICMP redirect message could result in a man-in-the-middle attack.

Remediation description:
ICMP redirects are managed using the ipadm command. See the ipadm(1M) man page.
Remediation script:

    To fix
    # ipadm set-prop -p _ignore_redirect=1 ipv4
    and
    # ipadm set-prop -p _ignore_redirect=1 ipv6
      

Improved sequential generation for TCP packet sequence numberingrule

Ensure that the TCP initial sequence number generation parameter complies with RFC 6528 (http://www.ietf.org/rfc/rfc6528.txt).

Remediation description:
TCP initial sequence number generation parameters are set in the /etc/default/inetinit file using the TCP_STRONG_ISS parameter which should be set to 1 by default. The Recommended, more secure, value of 2 will also pass this check.
Remediation script:

    # pfedit /etc/default/inetinit
    ...
    TCP_STRONG_ISS=1
    or
    TCP_STRONG_ISS=2
    ...
      

Strong TCP packet sequence numberingrule

Ensure that the TCP initial sequence number generation parameter complies with RFC 6528 (http://www.ietf.org/rfc/rfc6528.txt).

Remediation description:
TCP initial sequence number generation parameters are set in the /etc/default/inetinit file using the TCP_STRONG_ISS parameter which should be set to 2.
Remediation script:

    # pfedit /etc/default/inetinit
    ...
    TCP_STRONG_ISS=2
    ...
      

Routing daemons are disabledrule

Systems in a secure datacenter should not need automatic routing reconfiguration.

Remediation description:
List all routing services and daemons by running routeadm(1M) command. Stop running any routing configuration daemons by using svcadm to disable the services associated with them. The route(1M) command can be used to establish any static routes needed for the system.
Remediation script:

    # routeadm
    # svcadm disable <routing service FMRI>
      

The maximum number of half-open TCP connections is at least 4096rule

Setting the maximum half-open TCP connections to 4096 per IP address per port helps to defend against SYN flood denial of service attacks.

Remediation description:
The maximum number of half-open TCP connections is managed using the ipadm command. See the ipadm(1M) man page.
Remediation script:

    To fix
    # ipadm set-prop -p _conn_req_max_q0=4096 tcp
      

The maximum number of waiting TCP connections is set to at least 1024rule

Setting the maximun number of queued incoming connections TCP to at least 1024 can help prevent certain Distributed Denial of Service (DDoS) attacks.

Remediation description:
The maximum number of waiting TCP connections is managed using the ipadm command. See the ipadm(1M) man page.
Remediation script:

    To fix
    # ipadm set-prop -p _conn_req_max_q=1024 tcp
      

Verify user configurationgroup

Each user at a site must have a unique login and ID, and be assigned a home directory. User passwords must be as secure as possible, and their files at creation must be protected from modification by other users. User configuration should protect regular users and prevent or discourage malicious users.
For more information, see the User Rights guide (http://www.oracle.com/pls/topic/lookup?ctx=solaris11&id=OSSUP).
In this section, you verify password constraints and other user configuration features. You also correct role configuration, verify that system accounts are still correctly configured, and check for duplicate and unknown users.

contains 40 rules

DICTIONBDIR is set to /var/passwdrule

DICTIONBDIR in the /etc/default/passwd file points to the /var/passwd dictionary by default. A password dictionary can strengthen users' password selection by preventing the use of common words or letter combinations. The passwd command performs dictionary lookups in the dictionary that DICTIONBDIR indicates. See the passwd(1) man page.

Remediation description:
In the /etc/default/passwd file, set the DICTIONBDIR variable to /var/passwd.
Remediation script:

    # pfedit /etc/default/passwd
    ...
    # Compliance to the PCI-DSS benchmark is /var/passwd
    #DICTIONBDIR=
    DICTIONBDIR=/var/passwd
    ...
      

Passwords are hashed with a secure algorithmrule

The hash used is determined by values of CRYPT_ALGORITHMS_ALLOW and CRYPT_DEFAULT set in /etc/security/policy.conf file. The value for SHA-256 is "5", and the value for SHA-512 is "6". To confirm properly set, the second field in the /etc/shadow file indicates the algorithm that was used to create the password hash. If the algorithm is set to SHA-256, the entry begins with "$5$" If the algorithm is set to SHA-512, the entry begins with "$6$" See the crypt.conf(4) and policy.conf(4) man pages.

Remediation description:
Save the /etc/security/policy.conf file to a new name. Edit original policy.conf file to accept 5 (and 6 if desired) as values for allowed algorithms, and 5 (or 6 if desired, and if added as allowed) as the value for the default algorithm. Set the password for your users, or set a deadline for password change. After setting the password, or after the deadline, verify the $5$ or $6$ prefix for the second field of the users' entries in /etc/shadow file. Once verified, you can safely remove the saved policy.conf file.
Remediation script:

    # cd /etc/security
    # cp policy.conf policy.conf.save
    # pfedit policy.conf
    CRYPT_ALGORITHMS_ALLOW=5
    CRYPT_DEFAULT=5

    # passwd <username>
    New Password: xxxxxxxx
    Re-enter new Password: xxxxxxxx

    # grep <username> /etc/shadow
    <username>:$5$xxxxx::::::10 xxxxx

    # cp policy.conf.save policy.conf
      

Password history does not log any passwordsrule

HISTORY in the /etc/default/passwd file prevents users from using similar passwords within the HISTORY value. The default value, 0, allows users to reuse passwords immediately.

Remediation description:
In the /etc/default/passwd file, leave the HISTORY variable set to 0.
Remediation script:

    # pfedit /etc/default/passwd
    ...
    # Compliance to the Baseline profile is 0 which is the default
    #HISTORY=0
    ...
      

Password history logs the last ten passwordsrule

HISTORY in the /etc/default/passwd file prevents users from using similar passwords within the HISTORY value. If MINWEEKS is set to 3 and HISTORY is set to 10, passwords are checked for reuse for ten months. See the passwd(1) man page.

Remediation description:
In the /etc/default/passwd file, set the HISTORY variable to 10.
Remediation script:

    # pfedit /etc/default/passwd
    ...
    # Compliance to the PCI-DSS benchmark is 10
    #HISTORY=0
    HISTORY=10
    ...
      

Passwords allow repeat charactersrule

MAXREPEATS in the `/etc/default/passwd file allows users to repeat characters in passwords. The default is 0, which permits repeated characters. Any other value indicates how many characters can be repeated. See the passwd(1) man page.

Remediation description:
In the /etc/default/passwd file, set the MAXREPEATS variable to 0.
Remediation script:

    # pfedit /etc/default/passwd
    ...
    # Compliance to the PCI-DSS benchmark is 0 which is the default
    #MAXREPEATS=1   /** not default value **/
    MAXREPEATS=0
    ...
      

Passwords must have at least 2 alphabetic charactersrule

MINALPHA in the /etc/default/passwd file indicates the minimum number of alphabetic characters that passwords must contain. Alphabetic characters provide more values than numeric or special characters, so allow for more variation. The default value is 2.

The policy states the password must have a minimum of 2 alphabetic characters. See the passwd(1) man page.

Remediation description:

Edit the /etc/default/passwd file, set the MINALPHA parameter to the policy minimum password alphabetic character count, which is 2.

      # pfedit /etc/default/passwd
      MINALPHA=2
        
Remediation script:

    cfgfile=/etc/default/passwd
    cfgfile_tmp=`mktemp`
    var_c_cnt=`grep -c "^# *MINALPHA=" $cfgfile`
    var_cnt=`grep -c "^ *MINALPHA=" $cfgfile`
    policy=2
    if [ $var_cnt -ge 1 ];then
            sed -e 's/^ *MINALPHA=.*/MINALPHA='$policy'/' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    elif [ $var_c_cnt -ge 1 ];then
            sed '/^# *MINALPHA=.*/a\
MINALPHA='$policy'' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    else
            echo "MINALPHA=$policy" >> $cfgfile
    fi
    rm -f $cfgfile_tmp
      

Passwords must differ by at least 3 charactersrule

MINDIFF in the /etc/default/passwd file indicates the minimum number of characters that a password must differ from the previous value.

The policy states the password must be at least a minimum of 3 characters different.

Remediation description:

Edit the /etc/default/passwd file, set the MINDIFF parameter to the policy minimum password character difference, which is 3.

      # pfedit /etc/default/passwd
      MINDIFF=3
        
Remediation script:

    cfgfile=/etc/default/passwd
    cfgfile_tmp=`mktemp`
    var_c_cnt=`grep -c "^# *MINDIFF=" $cfgfile`
    var_cnt=`grep -c "^ *MINDIFF=" $cfgfile`
    policy=3
    if [ $var_cnt -ge 1 ];then
            sed -e 's/^ *MINDIFF=.*/MINDIFF='$policy'/' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    elif [ $var_c_cnt -ge 1 ];then
            sed '/^# *MINDIFF=.*/a\
MINDIFF='$policy'' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    else
            echo "MINDIFF=$policy" >> $cfgfile
    fi
    rm -f $cfgfile_tmp
      

Passwords require at least 0 digitsrule

MINDIGIT in the /etc/default/passwd file indicates the minimum number of digits that a password must contain. Digits provide some protection against dictionary-based password attacks. The default is 0.

The policy states the password must have a minimum of 0 digits. See the passwd(1) man page.

Remediation description:

Edit the /etc/default/passwd file, set the MINDIGIT parameter to the policy minimum password digit count, which is 0.

      # pfedit /etc/default/passwd
      MINDIGIT=0
        
Remediation script:

    cfgfile=/etc/default/passwd
    cfgfile_tmp=`mktemp`
    var_c_cnt=`grep -c "^# *MINDIGIT=" $cfgfile`
    var_cnt=`grep -c "^ *MINDIGIT=" $cfgfile`
    policy=0
    if [ $var_cnt -ge 1 ];then
            sed -e 's/^ *MINDIGIT=.*/MINDIGIT='$policy'/' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    elif [ $var_c_cnt -ge 1 ];then
            sed '/^# *MINDIGIT=.*/a\
MINDIGIT='$policy'' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    else
            echo "MINDIGIT=$policy" >> $cfgfile
    fi
    rm -f $cfgfile_tmp
      

Passwords must have at least 0 lower-case charactersrule

MINLOWER in the /etc/default/passwd file indicates the minimum number of lower-case characters that a password must have.

The policy states the password must have a minimum of 0 lower-case characters.

Remediation description:

Edit the /etc/default/passwd file, set the MINLOWER parameter to the policy minimum password lower-case character count, which is 0.

      # pfedit /etc/default/passwd
      MINLOWER=0
        
Remediation script:

    cfgfile=/etc/default/passwd
    cfgfile_tmp=`mktemp`
    var_c_cnt=`grep -c "^# *MINLOWER=" $cfgfile`
    var_cnt=`grep -c "^ *MINLOWER=" $cfgfile`
    policy=0
    if [ $var_cnt -ge 1 ];then
            sed -e 's/^ *MINLOWER=.*/MINLOWER='$policy'/' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    elif [ $var_c_cnt -ge 1 ];then
            sed '/^# *MINLOWER=.*/a\
MINLOWER='$policy'' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    else
            echo "MINLOWER=$policy" >> $cfgfile
    fi
    rm -f $cfgfile_tmp
      

Passwords require at least 1 non-alphabetic charactersrule

MINNONALPHA in the /etc/default/passwd file indicates the minimum number of non-alphabetic characters that a password must contain. Non-alphabetic characters provide some protection against dictionary-based password attacks. The default is 0.

The policy states the password must have a minimum of 1 non-alphabetic characters. See the passwd(1) man page.

Remediation description:

Edit the /etc/default/passwd file, set the MINNONALPHA parameter to the policy minimum password non-alphabetic character count, which is 1.

      # pfedit /etc/default/passwd
      MINNONALPHA=1
        
Remediation script:

    cfgfile=/etc/default/passwd
    cfgfile_tmp=`mktemp`
    var_c_cnt=`grep -c "^# *MINNONALPHA=" $cfgfile`
    var_cnt=`grep -c "^ *MINNONALPHA=" $cfgfile`
    policy=1
    if [ $var_cnt -ge 1 ];then
            sed -e 's/^ *MINNONALPHA=.*/MINNONALPHA='$policy'/' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    elif [ $var_c_cnt -ge 1 ];then
            sed '/^# *MINNONALPHA=.*/a\
MINNONALPHA='$policy'' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    else
            echo "MINNONALPHA=$policy" >> $cfgfile
    fi
    rm -f $cfgfile_tmp
      

Passwords must have at least 0 special charactersrule

MINSPECIAL in the /etc/default/passwd file indicates the minimum number of special characters that a password must have.

The policy states the password must have a minimum of 0 special characters.

Remediation description:

Edit the /etc/default/passwd file, set the MINSPECIAL parameter to the policy minimum password special character count, which is 0.

      # pfedit /etc/default/passwd
      MINSPECIAL=0
        
Remediation script:

    cfgfile=/etc/default/passwd
    cfgfile_tmp=`mktemp`
    var_c_cnt=`grep -c "^# *MINSPECIAL=" $cfgfile`
    var_cnt=`grep -c "^ *MINSPECIAL=" $cfgfile`
    policy=0
    if [ $var_cnt -ge 1 ];then
            sed -e 's/^ *MINSPECIAL=.*/MINSPECIAL='$policy'/' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    elif [ $var_c_cnt -ge 1 ];then
            sed '/^# *MINSPECIAL=.*/a\
MINSPECIAL='$policy'' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    else
            echo "MINSPECIAL=$policy" >> $cfgfile
    fi
    rm -f $cfgfile_tmp
      

Passwords require at least 0 upper-case charactersrule

MINUPPER in the /etc/default/passwd file indicates the minimum number of upper-case letters that a password must contain. Upper-case letters provide some protection against dictionary-based password attacks. The default is 0.

The policy states the password must have a minimum of 0 upper-case characters. See the passwd(1) man page.

Remediation description:

Edit the /etc/default/passwd file, set the MINUPPER parameter to the policy minimum password upper-case character count, which is 0.

      # pfedit /etc/default/passwd
      MINUPPER=0
        
Remediation script:

    cfgfile=/etc/default/passwd
    cfgfile_tmp=`mktemp`
    var_c_cnt=`grep -c "^# *MINUPPER=" $cfgfile`
    var_cnt=`grep -c "^ *MINUPPER=" $cfgfile`
    policy=0
    if [ $var_cnt -ge 1 ];then
            sed -e 's/^ *MINUPPER=.*/MINUPPER='$policy'/' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    elif [ $var_c_cnt -ge 1 ];then
            sed '/^# *MINUPPER=.*/a\
MINUPPER='$policy'' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    else
            echo "MINUPPER=$policy" >> $cfgfile
    fi
    rm -f $cfgfile_tmp
      

Passwords cannot be changed for at least three weeksrule

MINWEEKS in the /etc/default/passwd file indicates the minimum number of weeks before a password can be changed. This value prevents users from reusing a password quickly. The default is unspecified. See the passwd(1) man page.

Remediation description:
In the /etc/default/passwd file, set the MINWEEKS variable to 3.
Remediation script:

    # pfedit /etc/default/passwd
    ...
    # Compliance to the PCI-DSS benchmark is 3
    #MINWEEKS=
    MINWEEKS=3
    ...
      

Passwords must be changed at least every 13 weeksrule

MAXWEEKS in the /etc/default/passwd file indicates the maximum number of weeks that a password can be used. This value is a balance between users remembering a new password and malicious users attacking long-term passwords. The default is unspecified. See the passwd(1) man page.

Remediation description:
In the /etc/default/passwd file, set the MAXWEEKS variable to 13.
Remediation script:

    # pfedit /etc/default/passwd
    ...
    # Compliance to the PCI-DSS benchmark is 13
    #MAXWEEKS=
    MAXWEEKS=13
    ...
      

NAMECHECK for passwords is set to YESrule

NAMECHECK in the /etc/default/passwd file indicates whether login names are checked in the files naming service. The default, YES, prevents malicious users from using a login name that is not in a local file. See the passwd(1) man page.

Remediation description:
In the /etc/default/passwd file, set the NAMECHECK variable to YES.
Remediation script:

    # pfedit /etc/default/passwd
    ...
    # Compliance to the PCI-DSS benchmark is YES which is the default
    #NAMECHECK=NO  /** not default value **/
    NAMECHECK=YES
    ...
      

Passwords must be at least 8 characters longrule

PASSLENGTH in the /etc/default/passwd file indicates the minimum number of characters that a password must contain. A longer password length plus a strong password hashing algorithm provides some protection against password attacks.

The policy states the password must be at least a minimum of 8 characters long.

Remediation description:

Edit the /etc/default/passwd file, set the PASSLENGTH parameter to the policy minimum password length, which is 8.

      # pfedit /etc/default/passwd
      PASSLENGTH=8
        
Remediation script:

    cfgfile=/etc/default/passwd
    cfgfile_tmp=`mktemp`
    var_c_cnt=`grep -c "^# *PASSLENGTH=" $cfgfile`
    var_cnt=`grep -c "^ *PASSLENGTH=" $cfgfile`
    policy=8
    if [ $var_cnt -ge 1 ];then
            sed -e 's/^ *PASSLENGTH=.*/PASSLENGTH='$policy'/' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    elif [ $var_c_cnt -ge 1 ];then
            sed '/^# *PASSLENGTH=.*/a\
PASSLENGTH='$policy'' $cfgfile > $cfgfile_tmp
            cp $cfgfile_tmp $cfgfile
    else
            echo "PASSLENGTH=$policy" >> $cfgfile
    fi
    rm -f $cfgfile_tmp
      

Passwords allow whitespacerule

WHITESPACE in the /etc/default/login file indicates whether passwords can include the space character. The space character provides some protection against dictionary-based password attacks. The default is YES. See the passwd(1) man page.

Remediation description:
In the /etc/default/login file, set the WHITESPACE variable to YES.
Remediation script:

    # pfedit /etc/default/login
    ...
    # Compliance to the PCI-DSS benchmark is YES which is the default
    #WHITESPACE=NO   /** not default value **/
    WHITESPACE=YES
    ...
      

root is a rolerule

By default, root is a role. Roles cannot log in directly. Rather, a user logs in and then assumes the root role, thus providing an audit trail of who is operating as root. See the roles(1), user_attr(4), and usermod(1M) man pages.

Remediation description:
If root is of type user in the /etc/user_attr file, change the account back to a role account.
Remediation script:

    # usermod -K type=role root
    # userattr type root
    role

    Then, assign the role to a trusted user.
    # usermod -R root <trusted-user>
      

Role details are unchangedrule

Oracle Solaris ships with Role Based Access Control (RBAC). This feature enables administrators to delegate specific, limited, additional privileges and authorizations to individual users to administer parts of the system without giving them access to the root account. The provided rights databases should not be changed directly. To add rights to roles, use the roleadd and rolemod commands. These commands add entries to the /etc/user_attr file. See the profiles(1), auths(1), roles(1), rbac(5), roleadd(1M), rolemod(1M), and user_attr(4) man pages.

Remediation description:
The files in /etc/user_attr.d/ should not be changed; changes and additions should be made using the roleadd(1M), rolemod(1M), profiles(1), auths(1), and usermod(1M) commands.
Remediation script:

    # pkg revert /etc/user_attr.d/<changed file>

    Then

    # roleadd <role>
    # rolemod <role>
      

Logins require passwordsrule

PASSREQ in the /etc/default/login file indicates whether logins require passwords. Passwords are required for defense against computer attacks. The default is YES. See the login(1) man page.

Remediation description:
In the /etc/default/login file, set the PASSREQ variable to YES.
Remediation script:

    # pfedit /etc/default/login
    ...
    # Compliance to the PCI-DSS benchmark is YES which is the default
    #PASSREQ=NO   /** not default value **/
    PASSREQ=YES
    ...
      

shadow(4) password fields are not emptyrule

The second field in the /etc/shadow file contains passwords. When creating roles, you can easily forget to assign a password. See the shadow(4) and passwd(1) man pages.

Remediation description:
Assign a password, or remove the account. When creating roles, you can easily forget to assign a password.
Remediation script:

    # userdel <account-with-no-password>

    or

    # passwd <account-with-no-password>>
    New Password: xxxxxxxx
    Re-enter new Password: xxxxxxxx
      

Local users are assigned home directoriesrule

Users need a place to store and create files. A home directory enables a user to place configuration files, such as the .profile file, and ongoing work in a directory that is owned by the user.

Remediation description:
Local users should have a local home directory created automatically when useradd(1M) is run with the correct options. Run 'useradd -D' to see the default "basedir" home directory location. See the useradd(1M) man page.
Remediation script:

    # useradd -m <login>
      

root is the only user with UID=0rule

The UID of 0 has superuser privileges. Only root should have those privileges.

Remediation description:
Either remove additional UID=0 accounts or assign different UIDs to them.
Remediation script:

    # userdel <duplicate UID username>

    or

    # usermod -u <new UID> <login>
      

All groups specified in /etc/passwd are defined in /etc/grouprule

Users are assigned to at least one group and can be assigned to secondary groups. All groups must be defined in the /etc/group file.

Remediation description:
All groups which are assigned to users must be defined in /etc/group. See the man pages for group(4), groupadd(1M), groupmod(1M), and groupdel(1M).
Remediation script:

    # groupadd <missing-group>
      

Home directories for all users existrule

Users need a place to store and create files. A home directory enables a user to place configuration files, such as the .profile file, and ongoing work in a directory that is owned by the user.

Remediation description:
Local users should have a local home directory created automatically when useradd(1M) is run with the correct options. Run 'useradd -D' to see the default "basedir" home directory location. See the useradd(1M) man page.
Remediation script:

    # useradd -m <login>
      

Reserved system accounts remain unusedrule

Accounts whose ID is 100 or less are system accounts. These accounts should not be replaced or reconfigured.

Remediation description:
Users should not be assigned UIDs less than 100 and existing system accounts should not be renamed or renumbered. Undo any changes that have made involving these accounts. See the usermod(1M) man page.
Remediation script:

    # usermod <options> <username>
      

User home directories have appropriate permissionsrule

Home directories must be writable and searchable by their owners. Typically, other users do not have rights to modify those files or add files to the user's home directory.

Remediation description:
User home directories should have permissions of 750 to prevent other users from having inappropriate access to their files.
Remediation script:

    # chmod 750 <user-home-dir>
      

User home directory ownership is correctrule

The user must own the user's home directory.

Remediation description:
Home directory ownership can be changed or set using the chown(1) command. See the chown(1) man page.
Remediation script:

    # chown <username> </path/to/home-dir/username>
      

Find and list duplicate GIDsrule

Groups, like users, are unique. Duplicate group IDs must be removed.

Remediation description:
When duplicate GIDs are identified, use groupmod or groupdel to eliminate the duplicates. See the man pages for group(4), groupadd(1M), groupmod(1M), and groupdel(1M).
Remediation script:

    # groupmod -<options> <group>
      

Find and list duplicate group namesrule

Groups, like users, are unique. Duplicate group names must be removed.

Remediation description:
When duplicate group names are identified, use groupmod or groupdel to eliminate the duplicates. See the man pages for group(4), groupadd(1M), groupmod(1M), and groupdel(1M).
Remediation script:

    # groupmod -<options> <group>
      

Find and list duplicate UIDsrule

Users are identified by IDs, which must be unique. Duplicate user IDs must be removed.

Remediation description:
When duplicate UIDs are identified, use usermod or userdel to eliminate the duplicates. See the man pages for passwd(4), useradd(1M), usermod(1M), and userdel(1M).
Remediation script:

    # usermod -<options> <username>
      

Find and list duplicate usernamesrule

Users log in by name, which must be unique. Duplicate user names must be removed.

Remediation description:
When duplicate user names are identified, use usermod or userdel to eliminate the duplicates. See the man pages for passwd(4), useradd(1M), usermod(1M), and userdel(1M).
Remediation script:

    # usermod -<options> <username>
      

Default system accounts are lockedrule

Oracle Solaris is installed with correctly configured system accounts. These accounts should not be modified.

Remediation description:
Certain system accounts, such as aiuser, dladm, etc. are shipped as "locked" and should remain that way. Use 'passwd -l' to lock accounts that need to be locked.
Remediation script:

    # passwd -l <username>
      

Default system accounts are no-loginrule

Oracle Solaris is installed with correctly configured system accounts. These accounts should not be modified.

Remediation description:
Certain system accounts, such as adm, bin, and daemon, are shipped as "no-login" accounts and should remain that way. Use 'passwd -N' to change accounts to "no-login".
Remediation script:

    # passwd -N <username>
      

Root passwords are hashed with a secure algorithmrule

The second field in the /etc/shadow file indicates the algorithm that was used to create the password hash. If the entry begins with "$5$", then password is hashed with SHA-256 algorithm. If the entry begins with "$6$", then password is hashed with SHA-512 algorithm. See the crypt.conf(4) and policy.conf(4) man pages.

Remediation description:
Save the /etc/security/policy.conf file to a new name. Edit original policy.conf file to accept 5 and 6 as values for allowed algorithms, and either 5 or 6 as the value for the default algorithm. Set the password for root, and verify a prefix of either $5$ or $6$ for the second field of root's entry in the /etc/shadow file. Once verified, it is safe to remove the saved copy of policy.conf file.
Remediation script:

    # cd /etc/security
    # cp policy.conf policy.conf.save
    # pfedit policy.conf
    CRYPT_ALGORITHMS_ALLOW=5,6
    CRYPT_DEFAULT=5

    # passwd root
    New Password: xxxxxxxx
    Re-enter new Password: xxxxxxxx

    # grep root /etc/shadow
    root:$5$xxxxx::::::14 xxxxx

    # cp policy.conf.save policy.conf
      

The root PATH variable is correctrule

The root PATH variable should not include the current directory (.), or any paths not related to administration.

Remediation description:
Check root's path as root with 'echo $PATH'. root's PATH typically should not include the current directory (".") or empty ("::"). By default root's PATH is set based on the SUPATH variable value in the /etc/default/login file to SUPATH=/usr/bin:/usr/sbin.
Additionally, all directories in root's PATH must not be group or other writable.
Remediation script:

    # PATH=/usr/bin:/usr/sbin
      

Service svc:/network/ipfilter is enabledrule

IP Filter is a host-based firewall that provides stateful packet filtering and network address translation (NAT). Packet filtering provides basic protection against network-based attacks. IP Filter also includes stateless packet filtering and can create and manage address pools. See the ipf(1M) and ipfilter(5) man pages.

Remediation description:

Enable the IP Filter service with SMF. Also, insure that you have a reasonable rule-set for the server in question.

This check looks for at least one rule that starts with "block" keyword, which should appear in most realistic rule-sets.

See the ipf(1M) ipf(4) and ipfilter(5) man pages for examples.

  1. Configure ipfilter by adding rules to the /etc/ipf/ipf.conf file
                # pfedit /etc/ipf/ipf.conf
                ...
                block in log proto tcp from any to any
                pass in quick proto tcp from any to any port = 80
                pass out quick proto tcp from any to any flags S/SA keep state
                ...
                
  2. Turn on the ipfilter service
                # svcadm enable  svc:/network/ipfilter:default
                
  3. If you edit rules after the service is running be sure to refresh the service

                # svcadm refresh svc:/network/ipfilter:default
                
Remediation script:

    svcadm enable svc:/network/ipfilter:default
      

Service svc:/network/firewall is enabledrule

Packet Filter is a host-based firewall that provides stateful packet filtering and network address translation (NAT). Packet filtering provides basic protection against network-based attacks. Packet Filter also includes stateless packet filtering and can create and manage address pools. See the pfctl(1M) and pf.conf(5) man pages.

Remediation description:

Enable the PF firewall service with SMF. Also, ensure that you have a reasonable rule set for the server in question.

This check looks for at least one rule that starts with the "block" keyword, which should appear in most production rule sets.

See the pfctl(1M) and pf.conf(5) man pages for examples.

  1. Configure Packet Filter by adding rules to the /etc/firewall/pf.conf file by using the pfconf(1M) command.
                # pfconf
                ...
                block in log proto tcp from any to any
                pass in quick proto tcp from any to any port = 80
                pass out quick proto tcp from any to any flags S/SA keep state
                ...
                
  2. Enable the packet filter service.
                # svcadm enable  svc:/network/firewall:default
                
Remediation script:

    svcadm enable svc:/network/firewall:default
      

mesg(1) prevents talk(1) and write(1) access to remote terminalsrule

This program controls whether users can send messages by using write(1), talk(1) or other utilities to a terminal device. See the mesg(1) man page.

Remediation description:

Configure your system to deny remote users permission to send messages to the terminal.

To manually remediate a failure on this check, run the following commands.

  1. Add "mesg -n" to /etc/login
              # pfedit /etc/.login
                
    add "mesg -n" to the file's contents
  2. Add "mesg -n" to /etc/profile
              # pfedit /etc/profile
                
    add "mesg -n" to the file's contents
Remediation script:

    if ! /bin/grep -q "^mesg -*n" /etc/.login
    then
        /bin/cp /etc/.login /etc/.login.`date '+%FT%T'`
        /bin/echo "mesg -n" >> /etc/.login
    fi
    if ! /bin/grep -q "^mesg -*n" /etc/profile
    then
        /bin/cp /etc/profile /etc/profile.`date '+%FT%T'`
        /bin/echo "mesg -n" >> /etc/profile
    fi
      

Inactive user accounts will be locked after 35 daysrule

Inactive user accounts can provide a back door into the system. User accounts should be locked after a period of inactivity.

Remediation description:
Inactive user accounts can be locked in a number of ways. MAXWEEKS can be set in the /etc/default/passwd file; alternatively, defaults can be set using useradd. See the useradd(1M), passwd(1), and passwd(4) man pages.
Remediation script:

    To manually lock an account
    # passwd -l <username>

    To set the default inactive time, change the value of MAXWEEKS in the /etc/default/passwd file.
    # pfedit /etc/default/passwd
    ...
    MAXWEEKS=5

    or
    set the default with useradd
    # useradd -D -f 35
      

Check various system configuration itemsgroup

contains 13 rules

The default user UMASK is 022rule

UMASK in the /etc/default/login file indicates the permissions on user files at creation. This value should not allow group or world write. The default value is 022, which allows group and world to read files owned by a user. See the login(1) man page.

Remediation description:
In the /etc/default/login file, set the UMASK variable to 022.
Remediation script:

    # pfedit /etc/default/login
    ...
    # Compliance to the PCI-DSS benchmark is 022 which is the default
    #UMASK=077   /** not default value **/
    UMASK=022
    ...
      

Find and list remote consolesrule

Remote consoles can be a source of unauthorized access. A system console should be kept physically secure and no unauthorized consoles should be defined. The "consadm -p" command displays alternate consoles across reboots. If none are defined, the command displays no output. See the consadm(1M) man page.

Remediation description:
View the state of all console logins. Disable terminal logins that are unnecessary. See the svcs(1) and svcadm(1M) man pages.
Remediation script:

    # svcs console-login
    STATE    STIME    FMRI
    disabled       12:52:29 svc:/system/console-login:terma
    online   12:53:50 svc:/system/console-login:termb
    online   12:53:10 svc:/system/console-login:default
    online   12:53:11 svc:/system/console-login:vt2
    # svcadm disable svc:/system/console-login:termb
      

root access is console-onlyrule

The root account should not be able to log in remotely, and its actions should be monitored. See the login(1) man page.

Remediation description:
Ensure that the default value of CONSOLE=/dev/console has not been changed in the /etc/default/login file.
Remediation script:

    # If CONSOLE is set, root can only log in on that device.
    # grep CONSOLE /etc/default/login
    CONSOLE=/dev/console
      

DISABLETIME is set for loginsrule

DISABLETIME in the /etc/default/login file is set to 20 by default. Any value greater than zero indicates the seconds before a login prompt appears after RETRIES failed login attempts. This delay can mitigate rapid-fire, brute force attacks on passwords. See the login(1) man page.

Remediation description:
In the /etc/default/login file, set the DISABLETIME variable to 20.
Remediation script:

    # pfedit /etc/default/login
    ...
    # Compliance to the PCI-DSS benchmark is 20 which is the default
    #DISABLETIME=6   /** not default value **/
    DISABLETIME=20
    ...
      

SLEEPTIME following an invalid login attempt is set to 4rule

SLEEPTIME in the /etc/default/login file is set to 4 by default. This number indicates the number of seconds that elapse before the "login incorrect" message appears after an incorrect password is typed. The maximum number is 5. This delay can mitigate rapid-fire, brute force attacks on passwords. See the login(1) man page.

Remediation description:
In the /etc/default/login file, set the SLEEPTIME variable to 4.
Remediation script:

    # pfedit /etc/default/login
    ...
    # Compliance to the PCI-DSS benchmark is 4 which is the default
    #SLEEPTIME=1 /**not default value**/
    SLEEPTIME=4
    ...
      

Name services are set to all local (files) onlyrule

The operating system uses a number of databases of information about hosts, users (passwd(4), shadow(4), and user_attr(4)), and groups. Data for these can come from a variety of sources: hostnames and host addresses, for example, can be found in /etc/hosts, NIS, LDAP, DNS, or Multicast DNS. Systems in restricted environments may be more secure if these entries are restricted to only local files, but such restriction will vary per your circumstances. See the nsswitch.conf(4) man page for more information.

Remediation description:

If the system does not need to use remote name services, make sure that the name service is set to local files only. The check will not pass unless all name services are set to "files" in /etc/nsswitch.conf. If your configuration demands that you have non-local name services, then you may want to turn this check off for this profile. You can also see the nsswitch.conf(4) man page for detailed information on how to configure your name services.

Below are some examples of the commands to run for in order to configure a name service to local files only:

      # svccfg -s name-service/switch setprop config/default = string: "files"
      # svccfg -s name-service/switch setprop config/host = string: "files"
      # svccfg -s name-service/switch setprop config/passwd = string: "files"
      # svccfg -s name-service/switch setprop config/group = string: "files"
      # svccfg -s name-service/switch:default refresh
        
Remediation script:

Address Space Layout Randomization (ASLR) is enabledrule

Oracle Solaris tags many of its userland binaries to enable Address Space Layout Randomization (ASLR). ASLR randomizes the starting address of key parts of an address space. This security defense mechanism can cause Return Oriented Programming (ROP) attacks to fail when they try to exploit software vulnerabilities. See the sxadm(1M) man page.
Zones inherit this randomized layout for their processes. Because the use of ASLR might not be optimal for all binaries, the use of ASLR is configurable at the zone level and at the binary level.

Remediation description:
Restore ASLR to the default configuration.

To manually remediate this failure, perform the following actions:

  1. Use sxadm to enable aslr by restoring default settings.
    	  # sxadm delcust aslr
    	  # sxadm enable aslr
                
  2. Check that aslr is enabled.
    	  # sxadm get all aslr
    	EXTENSION           PROPERTY                      VALUE
    	aslr                model                         tagged-files
                
Remediation script:

    svcadm enable -s svc:/system/security/security-extensions:default
    sxadm delcust aslr
    sxadm enable aslr
      

Booting the system should require a passwordrule

The GRUB menu, the BIOS, and the eeprom should be password-protected to prevent configuration by unauthorized users. The BIOS protections prevent booting from an external device, such as a USB flash drive.

Remediation description:
On an x86, create passwords for the BIOS and the GRUB menu. On SPARC, protect the eeprom with a password.
Remediation script:

    1. x86 BIOS Fix:
      Consult the hardware vendor's documentation to determine how to start
      the system and access the BIOS controls.
      Access the system's BIOS or system controller. Set an administrator
      password if one has not been set. Disable a user-level password
      if one has been set.
    2. x86 GRUB Fix:
      2a. Get the GRUB hash of your password
        # /usr/lib/grub2/bios/bin/grub-mkpasswd-pbkdf2
        Enter password: xxxxxxxx
        Reenter password: xxxxxxxx
        PBKDF2 hash of your password is <grub.xxxxxxxx.sha512.hash>
      2b. Create the GRUB password file:
        /usr/lib/grub2/bios/etc/grub.d/01_password

        The contents of that file is:
          #!/bin/sh
          /usr/bin/cat > /rpool/boot/grub/password.cfg<<EOF
          #
          # GRUB password
          #
          set superusers="root"
          password_pbkdf2 root <grub.xxxxxxxx.sha512.hash>
          EOF
          /usr/bin/chmod 600 /rpool/boot/grub/password.cfg
          /usr/bin/echo 'source /@/boot/grub/password.cfg'
        When GRUB2 runs its "rc" files, it executes grub.d/01_password
        which creates /rpool/boot/grub/passwd.cfg mode 600
      2c. Protect the file:
        # /usr/bin/chmod 700 /usr/lib/grub2/bios/etc/grub.d/01_password
      2d. Move the contents to the password.cfg file:
        # /usr/bin/cat > /usr/lib/grub2/bios/etc/grub.d/01_password <<BAT
        #!/bin/sh
        /usr/bin/cat > /rpool/boot/grub/password.cfg<<EOF
        #
        # GRUB password
        #
        set superusers="root"
        password_pbkdf2 root <grub.pbkdf2.sha512 hash>
        EOF
        /usr/bin/chmod 600 /rpool/boot/grub/password.cfg
        /usr/bin/echo 'source /@/boot/grub/password.cfg'
        BAT
      2e. Set a timeout for the menu:
        # /usr/sbin/bootadm set-menu timeout=30
        If the site has changed the timeout, use the value
        returned by /usr/sbin/bootadm list-menu.
      2f. Verify the result:
        # /usr/bin/grep "password.cfg" /rpool/boot/grub/grub.cfg
        source /@/boot/grub/password.cfg
    3. SPARC eeprom fix: The security mode should be command or full:
      # eeprom security-mode=command

      Changing PROM password:
      New password: xxxxxxxx
      Retype new password: xxxxxxxx
      

Stacks are non-executablerule

Programs read and write data on the stack. Typically, they execute from read-only portions of memory that are specifically designated for code. Some attacks that cause buffers on the stack to overflow try to insert new code on the stack and cause the program to execute it. This security extension removes execute permission from the stack memory, preventing these attacks from succeeding. See the sxadm(1M) man page.
Properly written programs function correctly without using executable stacks.

Remediation description:

To manually remediate this failure, perform the following actions:

  1. Use sxadm to enable nxstack and logging by restoring default settings.
    	  # sxadm delcust nxstack
    	  # sxadm enable nxstack
                
  2. Check that nxstack is enabled and logging.
    	  # sxadm get all nxstack
    	EXTENSION           PROPERTY                      VALUE
    	nxstack             model                         all
    	--                  log                           enable
                
Remediation script:

    svcadm enable -s svc:/system/security/security-extensions:default
    sxadm delcust nxstack
    sxadm enable nxstack
      

Heaps are non-executablerule

Programs read and write data on the heap. Typically, they execute from read-only portions of memory that are specifically designated for code. Some attacks that cause buffers on the heap to overflow try to insert new code on the heap and cause the program to execute it. Removing execute permission from the heap memory prevents these attacks from succeeding. Properly written programs may function correctly without using executable heaps, but some older programs may rely on heap execution. Setting model=tagged-files (or default) ensures that unexpected heap execution attempts are prevented and enabling the nxheap log ensures that such attempts are recorded.

Remediation description:

To manually remediate this failure, perform the following actions:

  1. Use sxadm to enable nxheap and logging.
    	  # sxadm delcust nxheap
    	  # sxadm enable nxheap
                
  2. Check that nxheap is enabled and logging.
    	  # sxadm get all nxheap
    	EXTENSION           PROPERTY                      VALUE
    	nxheap              model                         tagged-files
    	--                  log                           enable
                
Remediation script:

    svcadm enable -s svc:/system/security/security-extensions:default
    sxadm delcust nxheap
    sxadm enable nxheap
      

Remote serial logins are disabledrule

Serial logins can be a source of unauthorized access. Login services should not be enabled for serial ports that are not required to support the purpose of the system.

Remediation description:
View the state of all console logins. Disable terminal logins that are unnecessary. See the svcs(1) and svcadm(1M) man pages.
Remediation script:

    # svcs console-login
    STATE    STIME    FMRI
    disabled       12:52:29 svc:/system/console-login:terma
    online   12:53:50 svc:/system/console-login:termb
    online   12:53:10 svc:/system/console-login:default
    online   12:53:11 svc:/system/console-login:vt2
    # svcadm disable svc:/system/console-login:termb
      

Service svc:/network/ldap/client:default is in disabled staterule

The ldap client service is required to connect to an LDAP server. See ldapclient(1M)

This policy requires that the service be disabled.

Remediation description:

To manually remediate this failure, set the service state to disabled using the appropriate command.

  1. To set the service to disabled run:
              # svcadm disable svc:/network/ldap/client:default
                
  2. To set the service to enabled run:
              # svcadm enable svc:/network/ldap/client:default
                
Remediation script:

    ldap_client_fmri=svc:/network/ldap/client:default
    policy_ldap_client=disabled
    if [ $policy_ldap_client == enabled ]; then
            svcadm enable -s $ldap_client_fmri
    else
            svcadm disable -s $ldap_client_fmri
    fi
      

ldap client transport uses tls:any protocolrule

The ldap client transport should use tls:any protocol.

Verify audit configurationgroup

Auditing is the collecting of data about the use of system resources. The audit data provides a record of security-related system events. This data can then be used to assign responsibility for actions that take place on a host.
Auditing helps to detect potential security breaches by revealing suspicious or abnormal patterns of system usage. Auditing also provides a means to trace suspect actions back to a particular user, thus serving as a deterrent. Users who know that their activities are being audited are less likely to attempt malicious activities.
For more information, see the Auditing Guide (http://www.oracle.com/pls/topic/lookup?ctx=solaris11&id=OSMAA).
In this section, you ensure that the system is collecting the information that is required by your site security policy.

contains 4 rules

Check all default audit propertiesrule

Check all default audit properties

The auditd(1M) daemon is enabledrule

Auditing is a service, svc:/system/auditd, that is enabled by default and should not be disabled. See the audit(1M) man page.

Remediation description:
An administrator with the Audit Control rights profile can enable auditing. Configure auditing per the Audit Parameters and Role Audit tests, then enable or refresh auditing.
Remediation script:

    # audit -s
      

Audit parameters are set to recommended valuesrule

At minimum, events in the lo class are audited and audit policy is set to argv,cnt. Add audit classes and policy per your site's security requirements. See the auditconfig(1M) man page.

Remediation description:

An administrator with the Audit Configuration rights profile can get and set audit parameters. This check validates that auditing is enabled for a recommended set of audit flags and root audit flags.

To manually remediate a failure on this check, you run the following commands:

  1. Set the audit policy to "argv,cnt"
              # auditconfig -setpolicy argv,cnt
                
  2. Set the user audit flags to "lo"
              # auditconfig -setflags lo
                
  3. Set the non-attributable audit flags to "lo"
              # auditconfig -setnaflags lo
                
  4. Set the audit plugin named "audit_binfile" to be active
              # auditconfig -setplugin audit_binfile active
                
  5. Set root user's audit flags to "cusa:no"
    If root is configured to be a role
              # rolemod -K audit_flags=cusa:no root
                
    Otherwise:
              # usermod -K audit_flags=cusa:no root
                
  6. Refresh the audit service based on current properties
              # audit -s
                
Remediation script:

    /usr/sbin/auditconfig -setpolicy argv,cnt
    /usr/sbin/auditconfig -setflags lo
    /usr/sbin/auditconfig -setnaflags lo
    /usr/sbin/auditconfig -setplugin audit_binfile active
    if [ "`/usr/bin/userattr type root`" = "role" ]; then
        /usr/sbin/rolemod -K audit_flags=cusa:no root
    else
        /usr/sbin/usermod -K audit_flags=cusa:no root
    fi
    /usr/sbin/audit -s
      

All roles are audited with the "cusa" audit classrule

The cusa audit class contains events that cover administrative actions that could affect the system's security posture. See the audit_class(4), audit_event(4), rolemod(1M), and userattr(1) man pages.

Remediation description:
Check that all roles are being audited with the cusa audit class. By default, only the root role can set audit flags for individual accounts.
Remediation script:

    # logins -r
    ...list of roles ...
    For each role, check the assigned audit flags:
    # userattr audit_flags <rolename>

    If no output, set the cusa audit flag and verify:
    # rolemod -K audit_flags=cusa:no <rolename>>
    # userattr audit_flags <rolename>>
    cusa:no