faq обучение настройка
Текущее время: Вт июл 22, 2025 10:54

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 04, 2009 14:46 
Не в сети

Зарегистрирован: Вс дек 21, 2008 18:53
Сообщений: 1308
GreatFoolDad писал(а):
В случае snark-овского профиля (No 1) по идее должно быть "логическое И" - т.е. должны быть выполнены оба условия - и для offset_0-15, и для offset_16-31.

То есть должны выполнится оба условия и для нетегированного пакета и для тегированного сразу?

_________________
D-Link Switches: Tips & Tricks


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 04, 2009 14:52 
Не в сети

Зарегистрирован: Ср май 02, 2007 20:47
Сообщений: 84
GreatFoolDad чтобы это правило
Цитата:
config access_profile profile_id 1 add access_id auto_assign packet_content offset 12 0x08060000 offset 16 0x08060000 port <порт(ы)> permit
делало permit для ARP нетегированным (offset 12) ИЛИ тегированным (offset 16) кадрам, там как раз должно быть логическое "ИЛИ".

Если же там XOR, то в случае когда по одному из offset 0x08060000, а по другому не 0x08060000 всё будет нормально. Если же вдруг и offset 12 и offset 16 окажутся равными 0x08060000 (а теоретически - почему бы и нет) - фрейм не будет пропущен, что на мой взгляд не совсем правильно, невинновные фреймы могут быть расстреляны :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 04, 2009 15:11 
Не в сети

Зарегистрирован: Ср ноя 09, 2005 14:26
Сообщений: 808
Откуда: Alma-Ata
Кажется я понял, как должен выглядеть packet_content АЦЛ и для тегированных, и для не тегированных пакетов:
Код:
create access_profile                                        packet_content_mask offset_0-15 0x0 0x0 0x0 0xffff0000 offset_16-31 0xffff0000 profile_id 1

config access_profile profile_id 1 add access_id auto_assign packet_content                    offset 12 0x08060000 port <порт(ы)> permit
config access_profile profile_id 1 add access_id auto_assign packet_content                    offset 16 0x08060000 port <порт(ы)> permit

config access_profile profile_id 1 add access_id auto_assign packet_content                    offset 12 0x08000000 port <порт(ы)> permit
config access_profile profile_id 1 add access_id auto_assign packet_content                    offset 16 0x08000000 port <порт(ы)> permit

Выглядит как-то извращенчески, но зато логически развязывает правила для 12-й позиции от правил для 16-й позиции чтения типа пакета.

_________________
не важно, из какого места растут золотые руки


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 04, 2009 15:30 
Не в сети

Зарегистрирован: Ср май 02, 2007 20:47
Сообщений: 84
если там XOR, то это больше похоже на истину.
update: хотя в обычной ситуации процент попавших под "неправильный deny" фреймов скорее всего будет мизерным и по большому счету большой роли это не будет играть, но возможны нюансы.

Также интересна логика работы правил
Цитата:
create access_profile ethernet source_mac 00-00-00-00-00-00 profile_id 10
config access_profile profile_id 10 add access_id auto_assign ethernet source_mac 00-00-00-00-00-00 port all deny


является ли 00-00-00-00-00-00, указанный в access_profile маской, указывающей какие биты в маке будет анализировать профиль или это именно конкретный mac? Если является маской, то должна ли она быть "сплошной" или нет (хотя сложно представить когда может понадобиться анализировать мак-адреса побитово именно в таком контексте)


Последний раз редактировалось umkas Пт дек 04, 2009 15:44, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 04, 2009 15:43 
Не в сети

Зарегистрирован: Ср май 02, 2007 20:47
Сообщений: 84
всё, прочитал синтаксис команды - это маска :)
Цитата:
create access_profile [ethernet {vlan | source_mac <macmask 000000000000-ffffffffffff >


получается что смысл такого профиля практически один в один такой-же как и придуманный мной с нулями в packet_content_mask - он проверяет "ничто" на наличие "ничего" и получается что запрещает всё.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 04, 2009 16:28 
Не в сети

Зарегистрирован: Вс дек 21, 2008 18:53
Сообщений: 1308
А как предотвратить атаку man-in-the-middle при помощи правил? То есть когда хост С отправляет хостам А и В арп-пакеты с айпи адресами В и А соответственно и своим маком?

_________________
D-Link Switches: Tips & Tricks


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 04, 2009 17:11 
Не в сети

Зарегистрирован: Ср май 02, 2007 20:47
Сообщений: 84
нет, и всё-же фраза Ивана "там XOR" должна относиться к чему-то другому и при использовании множества условий там явно AND. То есть профиль
Код:
create access_profile                                        packet_content_mask offset_0-15 0x0 0x0 0x0 ZZZZ offset_16-31 YYYYY profile_id 1

config access_profile profile_id 1 add access_id auto_assign packet_content                    offset 12 NNNN    offset 16 MMMM port <порт(ы)> permit


означает
Код:
if ((offset12 && ZZZZ == NNNN ) && ( offset16 && YYYY == MMMM)) {permit}


"&&" - двоичное И (между скобками можно логическое "И" поставить - не играет роли)
"==" - равно

Иначе бы не работали правила, которые, например, при помощи PCF запрещают "протокол tcp, порт 445" Аналогично совсем по другому бы работали и другие правила с несколькими условиями. Например одновременно с src_mac и dst_mac, srcIP и dstIP и т.д.

Но тогда непонятно как у snark такие профили работают :roll:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 04, 2009 18:21 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт фев 12, 2009 14:59
Сообщений: 9482
Откуда: Ryazan
Вот пример, который показывает, что такое маска и как она рассчитывается: http://dlink.ru/ru/faq/62/201.html


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 04, 2009 18:34 
Не в сети

Зарегистрирован: Ср май 02, 2007 20:47
Сообщений: 84
для тех кто будет использовать поиск по форуму - из разговора с Иваном предыдущий пост верный: условия в одной строке срабатывают как будто они записаны через И, в целом формула
Код:
if ((offset12 && ZZZZ == NNNN ) && ( offset16 && YYYY == MMMM)) {permit}
верна. За исключением того, что в формуле не присутствуют порты коммутатора.

Поэтому более верным будет вариант, указанный GreatFoolDad:
Код:
reate access_profile                                        packet_content_mask offset_0-15 0x0 0x0 0x0 0xffff0000 offset_16-31 0xffff0000 profile_id 1

config access_profile profile_id 1 add access_id auto_assign packet_content                    offset 12 0x08060000 port <порт(ы)> permit
config access_profile profile_id 1 add access_id auto_assign packet_content                    offset 16 0x08060000 port <порт(ы)> permit

config access_profile profile_id 1 add access_id auto_assign packet_content                    offset 12 0x08000000 port <порт(ы)> permit
config access_profile profile_id 1 add access_id auto_assign packet_content                    offset 16 0x08000000 port <порт(ы)> permit


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт дек 04, 2009 18:51 
Не в сети

Зарегистрирован: Ср май 02, 2007 20:47
Сообщений: 84
Denis Evgraphov писал(а):
Вот пример, который показывает, что такое маска и как она рассчитывается: http://dlink.ru/ru/faq/62/201.html
Денис, не в этом суть. Разговор споткнулся о следующие моменты

- при использовании нескольких условий (например нескольких offset) в одном access_id каким логическим условием они связываются между собой. Ответ: через логическое И.
Как следствие - чтобы получить ИЛИ нужно писать несколько access_id внутри одного access_profile.

- какая именно операция подразумевается под offset 16 0x08060000? Ответ: подразумевается именно равенство байт по смещению 16 указанному значению 0x08060000.
Что там внутри - XOR/XNOR или что-то еще не важно, суть в том что в access_id результатом является не какие-то наложения масок, а равенство.

Во и всё - эти вопросы исчерпаны.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 07, 2009 12:17 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Пт янв 21, 2005 11:52
Сообщений: 11212
Откуда: D-Link, Moscow
Логика всегда была простая, т.е. входящий пакет всегда жёстко проверялся по заданным параметрам, если по одному из параметров пакет не прошёл, то пакет не попадёт под ACL правило.

_________________
С уважением,
Бигаров Руслан.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 23, 2009 14:53 
Не в сети

Зарегистрирован: Пн сен 27, 2004 18:18
Сообщений: 1642
Откуда: Vault 13
umkas писал(а):
непонятно как у snark такие профили работают :roll:

т.к. это правила в первую очередь для клиентских (читай - не тегированных) портов то работают они как и задумывалось, как сказал Бигаров Руслан:
Bigarov Ruslan писал(а):
Логика всегда была простая, т.е. входящий пакет всегда жёстко проверялся по заданным параметрам, если по одному из параметров пакет не прошёл, то пакет не попадёт под ACL правило.

в правилах привязка делается не только по одному единственному, обобщенному параметру "eth протокол", а по "определенные пакеты, определенного протокола", т.е. я хотел разрешить не просто "протокол ARP":
Код:
create access_profile                                        ethernet ethernet_type       profile_id 1
config access_profile profile_id 1 add access_id auto_assign ethernet ethernet_type 0x806 port <порт(ы)> permit

а "ARP пакеты протокола IP":
Код:
create access_profile                                        packet_content_mask offset_0-15 0x0 0x0 0x0 0xffff0000 offset_16-31 0xffff0000 profile_id 1
config access_profile profile_id 1 add access_id auto_assign packet_content                    offset 12 0x08060000    offset 16 0x08000000 port <порт(ы)> permit

и не просто "протокол IP":
Код:
create access_profile                                        ethernet ethernet_type       profile_id 2
config access_profile profile_id 2 add access_id auto_assign ethernet ethernet_type 0x800 port <порт(ы)> permit

а "IP пакеты протокола IP"
Код:
create access_profile                                        packet_content_mask offset_0-15 0x0 0x0 0x0 0xffff0000 offset_16-31 0xffff0000 profile_id 2
config access_profile profile_id 2 add access_id auto_assign packet_content                    offset 12 0x08000000    offset 16 0x08000000 port <порт(ы)> permit

в общем виде мне хотелось видеть в одном правиле не один параметр для сравнения, а как минимум 2 ...
вполне возможно что я дую на воду, т.к. например во IPX, ЕМНИП, ARP вообще нет, но мне просто максимально хотелось бы избежать экспериментов с моей сетью со стороны юных дарований возомнивших себя Кевинами Митниками ...

xcme писал(а):
А как предотвратить атаку man-in-the-middle при помощи правил? То есть когда хост С отправляет хостам А и В арп-пакеты с айпи адресами В и А соответственно и своим маком?


может быть как нить так (порт 1, адрес 10.0.0.1):
Код:
# разрешаем ARP только на порту 1 и только с адреса 10.0.0.1
# т.е. никакие другие адреса на этом порту воспользоваться ARP не смогут
create access_profile                               packet_content_mask offset_0-15 0x0 0x0 0x0 0xffff0000 offset_16-31 0xffff0000 0x0 0x0   0xffffffff profile_id 1
config access_profile profile_id 1 add access_id  1 packet_content                    offset 12 0x08060000    offset 16 0x08000000 offset 28 0xa000001  port 1 permit


# запрещаем бродкасты
# дабы предотвратить посылку ARP и/или IP пакетов не с адреса 10.0.0.1
create access_profile                                        ethernet destination_mac ff-ff-ff-ff-ff-ff profile_id 2
config access_profile profile_id 2 add access_id auto_assign ethernet destination_mac ff-ff-ff-ff-ff-ff port 1 deny


# разрешаем IP адрес 10.0.0.1 только на порту 1
# в принципе тут можно использовать РСМ, дабы глубже в пакет копнуть
create access_profile                               ip source_ip_mask 255.255.255.255 profile_id 3
config access_profile profile_id 3 add access_id  1 ip source_ip      10.0.0.1        port 1 permit


# запрещаем все остальное
# ибо нех! :)
create access_profile                                         ethernet source_mac 00-00-00-00-00-00 profile_id 25
config access_profile profile_id 25 add access_id auto_assign ethernet source_mac 00-00-00-00-00-00 port 1 deny

_________________
с уважением, БП


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт дек 24, 2009 09:25 
Не в сети

Зарегистрирован: Вс дек 21, 2008 18:53
Сообщений: 1308
snark, спасибо! Правила потестил, вроде работают как надо. Но теперь вопрос, а если арп-пакеты будут валидными, но их количество очень большим, как можно заткнуть такую "рассылку"?:) Пробовал генерировать арп-ответы в большом количестве, но шторм-контрол не отрабатывает.

_________________
D-Link Switches: Tips & Tricks


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт дек 24, 2009 12:48 
Не в сети

Зарегистрирован: Пт май 05, 2006 16:52
Сообщений: 4181
Откуда: default
на правиле allow arp добавьте rx_rate по минимуму


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт дек 24, 2009 13:11 
Не в сети

Зарегистрирован: Ср ноя 09, 2005 14:26
Сообщений: 808
Откуда: Alma-Ata
2 snark - спасибо за пояснения. Получается, что я неправильно прочитал Ваши правила на 1-й странице. Ну и выводы тоже сделал неправильные.

2 terrible - а хорошая мысль! Что-то я до нее не додумался. Респект!

_________________
не важно, из какого места растут золотые руки


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 51


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB