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

Разбираемся в работе 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

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

Read more

🔄 Своя Dropbox-альтернатива: Syncthing

🔄 Своя Dropbox-альтернатива: Syncthing

🧠 Зачем? Облачные сервисы — удобно, но: * не хочется платить Google/Dropbox за хранение своих файлов * хочется моментально синхронизировать фото, документы и заметки между устройствами * и делать это на своём сервере, без отправки данных «в облако» 👉 Решение — Syncthing: децентрализованный, зашифрованный, open source-синк между любыми устройствами. 🚀 Что ты получишь? * 📂 Автосинк папок между сервером,

🎧 Свой подкаст-сервер за 5 минут: Podgrab

🎧 Свой подкаст-сервер за 5 минут: Podgrab

✨ Зачем? Подкасты — отличный способ учиться, развлекаться и быть в курсе мира. Но что, если: * Хочется слушать подкасты офлайн * Хочется архивировать любимые шоу * Не устраивают сторонние сервисы, реклама и трекеры Решение: Podgrab — простой подкаст-граббер, который автоматически скачивает новые выпуски с любого RSS. А в связке с Audiobookshelf ты получаешь полноценный медиасервер.

Безопасное управление конфигурациями в Ansible: Полное руководство по использованию rescue и always

Безопасное управление конфигурациями в Ansible: Полное руководство по использованию rescue и always

Введение: Почему это важно В мире DevOps и системного администрирования существует простое правило: всё ломается. Особенно в самый неподходящий момент. Когда вы изменяете конфигурацию критического сервиса (например, Nginx), цена ошибки может быть очень высока — от простого даунтайма до потери данных. Ansible предлагает элегантное решение для безопасного внесения изменений через механизм

Использование ~/.ssh/authorized_keys для управления входящими SSH-соединениями

Использование ~/.ssh/authorized_keys для управления входящими SSH-соединениями

Файл ~/.ssh/authorized_keys позволяет настроить команды, которые будут выполняться при входящих SSH-соединениях. Это полезный инструмент для управления доступом и обеспечения безопасности, особенно при работе с резервным копированием данных. Настройка резервного копирования с использованием authorized_keys В данном примере рассматривается использование authorized_keys для настройки резервного копирования базы данных Bacula