Ответ:
Для большей наглядности приведем таблицу, из которой легко узнать, какой байт в какой 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...........
Создадим профиль на коммутаторе:
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 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 |