id: Гость   вход   регистрация
текущее время 15:20 28/03/2024
Автор темы: unknown, тема открыта 20/02/2015 11:48 Печать
Категории: инфобезопасность, безопасная разработка, сайт проекта, руководства, разное, офф-топик
http://www.pgpru.com/Форум/Офф-топик/ПродвинутыеПодходыПоддержанияИБDSLMetaprogrammingetc
создать
просмотр
ссылки

Продвинутые подходы поддержания ИБ: DSL, Metaprogramming etc


Тред отделён как сборник неконструктивных, неконкретных и общих коментов от документа Policy-based-фильтрация с помощью iptables.


Предлагается обсуждать избыточность/приемлемость каких-либо концептуально сложных системных подходов для поддержания ИБ. Не только на примере iptables, но и для управления/конфигурирования всего остального.



 
На страницу: 1, 2 След.
Комментарии
— Гость (19/02/2015 22:57)   <#>

При нажатии Ctrl-Alt-Del более семи раз за интервал в две секунды теперь выполняется немедленная перезагрузка, но с корректным отмонтированием всех разделов

Так работает systemd.
— unknown (20/02/2015 12:04, исправлен 20/02/2015 12:34)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Копипастну сюда весь список из вики:
Domain-specific language: Advantages and disadvantages.


Some of the advantages:[1][2]

  • Domain-specific languages allow solutions to be expressed in the idiom and at the level of abstraction of the problem domain. The idea is domain experts themselves may understand, validate, modify, and often even develop domain-specific language programs. However, this is seldom the case.[6]

  • Domain-specific languages allow validation at the domain level. As long as the language constructs are safe any sentence written with them can be considered safe.[citation needed]

Some of the disadvantages:


  • Cost of learning a new language vs. its limited applicability

  • Cost of designing, implementing, and maintaining a domain-specific language as well as the tools required to develop with it (IDE)

  • Finding, setting, and maintaining proper scope.

  • Difficulty of balancing trade-offs between domain-specificity and general-purpose programming language constructs.

  • Potential loss of processor efficiency compared with hand-coded software.

  • Proliferation of similar non-standard domain-specific languages, i.e. a DSL used within insurance company A versus a DSL used within insurance company B.[7]

  • Non-technical domain experts can find it hard to write or modify DSL programs by themselves.[6]

  • Increased difficulty of integrating the DSL with other components of the IT system (as compared to integrating with a general-purpose language).

  • Low supply of experts in a particular DSL tends to raise labor costs.

  • Harder to find code examples.

Согласен практически со всеми пунктами. Вопрос лишь в балансе достоинств/недостатков. Считаю, что DSL особенно для iptables и особенно на шелле сильно перевешивает по недостаткам. Тема началась именно с iptables, но это касается многих других случаев попыток нагородить самопальный метаязык/DSL для поддержания ИБ в системе.


Про скрипты:


Unix shell scripts give a good example of a domain-specific language for data organization.

In practice, scripting languages are used to weave together small Unix tools such as AWK (e.g., gawk), ls, sort or wc.

Набор мнений на вики — конечно не истина в последней инстанции, но как-то отражает общую практику, что шелл — просто склейка между утилитами, как-то внутри него метаязык со своими абстракциями стараются особо не городить. Хотя в статье про метапрограмминг такой пример есть и для iptables он бы выглядел более практично, чем то, что там приведено.

— Гость (21/02/2015 19:33)   <#>

Близится второе, похоже. Снесли настройки прокси в торбаттоне, теперь нельзя просто так настроить прозрачную торификацию.
И всё почему?
As far as I understand, this tab is redundant or mostly redundant. One of the UX test users was confused by it
Ну всё правильно, настройки для пользователей, а гики конфиги руками править должны. Если только поддержка нестандартных настроек продержится в коде чуть дольше.

Впрочем, речь про торбраузер, а не про тор. Просто возвращаемся в эпоху до торбаттона с торбраузером.
— Гость (22/02/2015 00:30)   <#>

У меня работает без пробела и, по моим скромным представлениям, так было всегда. ☺


У подхода портабельности и TBB (как и вообще винды) есть свои слабые и сильные стороны. Например, среди плюсов то, что всё в одном месте — не надо переставлять половину системы, чтобы обновить одну конкретную программу. Минусы тоже понятны.


А сравнение в целом корректное. На асме тоже иногда пишут сложные вещи, когда выжать несколько процентов производительности страх как надо. Я клоню к тому, что iptables действительно слишком низкоуровнев для тех целей, для каких используется (файерволл), нереально низкоуровнев.

Многие вещи можно делать без утилит — писать простенькие программы на сях, которые будут дёргать нужные syscall'ы ядра. Представьте себе, что утилит действительно нет, а вместо этого прилагается мануал о написании таких C-программок — вот это именно что уровень iptables. Это уровень низкоуровневой манипуляции внутренними системами ядра, а не уровень фильтрации пакетов в его человеческом смысле по IP источника и IP назначения.

Сейчас много что делается через утилиты из того, что доступно через procfs. Например, мне недавно надо было понять, как поменять яркость экрана. Вроде оно и не сложно, но какой-то непонятный страх и ужас от этих мануалов берёт с нулевым пониманием. Зато, оказывается, есть удобная утилитка xbacklight, которая в человечески понятном виде устанавливает яркость, какую хотите:
$ xbacklight -set 70
Правда, работает только из-под иксов. ☹ А ведь можно было бы и так:
$ [культ вуду]
echo "какая-то хрень с непонятными параметрами" > \
/proc/путь/куда/макар/телят/не/гонял/болото
$ [ещё культ вуду]


Если таких горшков надо вырыть не один (и с параметрами, определёнными раз и на века), а тысячу, то разумно подумать об автоматизации процесса. Картошку массово тоже уже руками не копают, хотя любителей тру хоть отбавляй.


Вы когда-нибудь занимались програмированием? У меня частенько возникает задача: я написал модуль, он как-то работал. Потом надо что-то исправить или написать аналогичный. Я уже всё забыл, есть только код и какие-то комментарии. И мне нужно заново понять, что он делает, чтобы пофиксить. Вот наглядный примерчик подобного кода:



Иногда сидишь и день-два вспоминаешь, что там работает, как и почему, даже пяти строк комментариев к каждой строчке кода не хватает. И всё-таки понять написанное проще, чем написать заново. На фоне этого такие скрипты iptables — раз плюнуть и растереть. У вас когда-нибудь было такое, что за пол дня удаётся написать пять строк кода, а перед этим требуется часа три непрерывно думать? Ну да, бывает такое, что 5 строчек в плане того, что внутрь них зашито, содержательны больше, чем некоторые тупые программы на сотни строк. Тут что пять строк в программе, что пять рэперных промежуточных действий в аналитических вычислениях — одно и то же. Одна формула — одна строка в программе.


Наверно, мой коммент покажется банальным, но всё-таки: сложность работы можно оценить только тогда, когда она уже сделана (это как «доказать несуществование нельзя, можно доказать только существование»). Когда предъявлено финальное решение, можно с чувством исполненного долга думать о том, насколько это было сложно или просто. По крайней мере, есть рабочий документ — статья, которую можно обсуждать. После статьи есть цельное представление о проблеме и конструктивные мысли об упрощении. До статьи нет ничего.

Этот вопрос такой же, как «насколько сложно доказать математическую теорему?». Вдруг все бьются, а у задачи есть простое и изящное решение? Таких примеров миллион. И есть единицы примеров, когда решение найдено, оно сложное, и в него можно ткнуть пальцем. Короче, пока доказательства нет, никто не знает, насколько сложно доказать прямое или обратное. Например, есть примеры из функционального анализа, на изобретение которых ушёл не один десяток лет, но сами примеры простые для понимания, их рассказывают на лекциях студентам (но вот догадаться до таких примеров самостоятельно уже сложно).

В моей практике тоже хватало примеров, когда месяцами ищешь решение, а когда нашёл не перестаёшь удивляться, почему ж до такой простоты не мог догадаться сразу. Как всегда, все неидеальны, и каждому не хватает опыта, знаний, интуиции, но всё как-то развивается. Когда я нахожусь на более высоком этапе, где задачи уже в десять раз сложнее, я всё равно скептично переношу свой ранний опыт на текущую ситуацию и думаю, что лет через 10 всё, что я сейчас делаю, наверно, мне тоже покажется пущей банальностью.


Я не следил за темой, но мне показалось, что хочется не просто передавать голос, а чтобы было ещё нечто, где это «нечто» — большое количество плюшек для пользователя и ограничений для системы коммуникаций. И вот это «нечто» уже делало задачу трудной.


Ничего, это, возможно, ещё впереди. :)


Главное — не закончите как Ульбрихт, Маркес или McGrath, а то они тоже решили не страдать полумерами в плане защиты и на том погорели. ☺


Одним интересней самим играть в футбол, а другим — наблюдать, как играют другие. SATtva, почему вы никогда не присоединяетесь к нашим уютным познавательным срачам? Истина выясняется только в срачах! Срач как способ познания реальности. Ещё раз не придёте на срач — прогул поставлю, вы и так уже слишком много пропустили.


«Ранее» — это явно пример практически write-only-кода, так что можете воспринимать его как разновидность just for fun. В обсуждаемых скриптах iptables никакой подобной дичи, конечно же, нет. ☺


Вам это нужно, и вы автоматизировали. А я просто по старинике копирую файл в нужную директорию и руками выполняю gpg --verify. Мне этого пока достаточно, и я не вижу смысла в большем, но тех, кому нужно большее, понимаю и не осуждаю.


Завтра может упасть на голову кирпич. Придётся сесть и разобраться, не впервой, c'e la vie.


Вы переоцениваете. Я могу сходу штук 10 вопросов к нему задать. Внимательно на него поглядел, понял не всё. Ну, т.е., общий смысл понятен, но слепо доверять я бы не стал, не перепроверив, как это работает в командной строке вручную:

  1. Зачем писать echo "" > file.txt и т.п.? Это принудительный перевод строки в файле? А проще никак без таких костылей?

  1. sha256sum -c sha256sums.txt 2>&1 | grep OK >> file.txt ← скажу сразу, что не знаю опцию -c. Мне придётся открывать man, чтобы узнать.

  1. С редиректами потоков тоже много своих приколов. Вашей команды «gpg --verify tor-browser-linux64*.asc >> file.txt 2>&1» это тоже касается. По человеческой логике вначале обрабатываем поток (2>&1), а только потом его перенаправляем в файл через >> или >. Но реально надо делать в обратной последовательности. Почему — это, как мне давно объясняли, следует из внутренней логики сей, и, чтобы это понять, нужно знать, как на сях это реализовано.

    Кроме того, бывают дополнительные дескрипторы потоков кроме первого и второго. Например, я недавно сталкивался с тем, что какая-то программа упорно писала нечто на терминал, что я никаким образом не мог автоматически запихать в файл так, чтобы там было ровно то, что выводится на терминал (и ровно в той же последовательности).

Короче, для вас это просто, потому что вы этот скрипт писали, тестировали и разбирались с ним, но если в него заглянет другой, он ему простым может не показаться, так что ваши слова про пол минуты — преувеличение.


Они неуниверсальны, о чём я сразу сказал, они для параноиков и анонимности. Хотите — пишите каждый раз по 4 однотипных правила iptables для каждого демона на lo, в которых как нарочно будут такие тонкости в отличиях, что вы обязательно запутаетесь. Я вот их положил в функцию и больше не страдаю фигнёй.


Оно почти так и есть, поэтому вы часто не понимаете то, о чём пишу я, а я — то, о чём пишете вы. ☺ Когда вы говорите о криптографии как абстрактной математике, тезис о младшей сестре вам понятен, а когда говорите о практике — уже нет. А я его распространяю и на практику, в этом отличие. Конечно, на 100% я распространить не могу, бункера ибо нет и не предвидится, но всё же можно на коленке сделать довольно многое.


И будет ещё один потенциальный пунктик в потенциальном ордере: «MAC-адрес оборудования совпадает с тем, который осел в логах ISP, так что говорить о том, что к сети подключался какой-то иной компьютер, не приходится». Оно вам надо?


Они [эта славная троица], наверно, тоже так думали. ☺


Я тут выше примерно то же самое написал про ваш скрипт. ☺


Вот и получается, что Поттеринг хорош просто тем, что он Поттеринг, хотя выше по треду вы его ругали. ☺


Наверно, всё же не логику, а аргументацию. Логика-то одна.


Любой непротиворечивый взгляд на мир потенциально имеет право на существование, противоречие же разрушает всё до основания. Не бывает такого, что в теории всё хорошо, но одна теорема просто противоречит другой. Этого не может быть. Можно строго показать, что любое одно противоречие достаточно для разрушения всей теории. Кажется, где-то говорилось, что исходя из противоречивого утверждения можно доказать любое наперёд заданное, т.е. уравнять все утверждения между собой в их равноправности, а это и есть крах теории — ноль селекции утверждений, всё равноправно, вы ничего конкретного не можете выбрать ни из чего. Можно говорить о нерелевантности математической картины мира для реальных вещей, но как нулевое приближение к нему всё же аппелируют везде, где могут (например, в той же юриспруденции и праве).


Да, ищется естественный язык для конкретной задачи, на нём она и решается вместо того, чтобы переводить эту задачу на совершенно ей неестественный GPL (general purpose language). Задумка красивая и концептуальная. С практической точки зрения она ограничена лишь умностью компилятора. Здесь подвижки тоже есть. Говорят, сейчас для языков высокого уровня уже есть такие компиляторы, которые умнее человека, т.е. ни один человек за разумное время не поймёт, как написать более оптимальный (быстрый) код на ЯП низкого уровня (том же си), чтобы было быстрее.


В идеале вы не изучаете чужой язык, а пишете свой. Чукча не читатель, чукча писатель. :-)


IDE ненужно. Для серьёзного концептуального программирования оно не нужно (да, весь опыт коммерческих компаний и сотен тысяч макак здесь неприменим). Есть одна книжка, которую написал крутой чел, детали не помню, но вроде он LISPер. Там он сказал о своих личных предпочтениях: vim не нужен, достаточен vi. Подцветка для ЯП тоже ненужна, поэтому vi достаточен.

Он хотел сказать примерно следующее: подцветка — это маскировка недочётов языка, когда нужно что-то ещё кроме слов, чтобы сделать программу более выразительной для человека. Но концептуальный язык на то и концептуален, что он как человеческий, по сути декларативный. Вас не смущает, что большинство книжек чёрнобелые, и подцветки там нет, а восприятию это не мешает? Вот типа серьёзная программа на LISPе она должна быть такой же. Аналогично и IDE — это костыли для подпорок несовершенства языка и/или метода программирования на нём. Я, кстати, раньше тоже пользовался IDE, но потом перешёл на vim и отвык от IDE. Назад возвращаться не хочется. Для меня редактор программ — это просто редактор, а отладку можно и в командной строке делать удобно, если уметь.

Не могу сказать, что я сам поначалу воспринял слова про подцветку, но автор своим авторитетом заставил меня глубоко задуматься. Возможно, он прав, хотя я очень привык к подцветке и не представляю жизнь (в обычных GPL) без неё, как уж в DSL — не знаю.


Worse is better. Побеждает не лучший, побеждает удобный для масс. Много хорошего померло просто потому, что было слишком хорошо, и, как следствие, его так и не смогли осилить широкие массы, а узкие профессиональные круги не смогли вытянуть на должный уровень развития, в итоге победили корявые и глючные инструменты (массой и шапкозакидательством).


Не боги горшки обжигают. ☺


Я сразу сказал, что шелл — это потому, что самое простое из доступного и того, что знаю, полноценный DSL и не планировался, хотя идея DSL держалась в голове (но не как конечная цель, а как сама идея-ориентир).


This script (or program) generates a new 993-line program that prints out the numbers 1–992. This is only an illustration of how to use code to write more code; it is not the most efficient way to print out a list of numbers. Nonetheless, a programmer can write and execute this metaprogram in less than a minute, and will have generated exactly 1000 lines of code in that amount of time.

Всё правильно. Вместо того, чтобы писать руками тысячи однотипных правил iptables, надо сделать кодогенерацию и заставить программу написать их. Даже в wiki это понимают, а вы — нет. ☺


С JS было точно так же.


Меня тоже это legacy смущает. Как это появилось? Они скопировали один-в-один настройку сети через сам интерфейс firefox: «Edit → Preferences → Advanced → Network → Settings». Не знаю, зачем им это понадобилось, но после этого появились два способа настройки сети: из интерфейса torbutton'а и из интерфейса самого firefox'а. Когда-то в torbutton'е, кстати, настроек сети, насколько я помню, не было. Итак, мы долго жили с двумя параллельными настройками, где настоятельно рекомендовалось не лезать в firefox'овские, а менять всё через torbutton'овские. Зачем тогда нужны первые? Почему бы их не убрать с глаз вообще? Оставили, наверно, для какой-то совместимости. Ну, хорошо, я знаю всю эту историю, но того, кто видит TBB первый раз, это может запутать.

Что касается самих настроек, тут замечание тоже правильное: кто сейчас будет устанавливать в TBB вопреки всем рекомендациям по безопасности раздельные типы прокси для разных протоколов? Понятно же, что нужна только одна настройка — SOCKS. Ну, и ещё кнопка, которая включает и отключает использование прокси (для прозрачной торификации).

Наверно, всё то же можно править и через about:config, как сейчас делается включение/отключение JS. Одним словом, некая логика в этом тикете есть, но надо посмотреть, какая будет реализация. Даже если будет принудительно задано 127.0.0.1:9150, достаточно заставить системный Tor слушать на 9150 как на SocksPort. Это, кстати, может и не противоречить прозрачной торификации — зависит от конкретных правил iptables.
— SATtva (22/02/2015 10:30)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118

Спасибо, я как-нибудь со стороны позанимаюсь вуаеризмом. Новый движок сам себя не напишет.
— Гость (22/02/2015 11:37)   <#>

А мы уже не ждём, не надеемся, не верим. ☹
— SATtva (22/02/2015 15:15)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118
Напрасно, работа идёт.
— unknown (22/02/2015 15:17)   профиль/связь   <#>
комментариев: 9796   документов: 488   редакций: 5664

Я примерно так вашу позицию и представляю:


  1. Iptables слишко низкоуровневый (аналогия с ассемблером).
  2. Раз он такой низкоуровневый, значит нужен метаязык (опять же аналогия со всем множеством языков над ассемблером, компиляцией и пр.).
  3. Раз готового метаязыка нет, то надо его создать самому.
  4. Если не создать глобальный метаязык в виде фундаментального проекта, то надо создать метаязык под конкретную узкоориентированную задачу (Domain-specific Language).
  5. Чтобы не лезть в сложную объектность и функциональщину, используем самое простое, распространённое и стандартное для решения задачи из п. 3., т.е. — шелл.
  6. Подразумеваем, что затраты на создание, реализацию и поддержание проекта дают нам PROFIT по сравнению с прямой вознёй с низкоуровнемы средствами из п.1

Допустим, я правильно переформулировал ваши мысли в эти пункты, ничего не переврал, не сильно упростил и т.д. Если согласиться со всеми пунктами и логическими переходами между ними, то всё правильно, продолжайте делать так. Но лично мне эти пункты не подходят, у меня возражения ко всем, начиная с первого и по поводу переходов между ними тоже. Тратить время на разбор ситуации и предлагать альтернативное конструктивное решение желания нет, т.к. лично для меня нет собственно и проблемы. Ну и конструктивной критики тоже нет по этому.


Вот это раз и навека обычно и подводит. У меня в iptables раз и навека уже и так хватает неизменяемых правил, которые в автоматизации не нуждаются, так что городить автоматику смысла нет. До автоматизации надо пройти критический порог. Если я сейчас введу автоматику и раз и навека её заброшу, то будет сложнее вспомнить, что нагорожено в этой самопальной автоматике, чем заглянуть в man iptables. Да и горшков мало. Один раз можно и вручную расставить по фэньшую.


Согласен, отличный пример дикого кода. Здесь коменты слабо помогут — нужна дока в виде пэдээфки с описанием алгоритма, псевдокодом, формулами и пр. И опять же, не зная предметной области, к которой относится расчёт, разбирать этот код сложно. А если вы не сторонний программер, а инженер/проектировщик/теоретик/специалист, все эти формулы и методы наизусть помните и считаете по ним регулярно, то тогда доки может и не нужны, коментов достаточно.


Даже в науке до тех пор пока теория подробно не разработана, то принимают решения даже по тому, что неизвестно. Кулуарно, негласно, интуитивно, понимая, что это неправильно и необоснованно, но принимают. Какие-то направления считаются вполне научными, но маргинальными, т.е. оно там вроде как перспективно, может даже когда-то у кого-то и получится, но пока кладбище неудачных теорий переполнено, дорога к успеху устлана трупами и неизвестно, ведёт ли дорога на самом деле к успеху. Если вам кроме этой дороги нечем заняться, манит только туда, тогда можете попробовать, а если нет — то это нерациональная стратегия выбора цели, ведущая к исчерпанию ресурсов.


Как мы тут не смеялись над принципом «мне нечего скрывать», но он работает хотя бы не для нижней, а верхней планки как рациональный ограничитель паранойи в деле оценки рисков и расходования ресурсов (времени, сил) на защиту. Возьмём обратный крайний пример этим трём персонам. Если человек не занимается криминалом и серой околокриминальной зоной, если он не лезет туда где власть и деньги (не активист, живёт на копейки от получки до получки, и на большее в жизни не расчитывает), то у него другая модель угрозы (атака соседки-скандалистки и соседа-алкоголика, а не всемогущих спецслужб). Если он кому-то косвенно мешает, против него проще фальсифицировать правдоподобно выглядящие обвинения на основе общедоступной информации, чем пытаться выведать какие-то ценные секреты, которых у него, скорее всего, просто нет. Представьте, что у большинства людей не только личная информация и приватность не стоят слишком много, даже их жизнь не слишком дорого стоит и никому не нужна кроме них самих, да на них всем плевать, как бы они не компенсировали собственную незначимость паранойей вселенской важности. Т.е., можно переформулировать «мне нечего скрывать» на «я готов скрывать вот это, затратив на это столько», или «мне есть, что скрывать, но только до такого предела». Т.е., должен включаться принцип ограничителя ресурсов и некий «паранойя-стоппер» против истощающего ресурсы параноидального перфекционизма.


Думал, что нужно, а потом оказалось, что ненужно из-за затрат по поддержанию. По мере опыта вырабатывается чутьё на «ненужно», способность его отсеивать, не тратя время на формальный разбор. «Ненужно» — это что-то вроде подсознательного стоп-сигнала для перерасхода интеллектуальных ресурсов. Примерно, как сортируете публикации, не вычитывая их всех до одной. Один из самых последних фильтров — вроде всё логично, авторы авторитетные, журнал топовый, но сама эта область неинтересна, некогда тратить время, пусть полежит пока другие больше не раскрутят.


Тоже могу сказать и про хитрое скриптование iptables. Во многих случаях удавалось побывать по обе стороны процесса — предлагать то, что считаешь нужным, а затем самому же, даже без внешних аргументов, поспорив сам с собой, придти к выводу о ненужности. В принципе тоже, понимаю, но не осуждаю. Осуждаю только самоуверенность в духе того, что некое решение правильное для всех без отсутствия достаточных разъяснений.


Способность к мелочным придиркам феноменальная! Не каждому дано. Главное, чтобы общая картина за деталями не пропадала. Правда у некоторых бывает и наоборот — не видят деталей за общей картиной и трудно сказать, что лучше или хуже. Главное, найти область применимости.


Там кое-что можно сделать по другому, но это совсем уж примитивный стиль, который понятен тому, кто регулярно пишет и читает много всякого скриптописательства. Там же нет ни одной самовыдуманной абстракции, все костыли — общепринятые и конвенциональные, а потому подразумеваемые известными. А вы всё время пытаетесь их запрятать под капот собственных абстракций. Такое запрятывание — вполне разумный и правильный подход, если не доводить до абсурда и помнить о его недостатках и ограничениях.


Хорошо, хоть ограничили задачу.


Вот. А затем нужно будет скопипастить такие же правила, но с маленьким отличием и функцию придёться править, т.к. в ней какой-то фичи не было заранее предусмотрено. С маленьким ограниченным статичным и логичным мирком прекрасно работают оба подхода, с функциями конечно красивее и удобнее, но можно перебиться и быдлокодингом. А вот при смене обстоятельств вылезут недостатки обоих подходов.


С вами ) неприятии выч.-стойкой безопасности и стремлении к инф.-теоретической полной любой ценой.


Под задачу и обстановку это надо всё взвешивать. Если реально утекает куда больше информации (в т.ч. не через средства связи), чем MAC, то это затыкание пробоины пальцем.


Не получается. Это особо неприятная ситуация — протаскивание чего-то концептуально сомнительного в негласный стандарт, чтобы хорошее долгие годы не могло с ним конкурировать. Но если стандарт убьёт все альтернативы так, что их будет сложно поддерживать, то да — стандарт лучше самопальных и хотя бы негласно стандартизированных костылей. К сожалению.

Это как с тором. Разрабы часто взвешивают — защита от атаки X потребует m ресурсов, а повышение популярности сети и числа участников — n ресурсов. Есди m > n и за счёт тупого роста сети удаётся лучше справиться с атакой, то умную защиту от неё не делают.


Вот оно! У каждого человека есть базовые принципы, которые он даже не всегда полностью осознаёт и аппелирует к ним как к чему-то самому-собой разумеющемуся и единому для всех. На самом деле никаких базовых принципов нет, под ними лежат ещё более базовые. Человеческое (антропоморфное) знание — нелогично и т.д. Вы исходите из того, что мир познаваем, что ничего принципиально непознаваемого и нерационального нет. Я из этого же исхожу, но противоречие есть. Для вас познаваемость — абсолютная ценность, вы не признаёте существование неизвестного и не хотите оперировать с ним. Для вас есть познаваемость в инф.-теоретическом смысле. А для меня — в вычислительном. Если я ограничен ресурсами на познание, то для меня это практически непознаваемо. Т.е., всеобщая познаваемость не абсолютна, а утилитарно и ресурсно ограничена. Кстати, большинство людей (ИМХО) — или совсем иррационалы, или ближе к прагматикам, считающим ресурсы. Вы в какие-то редкие идеалисты попадаете. Впрочем, деление условно, можно невзаимоисключающим образом попасть сразу в несколько взаимоисключающих категорий одновременно. Вопрос — как определить, ограничить и отсортировать параметры, по которым выбирать исключения.


Мне нравятся красивые и концептуальные задумки. Особенно нравятся на бумаге, а не на практике. Пусть их кто-то другой внедрит или я воспользуюсь уже чужим внедрённым решением. Или не воспользуюсь. Но раз нет способности внедрять своё, то можно потратить ресурсы на что-то другое.


Вот этот идеал для меня сколь теоретически прекрасен, столь и практически ужасен :-) Ну если я неспособен так делать на практике, а вам именно так удобнее — рад за вас. Хотя могу и не верить. И себе тоже могу не верить — запросто. Любой может убедить себя и окружающих, что ему удобно то, что на самом деле таковым не является. И долго заметать недостатки своего подхода в обёртку из красивых идей.


Это отдельный концептуальный вопрос и с отсыткой к авторитетам могут получиться разные казусы. Может выясниться на рабочих примерах, что для образцово-концептуальной вещи не нужно концептуальное программирование, а критически важные системы работают или на быдлокоде, или вообще не работают. Мир не совершенен для красивых концепций.


Подозреваю, что на самом деле всё ещё хуже (даже если убрать всё плохое, то хорошее всё равно само найдёт себе причины для саморазрушения и помрёт), но пока не созрел для формулирования таких глобальных механизмов в вопросах «почему побеждает это, а не то».


Я иногда не понимаю даже то, что я понимаю ☺ Т.е., всегда держу в голове перспективу, что всё мной или кем-либо сказанное, доказанное и проверенное может внезапно оказаться бредом. Целостная и непротиворечивая картина мира — недостижимый идеал. Приходиться пользоваться неидеальными реализациями оракулов, даже не имея абсолютных доказательств их сводимости к идеалу.


У меня пока только первая стадия — пропали ресурсы времени на разбор и подготовку содержательных новостей и статей. На бесплодные ненапряжные срачи на форуме времени ещё хватает, его даже чуть больше, за счёт того, что оно выкраивается короткими, но многочисленными урывками. И это время не взаимозаменяемо — разбор публикаций (так же как, наверное и кодинг движков) требует больше усилий, чем релаксационно-развлекательная трепня на форуме. Я именно это имел в виду под «интеллектуальным дауншифтингом». Так что за наследство моего модераторского аккаунта пока не беспокойтесь. В крайнем случае ресурсы будут оптимизированы под почётное немногословное модераторство, примерно как у SATtv'ы ☺
— Гость (26/02/2015 05:16)   <#>

В тему треда: напишите бредогенератор кодогенератор, т.е. пусть движок пишет за вас программа. ☺


Да, всё так.


Если обсуждаются плюсы и минусы каких-либо тьюринг-полных языков, такую оговорку можно будет произнести всегда.


У вас не бывает такого, что внезапно оказалось нужным добавить ещё один SockPort для какой-нибудь программы?


Одно другому не мешает. Можете вообще не заглядывать в автоматику — просто выполните скрипт, т.е. загрузите правила, а потом сделайте iptables-save > file. Далее можете file редактировать руками, как вам хочется, на сыром низкоуровневом iptables, а потом снова загружать его через iptables-restore < file. Кстати, man iptables-extensions вас не смущает? Почему весь это функционал — «extensions» (т.е. костыли, требующие всяких там -m tcp), а не часть основного функционала?


Для ряда модулей всё это тоже имеется, куда ж без этого.


Зависит от сложности. Такого, что помнится всё, конечно, нет.


Кстати, вы сами же приводили пример касательно сложности/простоты — это sponge construction, которая должна впоследствии сделать ненужными множество наворотов в SSL и др. протоколах. Долго считалось, что иначе никак, городились сложные велосипеды... а потом выстрелил KeccaK и в раз всё это оказалось ненужным, хотя тоже казалось непобедимым. В итоге всё стало проще, понятней, конструктивней.


Законы таковы, что скоро само пользование интернетом станет криминалом, причём во всех странах. Кто здесь не пират, пусть первый кинет камень поднимет руку.


Мысль понятна, но всё равно сквозит то, что вы исходите из своей ситуации, и вам хочется её механически перенести на всех других, а это неправомочно. Тема «зачем вам ИБ?» всплывала здесь неоднократно, но ведёт к оффтопу. Мне есть, что на это сказать, и даже часто хочется сказать (это очень веские вещи), но вот так просто взять и сказать нельзя, потому что всё, что здесь, в публичном месте, произносится, записывается, прочитывается, запоминается на века и в любой момент в будущем может всплыть в самый неудачный момент.

Не сообщайте в них больше, чем готовы сказать прокурору.


Я основной аргумент уже сказал. Вы полагаетесь на свой опыт, а я на свой, он у меня тоже есть. Я годами сидел на чистом iptables, время от времени редактируя его под свои случаи, а после этого сидел и на автоматике какое-то время. Мой опыт мне говорит о том, что на автоматике намного удобней, поэтому она (для меня) себя оправдала на все сто.

Другие имеют полное право мне не верить и придерживаться иного мнения, аппелируя к какому-то своему опыту. Однако, если кто-то хочет сделать что-то подобное моим костылям, он может взять их за основу и творчески переработать — это будет проще, чем писать и придумывать их с нуля.


Нам за это деньги платят. ©

Мне иногда хочется написать какой-то небольшой текст на тему «ад перфекциониста математика», но всё удачных примеров нет, чтобы на чём-то очень понятном и повседневном объяснить, как приходится по 10 раз переписывать одно предложение, потому что все первые 9 его вариантов, которые приходят в голову, содержат либо грамматические ошибки, либо логические неточности, либо неполны, либо недостаточно информативны, либо наоборот содержат избыточную информацию, не относяющуюся к сути обсуждаемого вопроса, а потом она только путает. Общая теория к этому уже есть [1], а красивого примера к ней нету.


Очень такая стандартная оговорка, но всё же считайте меня живым примером. Я не вылажу из командной строки, но твёрдо знать эти тонкости мне пока не понадобилось ни разу. Правда, скрипты я пишу редко, поскольку систематически программирование на шелле никогда не изучал. Соответственно, первые скрипты писались просто копированием рабочих примеров и кусков чужого кода без его реального понимания. Последнее время я больше увлёкся скриптописанием (появлись задачи, где без этого никак), но пробелы всё равно сказываются.


Да вроде базовые функции типа allow_in и allow_out универсальны, поэтому ничего править в них не придётся.

У вас какая-то логическая петля выходит: если функции статичны, то они ненужны, т.к. ненужна автоматизация, надо просто статикой написать все тысячи десятки правил iptables; а если функции не статичны, то они тоже ненужны, потому что их придётся править, и я забуду, как там и что. Т.е. функции ненужны в любом случае — так что ли?


Сейчас бы я так оголтело против неё (выч.-стойкой) не выступал. Сначала вы у меня сформировали мнение, что ничего там доказать строго нельзя, а остаются лишь математикоподобные спекуляции той или иной степени убедительности. Конечно, если так, это было бы слишком плохо. Однако, к счастью, это не так. Я вам на это указал уже позже, причём тогда, когда получил некий бэкграунд из других источников и от других людей — речь о том, что вычислительно-стойкое крипто — это применение [или раздел] теории сложности [complexity theory]. Вы на это отреагировали очень вяло и с недоверием, хотя позже как-то пустили это внутрь себя и даже стали местами на это ссылаться. У Голдрайха, который написал серьёзную толстую книжку на эту тему, есть даже замечательная цитата на этот счёт:

Indeed, modern cryptography is strongly coupled with Complexity Theory (in contrast to "classical" cryptography, which is strongly related to information theory).

Вы на это отреагировали молча, так что не знаю, что вы думаете. Может, вы и есть Голдрайх? ☺


Ну да, и я считаю, что это правильный подход.


Что является более базовым, чем теория множеств и логика?


Ну почему, я признаю ваше существование и оперирую как-то с вами. ☺


Это хорошее, ёмкое замечание, не подумал об этом. С точки зрения математики (см. [2], [3] и дальнешие комментарии в том треде) существование чего-либо имеется только в смысле непротиворечивости. Т.е. нет никаких иных препонов знанию, помимо его логической консистентности, но и на последнюю ставятся ограничения по Гёделю. Как яркий пример, мы получаем множество объектов, которые существуют в рамках математики, но вроде как не могут существовать в реальности (полное упорядочение любого множества, парадокс Банаха-Тарского и др.). Почему так правильно — по ссылкам есть ответ. В конечном счёте даже иррациональных чисел «не существует» в обыденном смысле — это нами придуманные идеализации.

Существует ли непознаваемое? Тут опять по Гёделю появляется ответ: какая бы ни была математика, мы можем поставить в ней такой вопрос, ответить на который в рамках этой математики будет нельзя. Простейший изящный пример, понятный любому младшекласснику — это вопрос принадлежнсти точки канторову множеству. На него можно дать ответ, если вы обладаете бесконечным количеством вычислительных ресурсов, но нельзя, если вы обладаете конечным (причём сколь угодно большим). Другие замечательные примеры непознаваемого — это, конечно же, «undecidable problems» с их конкретным примером «halting problem».

Казалось бы, это всё вода на вашу мельницу, чтобы заявить, что непознаваемое существует, но если поразбираться, откуда взялась математика и модели в ней, ответ будет не таким однозначным. Пока всё завязано на модели и идеализацию конструктива [4], всё так, а вдруг потом научаться завязываться на сам конструктив так, чтобы парадоксальные вопросы и неразрешимые проблемы отпали сами собой? Например, логические парадоксы как-то же решили, заменив наивную теорию множеств более состоятельной.


Не думаю. Скорей всего, вы просто очень плохо меня знаете, поэтому экстраполируете свой случай на мой. Опять же, вдаваться в подробности, почему та или иная мера/контрмера оправдана в моём случае, но не оправдана в вашем — оффтоп.


Если вы понимаете теорию, то можете немного подумать и доказать любое утверждение. Это не означает, что вы знаете или помните доказательство. Это означает, что вы можете его придумать на лету исходя из уже имеющихся знаний. Возможно, это будет какое-то новое и пока мало кому известное доказательство. Так вот, концептуально нагруженное программирование — такие же доказательства, теоремы и абстракции: иногда проще, исходя из своего понимания, доказать самому, чем разобраться со всеми шагами в чужой логике. Наверно, все сталкивались с этим, когда в доказательстве есть много технических рутинных (но понятных) вычислений — их проще произвести самому, а потом свериться с ответом, чем пошагово за автором делать и сверять промежуточные стадии в расчётах.


Это тоже верно, но если подход действительно ущербен, то, скорей всего, в войне между удобством и предопределённым мнением ростки разумного и взвешенного всё же пробьются, т.е. человек перестанет обманывать сам себя.


Это смотря что вы называете «образцово-концептуальной вещью». Впрочем, смысл понятен, и я даже с ним во многом согласен. Просто реальный мир сложен, и моделировать его тяжело, причём там много именно технической сложности, а не концептуальной. Как уже говорилось, один тип сложности не сконвертировать в другой [5].


Кстати, в экспертных сообществах это нонсенс. Например, вы не можете быть немногословным в плане результативных публикаций и при этом судить работы на принятие их на CRYPTO или в FOCS. Т.е. ваша «власть» (слово неправильное, но лень искать более удачный синоним) над сообществом пропорциональна вашей отдаче в это сообщество, нет никаких «почётных членов» и прочих «заслуженных» как в советской системе. Это одна из причин, из-за которых я местные порядки [6] плохо понимаю.
— SATtva (26/02/2015 22:36)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118

Тогда сразу ИИ, чего уж.
— SATtva (02/05/2015 11:44, исправлен 02/05/2015 11:44)   профиль/связь   <#>
комментариев: 11558   документов: 1036   редакций: 4118

Любителям и профессионалам скриптомесева: ShellCheck.


ShellCheck is a static analysis and linting tool for sh/bash scripts. It's mainly focused on handling typical beginner and intermediate level syntax errors and pitfalls where the shell just gives a cryptic error message or strange behavior, but it also reports on a few more advanced issues where corner cases can cause delayed failures.
— Гость (02/05/2015 12:24)   <#>
Спасибо! Прогнал скрипт, вроде ничего серьёзного не нашлось. Часть ошибок он показывает, потому что декларации в разных файлах, а сливать всё в один смысла нет. Двойные кавычки — в принципе, правильное замечание, но все переменные внутренние, я их с пробелами никогда не стал бы делать. Впрочем, ради подстраховки, наверно, стоит писать кавычки. Претензии к ненужности cat, как и к устаревшей форме `cmd`, скорее косметические, но можно исправить. Претензия к
local our_user=$(eval echo "\$$#")
наверно, единственная более-менее серьёзная. Там пишется, что

Declare and assign separately to avoid masking return values.

Видимо, если в строке вызова функции будет ошибка, может нечайно прописаться не то. Впрочем, в вызове функции любая ошибка может быть фатальной...
На страницу: 1, 2 След.
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3