Заметки в категории Other

Разбираемся в работе fork бомбы

Можете ли вы объяснить как работает fork бомба на bash?

:(){ :|:& };:

Fork бомба - один из видов DoS атак (атака на отказ в обслуживании).

:(){ :|:& };: - ни что иное, как простая bash-функция. Она запускается рекурсивно. Ее часто используют системные администраторы для проверки настройки лимита количества процессов для пользователя. Лимиты могут быть настроены в /etc/security/limits.conf и PAM для избежания разрушительных действий fork бомбы.

Как только fork бомба запущена - система перестанет нормально функционировать. Остается только перезагрузить хост, т.к. другого способа убить все процессы, клонирующие себя, просто нет.

ВНИМАНИЕ!!! Следующие примеры могут привести к нежелательным последствиям.

Понимание кода

:() - определяем функцию с именем :. Эта функция не принимает аргументов. Синтаксис функциях в bash такой:

foo(){
 arg1=$1
 arg2=$2
 echo 'Bar..'
 #do_something on $arg argument
}

fork бомбу можно записать так:

:(){
 :|:&
};:

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

& - отправляет работу функции в фон, так что потомки не умирают, а начинают отъедать ресурсы системы.

; - заканчивает определение функции.

: - вызывает (запускает) функцию.

Вот переписанный для более читабельного вида код:

bomb() {
 bomb | bomb &
}; bomb

Правильно сконфигурированная система не должна исчерпывать ресурсы после запуска бомбы.

Amazon AWS

Мне очень нравится работать с Amazon AWS. Особенно если эта работа происходит с помощью Packer и Terraform. Эти инструменты позволяют формировать инфраструктуру быстро и непринужденно.

Но в этом есть подводные камни.

Всегда надо читать условия использования сервиса Amazon, т.к. там могут быть существенные ограничения, например, на скорость доступа к сервису. Потом может быть больно. ;)

Еще раз - всегда читайте то, что пишет Amazon о сервисе и условия предоставления услуги. Яркий тому пример - Amazon EFS.

Есть ли жизнь с Chrome

Поскольку у меня в ноуте памяти 16 ГБ решил попробовать перейти таки на Google Chrome.

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

Ну и заодно посмотрим что там поменялось за последние 5-6 лет, которые я его не использую.

Дайвинг - больше, чем просто хобби

Съездили с женой в отпуск и она подарила мне курс CMAS One Star Diver. Это такой аналог PADI Open Water Diver.

Прошел курс, успешно сдал экзамен (теория + практика). Т.е. теперь я сертифицированный дайвер. :)

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

Очень интересно, немного экстримально и очень красивые глубинные ландшафты и обитатели подводного мира.

После окончания курса, так уж вышло, сразу пришлось воспользоваться знаниями и возвращаться на октопусе buddy. :) Слишком много дышу под водой.

Всячески рекомендую всем подобный курс. Это очень интересно и познавательно. Плюс сообщество дайверов - это отдельная тема. ;)

Несколько деталей о регулярных выражениях

Несколько простых, но не всегда очевидных вещей о регулярных выражениях:

Регулярные выражения не просты.

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

Регулярные выражения - это не символы подстановки из командной строки.

Они содержат некоторые подобные символы, но они не означают ровно то же самое. Это понятно, но иногда вводит в заблуждение.

Регулярные выражения - это как небольшой язык программирования.

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

Классы символов - это маленький язык внутри регулярных выражений

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

Certificate Authority Authorization

В 2013 году появился черновик стандарта RFC6844, который был призван улучшить безопасность выдаваемых SSL сертификатов с помощью DNS записей. Это предлагается делать с помощью специальных ресурсных записей Certificate Authority Authorization (CAA).

В них перечисляется список доверенных центров сертификации, которым позволено выдавать сертификаты на домен.

Т.е. если в домене установлена запись типа:

example.com. IN CAA 128 issue 'letsencrypt.org'

то никто, кроме letsencrypt.org не в праве выдавать сертификаты на этот домен.

Есть еще расширение issuewild, которое говорит о том, кому разрешено выдавать wildcard сертификаты.

На данный момент не многие центры сертификации поддерживают эти записи, но дело все таки движется.

Из DNS серверов эти записи поддерживают многие, но в различных форматах. Bind9, например, поддерживает стандартную запись, которая указана выше, только с версии 9.9.6. Все версии до этого поддерживают только TYPE257.

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

Блокировки и Яндекс Метрика

В связи с блокировками сервисов Яндекса в Украине Яндекс.Метрика предлагает заменить в коде счетчика URL, с которого будет грузиться javascript.

Вместо:

s.src = "https://mc.yandex.ru/metrika/watch.js";

надо прописать:

s.src = "https://d31j93rd8oukbv.cloudfront.net/metrika/watch_ua.js";

После этого все будет работать как прежде.

При этом для доступа к веб-интерфейсу предлагается использовать Tor сеть или VPN/Proxy сервисы.

Блог в сети Tor

Сделал то, что давно хотел попробовать. Опубликовал этот бложик в сети Tor. Баловство, конечно. Но опыт интересный. Довольно все просто и легко.

В общем, кому хочется быть аноном, вам сюда - ampnckidnqwtd7ry.onion

Дуглас Адамс и таблица ASCII

Если вы не читали книги "Автостопом по галактике" и даже не смотрели экранизацию в виде фильма, то стоит это сделать прямо сейчас. Отличный юмор и прекраснейший сюжет. :)

"Ответ на главный вопрос жизни, вселенной и всего такого" - это стало легендой и абсолютно все, кто смотрел/читал эти произведения сразу отвечают "42".

Казалось бы, а почему 42, а не 43, 34 или на худой конец 24?

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

Поищите какой символ стоит в ASCII под номером 42. Думаю, что вы будете удивлены и порадуетесь очередной шутке великого автора. ;)

Отказ от соцсетей

Павел Дуров разродился призывом откааться от социальных сетей. Если вы еще не видели, то я процитирую его:

Друзья в социальных сетях – явление из 2010 года. Все, кто нужен, давно в мессенджерах. Поддерживать устаревающие списки друзей в публичных сетях бессмысленно и долго. Читать чьи-то новости – засорение мозга.

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

Говорят, что лучшее – враг хорошего. Но верно и то, что хорошее – враг лучшего. Единственная преграда на пути к лучшему – это цепляние за то хорошее, что уже есть.

В принципе, я с ним согласен и сам давно отказался от большинства социалок. Только вот Twitter и Instagram остались. Ну и еще LinkedIn, в качестве "профессионального лица". :)

Все остальное - это какой-то шлак, который льется в мозг и от этого ему становится только хуже. Все эти новости "друзей", "вам понравится" и "возможно вы пропустили" мне не надо лет 300. Все что мне необходимо я получаю из RSS и Twitter (подписан на тех, кто мен интересен в профессиональном плане). Для общения есть мессенджеры и FIDONet (да, я ретроград и олдфаг).