В этом посте — базовые инструменты для анализа сетевых портов и сервисов. Рассмотрены команды для просмотра слушающих сокетов, проверки доступности 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