Подборка утилит Linux для сисадмина

Подборка утилит Linux для сисадмина

Настоящие юзеры Linux находятся в командной строке каждый день, а некоторые живут в ней. В очередной подборке собраны утилиты, которые сделают эту жизнь проще, и веселее. Эти инструменты принесут наибольшую пользу системному администратору и хакеру, но и простой пользователь тоже найдет здесь интерес. Подборка утилит Linux для сисадмина.

HUNT

Hunt — утилита локального поиска файлов, альтернатива стандартной locate. По моему опыту, поиск быстрее, чем поиск, обнаружение и определение местоположения. Работает быстрее чем find, fd и locate.

Ста­вит­ся Hunt через Cargo потому как написана на Rust.

cargo install hunt

Тут присутствуют нес­коль­ко филь­тров и прос­тых нас­тро­ек, которых тем не менее дос­таточ­но для пов­седнев­ного исполь­зования. Вот некото­рые из них:

  • -e — искать толь­ко объ­екты с точ­но сов­пада­ющи­ми име­нами (по зап­росу ssh не будет най­ден sshd_config);
  • -i /path1,/path2 — исклю­чить из поис­ка опре­делен­ные пап­ки;
  • -h — вклю­чить поиск внут­ри скры­тых папок;
  • -s — не выводить пояс­нения, толь­ко спи­сок най­ден­ных фай­лов. Полез­но для скрип­тов;
  • -c — точ­ное сов­падение регис­тра.

Подборка утилит Linux для сисадмина

Боль­ше под­робнос­тей — в репози­тории прог­раммы.

DOOIT

Для ведения списка дел каждый использует то, что ему удобнее (например, я открыл в Telegram приватный канал, в котором нахожусь только я, и туда отправляю все дела). Если вы живете в терминале, графические приложения вам чужды, вы можете воспользоваться локальным диспетчером задач вроде Dooit. Хранит все только на жестком диске, работает только из терминала и напоминает Vim, с той лишь разницей, что последний не закрывается по Ctrl-C.

Подборка утилит Linux для сисадмина

Для установки требуется Git и Python версии 3.10 или выше, что может быть проблемой при использовании в некоторых средах. У меня последняя версия Python на WSL еще 3.8, поэтому для этой программы мне пришлось открыть виртуальную машину с более новой системой.

Ес­ли у тебя всё есть, то ста­вит­ся Dooit все­го одной коман­дой:

python3 -m pip install git+https://github.com/kraanzu/dooit.git

За­пус­кает­ся по коман­де dooit в тер­минале.

AUTOREGEX

Регулярные выражения — самый мощный способ преобразования текстовых данных. Однако без опыта составление регулярного сезона может занять больше времени, чем cэкономит. Познакомьтесь с AutoRegex, ИИ-генератором регулярных выражений из обычных удобочитаемых описаний на английском языке.

Match if email is on gmailПодборка утилит Linux для сисадмина

Совпадение, если электронная почта находится на gmail

Внут­ри у это­го сер­виса — OpenAI Codex, пуб­личная ней­рон­ка, которая пишет код по сло­вес­ному опи­санию.

С прос­тыми зап­росами AutoRegex справ­ляет­ся очень неп­лохо и поз­воля­ет здо­рово сэконо­мить вре­мя.

Единственное, что портит жизнь, так это небольшие лимиты на бесплатное использование. Впрочем, и их должно хватить: около десяти запросов предлагается бесплатно без аккаунта, и еще десять в месяц при регистрации. Для трех скриптов в месяц этого достаточно, но при необходимости можно заплатить или просто зарегистрировать другой аккаунт и продолжать им пользоваться.

NEZHA

Nezha — это аналог Zabbix, отображающий сводку по серверам, их системным ресурсам и прочей информации в веб-панели.

Подборка утилит Linux для сисадмина

Установка довольно таки проста: вам понадобится рабочий 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

Пос­ле ее выпол­нения откро­ется тек­сто­вое меню. Выбира­ем пер­вый пункт.

МенюПодборка утилит Linux для сисадмина

Меню

Сценарий установки задаст вам несколько вопросов, включая порты. По умолчанию HTTP-сервер с интерфейсом будет создан на порту 8008, а сервер сбора информации от агентов на порту 5555.

Го­тово, панель под­нялась. Мож­но ее открыть, вой­ти через GitHub и соз­дать новый сер­вер.

Админка

Пос­ле соз­дания сер­вера ты уви­дишь в панели его сек­рет. Он‑то нам и нужен для уста­нов­ки аген­та.

Те­перь мож­но уста­новить сам агент. Он ста­вит­ся тем же скрип­том, что и панель, но надо выб­рать пункт 8. При уста­нов­ке у тебя спро­сят адрес панели и сек­рет, соз­данный на прош­лом шаге. Пос­ле вво­да этих дан­ных кли­ент сра­зу зарабо­тает, боль­ше ничего нас­тра­ивать не при­дет­ся.

Теперь на главной странице появится карточка с информацией о сервере, а в панели можно открыть веб-терминал. Он полный: поддерживает цвета, обновляется в режиме реального времени и реагирует на специальные сочетания клавиш.

Подборка утилит Linux для сисадмина

Кнопка открытия терминала

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/release будет лежать готовый билд — 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.sh/<your_topic>.

Для получе­ния уве­дом­лений на телефон нуж­но уста­новить при­ложе­ние. Оно есть в Google Play, на F-Droid и в App Store. Уста­нав­ливай и под­писывай на свой топик.

Сервис полностью открыт, исходный код доступен на GitHub. Вы можете масштабировать собственный экземпляр, если собираетесь передавать потенциально конфиденциальные данные. При этом в Android-приложении необходимо поставить галочку Use another server.

JQP

Пос­ледним на сегод­ня будет jqp (сок­ращение от jq playground) — это кра­сивая TUI-песоч­ница для обу­чения исполь­зованию jq.

Про сам jq мы уже писали в «Хакере», так что пов­торять­ся не буду. А вот про такой клас­сный интерфейс к нему нуж­но рас­ска­зать под­робнее.

Он под­держи­вает ввод из фай­ла (параметр -f) или из стан­дар­тно­го потока вво­да (curl https://url/to/your.json jqp). В вер­хней час­ти кон­соли есть поле для вво­да зап­роса к jq, в левой колон­ке отоб­ража­ются ввод­ные дан­ные (JSON из фай­ла или из stdin), в пра­вой — вывод jq на вве­ден­ный зап­рос. Нажати­ем Tab мож­но перек­лючать­ся меж­ду эти­ми полями, стре­лоч­ками — про­лис­тывать вверх и вниз.

Выбрать все поля timestamp

В репози­тории прог­раммы есть информа­ция о горячих кла­вишах, но для ком­фор­тно­го исполь­зования jqp их знать необя­затель­но.

Что­бы уста­новить jqp, прос­то ска­чай и разар­хивируй би­нар­ный релиз. Пос­ле это­го его удоб­но помес­тить в /usr/local/bin:

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Подборка утилит Linux для сисадмина

Match if email is on gmail

Внут­ри у это­го сер­виса — OpenAI Codex, пуб­личная ней­рон­ка, которая пишет код по сло­вес­ному опи­санию.

С прос­тыми зап­росами AutoRegex справ­ляет­ся очень неп­лохо и поз­воля­ет здо­рово сэконо­мить вре­мя.

Единс­твен­ное, что пор­тит жизнь, — это малень­кие лимиты на бес­плат­ное исполь­зование. Впро­чем, даже их дол­жно хва­тить: бес­плат­но пред­лага­ется штук десять зап­росов без акка­унта и еще десять в месяц, если зарегис­три­руешь­ся. Для трех скрип­тов в месяц это­го с головой хва­тит, но при необ­ходимос­ти мож­но зап­латить или прос­то зарегать еще одну учет­ку и про­дол­жить поль­зовать­ся.

Заключение

Ну сдесь становятся понятны люди TUI, которым не нужны красивые окна и достаточно терминала. Если вы похожи на таких «помешаных» то вы также накопили наверное значительный арсенал малоизвестных утилит, которые здесь не упоминаются. В таких случаях берите и делитесь своими любимыми инструментами в комментариях к даной статье.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Click to rate this post!
[Total: 1 Average: 5]

Leave a reply:

Your email address will not be published.