Настоящие юзеры Linux находятся в командной строке каждый день, а некоторые живут в ней. В очередной подборке собраны утилиты, которые сделают эту жизнь проще, и веселее. Эти инструменты принесут наибольшую пользу системному администратору и хакеру, но и простой пользователь тоже найдет здесь интерес. Подборка утилит Linux для сисадмина.
HUNT
Hunt — утилита локального поиска файлов, альтернатива стандартной locate. По моему опыту, поиск быстрее, чем поиск, обнаружение и определение местоположения. Работает быстрее чем find, fd и locate.
Ставится Hunt через Cargo потому как написана на Rust.
cargo install hunt
Тут присутствуют несколько фильтров и простых настроек, которых тем не менее достаточно для повседневного использования. Вот некоторые из них:
-e
— искать только объекты с точно совпадающими именами (по запросуssh
не будет найденsshd_config
);-i /
— исключить из поиска определенные папки;path1,/ path2 -h
— включить поиск внутри скрытых папок;-s
— не выводить пояснения, только список найденных файлов. Полезно для скриптов;-c
— точное совпадение регистра.
Больше подробностей — в репозитории программы.
DOOIT
Для ведения списка дел каждый использует то, что ему удобнее (например, я открыл в 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
в терминале.
AUTOREGEX
Регулярные выражения — самый мощный способ преобразования текстовых данных. Однако без опыта составление регулярного сезона может занять больше времени, чем cэкономит. Познакомьтесь с AutoRegex, ИИ-генератором регулярных выражений из обычных удобочитаемых описаний на английском языке.
Совпадение, если электронная почта находится на gmail
Внутри у этого сервиса — OpenAI Codex, публичная нейронка, которая пишет код по словесному описанию.
С простыми запросами AutoRegex справляется очень неплохо и позволяет здорово сэкономить время.
Единственное, что портит жизнь, так это небольшие лимиты на бесплатное использование. Впрочем, и их должно хватить: около десяти запросов предлагается бесплатно без аккаунта, и еще десять в месяц при регистрации. Для трех скриптов в месяц этого достаточно, но при необходимости можно заплатить или просто зарегистрировать другой аккаунт и продолжать им пользоваться.
NEZHA
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
Интересным открытием является 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
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
make
sudo make install
Теперь установи buildah
:
sudo apt install buildah
После этого можно скачать и собрать libkrun
:
git clone https://github.com/containers/libkrun.git
cd libkrun
make
sudo make install
Финальный аккорд — качаем и собираем krunvm
:
git clone https://github.com/containers/krunvm.git
cd krunvm
cargo build --release
В target/
будет лежать готовый билд — krunvm
.
USBGUARD
Вы вероятно, слышали о 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
make
make 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
Сервис 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
Последним на сегодня будет jqp (сокращение от jq playground) — это красивая TUI-песочница для обучения использованию jq.
Про сам jq мы уже писали в «Хакере», так что повторяться не буду. А вот про такой классный интерфейс к нему нужно рассказать подробнее.
Он поддерживает ввод из файла (параметр -f
) или из стандартного потока ввода (curl
). В верхней части консоли есть поле для ввода запроса к jq, в левой колонке отображаются вводные данные (JSON из файла или из stdin
), в правой — вывод jq на введенный запрос. Нажатием Tab можно переключаться между этими полями, стрелочками — пролистывать вверх и вниз.
Выбрать все поля timestamp
В репозитории программы есть информация о горячих клавишах, но для комфортного использования jqp их знать необязательно.
Чтобы установить jqp, просто скачай и разархивируй бинарный релиз. После этого его удобно поместить в /
:
mv ./jqp /usr/local/bin
CURL-IMPERSONATE
Известно, что при желании отличить браузер от какой‑то тулзы для скачивания можно по тому, какой именно трафик они генерируют. Например, 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.ru
ZELLIJ
Zellij — это еще один, притом довольно интересный, мультиплексор. Если tmux тебе вдруг станет недостаточно (или просто хочется попробовать что‑то новое), то можешь приглядеться к Zellij.
Скриншот из репозитория
Для установки можно использовать Cargo или просто скачать и распаковать бинарный релиз.
cargo install --locked zellij
AUTOREGEX
Регулярные выражения — мощнейший способ преобразования текстовых данных. Однако без опыта составление регулярки может отнять больше времени, чем она сэкономит. Встречай AutoRegex — ИИ‑генератор регулярных выражений из обычных человекочитаемых описаний на английском.
Match if email is on gmail
Внутри у этого сервиса — OpenAI Codex, публичная нейронка, которая пишет код по словесному описанию.
С простыми запросами AutoRegex справляется очень неплохо и позволяет здорово сэкономить время.
Единственное, что портит жизнь, — это маленькие лимиты на бесплатное использование. Впрочем, даже их должно хватить: бесплатно предлагается штук десять запросов без аккаунта и еще десять в месяц, если зарегистрируешься. Для трех скриптов в месяц этого с головой хватит, но при необходимости можно заплатить или просто зарегать еще одну учетку и продолжить пользоваться.
Заключение
Ну сдесь становятся понятны люди TUI, которым не нужны красивые окна и достаточно терминала. Если вы похожи на таких «помешаных» то вы также накопили наверное значительный арсенал малоизвестных утилит, которые здесь не упоминаются. В таких случаях берите и делитесь своими любимыми инструментами в комментариях к даной статье.