1456 lines
52 KiB
Plaintext
1456 lines
52 KiB
Plaintext
FreeIPMI Testing
|
|
|
|
by
|
|
|
|
Albert Chu
|
|
chu11@llnl.gov
|
|
Last Updated: August 27, 2013
|
|
|
|
The following is a list of tests I've (semi) regularly done to measure
|
|
the compliance of a motherboard to IPMI as well as FreeIPMI's
|
|
compliance to the motherboard's implementation. It is not 100%
|
|
thorough and will not guaranteee full compliance with the IPMI
|
|
specification, but it covers a fair amount of the IPMI specification
|
|
and tests a significant number of important cases. It should help
|
|
uncover many of the most common IPMI compliance issues I've found.
|
|
|
|
All users/vendors/manufacturers/etc. are welcome to debate me on the
|
|
below as mandatory vs. optional requirements. While some of the below
|
|
may technically be optional for IPMI compliance, I consider them to be
|
|
practically mandatory for a functioning IPMI system supporting IPMI
|
|
1.5, IPMI 2.0, Serial-over-LAN, etc. A few tests may have "**Nice to
|
|
have**" listed next to it, which indicate something that would be nice
|
|
to have, but ultimately is not an IPMI compliance issue.
|
|
|
|
The error messages listed in tests below highlight what I believe to
|
|
be the "best" or "most likely" error messages that should be returned
|
|
by the tools. It is possible that different IPMI completion codes
|
|
returned by commands are acceptable, leading to different error
|
|
message output in the tools. If you believe an alternate completion
|
|
code (leading to an alternate error message) is acceptable, please let
|
|
me know about them.
|
|
|
|
Everything below assumes reasonable knowledge of IPMI and knowledge of
|
|
FreeIPMI tools. Please see FreeIPMI documentation/manpages for
|
|
additional information.
|
|
|
|
All tool testing listed below is generally agnostic to execution
|
|
in-band vs. out-of-band with obvious exceptions (e.g. testing
|
|
ipmipower in-band, configuring the MAC address out-of-band, etc).
|
|
Naturally, the testing below assumes the tester is not
|
|
configuring/using FreeIPMI workarounds. That defeats the point of
|
|
testing for IPMI compliance :-)
|
|
|
|
Out of Band Configuration Definitions
|
|
-------------------------------------
|
|
|
|
A number of test situations below require a particular out-of-band
|
|
configuration on the remote machine. The following define a set of
|
|
usernames/password combinations that will be referenced in the tests
|
|
below.
|
|
|
|
USERANONYMOUS - User #1 (i.e. NULL) username *without* a password.
|
|
|
|
USERNULL - User #1 (i.e. NULL) username *with* a password.
|
|
|
|
USER1 - A non-null username, with a password, and the highest
|
|
privilege this user can authenticate at is the "user" privilege.
|
|
|
|
OPERATOR1 - A non-null username, with a password, and the highest
|
|
privilege this user can authenticate at is the "operator" privilege.
|
|
|
|
ADMIN1 - A non-null username, with a password, and the highest
|
|
privilege this user can authenticate at is the "admin" privilege.
|
|
|
|
SOL1 - A non-null username, with a password, the highest privilege
|
|
this user can authenticate with is identical to the SOL privilege
|
|
level, and SOL payload access is enabled.
|
|
|
|
Ipmi-config Testing
|
|
-------------------
|
|
|
|
Goal: The goal of the ipmi-config testing is to ensure that all IPMI
|
|
configuration values can be read, written, and "stick" after being
|
|
written.
|
|
|
|
Test)
|
|
|
|
Execute ipmi-config with --checkout on a default/unmodified
|
|
manufacturered system.
|
|
|
|
Using the --commit and --filename options, commit the checked out
|
|
configuration file back to the BMC.
|
|
|
|
Ensure that the default checked out configuration can be written back.
|
|
If it cannot, is there a "default" configuration that is "invalid"?
|
|
|
|
Test)
|
|
|
|
Execute ipmi-config with --checkout, verify checked out configuration
|
|
contains all appropriate configurable fields. At minimum, the fields
|
|
listed below should be output:
|
|
- For each "User" section:
|
|
* Username
|
|
* Enable_User
|
|
* Password
|
|
* Lan_Enable_IPMI_Msgs
|
|
* Lan_Privilege_Limit
|
|
* SOL_Payload_Access (if IPMI 2.0 is supported)
|
|
- For the Lan_Channel section:
|
|
* Volatile_Access_Mode
|
|
* Volatile_Enable_Per_Message_Auth
|
|
* Volatile_Channel_Privilege_Limit
|
|
* Non_Volatile_Access_Mode
|
|
* Non_Volatile_Enable_Per_Message_Auth
|
|
* Non_Volatile_Channel_Privilege_Limit
|
|
- For the Lan_Conf section:
|
|
* IP_Address_Source
|
|
* IP_Address
|
|
* MAC_Address
|
|
* Subnet_Mask
|
|
* Default_Gateway_IP_Address
|
|
* Default_Gateway_MAC_Address
|
|
* Backup_Gateway_IP_Address
|
|
* Backup_Gateway_MAC_Address
|
|
- For the Lan_Conf_Auth section:
|
|
* Callback_Enable_Auth_Type_None
|
|
* Callback_Enable_Auth_Type_MD2
|
|
* Callback_Enable_Auth_Type_MD5
|
|
* Callback_Enable_Auth_Type_Straight_Password
|
|
* User_Enable_Auth_Type_None
|
|
* User_Enable_Auth_Type_MD2
|
|
* User_Enable_Auth_Type_MD5
|
|
* User_Enable_Auth_Type_Straight_Password
|
|
* Operator_Enable_Auth_Type_None
|
|
* Operator_Enable_Auth_Type_MD2
|
|
* Operator_Enable_Auth_Type_MD5
|
|
* Operator_Enable_Auth_Type_Straight_Password
|
|
* Admin_Enable_Auth_Type_None
|
|
* Admin_Enable_Auth_Type_MD2
|
|
* Admin_Enable_Auth_Type_MD5
|
|
* Admin_Enable_Auth_Type_Straight_Password
|
|
o If some of these fields are not output, are the appropriate
|
|
system "authentication type support" flags set properly?
|
|
- For the Lan_Conf_Security_Keys section (if IPMI 2.0 is supported):
|
|
* K_G
|
|
- For the Lan_Conf_Misc:
|
|
* Enable_Gratuitous_ARPs (if gratuitous ARPs supported)
|
|
* Enable_ARP_Response (if BMC generated ARPs supported)
|
|
* Gratuitous_ARP_Interval (if gratuitous ARPs supported)
|
|
- For Rmcpplus_Conf_Privilege section:
|
|
* Maximum_Privilege_Cipher_Suite_Id_0
|
|
* Maximum_Privilege_Cipher_Suite_Id_1
|
|
* Maximum_Privilege_Cipher_Suite_Id_2
|
|
* Maximum_Privilege_Cipher_Suite_Id_3
|
|
- For SOL_Conf section (if IPMI 2.0 is supported):
|
|
* Enable_SOL
|
|
* SOL_Privilege_Level
|
|
* Force_SOL_Payload_Authentication
|
|
* Force_SOL_Payload_Encryption
|
|
* Character_Accumulate_Interval
|
|
* Character_Send_Threshold
|
|
* SOL_Retry_Count
|
|
* SOL_Retry_Interval
|
|
* Non_Volatile_Bit_Rate
|
|
* Volatile_Bit_Rate
|
|
|
|
Test)
|
|
|
|
Using a previously checked out configuration file, modify the
|
|
configuration file as follows below to try many configuration
|
|
possibilities. Then for each configuration change:
|
|
|
|
- Using the --diff and --filename options, verify that each field
|
|
modified in the configuration file is indeed different than what is
|
|
currently stored on the BMC. ipmi-config should output each
|
|
difference to stdout.
|
|
|
|
- Using the --commit and --filename options, commit the configuration
|
|
file to the BMC.
|
|
|
|
- Using the --diff and --filename options, verify that each field has
|
|
been written to the BMC and there are no longer any differences
|
|
ipmi-config should not output anything to stdout.
|
|
|
|
- Ensure that fields can be changed once and then changed back. For
|
|
example for Yes/No fields, configure a "Yes" to a "No", then back
|
|
to a "Yes".
|
|
|
|
Configuration changes to try:
|
|
- For each "User" section:
|
|
* Username
|
|
o Change username to something different.
|
|
o Ensure username of length 16 can be configured.
|
|
* Enable_User
|
|
o Can configure both Yes and No
|
|
* Password
|
|
o Can change username to something different.
|
|
o Ensure empty password (no input) can be configured.
|
|
o Ensure password of length 16 (20 if IPMI 2.0 supported) can be
|
|
configured.
|
|
* Lan_Enable_IPMI_Msgs
|
|
o Can configure both Yes and No
|
|
* Lan_Privilege_Limit
|
|
o Can change privilege level to User, Operator, and Administrator
|
|
* SOL_Payload_Access
|
|
o Can configure both Yes and No
|
|
- For the Lan_Channel section:
|
|
* Volatile_Access_Mode
|
|
o Can configure Disabled and Always_Available
|
|
* Volatile_Enable_Per_Message_Auth
|
|
o Can configure both Yes and No
|
|
* Volatile_Channel_Privilege_Limit
|
|
o Can configure User, Operator, and Administrator
|
|
* Non_Volatile_Access_Mode
|
|
o Can configure Disabled and Always_Available
|
|
* Non_Volatile_Enable_Per_Message_Auth
|
|
o Can configure both Yes and No
|
|
* Non_Volatile_Channel_Privilege_Limit
|
|
o Can configure User, Operator, and Administrator
|
|
- For the Lan_Conf section:
|
|
* IP_Address_Source
|
|
o Can configure Static and Use_DHCP
|
|
* IP_Address
|
|
o Can configure a different IP address
|
|
* MAC_Address
|
|
o Can configure a different MAC address
|
|
* Subnet_Mask
|
|
o Can configure a different Subnet address
|
|
* Default_Gateway_IP_Address
|
|
o Can configure a different IP address
|
|
* Default_Gateway_MAC_Address
|
|
o Can configure a different MAC address
|
|
* Backup_Gateway_IP_Address
|
|
o Can configure a different IP address
|
|
* Backup_Gateway_MAC_Address
|
|
o Can configure a different MAC address
|
|
- For the Lan_Conf_Auth section:
|
|
* Callback_Enable_Auth_Type_None
|
|
o Can configure both Yes and No
|
|
* Callback_Enable_Auth_Type_MD2
|
|
o Can configure both Yes and No
|
|
* Callback_Enable_Auth_Type_MD5
|
|
o Can configure both Yes and No
|
|
* Callback_Enable_Auth_Type_Straight_Password
|
|
o Can configure both Yes and No
|
|
* User_Enable_Auth_Type_None
|
|
o Can configure both Yes and No
|
|
* User_Enable_Auth_Type_MD2
|
|
o Can configure both Yes and No
|
|
* User_Enable_Auth_Type_MD5
|
|
o Can configure both Yes and No
|
|
* User_Enable_Auth_Type_Straight_Password
|
|
o Can configure both Yes and No
|
|
* Operator_Enable_Auth_Type_None
|
|
o Can configure both Yes and No
|
|
* Operator_Enable_Auth_Type_MD2
|
|
o Can configure both Yes and No
|
|
* Operator_Enable_Auth_Type_MD5
|
|
o Can configure both Yes and No
|
|
* Operator_Enable_Auth_Type_Straight_Password
|
|
o Can configure both Yes and No
|
|
* Admin_Enable_Auth_Type_None
|
|
o Can configure both Yes and No
|
|
* Admin_Enable_Auth_Type_MD2
|
|
o Can configure both Yes and No
|
|
* Admin_Enable_Auth_Type_MD5
|
|
o Can configure both Yes and No
|
|
* Admin_Enable_Auth_Type_Straight_Password
|
|
o Can configure both Yes and No
|
|
- For the Lan_Conf_Security_Keys section (if IPMI 2.0 is supported):
|
|
* K_G
|
|
o Can configure a different key
|
|
o Ensure empty key (no input) can be configured.
|
|
- For the Lan_Conf_Misc:
|
|
* Enable_Gratuitous_ARPs
|
|
o Can configure both Yes and No
|
|
* Enable_ARP_Response
|
|
o Can configure both Yes and No
|
|
* Gratuitous_ARP_Interval
|
|
o Can configure a different value (e.g. 5 to 6)
|
|
- For Rmcpplus_Conf_Privilege section:
|
|
* Maximum_Privilege_Cipher_Suite_Id_0
|
|
o Can configure Unused, User, Operator, and Administrator.
|
|
* Maximum_Privilege_Cipher_Suite_Id_1
|
|
o Can configure Unused, User, Operator, and Administrator.
|
|
* Maximum_Privilege_Cipher_Suite_Id_2
|
|
o Can configure Unused, User, Operator, and Administrator.
|
|
* Maximum_Privilege_Cipher_Suite_Id_3
|
|
o Can configure Unused, User, Operator, and Administrator.
|
|
- For SOL_Conf section (if IPMI 2.0 is supported):
|
|
* Enable_SOL
|
|
o Can configure both Yes and No
|
|
* SOL_Privilege_Level
|
|
o Can configure User, Operator, and Administrator.
|
|
* Force_SOL_Payload_Authentication
|
|
o Can configure both Yes and No
|
|
* Force_SOL_Payload_Encryption
|
|
o Can configure both Yes and No
|
|
* Character_Accumulate_Interval
|
|
o Can configure a different value (e.g. 5 to 6)
|
|
* Character_Send_Threshold
|
|
o Can configure a different value (e.g. 5 to 6)
|
|
* SOL_Retry_Count
|
|
o Can configure a different value (e.g. 5 to 6)
|
|
* SOL_Retry_Interval
|
|
o Can configure a different value (e.g. 5 to 6)
|
|
* Non_Volatile_Bit_Rate
|
|
o Can configure a different bit rate (e.g. 57600 to 115200)
|
|
* Volatile_Bit_Rate
|
|
o Can configure a different bit rate (e.g. 57600 to 115200)
|
|
|
|
Test)
|
|
|
|
Start from machine where all "Non_Volatile" fields are identical to
|
|
the "Volatile" fields.
|
|
|
|
Checkout, modify, then commit all "Non_Volatile" fields to something
|
|
different but not the "Volatile" fields.
|
|
|
|
Using --diff, verify that only the "Non_Volatile" fields have changed
|
|
and the "Volatile" fields have not changed. The field pairs should be
|
|
different from each other.
|
|
|
|
Power off the IPMI machine and power it back on.
|
|
|
|
Verify that all "Volatile" fields now hold the new values stored in
|
|
the "Non_Volatile" fields. The field pairs should be the same as each
|
|
other.
|
|
|
|
Test)
|
|
|
|
Reboot the machine. Using --checkout, checkout the current
|
|
configuration. Configure all fields to be the "opposite" or
|
|
"different" of what they currently are (e.g. No to Yes, User to
|
|
Administrator, etc.).
|
|
|
|
Power off the machine and power it back on.
|
|
|
|
Using the --diff option, verify that newly configured fields have been
|
|
saved across a reboot.
|
|
|
|
Again, configure all fields "opposite" again.
|
|
|
|
Power off the machine and power it back on.
|
|
|
|
Using the --diff option, verify that newly configured fields have been
|
|
saved across a reboot.
|
|
|
|
Test)
|
|
|
|
If any parameters on the system are read only, does ipmi-config output
|
|
"Read Only Field" appropriately?
|
|
|
|
If not, is the field returning the proper completion code (typically
|
|
0x82)?
|
|
|
|
Bmc-info Testing
|
|
----------------
|
|
|
|
Goal: Ensure all important values are output and are correct.
|
|
|
|
Test)
|
|
|
|
Execute bmc-info with no bmc-info specific options, verify tool:
|
|
- Executes without errors
|
|
- All fields output are correct. Key fields to verify:
|
|
* Firmware Revision
|
|
* IPMI Version
|
|
* Manufacturer ID
|
|
o The name of the manufacter outputs
|
|
|
|
e.g. "Manufacturer ID : SOME-COMPANY (1234)"
|
|
vs.
|
|
"Manufacturer ID : 1234"
|
|
|
|
If the above is not the case, and the vendor is registered with
|
|
IANA, is there a firmware bug?
|
|
* Product ID
|
|
* GUID
|
|
* Channel Information - Medium Type
|
|
o If IPMI over LAN is supported, atleast one should be == "802.3 LAN"
|
|
* Channel Information - Vendor ID
|
|
o Most if not all should be == "Intelligent Platform Management Interface forum (7154)"
|
|
|
|
Ipmi-chassis Testing
|
|
--------------------
|
|
|
|
Goal: Ensure all important features function properly.
|
|
|
|
Test)
|
|
|
|
If the remote system supports an IPMI controllable LED:
|
|
|
|
Execute ipmi-chassis with --chassis-identify=force, verify remote
|
|
system:
|
|
- Has LED turned on indefinitely.
|
|
|
|
Execute ipmi-chassis with --chassis-identify=turn-off, verify remote
|
|
system:
|
|
- Has LED turned off.
|
|
|
|
Execute ipmi-chassis with --chassis-identify=30, verify remote system:
|
|
- Has LED turned on for approximately 30 seconds, then turns itself
|
|
off.
|
|
|
|
Ipmi-sensors Testing
|
|
--------------------
|
|
|
|
Goal: Ensure all important values are output and are correct.
|
|
|
|
Test)
|
|
|
|
Execute ipmi-sensors with no ipmi-sensors specific options, verify tool:
|
|
- Executes without errors
|
|
- All threshold and discrete sensor readings that should be output are
|
|
output with a reading and/or event.
|
|
* If N/A is output instead, is the sensor improperly listed a
|
|
software sensor? Is the sensor disabled? Is sensor scanning
|
|
disabled? Is the event-reading-type-code of the sensor correct?
|
|
- All threshold values (temperature, rpm, voltage, etc.) are
|
|
valid/correct values (no invalid numbers, no negative temperatures,
|
|
etc.).
|
|
* If not, are stored SDR values for this sensor correct?
|
|
- All units are valid/correct.
|
|
* If not, are stored SDR values for this sensor correct?
|
|
- All groups are valid/correct.
|
|
* If not, are stored SDR values for this sensor correct?
|
|
|
|
Test)
|
|
|
|
Execute ipmi-sensors with very verbose output (-vv), verify tool:
|
|
- Executes without errors
|
|
- All fields output are correct. Key fields to verify:
|
|
* Sensor Number
|
|
* Sensor Owner ID
|
|
o BMC owned sensors should be 0x20.
|
|
o The combination of Sensor Owner ID and Sensor Number should
|
|
point to a unique sensor.
|
|
* Entity ID
|
|
o The name of the Entity ID outputs
|
|
e.g. "Entity ID: system board (7)"
|
|
vs.
|
|
"Entity ID: 7"
|
|
If the above is not the case, are all the Entity IDs valid? Do they
|
|
belong in the proper ranges defined by the IPMI specification?
|
|
* Lower Critical Threshold
|
|
* Upper Critical Threshold
|
|
* Lower Non-Critical Threshold
|
|
* Upper Non-Critical Threshold
|
|
* Lower Non-Recoverable Threshold
|
|
* Upper Non-Recoverable Threshold
|
|
o All thresholds listed are correct. Those that are not
|
|
readable/relevant are output w/ "N/A". If not output with
|
|
"N/A", does the BMC properly label them as readable
|
|
vs. unreadable?
|
|
* Assertion Event Enabled
|
|
* Deassertion Event Enabled
|
|
o All supported assertion and deassertion events are listed. If
|
|
they are not listed, are they properly labeled as enabled/disabled
|
|
in the SDR?
|
|
|
|
Test)
|
|
|
|
Execute ipmi-sensors in-band with the --bridge-sensors option to
|
|
verify that sensors not owned by the BMC are output correctly, verify
|
|
tool:
|
|
- Executes without errors
|
|
- All bridged sensors are output correctly.
|
|
|
|
Test)
|
|
|
|
Execute ipmi-sensors out-of-band with the --bridge-sensors option to
|
|
verify that sensors not owned by the BMC are output correctly, verify
|
|
tool:
|
|
- Executes without errors
|
|
- All bridged sensors are output correctly.
|
|
|
|
Test)
|
|
|
|
Testing Power Supply Sensors:
|
|
|
|
- Use a dual power supply motherboard.
|
|
- Verify ipmi-sensors lists the power supply sensors as having an
|
|
event of "Presence Detected".
|
|
- Unplug one of the power supplies.
|
|
- Verify ipmi-sensors now lists the power supply sensor with an
|
|
appropriate event message, such as "Power Supply Failure detected"
|
|
or "Power Supply input lost (AC/DC)".
|
|
- Plug the power supply back in.
|
|
- Verify ipmi-sensors not lists the power supply sensors as having an
|
|
event of "Presence Detected".
|
|
|
|
Test)
|
|
|
|
Testing Intrusion Sensors:
|
|
|
|
- Verify ipmi-sensors lists the intrusion sensor as "OK".
|
|
- Open the case/chassis/motherboard/etc.
|
|
- Verify ipmi-sensors now lists the intrusion sensor with an
|
|
appropriate event message, such as "General Chassis Intrusion".
|
|
|
|
Ipmi-sel Testing
|
|
----------------
|
|
|
|
Goal: Ensure all important values are output and are correct.
|
|
|
|
Test)
|
|
|
|
Execute ipmi-sel with no ipmi-sel specific options, verify tool:
|
|
- Executes without errors
|
|
- All dates on SEL records are correct
|
|
* If not, Is the BMC time set correctly?
|
|
* If not, is OS time/timezone set correctly?
|
|
- Sensor names are output correctly.
|
|
* If not, are the SEL records reporting the correct sensor number
|
|
and/or sensor owner id?
|
|
|
|
Test)
|
|
|
|
Execute ipmi-sel with --display and --display-range, verify tool:
|
|
- Executes without errors
|
|
- Exact record ids listed in options are output.
|
|
- Exact record ids output match record ids listed with default
|
|
(i.e. list all records) output.
|
|
* If not, are record ids stored incorrectly?
|
|
|
|
Test)
|
|
|
|
Execute ipmi-sel with --clear, verify tool:
|
|
- Executes without errors
|
|
- SEL is completely cleared. Subsequent calls to ipmi-sel result in
|
|
no output and no errors.
|
|
|
|
Test) **Nice to have**
|
|
|
|
Execute ipmi-sel with no ipmi-sel specific options, verify tool:
|
|
- Executes without errors
|
|
- All columns headers and fields align properly
|
|
* If not, are there SEL records that indicate events that were not
|
|
listed as possible in the SDR? If so, perhaps some entries in the
|
|
SDR to indicate those events are possible could be added, thus
|
|
allowing the tools to output a cleaner, nicer output for the
|
|
users.
|
|
|
|
Test) **Nice to have**
|
|
Execute ipmi-sel with no ipmi-sel specific options, verify tool:
|
|
- Executes without errors
|
|
- All events have an identified name in the "Name" column. In other
|
|
words, there is no output like "Sensor #1".
|
|
* If not, are there SDR records that identify every potential event
|
|
that can occur on the motherboard. If not, perhaps some entries
|
|
(most likely event-only records) in the SDR could help make the
|
|
output of ipmi-sel cleaner, nicer, and better for the end user.
|
|
|
|
Ipmi-fru Testing
|
|
----------------
|
|
|
|
Goal: Ensure all important values are output and are correct.
|
|
|
|
Test)
|
|
|
|
Execute ipmi-fru with no ipmi-fru specific options, verify tool:
|
|
- Executes without errors
|
|
- All FRU entries are output fully
|
|
- No outputs of checksum errors
|
|
* If checksum errors are output, are checksums valid?
|
|
- No error message outputs (keyword "Error" is output).
|
|
|
|
Ipmiconsole Testing
|
|
-------------------
|
|
|
|
Goal: Ensure all important features function properly.
|
|
|
|
Configure all BIOS settings and SOL settings to enable SOL. Enable
|
|
the remote machine to accept sysrqs (in Linux, this requires
|
|
configuration of console=ttySX on the kernel boot line).
|
|
|
|
For purpose of this set of tests, consider this set of configuration
|
|
options from ipmi-config the "pristine" SOL configuration and the SOL1
|
|
user configuration.
|
|
|
|
Section UserX
|
|
## Give Username
|
|
Username SOL1
|
|
## Possible values: Yes/No or blank to not set
|
|
Enable_User Yes
|
|
## Give password or blank to clear. MAX 16 chars.
|
|
Password somepassword
|
|
## Possible values: Yes/No
|
|
Lan_Enable_IPMI_Msgs Yes
|
|
## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access
|
|
Lan_Privilege_Limit Administrator
|
|
## Possible values: Yes/No
|
|
SOL_Payload_Access Yes
|
|
EndSection
|
|
|
|
Section Rmcpplus_Conf_Privilege
|
|
## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary
|
|
Maximum_Privilege_Cipher_Suite_Id_0 Administrator
|
|
## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary
|
|
Maximum_Privilege_Cipher_Suite_Id_1 Administrator
|
|
## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary
|
|
Maximum_Privilege_Cipher_Suite_Id_2 Administrator
|
|
## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary
|
|
Maximum_Privilege_Cipher_Suite_Id_3 Administrator
|
|
EndSection
|
|
|
|
Section SOL_Conf
|
|
## Possible values: Yes/No
|
|
Enable_SOL Yes
|
|
## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary
|
|
SOL_Privilege_Level Administrator
|
|
## Possible values: Yes/No
|
|
Force_SOL_Payload_Authentication Yes
|
|
## Possible values: Yes/No
|
|
Force_SOL_Payload_Encryption Yes
|
|
## Give a valid integer. Each unit is 5ms
|
|
Character_Accumulate_Interval 5
|
|
## Give a valid number
|
|
Character_Send_Threshold 50
|
|
## Give a valid integer
|
|
SOL_Retry_Count 5
|
|
## Give a valid integer. Interval unit is 10ms
|
|
SOL_Retry_Interval 10
|
|
## Possible values: Serial/9600/19200/38400/57600/115200
|
|
Non_Volatile_Bit_Rate 115200
|
|
## Possible values: Serial/9600/19200/38400/57600/115200
|
|
Volatile_Bit_Rate 115200
|
|
## Give a valid port number
|
|
## SOL_Payload_Port_Number 623
|
|
EndSection
|
|
|
|
Test)
|
|
|
|
Configure "pristine" configuration.
|
|
|
|
Execute ipmiconsole, authentication with SOL1, verify tool:
|
|
- Establishes a SOL session by outputting "[SOL established]"
|
|
- Verify session can be exitted cleanly (by default type &.).
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Disable SOL Payload access for user sol1.
|
|
|
|
Execute ipmiconsole, authentication with SOL1, verify tool:
|
|
- Does not establish an SOL session. Most likely/best error message
|
|
"SOL unavailable".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure lan_privilege_limit "user" for sol1.
|
|
|
|
Execute ipmiconsole, authentication with SOL1 and privilege level user
|
|
(-l user), verify tool:
|
|
- Does not establish an SOL session. Most likely/best error message
|
|
"privilege level insufficient".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure lan_privilege_limit "user" for sol1.
|
|
|
|
Configure sol_privilege_level to "user".
|
|
|
|
Execute ipmiconsole, authentication with SOL1 and privilege level user
|
|
(-l user), verify tool:
|
|
- Establishes a SOL session by outputting "[SOL established]"
|
|
- Verify session can be exitted cleanly (by default type '&.').
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Disable SOL (Enable_SOL field).
|
|
|
|
Execute ipmiconsole, authentication with SOL1, verify tool:
|
|
- Does not establish an SOL session. Most likely/best error message
|
|
"SOL unavailable"
|
|
* It is most important that the connection not succeed.
|
|
|
|
Test)
|
|
|
|
Establish a SOL session.
|
|
|
|
While in a session, generate a break (by default generated via '&B')
|
|
and ensure the remote console has received it. In Linux, if sysrqs
|
|
are enabled properly, a '&B?' should output the linux sysrq menu.
|
|
|
|
Test)
|
|
|
|
Establish a SOL session.
|
|
|
|
While in a session, reboot the remote machine, and ensure the BIOS
|
|
(or EFI, etc.) can be entered and BIOS settings can be
|
|
modified.
|
|
|
|
Test)
|
|
|
|
Establish a SOL session.
|
|
|
|
While a session is currently active, in a different window, execute
|
|
ipmiconsole w/ the --dont-steal option, authenticating with SOL1,
|
|
verify tool:
|
|
- Does not establish an SOL session. Most likely/best error message
|
|
"SOL in use". The original SOL session has stayed alive.
|
|
* If this does not work, does proper SOL payload activation status
|
|
work?
|
|
|
|
Test)
|
|
|
|
Establish a SOL session.
|
|
|
|
While a session is currently active, in a different window, execute
|
|
ipmiconsole w/ the --deactivate option, authenticating with SOL1, verify tool:
|
|
- Does not establish an SOL session.
|
|
- The original SOL session has been terminated. Most likely/best
|
|
error message "SOL session stolen".
|
|
* If this does not work, does proper SOL payload deactivation work?
|
|
|
|
Test)
|
|
|
|
Establish a SOL session.
|
|
|
|
While a session is currently active, in a different window, execute
|
|
ipmiconsole, authenticating with SOL1, verify tool:
|
|
- Establishes a SOL session by outputting "[SOL established]"
|
|
- The original SOL session has been terminated, and "[SOL session
|
|
stolen]" is reported.
|
|
* If this does not work, does SOL properly inform "old" sessions that
|
|
it is being terminated? does proper SOL payload deactivation work?
|
|
|
|
Test)
|
|
|
|
Establish a SOL session with SOL payload instance 1
|
|
(--sol-payload-instance=1).
|
|
|
|
While a session is currently active, in a different window, execute
|
|
ipmiconsole, using a different payload instance
|
|
(i.e. --sol-payload-instance=2):
|
|
|
|
If multiple SOL instances are support, verify tool:
|
|
- Establishes a SOL session by outputting "[SOL established]" in the
|
|
second session.
|
|
- The original SOL session has not been terminated, and continues to
|
|
work.
|
|
|
|
If multiple SOL instances are not supported, verify tool:
|
|
- Errors out appropriately. Most likely/best error message
|
|
"BMC Busy."
|
|
|
|
Test)
|
|
|
|
Configure "pristine" configuration.
|
|
|
|
Execute ipmiconsole, authentication with SOL1, with option -I 0
|
|
Execute ipmiconsole, authentication with SOL1, with option -I 1
|
|
Execute ipmiconsole, authentication with SOL1, with option -I 2
|
|
verify tool:
|
|
- Does not establish an SOL session under each test, outputting "SOL
|
|
requires encryption".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Execute ipmiconsole w/ -I 3, authentication with SOL1, verify tool:
|
|
- Establishes a SOL session by outputting "[SOL established]"
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure remote system to *not* require SOL Payload Authentication
|
|
and *not* require SOL Payload Encryption.
|
|
|
|
Execute ipmiconsole, authentication with SOL1, with option -I 0
|
|
Execute ipmiconsole, authentication with SOL1, with option -I 1
|
|
Execute ipmiconsole, authentication with SOL1, with option -I 2
|
|
Execute ipmiconsole, authentication with SOL1, with option -I 3
|
|
verify tool:
|
|
- Establishes a SOL session by outputting "[SOL established]" under
|
|
each test.
|
|
|
|
|
|
Ipmipower Testing
|
|
-----------------
|
|
|
|
Goal: Ensure all important features function properly.
|
|
|
|
Test)
|
|
|
|
Begin with the remote machine currently powered off.
|
|
|
|
Execute ipmipower w/ -l user and --stat, authenticating with USER1,
|
|
verify tool:
|
|
- Executes without errors.
|
|
- Properly reports the state of the machine as "off".
|
|
|
|
Execute ipmipower w/ --on, authenticating with USER1, verify tool:
|
|
- Returns an error of "privilege level cannot be obtained for this user"
|
|
|
|
Execute ipmipower w/ --on, authenticating with OPERATOR1, verify tool:
|
|
- Returns "ok" and turns on the node.
|
|
|
|
Execute ipmipower w/ -l user and --stat, authenticating with USER1,
|
|
verify tool:
|
|
- Executes without errors.
|
|
- Properly reports the state of the machine as "on".
|
|
|
|
Execute ipmipower w/ --off, authenticating with USER1, verify tool:
|
|
- Returns an error of "privilege level cannot be obtained for this user"
|
|
|
|
Execute ipmipower w/ --off, authenticating with OPERATOR1, verify tool:
|
|
- Returns "ok" and turns off the node.
|
|
|
|
Execute ipmipower w/ -l user and --stat, authenticating with USER1,
|
|
verify tool:
|
|
- Executes without errors.
|
|
- Properly reports the state of the machine as "off".
|
|
|
|
Test)
|
|
|
|
Begin with the remote machine currently powered off.
|
|
|
|
Execute ipmipower w/ -l user and --stat, authenticating with USER1,
|
|
verify tool:
|
|
- Executes without errors.
|
|
- Properly reports the state of the machine as "off".
|
|
|
|
Execute ipmipower w/ --on, authenticating with USER1, verify tool:
|
|
- Returns an error of "privilege level cannot be obtained for this user"
|
|
|
|
Execute ipmipower w/ --on, authenticating with ADMIN1, verify tool:
|
|
- Returns "ok" and turns on the node.
|
|
|
|
Execute ipmipower w/ -l user and --stat, authenticating with USER1,
|
|
verify tool:
|
|
- Executes without errors.
|
|
- Properly reports the state of the machine as "on".
|
|
|
|
Execute ipmipower w/ --off, authenticating with USER1, verify tool:
|
|
- Returns an error of "privilege level cannot be obtained for this user"
|
|
|
|
Execute ipmipower w/ --off, authenticating with ADMIN1, verify tool:
|
|
- Returns "ok" and turns off the node.
|
|
|
|
Execute ipmipower w/ -l user and --stat, authenticating with USER1,
|
|
verify tool:
|
|
- Executes without errors.
|
|
- Properly reports the state of the machine as "off".
|
|
|
|
In-Band KCS Testing
|
|
-------------------
|
|
|
|
Goal: Ensure all important features function properly.
|
|
|
|
Test)
|
|
|
|
Execute bmc-info in-band, verify tool:
|
|
- Executes without errors.
|
|
- If tool fails to execute, determine:
|
|
* A) Are memory-mapped address properly stored in the SMBIOS or
|
|
other locations?
|
|
* B) Is KCS accessed through the default memory-mapped addresses?
|
|
|
|
Out-of-Band IPMI 1.5 Testing
|
|
----------------------------
|
|
|
|
Goal: Ensure all important features function properly.
|
|
|
|
For purpose of this set of tests, consider this set of configuration
|
|
options from ipmi-config the "pristine" BMC configuration and user
|
|
configuration.
|
|
|
|
Section User1
|
|
## Give Username
|
|
## Username NULL
|
|
## Possible values: Yes/No or blank to not set
|
|
Enable_User No
|
|
## Give password or blank to clear. MAX 16 chars.
|
|
Password
|
|
## Possible values: Yes/No
|
|
Lan_Enable_IPMI_Msgs Yes
|
|
## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access
|
|
Lan_Privilege_Limit No_Access
|
|
EndSection
|
|
|
|
Section UserA
|
|
## Give Username
|
|
Username USER1
|
|
## Possible values: Yes/No or blank to not set
|
|
Enable_User Yes
|
|
## Give password or blank to clear. MAX 16 chars.
|
|
Password somepassword
|
|
## Possible values: Yes/No
|
|
Lan_Enable_IPMI_Msgs Yes
|
|
## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access
|
|
Lan_Privilege_Limit User
|
|
EndSection
|
|
|
|
Section UserB
|
|
## Give Username
|
|
Username OPERATOR1
|
|
## Possible values: Yes/No or blank to not set
|
|
Enable_User Yes
|
|
## Give password or blank to clear. MAX 16 chars.
|
|
Password somepassword
|
|
## Possible values: Yes/No
|
|
Lan_Enable_IPMI_Msgs Yes
|
|
## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access
|
|
Lan_Privilege_Limit Operator
|
|
EndSection
|
|
|
|
Section UserC
|
|
## Give Username
|
|
Username ADMIN1
|
|
## Possible values: Yes/No or blank to not set
|
|
Enable_User Yes
|
|
## Give password or blank to clear. MAX 16 chars.
|
|
Password somepassword
|
|
## Possible values: Yes/No
|
|
Lan_Enable_IPMI_Msgs Yes
|
|
## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access
|
|
Lan_Privilege_Limit Administrator
|
|
EndSection
|
|
|
|
Section Lan_Channel
|
|
## Possible values: Disabled/Pre_Boot_Only/Always_Available/Shared
|
|
Volatile_Access_Mode Always_Available
|
|
## Possible values: Yes/No
|
|
Volatile_Enable_Per_Message_Auth Yes
|
|
## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary
|
|
Volatile_Channel_Privilege_Limit Administrator
|
|
## Possible values: Disabled/Pre_Boot_Only/Always_Available/Shared
|
|
Non_Volatile_Access_Mode Always_Available
|
|
## Possible values: Yes/No
|
|
Non_Volatile_Enable_Per_Message_Auth Yes
|
|
## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary
|
|
Non_Volatile_Channel_Privilege_Limit Administrator
|
|
EndSection
|
|
|
|
Section Lan_Conf_Auth
|
|
## Possible values: Yes/No
|
|
Callback_Enable_Auth_Type_None No
|
|
## Possible values: Yes/No
|
|
Callback_Enable_Auth_Type_MD2 No
|
|
## Possible values: Yes/No
|
|
Callback_Enable_Auth_Type_MD5 No
|
|
## Possible values: Yes/No
|
|
Callback_Enable_Auth_Type_Straight_Password No
|
|
## Possible values: Yes/No
|
|
User_Enable_Auth_Type_None No
|
|
## Possible values: Yes/No
|
|
User_Enable_Auth_Type_MD2 No
|
|
## Possible values: Yes/No
|
|
User_Enable_Auth_Type_MD5 Yes
|
|
## Possible values: Yes/No
|
|
User_Enable_Auth_Type_Straight_Password No
|
|
## Possible values: Yes/No
|
|
Operator_Enable_Auth_Type_None No
|
|
## Possible values: Yes/No
|
|
Operator_Enable_Auth_Type_MD2 No
|
|
## Possible values: Yes/No
|
|
Operator_Enable_Auth_Type_MD5 Yes
|
|
## Possible values: Yes/No
|
|
Operator_Enable_Auth_Type_Straight_Password No
|
|
## Possible values: Yes/No
|
|
Admin_Enable_Auth_Type_None No
|
|
## Possible values: Yes/No
|
|
Admin_Enable_Auth_Type_MD2 No
|
|
## Possible values: Yes/No
|
|
Admin_Enable_Auth_Type_MD5 Yes
|
|
## Possible values: Yes/No
|
|
Admin_Enable_Auth_Type_Straight_Password No
|
|
EndSection
|
|
|
|
Test)
|
|
|
|
Configure "pristine" configuration.
|
|
|
|
Execute bmc-info, authenticating with USER1, with privilege level user (-l user)
|
|
Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator)
|
|
Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin)
|
|
verify tool:
|
|
- Executes without errors for each test.
|
|
|
|
Execute bmc-info, authenticating with USER1, with privilege level operator (-l operator).
|
|
Execute bmc-info, authenticating with USER1, with privilege level admin (-l admin).
|
|
Execute bmc-info, authenticating with OPERATOR1, with privilege level admin (-l admin).
|
|
verify tool:
|
|
- Exits with error. Most likely/best error message "privilege level
|
|
cannot be obtained for this user".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Execute bmc-info, authenticating with USERANONYMOUS (i.e. no username
|
|
and no password input), verify tool:
|
|
- Exits with error. Most likely/best error message "username invalid".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Execute bmc-info, authenticating with a bogus username (e.g. FOO)
|
|
- Exits with error. Most likely/best error message "username invalid".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Execute bmc-info, authenticating with USER1, with a bad password
|
|
- Exits with error. Most likely/best error message "password
|
|
verification timeout".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Execute bmc-info, authenticating with USER1, with option -a md2
|
|
Execute bmc-info, authenticating with USER1, with option -a straight_password_key
|
|
Execute bmc-info, authenticating with USER1, with option -a none
|
|
verify tool:
|
|
- Exits with error. Most likely/best error message "authentication
|
|
type unavailable for attempted privilege level" for each test.
|
|
* It is most important that the connection not succeed.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure User1 to be enabled and have a privilege_limit of "user".
|
|
|
|
Execute bmc-info, authenticating with USERANONYMOUS (i.e. no username
|
|
and no password input), verify tool:
|
|
- Executes without errors.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure User1 to be enabled, with a password, and have a
|
|
privilege_limit of "user".
|
|
|
|
Execute bmc-info, authenticating with USERNULL (i.e. no username
|
|
and w/ the proper password input), verify tool:
|
|
- Executes without errors.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure USER1, OPERATOR1, and ADMIN1 users to be off
|
|
(i.e. Enable_User = No).
|
|
|
|
Execute bmc-info, authenticating with USER1
|
|
Execute bmc-info, authenticating with OPERATOR1
|
|
Execute bmc-info, authenticating with ADMIN1
|
|
verify tool:
|
|
- Exits with error. Most likely/best error message "username invalid".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure USER1, OPERATOR1, and ADMIN1 users IPMI messaging to be off
|
|
(i.e. Lan_Enable_Ipmi_Msgs = No).
|
|
|
|
Execute bmc-info, authenticating with USER1
|
|
Execute bmc-info, authenticating with OPERATOR1
|
|
Execute bmc-info, authenticating with ADMIN1
|
|
verify tool:
|
|
- Exits with error. Most likely/best error message "password
|
|
verification timeout", "session timeout", or "privilege level
|
|
insufficient".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure all "Lan_Conf_Auth" fields to "Yes".
|
|
|
|
Execute bmc-info, authenticating with USER1, with option -a md5
|
|
Execute bmc-info, authenticating with USER1, with option -a md2
|
|
Execute bmc-info, authenticating with USER1, with option -a straight_password_key
|
|
Execute bmc-info, authenticating with USER1, with option -a none
|
|
verify tool:
|
|
- Executes without errors for each test.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Disable the LAN Channel (Volatile_Access_Mode = Disabled)
|
|
|
|
Execute bmc-info, authenticating with USER1, verify tool:
|
|
- Exits with error. Most likely/best error message "connection
|
|
timeout".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure LAN Channel Privilege Limit to User.
|
|
|
|
Execute bmc-info, authenticating with USER1, verify tool:
|
|
- Executes without errors.
|
|
|
|
Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator)
|
|
Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin)
|
|
- Exits with error. Most likely/best error message "privilege level
|
|
cannot be obtained for this user".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Execute ipmipower, authenticating with OPERATOR1, with --on
|
|
Execute ipmipower, authenticating with ADMIN1, with --on
|
|
- Exits with error. Most likely/best error message "privilege level
|
|
cannot be obtained for this user".
|
|
* It is most important that the connection not succeed.
|
|
|
|
(achu note: I do not currently possess a motherboard that passes this
|
|
last test, however, I am 99% sure I've had atleast one motherboard in
|
|
the past that did indeed pass this test.)
|
|
|
|
Out-of-Band IPMI 2.0 Testing
|
|
----------------------------
|
|
|
|
Goal: Ensure all important features function properly.
|
|
|
|
For purpose of this set of tests, consider this set of configuration
|
|
options from ipmi-config the "pristine" BMC configuration and user
|
|
configuration.
|
|
|
|
Section User1
|
|
## Give Username
|
|
## Username NULL
|
|
## Possible values: Yes/No or blank to not set
|
|
Enable_User No
|
|
## Give password or blank to clear. MAX 16 chars.
|
|
Password
|
|
## Possible values: Yes/No
|
|
Lan_Enable_IPMI_Msgs Yes
|
|
## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access
|
|
Lan_Privilege_Limit No_Access
|
|
EndSection
|
|
|
|
Section UserA
|
|
## Give Username
|
|
Username USER1
|
|
## Possible values: Yes/No or blank to not set
|
|
Enable_User Yes
|
|
## Give password or blank to clear. MAX 16 chars.
|
|
Password somepassword
|
|
## Possible values: Yes/No
|
|
Lan_Enable_IPMI_Msgs Yes
|
|
## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access
|
|
Lan_Privilege_Limit User
|
|
EndSection
|
|
|
|
Section UserB
|
|
## Give Username
|
|
Username OPERATOR1
|
|
## Possible values: Yes/No or blank to not set
|
|
Enable_User Yes
|
|
## Give password or blank to clear. MAX 16 chars.
|
|
Password somepassword
|
|
## Possible values: Yes/No
|
|
Lan_Enable_IPMI_Msgs Yes
|
|
## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access
|
|
Lan_Privilege_Limit Operator
|
|
EndSection
|
|
|
|
Section UserC
|
|
## Give Username
|
|
Username ADMIN1
|
|
## Possible values: Yes/No or blank to not set
|
|
Enable_User Yes
|
|
## Give password or blank to clear. MAX 16 chars.
|
|
Password somepassword
|
|
## Possible values: Yes/No
|
|
Lan_Enable_IPMI_Msgs Yes
|
|
## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access
|
|
Lan_Privilege_Limit Administrator
|
|
EndSection
|
|
|
|
Section Lan_Conf_Security_Keys
|
|
## Give string or blank to clear. Max 20 chars
|
|
K_G
|
|
EndSection
|
|
|
|
Section Rmcpplus_Conf_Privilege
|
|
## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary
|
|
Maximum_Privilege_Cipher_Suite_Id_0 Administrator
|
|
## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary
|
|
Maximum_Privilege_Cipher_Suite_Id_1 Administrator
|
|
## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary
|
|
Maximum_Privilege_Cipher_Suite_Id_2 Administrator
|
|
## Possible values: Unused/User/Operator/Administrator/OEM_Proprietary
|
|
Maximum_Privilege_Cipher_Suite_Id_3 Administrator
|
|
EndSection
|
|
|
|
Test)
|
|
|
|
Configure "pristine" configuration.
|
|
|
|
Execute all below tests with IPMI 2.0 (-D lan_2_0)
|
|
|
|
Execute bmc-info, authenticating with USER1, with privilege level user (-l user)
|
|
Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator)
|
|
Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin)
|
|
verify tool:
|
|
- Executes without errors for each test.
|
|
|
|
Execute bmc-info, authenticating with USER1, with -I 0
|
|
Execute bmc-info, authenticating with USER1, with -I 1
|
|
Execute bmc-info, authenticating with USER1, with -I 2
|
|
Execute bmc-info, authenticating with USER1, with -I 3
|
|
verify tool:
|
|
- Executes without errors for each test.
|
|
|
|
Execute bmc-info, authenticating with USER1, with privilege level operator (-l operator).
|
|
Execute bmc-info, authenticating with USER1, with privilege level admin (-l admin).
|
|
Execute bmc-info, authenticating with OPERATOR1, with privilege level admin (-l admin).
|
|
verify tool:
|
|
- Exits with error. Most likely/best error messages are "password invalid"
|
|
or "privilege level cannot be obtained for this user".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Execute bmc-info, authenticating with USERANONYMOUS (i.e. no username
|
|
and no password input), verify tool:
|
|
- Exits with error. Most likely/best error message "username invalid".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Execute bmc-info, authenticating with a bogus username (e.g. FOO)
|
|
- Exits with error. Most likely/best error message "username invalid".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Execute bmc-info, authenticating with USER1, with a bad password
|
|
- Exits with error. Most likely/best error message "password
|
|
invalid".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure User1 to be enabled and have a privilege_limit of "user".
|
|
|
|
Execute all below tests with IPMI 2.0 (-D lan_2_0)
|
|
|
|
Execute bmc-info, authenticating with USERANONYMOUS (i.e. no username
|
|
and no password input), verify tool:
|
|
- Executes without errors.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure User1 to be enabled, with a password, and have a
|
|
privilege_limit of "user".
|
|
|
|
Execute all below tests with IPMI 2.0 (-D lan_2_0)
|
|
|
|
Execute bmc-info, authenticating with USERNULL (i.e. no username
|
|
and w/ the proper password input), verify tool:
|
|
- Executes without errors.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure USER1, OPERATOR1, and ADMIN1 users to be off
|
|
(i.e. Enable_User = No).
|
|
|
|
Execute all below tests with IPMI 2.0 (-D lan_2_0)
|
|
|
|
Execute bmc-info, authenticating with USER1
|
|
Execute bmc-info, authenticating with OPERATOR1
|
|
Execute bmc-info, authenticating with ADMIN1
|
|
verify tool:
|
|
- Exits with error. Most likely/best error message "username invalid".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure USER1, OPERATOR1, and ADMIN1 users IPMI messaging to be off
|
|
(i.e. Lan_Enable_Ipmi_Msgs = No).
|
|
|
|
Execute bmc-info, authenticating with USER1
|
|
Execute bmc-info, authenticating with OPERATOR1
|
|
Execute bmc-info, authenticating with ADMIN1
|
|
verify tool:
|
|
- Exits with error. Most likely/best error message "password
|
|
invalid", "session timeout", or "privilege level insufficient".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure a non-null K_G key.
|
|
|
|
Execute all below tests with IPMI 2.0 (-D lan_2_0)
|
|
|
|
Execute bmc-info, authenticating with USER1, without specify -k
|
|
verify tool:
|
|
- Exits with error. Most likely/best error message "k_g invalid".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Execute bmc-info, authenticating with USER1, specify -k key.
|
|
verify tool:
|
|
- Executes without errors.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure each field in Rmcpplus_Conf_Privilege to "User".
|
|
|
|
Execute all below tests with IPMI 2.0 (-D lan_2_0)
|
|
|
|
Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 0
|
|
Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 1
|
|
Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 2
|
|
Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 3
|
|
verify tool:
|
|
- Executes without errors for each test.
|
|
|
|
Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 0
|
|
Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 1
|
|
Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 2
|
|
Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 3
|
|
Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 0
|
|
Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 1
|
|
Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 2
|
|
Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 3
|
|
verify tool:
|
|
- Exits with error. Most likely/best error message "privilege level
|
|
cannot be obtained for this user".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure each field in Rmcpplus_Conf_Privilege to "Unused".
|
|
|
|
Execute all below tests with IPMI 2.0 (-D lan_2_0)
|
|
|
|
Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 0
|
|
Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 1
|
|
Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 2
|
|
Execute bmc-info, authenticating with USER1, with privilege level user (-l user), with -I 3
|
|
Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 0
|
|
Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 1
|
|
Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 2
|
|
Execute bmc-info, authenticating with OPERATOR1, with privilege level operator (-l operator), with -I 3
|
|
Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 0
|
|
Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 1
|
|
Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 2
|
|
Execute bmc-info, authenticating with ADMIN1, with privilege level admin (-l admin), with -I 3
|
|
verify tool:
|
|
- Exits with error. Most likely/best error message "cipher suite id unavailable".
|
|
* It is most important that the connection not succeed.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure each user to have a password > 16 bytes in length.
|
|
|
|
Execute all below tests with IPMI 2.0 (-D lan_2_0)
|
|
|
|
Execute bmc-info, authenticating with USER1
|
|
Execute bmc-info, authenticating with OPERATOR1
|
|
Execute bmc-info, authenticating with ADMIN1
|
|
verify tool:
|
|
- Executes without errors for each test.
|
|
|
|
Test)
|
|
|
|
Begin with "pristine" configuration.
|
|
|
|
Configure each user to have a password > 16 bytes in length.
|
|
|
|
Execute all below tests with IPMI 1.5 (-D lan)
|
|
|
|
Execute bmc-info, authenticating with USER1
|
|
Execute bmc-info, authenticating with OPERATOR1
|
|
Execute bmc-info, authenticating with ADMIN1
|
|
- Exits with error. Most likely/best error message "password verification timeout".
|
|
* It is most important that the connection not succeed.
|
|
|
|
|
|
Misc: Bad Password Threshold
|
|
----------------------------
|
|
|
|
Goal: Ensure all important features function properly.
|
|
|
|
Test)
|
|
|
|
If Bad Password Thresholds are supported, configure a non-zero Bad
|
|
Password Threshold. Verify that a user is disabled after the number
|
|
of bad passwords crosses the threshold.
|
|
|
|
Test)
|
|
|
|
If Bad Password Thresholds and Attempt Count Reset Interval are
|
|
supported, configure a non-zero Bad Password Threshold and non-zero
|
|
Attempt Count Reset Interval. Verify that a user is diabled after the
|
|
number of bad passwords crosses the threshold occurs with the Attempt
|
|
Count Reset Interval. Verify that a user is NOT disabled if the
|
|
number of bad passwords crosses the threshold outside of the Attempt
|
|
Count Reset Interval.
|
|
|
|
Test)
|
|
|
|
If Bad Password Thresholds and a User Lockout Interval are supported,
|
|
configure a non-zero Bad Password Threshold and non-zero User Lockout
|
|
Interval. Verify that a user is diabled after the number of bad
|
|
passwords crosses the threshold. Verify that a user is enabled after
|
|
the User Lockout Interval has passed.
|
|
|
|
Test)
|
|
|
|
If a user has been disabled due to excess Bad Passwords, ensure an
|
|
event message has been generated to indicate this.
|
|
|
|
Misc: ARP
|
|
---------
|
|
|
|
Goal: Ensure all important features function properly.
|
|
|
|
Test)
|
|
|
|
Configure Gratuitous ARPs On.
|
|
|
|
Verify (probably with tcpdump or an equivalent network sniffer) that
|
|
Gratuitous ARPs are enabled and sending gratuitouts arps on the
|
|
network.
|
|
|
|
Configure Gratuitous ARPs Off.
|
|
|
|
Verify (probably with tcpdump or an equivalent network sniffer) that
|
|
Gratuitous ARPs are no longer being sent on the network.
|
|
|
|
Test)
|
|
|
|
Configure ARP Responses On.
|
|
|
|
Verify (probably with tcpdump or an equivalent network sniffer) that
|
|
ARP Responses are enabled and sending ARP responses back from requests.
|
|
|
|
Configure ARP Responses Off.
|
|
|
|
Verify (probably with tcpdump or an equivalent network sniffer) that
|
|
ARP Responses are disabled and not responding to ARP requests.
|
|
|
|
Test)
|
|
|
|
Configure both Gratuitous ARPs and ARP Responses Off
|
|
|
|
Verify that IPMI over LAN still functions if you manually insert the
|
|
remote MAC address into your local ARP cache.
|
|
|
|
In Linux, 'arp -s <hostname> <mac_addr>' adds the MAC address to the
|
|
local ARP cache.
|