12.4. ENIP¶
The Ethernet Industrial Protocol (ENIP) is part of the Common Industrial Protocol (CIP). The Common Industrial Protocol (CIP) defines the object structure and specifies the message transfer. The ENIP Enforcer function applies the Deep Packet Inspection (DPI) function to the ENIP and CIP data stream. The Ethernet Industrial Protocol (ENIP) is used to monitor and control industrial automation equipment such as PLCs (Programmable Logic Controllers), sensors, and meters.
The device uses the ENIP Enforcer function to perform the DPI function on the data stream. The device performs the DPI function based on the values defined in the specified profiles. The device blocks the data packets that violate the specified profiles.
Note
The ENIP Enforcer function performs the DPI function only on packets that contain an explicit request, and drops packets that contain an implicit request. An explicit request contains CIP message over TCP. An implicit request contains CIP message over UDP.
When the ENIP Enforcer profile is active, the device applies the profile to the data stream.
The device permits only data packets containing the values specified in the following fields:
Function type
Sanity check
Default object list
Wildcard service codes
Allow embedded PCCC (Programmable Controller Communication Commands)
The menu contains the following dialogs:
ENIP Profile
ENIP Object
You can find the ENIP enforcer at Firewall → Enforcer → ENIP.
12.4.1. ENIP Settings¶
- Enabled
Wheter the ENIP enforcer is active or not.
Possible values:
Enabled
Disabled (default setting)
- Name
Name of the ENIP enforcer.
Possible values:
Character string with 0..100 characters
- Description
Description of the ENIP enforcer.
Possible values:
Character string with 0..250 characters
- Sanity Check
Activates/deactivates the plausibility check for the data packets.
Possible values:
enabled (default setting)
The plausibility check is active.
The device checks the plausibility of the data packets regarding format and specification.
The device blocks the data packets that violate the specified profiles.
disabled
The plausibility check is inactive.
- TCP Reset
Activates/deactivates the resetting of the TCP connection in case of a protocol violation or if the plausibility check detects an error.
Possible values:
enabled (default setting)
The resetting of the TCP connection is active.
If the device identifies a protocol violation or detects a plausibility check error, then the device terminates the TCP connection. The device establishes the TCP connection again on receiving a new connection request.
disabled
The resetting of the TCP connection is inactive.
- Debug
Activates/deactivates the debugging of the profiles.
Possible values:
enabled
Debugging is active.
The device sends the reset packet along with the information related to the termination of TCP connection. The prerequisite is that in the TCP reset field the checkbox is marked.
disabled (default setting)
Debugging is inactive.
- Allow embedded PCCC
Activates/deactivates DPI for PCCC messages encapsulated in data packets. PCCC messages are embedded within the Ethernet Industrial Protocol (ENIP). Activating this setting is useful when securing network traffic to and from PLC-5 and MicroLogix controllers.
Possible values:
enabled
DPI for PCCC messages is active.
disabled (default setting)
DPI for PCCC messages is inactive.
- Preset
Preset of class IDs and service codes
Possible values:
Read Only
Assigns the class IDs for the read function.
Read Write
Assigns the class IDs for the read/write functions.
Any (default setting)
Assigns the class IDs for every function.
The device does not permit any subsequent changes in the Advanced Class IDs list.
Advanced
Lets you specify user-defined class IDs.
12.4.2. ENIP Class IDs for different function types¶
Class ID |
Service codes |
---|---|
0x01 = Identity |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x11 = Find Next Object Instance
0x18 = Get Member
|
0x02 = Message Router |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x54
|
0x04 = Assembly |
0x0E = Get Attribute Single
0x18 = Get Member
|
0x05 = Connection |
0x08 = Create
0x0E = Get Attribute Single
0x11 = Find Next Object Instance
0x4C
|
0x06 = Off-Link Connection Manager |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x4C
0x4E
0x52
0x54
0x56
0x57
0x59
0x5A
0x5B
|
0x07 = Register |
0x0E = Get Attribute Single
|
0x08 = Discrete Input Point |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x09 = Discrete Output Point |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x0A = Analog Input Point |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x0B = Analog Output Point |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x0E = Presence Sensing |
0x0E = Get Attribute Single
|
0x0F = Parameter |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x18 = Get Member
0x4B
|
0x10 = Parameter Group |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x12 = Group |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x1D = Discrete Input Group |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x1E = Discrete Output Group |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x1F = Discrete Group |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x20 = Analog Input Group |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x21 = Analog Output Group |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x22 = Analog Group |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x23 = Position Sensor Object |
0x0E = Get Attribute Single
0x18 = Get Member
|
0x24 = Position Controller Supervisor Object |
0x0E = Get Attribute Single
|
0x25 = Position Controller Object |
0x0E = Get Attribute Single
|
0x26 = Block Sequencer Object |
0x0E = Get Attribute Single
|
0x27 = Command Block Object |
0x0E = Get Attribute Single
|
0x28 = Motor Data Object |
0x0E = Get Attribute Single
|
0x29 = Control Supervisor Object |
0x0E = Get Attribute Single
|
0x2A = AC/DC Drive Object |
0x0E = Get Attribute Single
|
0x2B = Acknowledge Handler Object |
0x0E = Get Attribute Single
|
0x2C = Overload Object |
0x0E = Get Attribute Single
|
0x2D = Softstart Object |
0x0E = Get Attribute Single
|
0x2E = Selection Object |
0x0E = Get Attribute Single
0x18 = Get Member
|
0x30 = S-Device Supervisor Object |
0x0E = Get Attribute Single
|
0x31 = S-Analog Sensor Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x32 = S-Analog Actuator Object |
0x0E = Get Attribute Single
|
0x33 = S-Single Stage Controller Object |
0x0E = Get Attribute Single
|
0x34 = S-Gas Calibration Object |
0x0E = Get Attribute Single
0x4B
|
0x35 = Trip Point Object |
0x0E = Get Attribute Single
|
0x37 = File Object |
0x0E = Get Attribute Single
0x18 = Get Member
0x4B
0x4D
0x4F
|
0x38 = S-Partial Pressure Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x4C
0x4D
0x4E
|
0x40 = S-Sensor Calibration Object |
0x0E = Get Attribute Single
0x4B
|
0x41 = Event Log Object |
0x0E = Get Attribute Single
0x18 = Get Member
|
0x42 = Motion Device Axis Object |
0x03 = Get Attribute List
0x0E = Get Attribute Single
0x4B
0x50
0x52
0x54
|
0x43 = Time Sync Object |
0x01 = Get Attributes All
0x03 = Get Attribute List
0x0E = Get Attribute Single
|
0x44 = Modbus Object |
0x0E = Get Attribute Single
0x4B
0x4C
0x4D
0x4E
|
0x45 = Originator Connection List Object |
0x4C
|
0x46 = Modbus Serial Link Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x47 = Device Level Ring (DLR) Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x18 = Get Member
|
0x48 = QoS Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x4D = Target Connection List Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x4E = Base Energy Object |
0x01 = Get Attributes All
0x03 = Get Attribute List
0x0E = Get Attribute Single
0x18 = Get Member
|
0x4F = Electrical Energy Object |
0x01 = Get Attributes All
0x03 = Get Attribute List
0x0E = Get Attribute Single
|
0x50 = Non-Electrical Energy Object |
0x01 = Get Attributes All
0x03 = Get Attribute List
0x0E = Get Attribute Single
|
0x51 = Base Switch Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x52 = SNMP Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x53 = Power Management Object |
0x01 = Get Attributes All
0x03 = Get Attribute List
0x0E = Get Attribute Single
0x18 = Get Member
|
0x54 = RSTP Bridge Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x55 = RSTP Port Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x91 = ANSI Extended Symbol Segment |
0x03 = Get Attribute List
0x55
|
0x6C |
0x01 = Get Attributes All
|
0xAC |
0x01 = Get Attributes All
0x4C
|
0xB2 |
0x08 = Create
0x4E
0x4F
|
0xF3 = Connection Configuration Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x4C
0x4D
0x4E
0x50
|
0xF4 = Port Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0xF5 = TCP/IP Interface Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0xF6 = EtherNet Link Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x300 = Module Diagnostics |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x301 = InputIOCnx |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x302 = Local Slaves |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x400 = Service Port Control Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x401 = Dynamic IO Control Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x402 = Router Diagnostics Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x403 = Router Routing Table Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x404 = SMTP |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x405 = SNTP |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x406 = HSBY |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
Class ID |
Service codes |
---|---|
0x01 = Identity |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x11 = Find Next Object Instance
0x18 = Get Member
|
0x02 = Message Router |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x4B
0x54
|
0x04 = Assembly |
0x08 = Create
0x09 = Delete
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x18 = Get Member
0x19 = Set Member
0x1A = Insert Member
0x1B = Remove Member
0x4B
0x4C
|
0x05 = Connection |
0x05 = Reset
|
0x06 = Off-Link Connection Manager |
0x01 = Get Attributes All
0x02 = Set Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x4C
0x4E
0x52
0x54
0x56
0x57
0x59
0x5A
0x5B
|
0x07 = Register |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x08 = Discrete Input Point |
0x01 = Get Attributes All
0x02 = Set Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x09 = Discrete Output Point |
0x01 = Get Attributes All
0x02 = Set Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x0A = Analog Input Point |
0x01 = Get Attributes All
0x02 = Set Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x0B = Analog Output Point |
0x01 = Get Attributes All
0x02 = Set Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x0E = Presence Sensing |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x0F = Parameter |
0x01 = Get Attributes All
0x05 = Reset
0x0D = Apply Attributes
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x15 = Restore
0x16 = Save
0x18 = Get Member
0x4B
|
0x10 = Parameter Group |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x12 = Group |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x1D = Discrete Input Group |
0x01 = Get Attributes All
0x02 = Set Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x1E = Discrete Output Group |
0x01 = Get Attributes All
0x02 = Set Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x1F = Discrete Group |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x20 = Analog Input Group |
0x01 = Get Attributes All
0x02 = Set Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x21 = Analog Output Group |
0x01 = Get Attributes All
0x02 = Set Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x22 = Analog Group |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x23 = Position Sensor Object |
0x05 = Reset
0x0D = Apply Attributes
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x15 = Restore
0x16 = Save
0x18 = Get Member
0x19 = Set Member
|
0x24 = Position Controller Supervisor Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x25 = Position Controller Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x26 = Block Sequencer Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x27 = Command Block Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x28 = Motor Data Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x15 = Restore
0x16 = Save
|
0x29 = Control Supervisor Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x05 = Reset
|
0x2A = AC/DC Drive Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x15 = Restore
0x16 = Save
|
0x2B = Acknowledge Handler Object |
0x08 = Create
0x09 = Delete
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x4B
0x4C
|
0x2C = Overload Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x15 = Restore
0x16 = Save
|
0x2D = Softstart Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x15 = Restore
0x16 = Save
|
0x2E = Selection Object |
0x05 = Reset
0x06 = Start
0x07 = Stop
0x08 = Create
0x09 = Delete
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x18 = Get Member
0x19 = Set Member
0x1A = Insert Member
0x1B = Remove Member
|
0x30 = S-Device Supervisor Object |
0x05 = Reset
0x06 = Start
0x07 = Stop
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x4B
0x4C
0x4E
|
0x31 = S-Analog Sensor Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x4B
0x4C
|
0x32 = S-Analog Actuator Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x33 = S-Single Stage Controller Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x63
|
0x34 = S-Gas Calibration Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x4B
|
0x35 = Trip Point Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x37 = File Object |
0x06 = Start
0x07 = Stop
0x08 = Create
0x09 = Delete
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x15 = Restore
0x16 = Save
0x18 = Get Member
0x4B
0x4C
0x4D
0x4E
0x4F
0x50
0x51
|
0x38 = S-Partial Pressure Object |
0x01 = Get Attributes All
0x08 = Create
0x09 = Delete
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x4B
0x4C
0x4D
0x4E
0x4F
|
0x40 = S-Sensor Calibration Object |
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x4B
|
0x41 = Event Log Object |
0x05 = Reset
0x06 = Start
0x07 = Stop
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x18 = Get Member
0x19 = Set Member
0x1A = Insert Member
0x1B = Remove Member
|
0x42 = Motion Device Axis Object |
0x03 = Get Attribute List
0x04 = Set Attribute List
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x1C = Group Sync
0x4B
0x4C
0x4D
0x4E
0x4F
0x50
0x51
0x52
0x53
0x54
|
0x43 = Time Sync Object |
0x01 = Get Attributes All
0x03 = Get Attribute List
0x04 = Set Attribute List
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x44 = Modbus Object |
0x0E = Get Attribute Single
0x4B
0x4C
0x4D
0x4E
0x4F
0x50
0x51
|
0x45 = Originator Connection List Object |
0x08 = Create
0x09 = Delete
0x4C
|
0x46 = Modbus Serial Link Object |
0x01 = Get Attributes All
0x05 = Reset
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x4B
|
0x47 = Device Level Ring (DLR) Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x18 = Get Member
0x4B
0x4C
0x4D
0x4E
|
0x48 = QoS Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x4D = Target Connection List Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x4C
|
0x4E = Base Energy Object |
0x01 = Get Attributes All
0x03 = Get Attribute List
0x04 = Set Attribute List
0x05 = Reset
0x08 = Create
0x09 = Delete
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x18 = Get Member
0x19 = Set Member
0x1A = Insert Member
0x1B = Remove Member
0x4B
0x4C
|
0x4F = Electrical Energy Object |
0x01 = Get Attributes All
0x03 = Get Attribute List
0x0E = Get Attribute Single
|
0x50 = Non-Electrical Energy Object |
0x01 = Get Attributes All
0x03 = Get Attribute List
0x0E = Get Attribute Single
|
0x51 = Base Switch Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x52 = SNMP Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x53 = Power Management Object |
0x01 = Get Attributes All
0x03 = Get Attribute List
0x04 = Set Attribute List
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x18 = Get Member
0x19 = Set Member
0x4D
0x4E
0x4F
|
0x54 = RSTP Bridge Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x55 = RSTP Port Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0x91 = ANSI Extended Symbol Segment |
0x03 = Get Attribute List
0x55
|
0x6B |
0x55
|
0x6C |
0x01 = Get Attributes All
|
0xAC |
0x01 = Get Attributes All
0x4C
|
0xB2 |
0x08 = Create
0x4E
0x4F
|
0xF3 = Connection Configuration Object |
0x01 = Get Attributes All
0x02 = Set Attributes All
0x08 = Create
0x09 = Delete
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x15 = Restore
0x4B
0x4C
0x4D
0x4E
0x4F
0x50
0x51
0x52
|
0xF4 = Port Object |
0x01 = Get Attributes All
0x05 = Reset
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0xF5 = TCP/IP Interface Object |
0x01 = Get Attributes All
0x02 = Set Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
|
0xF6 = EtherNet Link Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x10 = Set Attribute Single
0x4C
|
0x300 = Module Diagnostics |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x301 = InputIOCnx |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x302 = Local Slaves |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x400 = Service Port Control Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x401 = Dynamic IO Control Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x402 = Router Diagnostics Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x403 = Router Routing Table Object |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|
0x404 = SMTP |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x32
|
0x405 = SNTP |
0x01 = Get Attributes All
0x0E = Get Attribute Single
0x32
|
0x406 = HSBY |
0x01 = Get Attributes All
0x0E = Get Attribute Single
|