64

Ковыряем атаку forkbomb на bash в docker

Есть такой вид атаки на отказ в обслуживании (DoS, Denial of Service) — forkbomb. Запускается процесс, который бесконечно порождает сам себя, пожирая все ресурсы системы. Прав суперпользователя не требуется, любой пользователь может создавать процессы.


Cкрипт атаки выглядит так. Функция порождает две версии себя, связанные конвейером. Правая функция уходит в фоновый режим с помощью знака амперсанд &.

forkbomb()
{
forkbomb | forkbomb&
}

Скрипт можно переписать в непонятный однострочник, изменив название на символ двоеточия:

:(){ :|:& }; :

Такой набор символов эквивалентен скрипту выше. При этом он компактен, и его могут запихнуть вам в качестве шуточного ответа на вопрос. Спасибо ещё, что не патч Бармина.


В видео также рассматриваются линуксовые команды команды

1. lscpu

2. nproc

3. uptime

4. top

5. free

6. переменные $$ $PPID

7. настройка числа PID в /proc/sys/kernel/pid_max

8. ctrl-L для очистки терминала

9. разделение экрана в терминале terminator

10. буфер выделения и вставка по нажатию на колёсико мышки

11. pkill


И разбираются флаги такой docker команды

docker run --it --rm --cpus="0.5" --memory=4G --pids-limit=1000 --name=forkbomb ubuntu bash

Плюс применяются команды docker ps / stats / exec.


Хотите почувствовать себя капитаном тонущего корабля? Теперь ресурсы системы принадлежат не вам, а паразитному процессу forkbomb. Приятного просмотра!

Починить атакованную систему можно только перезагрузкой. Ну, если атакующий скрипт вам не дописали в .bashrc. Тогда только recovery mode в grub.


В телеграм-канале разбираем разные нюансы из жизни разработчика на Python и не только — python, bash, linux, тесты, командную разработку.

GNU/Linux

1.2K пост15.6K подписчика

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий
у меня терминал так на части не делится
раскрыть ветку (7)
2
Автор поста оценил этот комментарий

Это сторонний терминал, называется terminator. В ubuntu поставить так

sudo apt install terminator


У него деление экрана (сколько угодно раз, правой кнопкой мыши - разделить горизонтально или вертикально или горячие клавиши ctrl+shift-O, ctrl-shif-E и ctrl-shift-X для увеличения окна на весь экран), возможность настроить бесконечный скролл, приятную цветовую схему и подобные мелочи

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

слушай, а ты не знаешь как сделать запуск терминатора уже с, скажем, 5-ю вкладками?

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

если я правильно понял вопрос, то тут гайд по настройке https://superuser.com/a/610048

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасиб, гляну.

0
Автор поста оценил этот комментарий

а каким пользуешься?

раскрыть ветку (2)
2
Автор поста оценил этот комментарий

а ты каким? мне нравится terminator

0
Автор поста оценил этот комментарий
встроенным
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку