Вопрос: Примеры применения ACL типа Packet Content Filtering на сериях DGS-3200, DGS-3400 и DGS-3600

Ответ: 

Для большей наглядности приведем таблицу, из которой легко узнать, какой байт в какой chunk входит.

chunk0
b126
b127
b0
b1
chunk8
b30
b31
b32
b33
chunk16
b62
b63
b64
b65
chunk24
b94
b95
b96
b97
chunk1
b2
b3
b4
b5
chunk9
b34
b35
b36
b37
chunk17
b66
b67
b68
b69
chunk25
b98
b99
b100
b101
chunk2
b6
b7
b8
b9
chunk10
b38
b39
b40
b41
chunk18
b70
b71
b72
b73
chunk26
b102
b103
b104
b105
chunk3
b10
b11
b12
b13
chunk11
b42
b43
b44
b45
chunk19
b74
b75
b76
b77
chunk27
b106
b107
b108
b109
chunk4
b14
b15
b16
b17
chunk12
b46
b47
b48
b49
chunk20
b78
b79
b80
b81
chunk28
b110
b111
b112
b113
chunk5
b18
b19
b20
b21
chunk13
b50
b51
b52
b53
chunk21
b82
b83
b84
b85
chunk29
b114
b115
b116
b117
chunk6
b22
b23
b24
b25
chunk14
b54
b55
b56
b57
chunk22
b86
b87
b88
b89
chunk30
b118
b119
b120
b121
chunk7
b26
b27
b28
b29
chunk15
b58
b59
b60
b61
chunk23
b90
b91
b92
b93
chunk31
b122
b123
b124
b125

Пример №1. Блокировка SMB трафика

Необходимо заблокировать SMB трафик (порты 135, 137, 138, 139, 445) на физических портах коммутатора 1-24.
РС1 обращается на ТСР порт 445 РС2, такой пакет выглядит в Ethereal (порт выделен для наглядности):

Source
192.168.0.101
Len=0 MSS=1460             
Destination
192.168.0.6           
Protocol Info
TCP   1862 >
445 [SYN] Seq=0 Ack=0 Win=65535 

Internet Protocol, Src: 192.168.0.101 (192.168.0.101), Dst: 192.168.0.6 (192.168.0.6)
Transmission Control Protocol, Src Port: 1862 (1862), Dst Port: 445 (445), Seq: 0, Ack: 0,
Len: 0
0000 00 11 5b 4f 21 9f 00 11 5b 31 b9 e7 08 00 45 00 ..[O!...[1....E.
0010 00 30 5b 91 40 00 80 06 1d 7b c0 a8 00 65 c0 a8 .0[.@....{...e..
0020 00 06 07 46 01 bd be e9 ca 67 00 00 00 00 70 02 ...F.....g....p.
0030 ff ff 6f 0f 00 00 02 04 05 b4 01 01 04 02 ..o...........

Таким образом, информация о порте назначения содержится в байтах 24h и 25h (36 и 37 в десятичной СС соответственно). Обратимся к таблице, приведенной выше. Байты 36 и 37 входят в chunk9.

Создадим профиль на коммутаторе:

create access_profile profile_id 1 packet_content_mask offset_chunk_1 9 0x0000ffff

Приведенная выше команда означает, что первым обрабатываемым chunk (offset_chunk_1) в нашем случае будет chunk9. Маску значений задаем равной  0x0000ffff , это означает, что в создаваемых в этом профил правилах, манипулировать мы будем 36 и 37 байтами (вторая половина chunk).

Далее создадим правило в нашем профиле:

config access_profile profile_id 1 add access_id auto_assign packet_content offset_chunk_1 0x1BD port 1-24 deny

В этом правиле указан номер созданного выше профиля (profile_id 1). Значение, принимаемое обрабатываемым нами offset_chunk_1, задаем равным  0x1BD (445 порт в десятичной СС). Физические порты коммутатора для которых 445 порт будет блокироваться: 1-24.

По аналогии создадим правила, блокирующие другие порты: 135 (87h), 137 (89h), 138 (8Ah), 139 (8Bh).

Окончательный вид правил для блокировки SMB выглядит следующим образом:

create access_profile profile_id 1 packet_content_mask offset_chunk_1 9 0x0000ffff
config access_profile profile_id 1 add access_id auto_assign packet_content offset_chunk_1 0x87 port 1-24 deny
config access_profile profile_id 1 add access_id auto_assign packet_content offset_chunk_1 0x89 port 1-24 deny
config access_profile profile_id 1 add access_id auto_assign packet_content offset_chunk_1 0x8A port 1-24 deny
config access_profile profile_id 1 add access_id auto_assign packet_content offset_chunk_1 0x8B port 1-24 deny
config access_profile profile_id 1 add access_id auto_assign packet_content offset_chunk_1 0x1BD port 1-24 deny

Пример №2.  Запрещаем доступ компьютеру с известной связкой IP-MAC к другим компьютерам в нужном VLAN

Например, требуется запретить 172.31.26.200 (00:22:15:97:38:d6) в VLAN 10.

РС1: 172.31.26.200 пингует РС2, такой пакет выглядит в Ethereal (используемые параметры выделены для наглядности):

Ethernet II, Src: 00:22:15:97:38:d6 (00:22:15:97:38:d6), Dst: 00:1f:c6:c8:10:22 (00:1f:c6:c8:10:22)

802.1Q Virtual LAN, PRI: 0, CFI: 0, ID: 10
Internet Protocol, Src: 172.31.26.200 (172.31.26.200), Dst: 172.31.26.210 (172.31.26.210)

0000  00 1f c6 c8 10 22 00 22  15 97 38 d6 81 00 00 0a   ....."." ..8.....
0010  08 00 45 00 00 3c 00 a9  00 00 80 01 ac 3f ac 1f   ..E..<.. .....?..
0020  1a c8 ac 1f 1a d2 00 00  4a 5c 02 00 09 00 61 62   ........ J\....ab

Таким образом, информация о MAC адресе источника содержится в байтах с 6h до Bh (6 - 11 в десятичной СС соответственно), информация о VLAN в Eh и Fh (14 - 15), информация об IP адресе источника в 1Eh-21h (30 - 33).

Обратимся к таблице, приведенной выше. Байты 6-9 входят в chunk2; 10-11 в chunk3; 14-15 в chunk4; 30-33 в chunk8.

Создадим профиль, в котором выделим требуемые байты, как уже описывалось выше:

create access_profile profile_id 1 packet_content_mask offset_chunk_1 2 0xFFFFFFFF offset_chunk_2 3 0xFFFF0000 offset_chunk_3 4
0xFFFF0000 offset_chunk_4 8 0xFFFFFFFF

Создадим правило в профиле, используя значения, согласно исходным данным:

config access_profile profile_id 1 add access_id auto_assign packet_content offset_chunk_1 0x00221597 offset_chunk_2 0x38D60000
offset_chunk_3 0xA0000 offset_chunk_4 0xAC1F1AC8 port 10 deny

Таким образом, окончательный вид правил (для 10 порта) следующий:

create access_profile profile_id 1 packet_content_mask offset_chunk_1 2 0xFFFFFFFF offset_chunk_2 3 0xFFFF0000 offset_chunk_3 4
0xFFFF0000 offset_chunk_4 8 0xFFFFFFFF
config access_profile profile_id 1 add access_id auto_assign packet_content offset_chunk_1 0x00221597 offset_chunk_2 0x38D60000
offset_chunk_3 0xA0000 offset_chunk_4 0xAC1F1AC8 port 10 den