Настоящие юзеры Linux находятся в командной строке каждый день, а некоторые живут в ней. В очередной подборке собраны утилиты, которые сделают эту жизнь проще, и веселее. Эти инструменты принесут наибольшую пользу системному администратору и хакеру, но и простой пользователь тоже найдет здесь интерес. Подборка утилит Linux для сисадмина.
Hunt — утилита локального поиска файлов, альтернатива стандартной locate. По моему опыту, поиск быстрее, чем поиск, обнаружение и определение местоположения. Работает быстрее чем find, fd и locate.
Ставится Hunt через Cargo потому как написана на Rust.
cargo install hunt
Тут присутствуют несколько фильтров и простых настроек, которых тем не менее достаточно для повседневного использования. Вот некоторые из них:
-e — искать только объекты с точно совпадающими именами (по запросу ssh не будет найден sshd_config);-i /path1,/path2 — исключить из поиска определенные папки;-h — включить поиск внутри скрытых папок;-s — не выводить пояснения, только список найденных файлов. Полезно для скриптов;-c — точное совпадение регистра.Больше подробностей — в репозитории программы.
Для ведения списка дел каждый использует то, что ему удобнее (например, я открыл в Telegram приватный канал, в котором нахожусь только я, и туда отправляю все дела). Если вы живете в терминале, графические приложения вам чужды, вы можете воспользоваться локальным диспетчером задач вроде Dooit. Хранит все только на жестком диске, работает только из терминала и напоминает Vim, с той лишь разницей, что последний не закрывается по Ctrl-C.
Для установки требуется Git и Python версии 3.10 или выше, что может быть проблемой при использовании в некоторых средах. У меня последняя версия Python на WSL еще 3.8, поэтому для этой программы мне пришлось открыть виртуальную машину с более новой системой.
Если у тебя всё есть, то ставится Dooit всего одной командой:
python3 -m pip install git+https://github.com/kraanzu/dooit.git
Запускается по команде dooit в терминале.
Регулярные выражения — самый мощный способ преобразования текстовых данных. Однако без опыта составление регулярного сезона может занять больше времени, чем cэкономит. Познакомьтесь с AutoRegex, ИИ-генератором регулярных выражений из обычных удобочитаемых описаний на английском языке.
Совпадение, если электронная почта находится на gmail
Внутри у этого сервиса — OpenAI Codex, публичная нейронка, которая пишет код по словесному описанию.
С простыми запросами AutoRegex справляется очень неплохо и позволяет здорово сэкономить время.
Единственное, что портит жизнь, так это небольшие лимиты на бесплатное использование. Впрочем, и их должно хватить: около десяти запросов предлагается бесплатно без аккаунта, и еще десять в месяц при регистрации. Для трех скриптов в месяц этого достаточно, но при необходимости можно заплатить или просто зарегистрировать другой аккаунт и продолжать им пользоваться.
Nezha — это аналог Zabbix, отображающий сводку по серверам, их системным ресурсам и прочей информации в веб-панели.
Установка довольно таки проста: вам понадобится рабочий Docker, учетная запись GitHub и доменное имя.
Для начала создайте приложение на GitHub: перейдите в GitHub Developer и нажмите «Новое приложение OAuth». При заполнении формы вам потребуется указать адрес домашней страницы приложения (для этого вам понадобится домен), а в поле Авторизация callback URL ввести _0_ /oauth2/callback. Затем создайте Client ID и Client Secret на странице приложения и запишите его — больше вы их не увидите.
Теперь выполни в терминале следующую команду:
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install_en.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
После ее выполнения откроется текстовое меню. Выбираем первый пункт.
Меню
Сценарий установки задаст вам несколько вопросов, включая порты. По умолчанию HTTP-сервер с интерфейсом будет создан на порту 8008, а сервер сбора информации от агентов на порту 5555.
Готово, панель поднялась. Можно ее открыть, войти через GitHub и создать новый сервер.
Админка
После создания сервера ты увидишь в панели его секрет. Он‑то нам и нужен для установки агента.
Теперь можно установить сам агент. Он ставится тем же скриптом, что и панель, но надо выбрать пункт 8. При установке у тебя спросят адрес панели и секрет, созданный на прошлом шаге. После ввода этих данных клиент сразу заработает, больше ничего настраивать не придется.
Теперь на главной странице появится карточка с информацией о сервере, а в панели можно открыть веб-терминал. Он полный: поддерживает цвета, обновляется в режиме реального времени и реагирует на специальные сочетания клавиш.
Кнопка открытия терминала
Nezha мне очень понравилась. Рекомендую как минимум потыкать демо.
Интересным открытием является ContainerSSH, который позволяет вам незаметно направлять SSH-клиентов в изолированные контейнеры, и эти контейнеры создаются «на лету», во время входа в систему.
Пример от автора утилиты. Пользователь при подключении оказывается в контейнере
Установка очень проста и выполняется одной командой с помощью Docker или Kubernetes. Загрузите содержимое папки примера и, если у вас есть Docker, запустите:
docker-compose up -d
А если кубер:
kubectl apply -f kubernetes.yaml
Тестовый сервер будет работать на локальном порту 2222 и принимать пользователя foo с любым паролем.
Вы можете исправить это недоразумение, написав свой собственный сервер аутентификации: это обычный HTTP-сервер с двумя конечными точками (/пароль и /pubkey), которые принимают и возвращают JSON. Вот пример запроса и ответа в случае аутентификации по паролю из документации:
{"username": "username","remoteAddress": "127.0.0.1:1234","connectionId": "An opaque ID for the SSH connection","passwordBase64": "Base64-encoded password"}{"success": true}Звучит как отличное решение для изоляции пользователей (например, гостевых сессий или песочниц для ненадежных лиц) и проведения всевозможных соревнований, в которых клиенты (игроки) должны получать доступ к одним и тем же средам с одинаковыми учетными данными, но не должны иметь возможности что-то сломать или вмешаться. друг с другом.
Krunvm — утилита для создания простых виртуальных машин на основе образов OCI. Если вам нужно быстро и легко создавать виртуальные машины, эту утилиту трудно заменить.
Krunvm позволяет определить количество ядер (—cpus) и памяти (—mem) виртуальной машины. Кроме того, можно сразу указать DNS (—dns), рабочую папку (—workdir), а также порты и каталоги для переадресации (—port и —volume соответственно). В целом достаточно гибкий и простой инструмент, за исключением сложности установки.
Установка на голую Ubuntu 22 заняла довольно много времени из-за отсутствия инструкции. Я расскажу вам, как это было, чтобы вы не теряли времени зря.
Для начала нужен компилятор Rust, пакетный менеджер Cargo и зависимости, которые потребуются при сборке:
sudo apt install rustc cargo patchelf linux-source-5.15.0 libelf-dev bison flex curl git python3-pyelftools asciidoctor
Затем нужно скачать, скомпилировать и установить libkrunfw:
git clone https://github.com/containers/libkrunfw.git cd libkrunfw makesudo make installТеперь установи buildah:
sudo apt install buildahПосле этого можно скачать и собрать libkrun:
git clone https://github.com/containers/libkrun.git cd libkrun makesudo make installФинальный аккорд — качаем и собираем krunvm:
git clone https://github.com/containers/krunvm.git cd krunvm cargo build --releaseВ target/ будет лежать готовый билд — krunvm.
Вы вероятно, слышали о BadUSB и подобных атаках, основанных на имитации легитимного устройства ввода во время офлайн-атак. Но если о самом BadUSB знают все, то встроенная в ядро Linux защита от него далеко не так известна.
Механизм авторизации USB-устройств был добавлен в ядро в 2007 году и дал возможность создавать правила и черно-белые списки USB-устройств, которые могут быть подключены или не подключены к определенной машине.
Однако до недавнего времени не существовало штатного и удобного способа настроить эту защиту. Теперь у нас есть USBGuard, удобный способ предотвратить USB-атаки на вашем Linux-компьютере.
Установка относительно проста. Сначала ставь зависимости:
sudo apt install --no-install-recommends -V \asciidoc autoconf automake bash-completion build-essential catch2 \docbook-xml docbook-xsl git ldap-utils libaudit-dev libcap-ng-dev \libdbus-glib-1-dev libldap-dev libpolkit-gobject-1-dev libprotobuf-dev \libqb-dev libseccomp-dev libsodium-dev libtool libxml2-utils \libumockdev-dev pkg-config protobuf-compiler sudo tao-pegtl-dev xsltprocЗатем скачай исходный код из репозитория, перейди в папку с ним и выполни следующее:
./configure makemake check sudo make installПеред первым запуском нужно произвести некоторые настройки, чтобы не остаться без клавиатуры перед собственным компьютером. Создайте набор правил, чтобы разрешить уже подключенным устройствам:
sudo sh -c 'usbguard generate-policy > /etc/usbguard/rules.conf'
Теперь можно запускать демон.
sudo systemctl start usbguard.service
Если ваша клавиатура все еще работает, загрузите сервис в автозагрузку:
sudo systemctl enable usbguard.service
Сервис ntfy.sh позволяет удобно отправлять уведомления на телефон и компьютер прямо из скриптов.
Чтобы отправить уведомления, достаточно обычного curl.
curl \-H "Title: XAKEP.RU alert" \-H "Priority: high" \-H "Tags: heavy_check_mark" \-d "Опубликована новая статья\!" \ntfy.sh/<your_topic>Результат
Все заголовки необязательны, достаточно только данных (-d).
Получать уведомления на компьютере можно через браузер — на странице ntfy..
Для получения уведомлений на телефон нужно установить приложение. Оно есть в Google Play, на F-Droid и в App Store. Устанавливай и подписывай на свой топик.
Сервис полностью открыт, исходный код доступен на GitHub. Вы можете масштабировать собственный экземпляр, если собираетесь передавать потенциально конфиденциальные данные. При этом в Android-приложении необходимо поставить галочку Use another server.
Последним на сегодня будет jqp (сокращение от jq playground) — это красивая TUI-песочница для обучения использованию jq.
Про сам jq мы уже писали в «Хакере», так что повторяться не буду. А вот про такой классный интерфейс к нему нужно рассказать подробнее.
Он поддерживает ввод из файла (параметр -f) или из стандартного потока ввода (curl ). В верхней части консоли есть поле для ввода запроса к jq, в левой колонке отображаются вводные данные (JSON из файла или из stdin), в правой — вывод jq на введенный запрос. Нажатием Tab можно переключаться между этими полями, стрелочками — пролистывать вверх и вниз.
Выбрать все поля timestamp
В репозитории программы есть информация о горячих клавишах, но для комфортного использования jqp их знать необязательно.
Чтобы установить jqp, просто скачай и разархивируй бинарный релиз. После этого его удобно поместить в /:
mv ./jqp /usr/local/binИзвестно, что при желании отличить браузер от какой‑то тулзы для скачивания можно по тому, какой именно трафик они генерируют. Например, curl будет отличаться от Chrome, даже если установить нужный заголовок User-Agent. Происходит это из‑за специфического механизма установки шифрованного соединения, которыйможно эксплуатироватьдля фингерпринтинга.
Со мной поделились проектом curl-impersonate: это специальная сборка curl, которая умеет прикидываться обычным браузером.
Утилита будет полезна, например, если работать с TLS-фингерпринтингом. Либо если просто хочется получить преднастроенный для имитации какого‑то браузера curl.
Для установки можно просто скачать релиз со страницы на GitHub, но перед этим нужно установить некоторые зависимости:
sudo apt install libnss3 nss-plugin-pem ca-certificates Для каждого поддерживаемого браузера есть скрипт‑обертка, который запускает curl-impersonate с нужными параметрами и заголовками. Таблицу я взял из репозитория программы.
Запуск на примере Chrome 101:
curl_chrome101 https://xakep.ruZellij — это еще один, притом довольно интересный, мультиплексор. Если tmux тебе вдруг станет недостаточно (или просто хочется попробовать что‑то новое), то можешь приглядеться к Zellij.
Скриншот из репозитория
Для установки можно использовать Cargo или просто скачать и распаковать бинарный релиз.
cargo install --locked zellij
Регулярные выражения — мощнейший способ преобразования текстовых данных. Однако без опыта составление регулярки может отнять больше времени, чем она сэкономит. Встречай AutoRegex — ИИ‑генератор регулярных выражений из обычных человекочитаемых описаний на английском.
Match if email is on gmail
Внутри у этого сервиса — OpenAI Codex, публичная нейронка, которая пишет код по словесному описанию.
С простыми запросами AutoRegex справляется очень неплохо и позволяет здорово сэкономить время.
Единственное, что портит жизнь, — это маленькие лимиты на бесплатное использование. Впрочем, даже их должно хватить: бесплатно предлагается штук десять запросов без аккаунта и еще десять в месяц, если зарегистрируешься. Для трех скриптов в месяц этого с головой хватит, но при необходимости можно заплатить или просто зарегать еще одну учетку и продолжить пользоваться.
Ну сдесь становятся понятны люди TUI, которым не нужны красивые окна и достаточно терминала. Если вы похожи на таких «помешаных» то вы также накопили наверное значительный арсенал малоизвестных утилит, которые здесь не упоминаются. В таких случаях берите и делитесь своими любимыми инструментами в комментариях к даной статье.
Чтобы взломать сеть Wi-Fi с помощью Kali Linux, вам нужна беспроводная карта, поддерживающая режим мониторинга…
Работа с консолью считается более эффективной, чем работа с графическим интерфейсом по нескольким причинам.Во-первых, ввод…
Конечно, вы также можете приобрести подписку на соответствующую услугу, но наличие SSH-доступа к компьютеру с…
С тех пор как ChatGPT вышел на арену, возросла потребность в поддержке чата на базе…
Если вы когда-нибудь окажетесь в ситуации, когда вам нужно взглянуть на спектр беспроводной связи, будь…
Elastic Security стремится превзойти противников в инновациях и обеспечить защиту от новейших технологий злоумышленников. В…