Ansible — это не только написание YAML-файлов, но и умение виртуозно владеть его консольными инструментами. Правильные флаги помогают избежать ошибок при деплое, быстро проверять изменения без риска для продакшена и безопасно управлять секретами.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥7👍6🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
В репозитории собраны готовые строки и техники для эксплуатации веб-уязвимостей: XSS, SQL Injection, SSRF, RCE, XXE, CSRF, обходы WAF, повышение привилегий и десятки других сценариев атак. Всё удобно структурировано по типам уязвимостей и дополнено методологиями, примерами эксплуатации и файлами для автоматизированного тестирования.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥8🤝8
Разбираемся с поиском файлов по содержимому!
Одна из частых задач админа или разработчика — понять, в каких файлах встречается нужная строка, параметр или кусок кода. Особенно когда проект большой или система незнакомая.
Рекурсивный поиск в текущей папке:
Команда пройдёт по всем подпапкам и покажет совпадения с именем файла и строкой.
Показать только файлы, где есть совпадения:
Выведет просто список файлов без самих строк.
Без учёта регистра:
Найдёт и Text, и TEXT, и text.
Искать только в файлах нужного типа:
Полезно, когда знаешь, что нужное лежит, например, только в конфигах.
Исключить лишние системные каталоги:
Если искать по всей системе, без этого можно получить тонну мусора.
Если раздражают ошибки доступа — можно добавить в конец:
Поиск по имени файла + содержимому (через
Сначала выбираются нужные файлы, потом проверяется их содержимое.
Вариант через
Нормально работает с пробелами в именах файлов и тоже быстрый на больших объёмах.
🔥 Эти приёмы позволяют быстро находить конфиги, секреты в тестовых средах, точки использования API и любые текстовые данные в системе или проекте.
➡️ DevOps Ready | #практика
Одна из частых задач админа или разработчика — понять, в каких файлах встречается нужная строка, параметр или кусок кода. Особенно когда проект большой или система незнакомая.
Рекурсивный поиск в текущей папке:
grep -r "search_text" .
Команда пройдёт по всем подпапкам и покажет совпадения с именем файла и строкой.
-r — ищет рекурсивно, не заходя в символические ссылки;-R — тоже рекурсивно, но идёт по symlink’ам, поэтому можно случайно улететь в лишние каталоги или циклы;Показать только файлы, где есть совпадения:
grep -rl "search_text" .
Выведет просто список файлов без самих строк.
Без учёта регистра:
grep -ril "search_text" .
Найдёт и Text, и TEXT, и text.
Искать только в файлах нужного типа:
grep -r --include="*.conf" "search_text" /etc
Полезно, когда знаешь, что нужное лежит, например, только в конфигах.
Исключить лишние системные каталоги:
grep -r --exclude-dir=proc --exclude-dir=sys --exclude-dir=dev --exclude-dir=run "search_text" /
Если искать по всей системе, без этого можно получить тонну мусора.
Если раздражают ошибки доступа — можно добавить в конец:
2>/dev/null
Поиск по имени файла + содержимому (через
find):find /var/www -type f -name "*.php" -exec grep -nH "search_text" {} +Сначала выбираются нужные файлы, потом проверяется их содержимое.
-H — показывает имя файла-n — номер строки{} + — обрабатывает файлы пачками (обычно быстрее)Вариант через
xargs:find /var/www -type f -name "*.php" -print0 | xargs -0 grep -nH "search_text"
Нормально работает с пробелами в именах файлов и тоже быстрый на больших объёмах.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍8❤7🤝3
Прямое сетевое соединение из Bash без сетевых утилит!
В bash есть возможность открывать TCP/UDP-соединения через путь /dev/tcp/host/port. Это не реальный файл, а спец-путь, который интерпретируется самим bash (сетевые редиректы).
Открываем сокет к серверу и получаем файловый дескриптор:
Теперь можно отправлять данные напрямую, как в обычный файл:
И читать ответ сервера без
Работает именно в bash (не в
🔥 Это удобно на урезанных системах, контейнерах и rescue-окружениях, где нет сетевых утилит, но есть bash.
➡️ DevOps Ready | #совет
В bash есть возможность открывать TCP/UDP-соединения через путь /dev/tcp/host/port. Это не реальный файл, а спец-путь, который интерпретируется самим bash (сетевые редиректы).
Открываем сокет к серверу и получаем файловый дескриптор:
exec 3<>/dev/tcp/example.com/80
Теперь можно отправлять данные напрямую, как в обычный файл:
printf "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" >&3
И читать ответ сервера без
curl, nc и telnet (чтение завершится, когда сервер закроет соединение):cat <&3
Работает именно в bash (не в
sh/dash/busybox ash) и при включённой поддержке сетевых редиректов.Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥9❤5🤝4
Например, HTTP работает по request-response, TCP через SYN-ACK handshake, а UDP — без подтверждений, идеально для видео.
На картинке — таблица с принципами работы (handshake, шифрование, каналы) и примерами: веб-сёрфинг (HTTP/HTTPS), чаты (WebSocket), файлы (FTP), почта (SMTP).
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥6🤝6
Использование магических ссылок
Мы научимся восстанавливать файлы, которые были удалены из файловой системы, но все еще удерживаются запущенными процессами.
Это фундаментальный принцип
Для начала создадим файл, запустим процесс, который его читает, и имитируем удаление данных злоумышленником:
Файл исчез из списка
Теперь ищем дескриптор удаленного файла в директории
В выводе вы увидите номер (например, 3), указывающий на призрачную ссылку удаленного файла.
Чтобы вернуть данные, достаточно скопировать содержимое этой магической ссылки обратно в обычный файл:
Файл успешно восстановлен в текущую директорию из оперативной памяти.
Проверка работоспособности:
Ожидаемый вывод: секретные данные (и информация о новом файле).
🔥 При анализе взломанных систем всегда проверяйте
➡️ DevOps Ready | #практика
/proc для восстановления удаленных файлов в Linux!Мы научимся восстанавливать файлы, которые были удалены из файловой системы, но все еще удерживаются запущенными процессами.
Это фундаментальный принцип
Linux «все есть файл», позволяющий вернуть данные через файловую систему процессов /proc.Для начала создадим файл, запустим процесс, который его читает, и имитируем удаление данных злоумышленником:
echo "секретные данные" > secret.log
tail -f secret.log > /dev/null &
# Запоминаем PID последнего процесса и удаляем файл
PID=$!; rm secret.log
Файл исчез из списка
ls, но данные все еще доступны через дескрипторы активного процесса.Теперь ищем дескриптор удаленного файла в директории
fd процесса:ls -l /proc/$PID/fd | grep "deleted"
В выводе вы увидите номер (например, 3), указывающий на призрачную ссылку удаленного файла.
Чтобы вернуть данные, достаточно скопировать содержимое этой магической ссылки обратно в обычный файл:
cp /proc/$PID/fd/3 restored_secret.log
Файл успешно восстановлен в текущую директорию из оперативной памяти.
Проверка работоспособности:
cat restored_secret.log && ls -l restored_secret.log
Ожидаемый вывод: секретные данные (и информация о новом файле).
/proc перед перезагрузкой — это ваш лучший шанс найти удаленные улики.Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥9❤6🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
Это перевод известной книги Linux Insides, где шаг за шагом разбирается, как работает ядро: процесс загрузки системы, переход в защищённый режим, управление памятью, прерывания, драйверы, планировщик и другие низкоуровневые механизмы.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥10🤝7
Параллельный запуск обычных команд без GNU Parallel!
Многие задачи в Linux можно ускорить в разы, задействовав несколько ядер CPU.
Ключ — опция
Например, выполнить задачи параллельно:
Здесь одновременно работают до P копий скрипта (обычно по числу доступных CPU).
Отлично подходит для тяжёлых операций над файлами:
Файлы сжимаются параллельно, а не по одному. Использование
Можно комбинировать с
Вывод лучше писать в другой файл или каталог, чтобы не перезаписывать исходники.
🔥 Это простой способ распараллелить многие CPU-интенсивные задачи, но итоговая скорость может упираться в диск или другие ресурсы.
➡️ DevOps Ready | #совет
Многие задачи в Linux можно ускорить в разы, задействовав несколько ядер CPU.
Ключ — опция
-P у xargs, которая запускает несколько процессов одновременно (это именно многопроцессность, не потоки).Например, выполнить задачи параллельно:
P=$(nproc)
seq "$P" | xargs -P"$P" -I{} ./task.sh {}
Здесь одновременно работают до P копий скрипта (обычно по числу доступных CPU).
Отлично подходит для тяжёлых операций над файлами:
find . -maxdepth 1 -name "*.log" -print0 | xargs -0 -P4 -I{} gzip "{}"Файлы сжимаются параллельно, а не по одному. Использование
-print0 / -0 безопасно для имён с пробелами и спецсимволами.Можно комбинировать с
find для массовой обработки каталогов:find . -name "*.jpg" -print0 | xargs -0 -P6 -I{} convert "{}" -resize 50% "resized/{}"Вывод лучше писать в другой файл или каталог, чтобы не перезаписывать исходники.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥8🤝7
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь можно отрабатывать сценарии взлома контейнеров, обход прав доступа, атаки на кластер, утечки данных и другие типичные проблемы облачной инфраструктуры. Проект подходит как для специалистов по безопасности, так и для разработчиков и DevOps-инженеров, чтобы понимать, как защищать систему на практике.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍6🤝6
Диагностируем процессы в Linux через strace!
Когда сервис завис, тупит на старте, не открывает файлы или просто ведёт себя странно, а в логах ничего — почти всегда первым делом имеет смысл запустить
Запускаем программу под трассировкой:
Сразу видно, какие файлы открываются, какие библиотеки грузятся, где возникают ошибки.
Можно прицепиться к уже работающему процессу — удобно, если сервис завис:
Обычно быстро становится понятно, где он застрял:
Если программа создаёт дочерние процессы, без этого ключа часть событий не попадёт в вывод:
Проблемы с файлами, конфигами и правами:
Покажет
Частый кейс — программа ищет файл, которого нет:
Сразу видно, какой путь оказался отсутствующим.
Для сетевых проблем:
Видно создание сокетов, попытки подключения и ошибки.
Если нужно сохранить вывод:
С дочерними процессами лучше так:
Будут отдельные файлы по PID.
Иногда вывод обрезает длинные строки — увеличиваем лимит:
Посмотреть, где именно тратится время:
Короткая сводка по системным вызовам:
🔥
➡️ DevOps Ready | #практика
Когда сервис завис, тупит на старте, не открывает файлы или просто ведёт себя странно, а в логах ничего — почти всегда первым делом имеет смысл запустить
strace. Он показывает системные вызовы процесса, то есть что программа на самом деле просит у ядра.Запускаем программу под трассировкой:
strace ls /tmp
Сразу видно, какие файлы открываются, какие библиотеки грузятся, где возникают ошибки.
Можно прицепиться к уже работающему процессу — удобно, если сервис завис:
sudo strace -p <PID>
Обычно быстро становится понятно, где он застрял:
futex (блокировка), ожидание I/O (poll/epoll_wait), connect, чтение/запись и т.п.Если программа создаёт дочерние процессы, без этого ключа часть событий не попадёт в вывод:
strace -f <command>
Проблемы с файлами, конфигами и правами:
strace -e trace=%file <command>
Покажет
open/stat/access и другие файловые операции — удобно понять, какие пути реально проверяются.Частый кейс — программа ищет файл, которого нет:
strace -e trace=%file <command> 2>&1 | grep ENOENT
Сразу видно, какой путь оказался отсутствующим.
Для сетевых проблем:
strace -e trace=%network <command>
Видно создание сокетов, попытки подключения и ошибки.
Если нужно сохранить вывод:
strace -o trace.log <command>
С дочерними процессами лучше так:
strace -ff -o trace.log <command>
Будут отдельные файлы по PID.
Иногда вывод обрезает длинные строки — увеличиваем лимит:
strace -s 200 <command>
Посмотреть, где именно тратится время:
strace -T <command>
Короткая сводка по системным вызовам:
strace -c <command>
strace незаменим при анализе поведения непрозрачных бинарников и в случаях, когда нет доступа к исходному коду. Он показывает, на каких системных вызовах процесс блокируется и какие операции фактически выполняет в пространстве ядра.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤8👍8
Например, ядро управляет процессами, памятью, устройствами, сетью и файловыми системами — именно эти подсистемы обеспечивают работу всей операционной системы.
На картинке — 5 основных компонентов ядра, которые важно понимать разработчикам, DevOps-инженерам и системным администраторам.
Сохрани, чтобы держать базовую архитектуру Linux под рукой!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍9🤝5
Ошибки в инфраструктуре стоят дорого. Чтобы не уронить продакшн случайным изменением, важно использовать инструменты проверки Terraform на каждом этапе: от форматирования до анализа графа зависимостей и валидации в CI/CD.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤4👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Это подробный курс, который последовательно проводит от самых основ до уверенного использования системы. Материал разбит на разделы с примерами команд, пояснениями и практическими приёмами работы с файлами, процессами и окружением. Особое внимание уделено Bash и тому, как с помощью терминала автоматизировать задачи и управлять системой без графического интерфейса.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍7🔥7🤝1
Знали, что Linux умеет реагировать на события файловой системы в реальном времени?
Ядро через
Команда блокируется и просыпается только при событии, поэтому почти не расходует CPU:
Можно отслеживать целую директорию (важно, если редактор сохраняет через temp-файл + rename) и автоматизировать любые действия - перезапуск сервисов, сборку проекта или бэкап:
Очень удобно для авто-reload без Docker, IDE и сторонних инструментов:
🔥 Такой прием пригодится для CI-скриптов, авторазвертывания, hot-reload и администрирования.
🚪 Linux Ready | #совет
Ядро через
inotify сообщает, когда файл изменился, создан или заменён.Команда блокируется и просыпается только при событии, поэтому почти не расходует CPU:
inotifywait -e close_write config.yaml
Можно отслеживать целую директорию (важно, если редактор сохраняет через temp-файл + rename) и автоматизировать любые действия - перезапуск сервисов, сборку проекта или бэкап:
inotifywait -m -e create,delete,modify,moved_to ./src
Очень удобно для авто-reload без Docker, IDE и сторонних инструментов:
while inotifywait -e close_write app.py; do
pkill -f "python app.py"; python app.py &
done
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤8🔥6🤝4