Table Of Contents
Posture Plugins
Types of Posture Plugins Installed by Default
Host Posture Plugin
MAC Address Information Returned by Host Posture Plugin
Package Information Retrieved by Host Posture Plugin for Linux Platforms
Package Information Retrieved by Host Posture Plugin for Mac OS X Platforms
Cisco Trust Agent Posture Plugin
Machine Posture State
CTA Scripting Posture Plugin
Plugin Installation and Upgrade
Posture Plugins
Posture plugins are the means by which Cisco Trust Agent (CTA) retrieves posture credentials from NAC-compliant applications installed on a client.
Typically, two files comprise a posture plugin. A posture plugin for Windows consists minimally of a dynamic link library ".dll" file and an information ".inf" file. A posture plugin for Linux consists of a shared object ".so" file and an information ".inf" file.
Posture plugins gather posture credentials from NAC-compliant applications. Posture credentials are information about an application that determines the trust the network should have in the security of that application. Posture credentials may include these kinds of attributes: application name, application version, application release date, or proprietary application settings or configurations. Posture credentials can be different for each NAC-compliant application.
Once the posture plugin gathers the posture credentials, it sends them to the CTA. CTA sends the posture credentials to Cisco Secure Access Control Server (ACS) which determines a posture token for each application that provided credentials and an overall posture token for the entire client. The posture token is communicated to the client in a posture notification message.
In the Network Admission Control (NAC) environment, the value of a client's posture token determines the level of network access the client is allowed. When we refer to a client's "posture," we are referring to the value of the client's posture token.
See "Initial Posture Validation Process" section on page 1-2 and "Posture Revalidation Process" section on page 1-4 for a description of the workflows and conditions surrounding these events.
This chapter contains the following sections:
•
Types of Posture Plugins Installed by Default
–
Host Posture Plugin
–
Cisco Trust Agent Posture Plugin
–
CTA Scripting Posture Plugin
•
Plugin Installation and Upgrade
Also see the "Configuring Posture Plugins" section on page 5-13 for information about configuring posture plugins.
Types of Posture Plugins Installed by Default
When CTA is installed these posture plugins are installed by default.
•
Host Posture Plugin
•
Cisco Trust Agent Posture Plugin
The CTA Scripting Posture Plugin posture plugin is installed if the scripting interface was installed.
Other plugins may also be installed, such as the posture plugin for Cisco Security Agent or a partner in the Network Admission Control program. These plugins are not discussed in this chapter.
Host Posture Plugin
The Host Posture Plugin retrieves basic information about the host and returns it to the ACS.
The default location of the Windows host posture plugin is the \Program Files\Common Files\PostureAgent\Plugins directory. The plugin consists of two files: CiscoHostPP.dll and CiscoHostPP.inf.
The default location of the host posture plugin on Linux and Mac OS X operating systems is the /opt/PostureAgent/Plugins directory. The plugin consists of two files: CiscoHostPP_unix.inf and ciscohostpp.so.
These are the attributes that are returned by the host posture plugin:
Table 7-1 Host Posture Plugin Attributes
Condition name in Posture Validation Policies page of ACS
|
Attribute Description
|
Used by these operating system
|
Cisco:Host:ServicePacks
|
Windows service packs that have been installed on the client
|
Windows
|
Cisco:Host:HotFixes
|
Windows hot fixes that have been installed on the client
|
Windows
|
Cisco:Host:HostFQDN
|
Machine name
|
Windows
|
Cisco:Host:Package
|
Version and string version of rpm packages
|
Linux and Mac OS X
|
Cisco:Host:MACAddress
|
Machine's MAC address
|
Linux, Mac OS X, Windows
|
Note
The Host posture plugin only reports Windows operating system hotfixes. It does not report application hotfixes.
MAC Address Information Returned by Host Posture Plugin
The Host Posture Plugin reports basic information about the client running CTA to the ACS. With the release of CTA 2.1, the Host Posture Plugin can now return the MAC address of the client running CTA, provided that the MacAddress attribute has been added to the Posture-Validation Attribute Definition File employed by the ACS CSUtil database utility. (For more information about the ACS CSUtil database utility and the Posture-Validation Attribute Definition File, see the User Guide for Cisco Secure ACS for Windows Server.)
The attribute information for MACAddress is below.
attribute-name=MACAddress
The plugin will return all the MAC addresses available on the client running CTA and combine them into one string; the MAC addresses will be separated by pipes ( | ). For example, a wireless network card and a wired network card will each return a MAC address.
If you are defining a posture validation rule in ACS based on only one of these MAC addresses, the posture attribute should "contain" the MAC address you are verifying rather than "equal" or "start with" the MAC address you are verifying.
Package Information Retrieved by Host Posture Plugin for Linux Platforms
In addition to the information defined by the host posture plugin attributes, the host posture plugin for Linux and Mac OS X platforms allows you to retrieve the version number of certain packages pre-defined in ACS.
The version number of the package may be expressed in one of these forms:
•
A string.
•
A representation of the version number in the form of x.x.x.x. In this case, the version numbers is converted to a 4-octet version number using an algorithm.
Here is an example of how CTA returns package version number using each format: Assume there is a posture validation rule from ACS that requests the version number of OpenSSL. When requested as a string, the version number would be returned as a combination of numbers and letters, such as 0.9.7a. When requested as a 4-octet number, the version number that would be return is 0.9.7.97.
Creating posture validation rules on ACS that request package version information as numbers rather than strings allows you to apply operators in the ACS rule such as "greater than or equal to," "greater than," "less than," or "less than or equal to." These operators do not apply to strings. The string format is beneficial when too much information is lost when using the numeric format. For example, a package might have a version "rockie-mnt-rel-Feb", in this case the converted numeric version is reported as "0.0.0.0". In this case, the string version of the package is more meaningful.
When using the Host Posture Plugin on Linux operating systems to retrieve package information, the string value of a package version can be determined in advance of making the ACS rule by running the "rpm -q package-name" command, for example, "rpm -q openssl". The 4-octet value of a package version is determined from the same output of the "rpm -q package-name" command.
Package Information Retrieved by Host Posture Plugin for Mac OS X Platforms
For Mac OS X, there are two types of applications that are of concern to CTA: system applications which have receipts in /Library/Receipts/ and user applications which are installed in /Applications directory.
System applications are identified by the first level folder name under /Library/Receipts, like "Danish.pkg", "X11SDK.pkg". User applications are identified by the application name under /Applications directory as displayed in Finder. For example, "Firefox", "DVD\ Player".
The applications located in the subfolders of /Applications directory can also be queried, in these cases the package name looks like the relative path to /Applications. For example, "Utilities/Disk\ Utility", "Zinio/Zinio\ Reader".
Note
White spaces in package names must be escaped with backslash ("\").
The version information of system applications is parsed out of the Contents/version.plist file under the package's directory under the /Library/Receipts directory. Version information is in the form of "a.b.c.d". The first three fields of version are from the CFBundleShortVersionString key, and the fourth field is from SourceVersion key. For user application packages, the version information is retrieved from the Info.plist file under the Contents/ directory in the application's directory. We first look for the value of CFBundleShortVersionString key. If this key is not present we will return the value of CFBundleVersion key. If both keys are missing no information will be returned for the package.
Cisco Trust Agent Posture Plugin
By default, CTA installs and registers a posture plugin that provides information about itself. The CTA posture plugin returns information such as CTA's name, version number, and the name of the operating system on which it runs.
The default location of the Windows CTA posture plugin is the \Program Files\Common Files\PostureAgent\Plugins directory. The plugin consists of two files: ctapp.dll and ctapp.inf.
The default location for the CTA posture plugin on Linux and Mac OS X operating systems is the /opt/PostureAgent/Plugins directory. The plugin consists of two files: ctapp.so and ctapp_unix.inf.
The CTA plugin returns many of the same attributes for all operating systems. You can use the information in table 7-2 when defining rules for the default Cisco Trust Agent plugin in ACS:
Table 7-2
Condition name in Posture Validation Policies page of ACS
|
Attribute Description
|
Used by this operating system
|
Cisco:PA: Application-Posture-Assessment
|
This is the value of the Application-posture token from CTA.
|
Linux, Mac OS X, Windows
|
Cisco:PA:Kernel-Version
|
Kernel version, which is the same as the output of the "uname -r" command.
|
Linux, Mac OS X,
|
Cisco:PA:MachinePostureState
|
Contains the running status of the machine.
Linux and Mac OS X return these values:
• Booting (ACS value = 1)
• Running (ACS value = 2)
Windows platforms return these values:
• Booting (ACS value = 1)
• Running (ACS value = 2)
• Logged in (ACS value = 3
See Machine Posture State for more information on the use of this attribute.
|
Linux, Mac OS X, Windows.
|
Cisco:PA:OS-Release
|
A string that contains the OS Kernel name, version, and hardware platform.
|
Linux, Mac OS X,
|
Cisco:PA:OS-Type
|
Contains the name of the operating system running on the client.
Linux platforms return these names:
• Red Hat Enterprise Linux WS
• Red Hat Enterprise Linux ES
• Red Hat Enterprise Linux AS
Mac OS X returns these names:
• Mac OS Panther
• Mac OS Tiger
Windows platforms return these names:
• Windows Server 2003 Enterprise Edition
• Windows Server 2003 Web Edition
• Windows Server 2003 Standard Edition
• Windows XP Home Edition
• Windows XP Professional
• Windows 2000 Advanced Server
• Windows 2000 Server
|
Linux, Mac OS X, Windows
|
Cisco:PA:OS-Version
|
The operating system version number in the format major.minor.sustaining.build.
|
Linux, Mac OS X, Windows
|
Cisco:PA:PA-Name
|
Contains the name of the posture agent running on the client. In this case, the name would be Cisco Trust Agent.
|
Linux, Mac OS X, Windows
|
Cisco:PA:PA-Version
|
The Cisco Trust Agent version number in the format major.minor.sustaining.build.
|
Linux, Mac OS X, Windows
|
Cisco:PA: System-Posture-Assessment
|
This indicates the overall posture token of a client on which CTA runs.
|
Linux, Mac OS X, Windows
|
Cisco:PA:User-Notification
|
Contains an informational message that the Cisco Trust Agent displays to the user on request from the ACS server.
|
Linux, Mac OS X, Windows
|
CTA Posture Plugin Attributes and Definitions
Machine Posture State
Machine posture state is provided by CTA to inform ACS about the status of the machine when it boots. One of the following states can be reported:
•
Booting
•
Running
•
Logged in (Not supported on Linux)
Booting is the initial state when the machine is started. The state is set to running when all services are started. On Linux, running is the final state because there is no simple way to determine if a user has logged in. On Windows, when a user has logged in, the logged in state is available. The machine posture state is set once a user has logged into the machine. If the user logs out of the machine, the state is set back to the running state until another user logs in.
This state is used with ACS to determine the posture of a machine based on the rules set up for different policies. For example, the following policy could be set on ACS.
Rule
|
Posture Token
|
Antivirus Enabled = TRUE
|
Healthy
|
Antivirus Installed and Cisco Trust Agent Machine State = Booting
|
Transitional
|
Antivirus Installed = FALSE
|
Quarantine
|
CTA Scripting Posture Plugin
The ctascriptPP retrieves the posture credentials requested by a third party script.
A binary posture plugin consists of two parts, a dynamic link library (.dll) file for Windows systems, or a shared object (.so) file for Linux systems, and a .inf file. The .inf file points to the .dll (or .so) file that retrieves the posture credentials. Typically, these are pairs of files; one .inf file is associated with one .dll or .so file.
A script can be substituted for a binary posture plugin. However, the script still needs the .dll (or .so) file and the .inf file to retrieve the posture credentials. The .inf file supplied by the third party must always point to the ctascriptPP file. In the case of a script, many unique .inf files point to one .dll (or .so) and that is the ctascriptPP file.
See Chapter 9, "Using the Scripting Interface" for more information on the CTA scripting interface.
Plugin Installation and Upgrade
Each NAC-compliant application is responsible for installing its own posture plugin on end systems.
Plugins for Windows environments are installed in this directory:
\Program Files\Common Files\PostureAgent\Plugins\Install
Plugins for Linux and Mac OS X environments are installed in this directory:
/opt/PostureAgent/Plugins/install
When CTA receives a posture request, it scans the PostureAgnt\Plugins\Install directory for new or updated posture plugins. If there are new or updated posture plugins in the PostureAgnt\Plugins\Install directory, CTA performs one of the following actions:
•
If the .dll (Windows) or the .so (Linux and Mac OS X) plugin does not exist in the PostureAgent\Plugins directory, CTA moves the plugin files from the PostureAgent\Plugins\Install directory to the PostureAgent\Plugins directory.
•
If the .dll (Windows) or the .so (Linux and Mac OS X) plugins does exist in the PostureAgent\Plugins directory, then CTA checks to see if the plugin, in the PostureAgent\Plugins\Install directory, is newer than the one in the Plugins directory. CTA then moves the newer plugin to the PostureAgent\Plugins directory and overwrites the older one. If the plugin in the PostureAgent\Plugins\Install directory is older than the one in the Plugins directory, CTA deletes it, and continues to use the original plugin.
•
If the plugin creates an error during registration, CTA moves the plugin to one of the following directories (if the logging is enabled, the error information is logged):
Windows:
\Program Files\Common Files\PostureAgent\Plugins\Quarantine
Linux and Mac OS X:
/opt/PostureAgent/Plugins/Quarantine
Note
Quarantined plugins do not participate in posture validation.
You do not need to install CTA before other NAC-compliant applications in order for CTA to make use of their plugins. All plugins are stored in a common directory. When CTA receives a request for posture credentials, it checks the common directory for new plugins before it proceeds to retrieve the posture credentials.