Don't fuck with TCP!
Уважаемые, а давайте пофлеймим? Я кое-что скажу, а вы мне в ответ скажете, что я дурак и нихрена не понимаю.
А скажу я вот что: цископикс (ну и его производные) - говно.
Нет, я не буду говорить про управляемость, я не буду говорить про фичи, я не буду говорить про производительность, я даже не буду говорить про унылое множество атак, от которых может защитить пикс. Речь не о "недоделках".
Речь о том, что PIX - говно по построению. Сам принцип, по которому действует PIX, не позволяет построить что-либо, кроме говна.
А именно, попытка анализировать и модифицировать пакеты в некотором контексте, выведенном из пролетающего мимо трафика, - идея заведомо ущербная. Вот возьмем TCP, к примеру. TCP по своему дизайну - end-to-end протокол. Функции согласования параметров, сборки потока, ретрансмиссии, контроля скорости и все остальные выполняются на оконечном устройстве. Попытка вмешаться в пролетающие пакеты без взятия на себя всех функций неминуемо ведет к неисчислимым бедствиям.
Перейдем к примерам.
Я тут повспоминал, и понял, что PIX последовательно и неуклонно просрал все полимеры по очереди.
ECN просрал? Тупо и линейно. PIX присылал RST на SYN с установленными ECN-флагами (CSCds23698).
SACK просрал? Еще как! С фейрверком. PIX и ASA рандомизируют TCP sequence numbers, а тот sequence number, который внутри SACK option - забыли (CSCse14419). Oops.
Window scaling просрал? Просрал самым классическим образом. До некоторой версии window scaling не поддерживался. Попытка контролировать window overshooting в сочетании с непониманием window scaling приводил понятно к чему: пикс думал, что окошко маааленькое, и дропал совершенно нормальные пакеты. Починили это несчастье только в 2006 году, если мне не изменяет склероз. Т.е. через 14 (!) лет после выхода RFC 1323. Аплодисменты.
Не, конечно, всё это цискоиндусы поправили. Но поправили они это только после того как. А иначе быть и не могло. Появление всех расширений предвидеть невозможно, а принцип функционирования не позволяет обходиться с ними по-человечески без допиливания софта. Это не случайные баги, это системное.
И совершенно понятно, что это все повторится вновь. Следующее расширение опять будет сломано. Мы все опять будем пялиться красными от недосыпа глазами в wireshark и тихо материться.
Вы мне скажете: Даня, ты дурачок, это же security, security is supposed to break things.
Так я вам отвечу: Ежели так, то глобальная ядреная война - это the ultimate security solution. Вот взять, долбануть всех Бомбой и чтобы никто и никуда, и чтобы ша, и чтобы тихо и ничего не шевелилось.
/me облачился в asbestos suit. Расчехляйте flamethrower, коллеги.
А скажу я вот что: цископикс (ну и его производные) - говно.
Нет, я не буду говорить про управляемость, я не буду говорить про фичи, я не буду говорить про производительность, я даже не буду говорить про унылое множество атак, от которых может защитить пикс. Речь не о "недоделках".
Речь о том, что PIX - говно по построению. Сам принцип, по которому действует PIX, не позволяет построить что-либо, кроме говна.
А именно, попытка анализировать и модифицировать пакеты в некотором контексте, выведенном из пролетающего мимо трафика, - идея заведомо ущербная. Вот возьмем TCP, к примеру. TCP по своему дизайну - end-to-end протокол. Функции согласования параметров, сборки потока, ретрансмиссии, контроля скорости и все остальные выполняются на оконечном устройстве. Попытка вмешаться в пролетающие пакеты без взятия на себя всех функций неминуемо ведет к неисчислимым бедствиям.
Перейдем к примерам.
Я тут повспоминал, и понял, что PIX последовательно и неуклонно просрал все полимеры по очереди.
ECN просрал? Тупо и линейно. PIX присылал RST на SYN с установленными ECN-флагами (CSCds23698).
SACK просрал? Еще как! С фейрверком. PIX и ASA рандомизируют TCP sequence numbers, а тот sequence number, который внутри SACK option - забыли (CSCse14419). Oops.
Window scaling просрал? Просрал самым классическим образом. До некоторой версии window scaling не поддерживался. Попытка контролировать window overshooting в сочетании с непониманием window scaling приводил понятно к чему: пикс думал, что окошко маааленькое, и дропал совершенно нормальные пакеты. Починили это несчастье только в 2006 году, если мне не изменяет склероз. Т.е. через 14 (!) лет после выхода RFC 1323. Аплодисменты.
Не, конечно, всё это цискоиндусы поправили. Но поправили они это только после того как. А иначе быть и не могло. Появление всех расширений предвидеть невозможно, а принцип функционирования не позволяет обходиться с ними по-человечески без допиливания софта. Это не случайные баги, это системное.
И совершенно понятно, что это все повторится вновь. Следующее расширение опять будет сломано. Мы все опять будем пялиться красными от недосыпа глазами в wireshark и тихо материться.
Вы мне скажете: Даня, ты дурачок, это же security, security is supposed to break things.
Так я вам отвечу: Ежели так, то глобальная ядреная война - это the ultimate security solution. Вот взять, долбануть всех Бомбой и чтобы никто и никуда, и чтобы ша, и чтобы тихо и ничего не шевелилось.
/me облачился в asbestos suit. Расчехляйте flamethrower, коллеги.
0 TrackBacks
Listed below are links to blogs that reference this entry: Don't fuck with TCP!.
TrackBack URL for this entry: http://net-geek.org/cgi-bin/mt/mt-tb.cgi/275
"security" -- это не просто security, это еще и способ попила бюджетов (=> откаты).
Не только. Очень часто - способ изображать бурную деятельность и развитие. Есть, к примеру, дочерняя организация, по условию задачи лазящая каким-то клиентом на какой-то сервер материнской, с коей сидит в разных VLAN'ах и коннектится по L3 . Дальше руководство IT службы последней трубит, что "у нас жопа не прикрыта", туда ставится ASA или PIX эдак 525 с двумя статическими пробросками, кто-то получает благодарность, премию, и т.д. . Ломаться при такой конфигурации не чему;-) Ибо "Мусор вывозится? Вывозится. Вывоз учитывается? Учитывается. Всегда можно отчитаться, что в текущем квартале вывезено на столько-то тонн говна больше, чем в предыдущем"/c/ Стругацкие.
Ну и откаты и попил бюджета в этом процессе тоже вполне могут присутствовать...;-)
Как обычно - если в этом году не освоим все что дали, в следующем дадут меньше.
Ну, я априори согласен с любым наездом на сиско :)
Бабло баблом, а пакеты пакетами. Почему бы не пилить бюджет, не ломая сеть?
> А именно, попытка анализировать и модифицировать пакеты в некотором контексте, выведенном из пролетающего мимо трафика, - идея заведомо ущербная.
предлагаю запретить nat :)
> предлагаю запретить nat :)
Я категорически за.
Осталось внедрить IPv6 - и мы в дамках.
IPv6-trolling - это вотчина netch'а. Мне как-то неудобно залезать на его территорию :)
Но горькая правда состоит в том, что миграция (именно миграция, а не IPv6 сам по себе) приведет к еще большему NAT'натированию. Это очень грустно.
Когда нам в очередной раз надо много переделывать в нашей многокилометровой сети, первое поступающее предложение - все выключить нафик на время переделки.
;)
Меня в PIX'ах - АСАх просто убивает ко всему прочему отсутствие инструментов для нормальных подсчётов/статистики/репортов, типа нетфлоу того же самого.
Угу. И это тоже. Но я обещал сегодня не наезжать на пикс по этому поводу :)
А что на счёт ip tcp adjust-mss? Это есть хорошо или плохо, если без него не робоит? Правда, у нас она (команда) не на PIX и ASA настроена, а на c7301, но концепции это не меняет.
робит*
хм. а что вы можете сказать насчет Juniper Networks SSG 550/550M?
Что меня заколупало набирать каждый раз полную команду, состоящую в среднем из 4-5 слов. Есть там какие-нибудь вещи типа global config mode, interface config mode и прочие? :)
Заменить PIX на "любой stateful firewall" - тогда соглашусь полностью.
Попытка поддерживать state протокола, которого можешь не до конца
(не со всеми расширениями) понимать - обречена на провал...
Например, на PF (Free/OpenBSD) я тоже натыкался на проблемы с window
scaling, благо, решилось с пониманием того, "почему это так"
(http://www.mail-archive.com/pf@benzedrine.cx/msg07837.html)
и переписыванием конфига...
PS: отказ от nat методом перехода на ipv6 - тоже не панацея.
Точнее, от nat'а-то отказаться можно, но отказываться от firewall'а
(и, скорее всего, stateful) при этом ни один разумный админ не будет..