В этом посте — базовые инструменты для анализа сетевых портов и сервисов. Рассмотрены команды для просмотра слушающих сокетов, проверки доступности TCP-портов, сопоставления портов с процессами и выполнения сетевого сканирования. Подходит для эксплуатации, отладки и оперативной диагностики.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤8👍7🤝1
Например, Ctrl + A переносит курсор в начало строки, а Ctrl + R запускает инкрементальный поиск по истории команд.
На картинке — полезные сочетания клавиш для быстрой навигации и редактирования команд в терминале.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🤝7🔥6❤2
Как не уничтожить лишнее при массовых операциях?
Любая массовая команда в Linux — это потенциально опасный инструмент.
Ошибка в маске, неверный путь или лишний * и можно затронуть не те файлы. Поэтому сначала всегда проверяем, что именно выберет фильтр:
Когда результат полностью совпадает с ожиданиями, добавляем действие:
Если важен контроль и наглядность, лучше использовать
🔥
➡️ DevOps Ready | #совет
Любая массовая команда в Linux — это потенциально опасный инструмент.
Ошибка в маске, неверный путь или лишний * и можно затронуть не те файлы. Поэтому сначала всегда проверяем, что именно выберет фильтр:
find /data -type f -name "*.log" -print
-print показывает полный список совпадений. Это позволяет увидеть неожиданные вложенные каталоги, лишние расширения или неверный путь.Когда результат полностью совпадает с ожиданиями, добавляем действие:
find /data -type f -name "*.log" -delete
Если важен контроль и наглядность, лучше использовать
-exec:find /data -type f -name "*.log" -exec rm -v {} +rm -v покажет каждый удалённый файл, что особенно полезно в скриптах и при ручной работе в проде.Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥9❤8
This media is not supported in your browser
VIEW IN TELEGRAM
Это удобный справочник по командам Linux с разбивкой по категориям: файлы, сеть, процессы, пользователи, Git, SSH, пакетные менеджеры и многое другое. Подходит как для начинающих, так и для тех, кто работает в терминале постоянно и хочет иметь под рукой удобную шпаргалку.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍8🤝7
Перенаправление потоков и pipe!
Процесс в Unix обычно имеет три стандартных дескриптора:
0 —
Shell не обрабатывает вывод — он до запуска команды переназначает, к каким объектам привязаны дескрипторы (терминал, файл, pipe). Поэтому процесс стартует уже с изменённой таблицей дескрипторов.
Базовый случай — перенаправление
Оператор
Важно помнить, что
Для
Так можно разделить обычный вывод и ошибки в разные файлы:
Поскольку
Редиректы применяются слева направо, поэтому порядок критичен:
Это именно копирование назначения дескриптора, а не абстрактное объединение потоков.
В этом случае файл становится источником данных для процесса.
Оператор
Через
Shell также позволяет работать с дополнительными дескрипторами, что удобно в скриптах:
В этом контексте
🔥 Основные принципы просты: редиректы настраиваются до запуска, применяются слева направо;
➡️ DevOps Ready | #практика
Процесс в Unix обычно имеет три стандартных дескриптора:
0 —
stdin, 1 — stdout, 2 — stderr.Shell не обрабатывает вывод — он до запуска команды переназначает, к каким объектам привязаны дескрипторы (терминал, файл, pipe). Поэтому процесс стартует уже с изменённой таблицей дескрипторов.
Базовый случай — перенаправление
stdout в файл:echo "test" > file.txt
Оператор
> открывает файл с перезаписью (truncate). Если нужно дописывать данные в конец, используется >>:echo "line" >> file.txt
Важно помнить, что
> по умолчанию влияет только на stdout (fd 1).Для
stderr используется дескриптор 2:command 2> error.log
Так можно разделить обычный вывод и ошибки в разные файлы:
command > out.log 2> error.log
Поскольку
stdout и stderr — независимые дескрипторы, их можно направить в один файл:command > all.log 2>&1
2>&1 означает: направить stderr туда же, куда в этот момент направлен stdout. Редиректы применяются слева направо, поэтому порядок критичен:
command > all.log 2>&1 # оба потока в файл
command 2>&1 > all.log # stderr останется в терминале
Это именно копирование назначения дескриптора, а не абстрактное объединение потоков.
stdin (fd 0) тоже можно переназначить:sort < input.txt
В этом случае файл становится источником данных для процесса.
Оператор
| создаёт pipe — канал между процессами: stdout левой команды подключается к stdin правой.grep 500 access.log | wc -l
Через
pipe передаётся только stdout. Если нужно передать и stderr, его сначала перенаправляют в stdout:make 2>&1 | tee build.log
Shell также позволяет работать с дополнительными дескрипторами, что удобно в скриптах:
exec 3> debug.log
echo "debug info" >&3
exec 3>&-
В этом контексте
exec изменяет дескрипторы текущего shell-процесса, позволяя организовать отдельные каналы вывода.2>&1 копирует stdout, pipe соединяет stdout одной команды со stdin другой.Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍8🔥5🤝3
Например,
ssh -R используется для публикации локальных сервисов через удалённый SSH-сервер. На изображении показано: базовый синтаксис
ssh -R, отличие short и long form, маршрут трафика через SSH-туннель, влияние параметра GatewayPorts на стороне сервераСохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝7👍5🔥5❤2
Изоляция процессов в Linux через Unshare без Docker и тяжелых утилит!
Мы научимся использовать системный вызов
Это позволяет запустить процесс с собственной таблицей хостов или файловой системой, не влияя на основную
Сначала создадим изолированную среду с собственной сетевой петлей и новым пространством имен для имени хоста:
Теперь вы находитесь внутри изолированного процесса, где изменения параметров сети не коснутся основной системы.
Внутри новой оболочки зададим уникальное имя хоста, чтобы убедиться в полной изоляции
Имя хоста изменится только для этой сессии, в то время как основная система сохранит прежнее название.
Для полной демонстрации сетевой изоляции попробуем поднять интерфейс, который будет существовать только в этом пространстве:
Внутри этого пространства вы увидите чистый сетевой стек, полностью отделенный от физических интерфейсов сервера.
Проверка работоспособности:
Ожидаемый вывод: ваше старое имя хоста (подтверждает, что изоляция работает).
🔥 Помните, что для некоторых флагов изоляции (например, монтирования) требуются права суперпользователя или настройка
➡️ DevOps Ready | #практика
Мы научимся использовать системный вызов
unshare для создания изолированного пространства имен (namespaces), что является фундаментом контейнеризации в Linux. Это позволяет запустить процесс с собственной таблицей хостов или файловой системой, не влияя на основную
ОС. Сначала создадим изолированную среду с собственной сетевой петлей и новым пространством имен для имени хоста:
sudo unshare --fork --uts --net bash
Теперь вы находитесь внутри изолированного процесса, где изменения параметров сети не коснутся основной системы.
Внутри новой оболочки зададим уникальное имя хоста, чтобы убедиться в полной изоляции
UTS namespace:hostname sandbox-env && hostname
Имя хоста изменится только для этой сессии, в то время как основная система сохранит прежнее название.
Для полной демонстрации сетевой изоляции попробуем поднять интерфейс, который будет существовать только в этом пространстве:
ip link set lo up && ip addr show lo
Внутри этого пространства вы увидите чистый сетевой стек, полностью отделенный от физических интерфейсов сервера.
Проверка работоспособности:
hostname
Ожидаемый вывод: ваше старое имя хоста (подтверждает, что изоляция работает).
User Namespaces.Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍9🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
Это интерактивная площадка, где можно тренироваться в Linux, Docker, Kubernetes, Git, Terraform и других DevOps-инструментах прямо в браузере. Вместо теории, готовые лабораторные среды с задачами: запускаешь окружение, выполняешь команды, настраиваешь сервисы. Отличный вариант, если хочешь попрактиковаться без установки инструментов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍9🤝7
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