Утилиты для работы с коман­дной стро­кой Linux

Утилиты для работы с коман­дной стро­кой Linux

По поводу утилит для Linux (в основном консольных) стоит упомянуть. Я имею ввиду, что многие люди не пользуются мощностью консоли на 100%. В большинстве своем, они ограничиваются только созданием файлов, а затем их переключением между каталогами, работая с консоли. Так же мне кажется,что это следствие того факта,что на просторах Рунета мало источников,где можно было бы чаще говорить об утилитах,о том,как с ними работать и чем они полезны. И сегодня мы рассмотрим утилиты для работы с коман­дной стро­кой Linux.

Система

Pueue

Утилита Pueue — интересная вещь для выполнения длинных задач и, конечно же, для работы с очередью задач, созданной в системе. Это необходимо тем, кому для таких случаев вполне очевидны jobs / fg / bg / screen / tmux почему-то не хватает.

Демо из репозитория

Де­мо из репози­тория

Как пишет разработчик проекта Pueue нужен, когда задачи очень длинные либо их нужно выполнять в параллельном режиме, имея полный контроль над ними. Лично мне она показалась более дружелюбной, чем штатный bg/fg.

Еще одна попытка создать удобный инструмент cron — это Crongo. Она также выполняет ту же работу, что и Pueue, но в некоторых отношениях ее можно считать альтернативой.

NQ

Nq – это еще одна простая утилита, которая может запускать очереди из заданий в системе. . Не то чтобы без нее невозможно было жить, но иногда это очень помогает. На вид она более невзрачная по сравнению с Pueue, но зато с ним гораздо проще.
Это настолько просто, что вам просто нужно увидеть пример, чтобы использовать его:

% mkdir -p /tmp/downloads
% alias qget='NQDIR=/tmp/downloads nq wget'
% alias qwait='NQDIR=/tmp/downloads fq -q'
window1% qget http://mymirror/big1.iso
window2% qget http://mymirror/big2.iso
window3% qget http://mymirror/big3.iso
% qwait

… wait for all downloads to finish …

Vizex

Если вы работали в терминале больше недели, то наверняка знаете, что такое df и его сухой вывод. Vizex и vizexdf – это обновления df, которые делают свою работу гораздо четче и приятнее для глаз.

Как выглядит vizex

Как выг­лядит vizex

bashtop

Если вам приходится думать об хакерах или программистах, то вы представляете себе огромные сводные таблицы с системной информации и диаграммами, но вы пока этим не пользуетесь? Без проблем! Bashtop Capture — это как раз такая приборная панель. При наличии бесплатного монитора, вы можете увеличить свой уровень в глазах посетителей.

Работает!Утилиты для работы с коман­дной стро­кой Linux

Ра­бота­ет

Помимо общей информации о каждом процессе Bashtop может отображать и подробную информацию о каждом процессе. Благодаря этому, он может быть настроен на сортировку этих процессов по различным параметрам и легко настраивается.
В качестве примера можно привести bpytop, который является реализацией Python этой утилиты. Не уступает в возможностях, но выглядит более эффектно.

Rhit

Очень интересная консольная утилита, которая позволяет анализировать логи nginx. Знакомьтесь, Rhit: Это, конечно, не GoAccess, но тоже звучит интересно.
Также он может создавать диаграммы частот запроса, которые можно увидеть в консоли.

Скрины стырены с сайта программы. Утилиты для работы с коман­дной стро­кой Linux

Скри­ны с сай­та прог­раммы

Есть ана­лиз трен­дов в зап­росах и удоб­ный гра­фичес­кий вывод это­го в кон­соль.

Утилиты для работы с коман­дной стро­кой Linux

Ко­неч­но же, все мож­но филь­тро­вать, что­бы отсле­живать толь­ко необ­ходимое.

Lnav

Lnav — это анализатор логов, который умеет работать не только с nginx, в отличи от Rhit. Это список его достоинств:

  • можно переместить все необходимые журналы на один экран. Вы можете настроить мониторинг логов нескольких сервисов одновременно, и он будет показывать все сразу;
  • может выделять текст в зависимости от формата. Имеется десять встроенных форматов, в том числе «общий», который подходит практически для любого журнала;
  • Автозамена задает сжатые логи в формате gzip и bzip2 и разжимает их на лету;
  • умеет фильтровать по регулярным выражениям. Если вы просматриваете большое количество журналов одновременно, вы можете отфильтровать ненужные;
  • мо­жет стро­ить гис­тограм­мы сооб­щений по вре­мени;
  • кра­сиво выводит XML и JSON. Прос­то наж­ми Shift+P;
  • журналы доступны в виде виртуальной базы данных SQLite, которая обновляется журналами в реальном времени;
  • lnav под­держи­вает раз­ные темы офор­мле­ния сво­его интерфей­са;
  • при вво­де команд так­же есть под­свет­ка син­такси­са и авто­допол­нение.

lnav разбирает логи sshd   Утилиты для работы с коман­дной стро­кой Linux

lnav раз­бира­ет логи sshd

Там же на сайте можно найти готовые бинарники для Linux или macOS: видимо, для того, чтобы вы могли работать если у вас на сервере старый MacBook.

Butterfly Backup

А еще есть такая интересная оболочка вокруг  rsync., как Butterfly Backup, которая позволяет создавать и восстанавливать резервные копии данных. Этот список навыков просто впечатляет:

  • под­дер­жка тихого бэкапа;
  • все бэкапы акку­рат­но рас­сорти­рова­ны;
  • прос­мотр све­дений о кон­крет­ном бэкапе;
  • под­дер­жка раз­ных режимов копиро­вания;
  • мож­но бэкапить сра­зу нес­коль­ко ком­пов, при­чем парал­лель­но;мож­но вос­ста­нав­ливать копию даже не на том компь­юте­ре, где она была соз­дана. Теоре­тичес­ки, это может быть полез­но при миг­рации на новое обо­рудо­вание. Более того, мож­но вос­ста­новить бэкап даже на дру­гой опе­раци­онной сис­теме;
  • под­держи­вают­ся полити­ки отно­ситель­но ста­рых бэкапов: их мож­но уда­лять по дос­тижении лимита занято­го хра­нили­ща;
  • эк­спорт бэкапов для удоб­ной перевоз­ки сто­рон­ними средс­тва­ми.

Ус­тановить Butterfly Backup мож­но все­го в три коман­ды

git clone https://github.com/MatteoGuadrini/Butterfly-Backup.git

cd Butterfly-Backup
sudo python3 setup.py

При­мер исполь­зования от авто­ра ути­литы:

# Полная копия

bb backup --computer pc1 --destination /nas/mybackup --data User Config --type MacOS --mode Full
 
# Инкрементальная копия
bb backup --computer pc1 --destination /nas/mybackup --data User Config --type MacOS

Ес­ли прос­мотреть спи­сок копий коман­дой bb list --catalog /nas/mybackup, то мож­но уви­деть крат­кое опи­сание каж­дого сня­того бэкапа

BUTTERFLY BACKUP CATALOG

Backup id: f65e5afe-9734-11e8-b0bb-005056a664e0
Hostname or ip: pc1
Timestamp: 2018-08-03 17:50:36

Backup id: 4f2b5f6e-9939-11e8-9ab6-005056a664e0
Hostname or ip: pc1
Timestamp: 2018-08-06 07:26:46

Backup id: cc6e2744-9944-11e8-b82a-005056a664e0
Hostname or ip: pc1
Timestamp: 2018-08-06 08:49:00

Тут отсутс­тву­ют некото­рые важ­ные детали, так что давай пос­мотрим на один из них поб­лиже.

bb list --catalog /nas/mybackup --backup-id f65e5afe-9734-11e8-b0bb-005056a664e0

Backup id: f65e5afe-9734-11e8-b0bb-005056a664e0
Hostname or ip: pc1
Type: Full
Timestamp: 2018-08-03 17:50:36
Start: 2018-08-03 17:50:36
Finish: 2018-08-03 18:02:32
OS: MacOS
ExitCode: 0
Path: /nas/mybackup/pc1/2018_08_03__17_50
List: etc
Users

И наконец, вос­ста­нов­ление:

bb restore --computer pc1 --catalog /nas/mybackup --backup-id f65e5afe-9734-11e8-b0bb-005056a664e0

 

Скрипты

Bash Bible

Если вы являетесь новичком или продвинутым пользователем консоли — то вам будет доступен сервис Bash (и его родственник sh bible): есть примеры реализации различных заданий в скриптах, написанных исключительно с использованием Bash (или sh).

Что­бы далеко не ходить — вот тебе пароч­ка при­меров обхо­да всех фай­лов и папок в дирек­тории на чис­том Bash без исполь­зования ls.

# Greedy example.
for file in *; do
printf '%s\n' "$file"
done
 
# PNG files in dir.
for file in ~/Pictures/*.png; do
printf '%s\n' "$file"
done
 
# Iterate over directories.
for dir in ~/Downloads/*/; do
printf '%s\n' "$dir"
done
 
# Brace Expansion.
for file in /path/to/parentdir/{file1,file2,subdir/file3}; do
printf '%s\n' "$file"
done
 
# Iterate recursively.
shopt -s globstar
for file in ~/Pictures/**/*; do
printf '%s\n' "$file"
done
shopt -u globstar

Бы­ло бы неп­равиль­но не упо­мянуть свя­щен­ный zsh с пла­гином oh-my-zsh и кас­томны­ми темами. Ничего удоб­нее для тер­минала так и не при­дума­ли/

Полезные однострочники

Очень интересный и полезный ресурс с разными однос­троч­никами – это библиотека команд на все случаи жизни.

Вот, нап­ример, как смон­тировать NTFS раз­дел из вир­туаль­ного дис­ка VirtualBox (VDI):

$ mount -t ntfs-3g -o ro,loop,uid=user,gid=group,umask=0007,fmask=0117,offset=0x$(hd -n 1000000 IMAGE.vdi | grep "eb 52 90 4e 54 46 53" | cut -c 1-8) IMAGE.vdi /mnt/vdi-ntfs

Conty

А если ты работаешь  в терминале, то тебе часто нужны излиро­ван­ные песочниц. Некоторые используют Docker, создавая контейнер операционной системе и копируя программные файлы туда-сюда; другие же создают и работают в изолированной среде. Оба метода требуют от пользователя больших усилий и рута, поэтому пользоваться ими не очень удобно.

Инструмент Conty позволяет быстро и легко запустить песочницу. Для запуска контейнера не требуется root, и файлы сохраняются после выхода из песочницы.

Пре­иму­ществ мож­но выделить нес­коль­ко:

  • все­го один исполня­емый файл. Никакой обвязки — ска­чал и работа­ешь;
  • соб­ран на базе Arch Linux, то есть сра­зу содер­жит акту­аль­ные вер­сии драй­веров;
  • не тре­бует root-прав для запус­ка;
  • со­дер­жит Vulkan и OpenGL, то есть под­ходит для игр;
  • ра­бота­ет без овер­хеда — это тебе не вир­туаль­ная машина;
  • изо­лиру­ет ФС хос­та, но обес­печива­ет удоб­ное вза­имо­дей­ствие песоч­ницы с хос­том.

Для работы необ­ходимо все­го ничего: tar, fuse2, coreutils и bash.

При­мер запус­ка от авто­ра:

./conty.sh steam
./conty.sh lutris
./conty.sh playonlinux
./conty.sh wine app.exe

 

Сеть

SX Network Scanner

По завере­ниям раз­работ­чиков, SX Scanner — это чуть ли не на голову луч­шая аль­тер­натива Nmap. Вот спи­сок пред­лага­емых фич:

  • в 30 раз быс­трее Nmap;
  • ARP-ска­ниро­вание для поис­ка живых хос­тов в локаль­ных сетях;
  • ICMP-ска­ниро­вание для детек­та пра­вил фай­рво­ла;
  • клас­сичес­кое TCP SYN ска­ниро­вание (ска­ниро­вание с помощью полу­откры­тых соеди­нений) для поис­ка пор­тов;
  • ска­ниро­вание для обхо­да некото­рых фай­рво­лов с исполь­зовани­ем TCP FIN, NULL и Xmas пакетов. То же самое уме­ет и Nmap, как ты пом­нишь;
  • мож­но вруч­ную уста­новить какие угод­но фла­ги в пакетах ска­ниро­вания, а в отче­те получить фла­ги отве­тов. Доволь­но инте­рес­ная фича, которую я боль­ше ниг­де не встре­чал, но и ни разу в ней не нуж­дался, если чес­тно;
  • по­иск даже UDP-пор­тов. Надеж­ность поис­ка, само собой, оставля­ет желать луч­шего, но исполь­зование ICMP для уточ­нения резуль­тата — однознач­ный плюс;
  • ска­ниро­вание некото­рых при­ложе­ний: сюда вхо­дит Docker, Elasticsearch и Socks5. Для Docker ищет­ся откры­тый Docker API, через который чита­ется информа­ция о ноде; для Elasticsearch выг­ружа­ется информа­ция о клас­тере и его индексах. С Socks5 все сов­сем прос­то — sx сооб­щает толь­ко факт работы Socks5 без каких‑либо под­робнос­тей;
  • ре­зуль­таты выводит в JSON — все как у людей! Конеч­но, и для авто­мати­чес­кой обра­бот­ки это куда удоб­нее.

Sx работает с терминала (как и большинство рассмотренных сегодня программ) и полностью написан на Go, что объясняет, как это работает.

Утилиты для работы с коман­дной стро­кой Linux

Gping

Еще один кра­сивый инс­тру­мент в твою копил­ку «псев­догра­фичес­ких свис­топер­делок» — ping с визу­али­заци­ей пря­мо в окне тер­минала.

Демо из репозитория   Утилиты для работы с коман­дной стро­кой Linux

Де­мо из репози­тория

grepcidr — анализ IP-адресов

Утилита для тех, кто устал писать регулярки для поиска IP-адресов с помощью grep. Он работает немного быстрее, чем grep, но вам действительно придется много работать с IP-адресами, чтобы иметь отдельную утилиту.

sish

Когда вам нужно перенаправить какой-либо сервис в Интернете, не имея честного «белого» IP, вы можете использовать такие сервисы, как Ngrok или Serveo. В общем, альтернатив не так много: простой SSH или самостоятельные решения для самостоятельного размещения.

Туннелирование через SSH

Вы, конечно, знаете о возможности проброса портов через SSH. А как насчет полноценного VPN? На Хабре и на Robotmoon есть отличный материал по этой теме, если вы знаете английский. Однако текст сдобрен картинками со схемами команд, и вы можете безболезненно запустить все примеры дома и опробовать их в действии.

К таким самоделкам можно отнести и sish — красивую и удобную альтернативу Ngrok, построенную на обычном SSH.

Sish — это не просто набор скриптов для запуска SSH-пересылки. Это полноценная реализация SSH-сервера, который знает только пересылку, но делает это намного лучше, чем официально распространяемая версия. В частности, sish может прослушивать и мультиплексировать HTTP и HTTPS-трафик с поддержкой WebSocket (включая зашифрованный), если вы укажете удаленный порт 80 или 443 при запуске пересылки. В противном случае TCP-порт будет перенаправлен, если он не занят на сервере.

Офи­циаль­ная инс­трук­ция по уста­нов­ке сос­тоит все­го из двух команд:

docker pull antoniomika/sish:latest

docker run -itd --name sish \
-v ~/sish/ssl:/ssl \
-v ~/sish/keys:/keys \
-v ~/sish/pubkeys:/pubkeys \
--net=host antoniomika/sish:latest \
--ssh-address=:22 \
--http-address=:80 \
--https-address=:443 \
--https=true \
--https-certificate-directory=/ssl \
--authentication-keys-directory=/pubkeys \
--private-key-location=/keys/ssh_key \
--bind-random-ports=false

После этого вы можете просто перенаправить порты как через обычный SSH. Но это можно было сделать и так, но лучше посмотреть, что произойдет, если вы сделаете некоторые настройки в соответствии с инструкциями в репозитории:

ssh -R xakep_ru:80:localhost:8080 your_domain.com

Оп — и http://xakep_ru.your_domain.com будет проз­рачно перенап­равлен на твой локаль­ный порт 8080! Само собой, одновре­мен­но может жить сколь­ко угод­но сес­сий.

Termshark

Termshark — это консольный интерфейс для tshark. Может, например, читать pcap или захватывать трафик в реальном времени, как «взрослый» Wireshark.

Демо из репозитория  Утилиты для работы с коман­дной стро­кой Linux

Де­мо из репози­тория

Есть поддержка фильтров, можно автоматически собирать TCP-потоки из отдельных пакетов, просматривать содержимое пакетов в соответствии с протоколом.

Termshark написан на Go и собран для любой платформы — готовые версии уже доступны для Linux, Windows, BSD, Android (поверх Termux) и даже для macOS!

Скрипты для SSH

Для SSH мы соб­рали сра­зу нес­коль­ко полез­ных, да и прос­то инте­рес­ных инс­тру­мен­тов.

Для начала — уве­дом­ления в Telegram при SSH-авто­риза­ции. 

Установка проста как два рубля: загрузите скрипт в /usr/local/bin/ssh2tg.sh (или любую другую подходящую папку), измените настройки в скрипте (токен API бота и ID чата на Отправка уведомлений), установите его атрибут выполнения и напишите следующую строку в конце /etc/pam.d/sshd:

session optional pam_exec.so type=open_session seteuid /usr/local/bin/ssh2tg.sh

Второе — покажем вам небольшой агент SSH Attack Stats, который показывает оперативную сводку атак на ваш сервер.

Скрин взят из репозитория с программой

Скрин из репози­тория с прог­раммой

После установки вы можете немного настроить вывод. Например, следующая команда покажет не более пяти записей из журналов SSH:

/usr/local/bin/log-stats ssh -c 5

Все пояс­нения есть в репози­тории с прог­раммой.

asroute

Если вы инженер какого-то оператора связи, вам придется регулярно возиться с большими трассировками, пингами и роутерами. Для вас они написали asroute, утилиту, которая позволяет вам добавлять информацию о ASN транзитных маршрутизаторов к выходным данным traceroute. Например, это выглядит так:

$traceroute -a www.bhutan.gov.bt | asroute
traceroute to bhutan.gov.bt (202.144.128.217), 64 hops max, 52 byte packets
-> AS0 (Reserved)
-> *
-> BRESNAN-33588, US
-> LIGHTOWER, US
-> BRESNAN-33588, US
-> CHARTER-20115, US
-> TELIANET Telia Carrier, EU
-> *
-> NTT-COMMUNICATIONS-2914, US
-> DRUKNET-AS DrukNet ISP, BT
-> BTTELECOM-AS-AP Bhutan Telecom Ltd, BT

Ус­танов­ка пока дос­тупна толь­ко для macOS, но зато дела­ется одной коман­дой.

$ brew install asroute

Asroute написан на Rust, поэтому теоретически его можно без проблем скомпилировать для любой другой платформы, но на момент написания этой статьи у меня с собой был только один компьютер с Windows, который испытывал трудности с компиляцией нетрадиционного кода.

Outrun

Изюминкой программы является сценарий outrun, который позволяет легко переносить вычисления за пределы слабого тонкого клиента на мощный удаленный сервер, а наличие необходимой утилиты на удаленном хосте вовсе не обязательно. Единственное, что нужно для работы, — это установить outrun на обоих хостах (как локальном, так и удаленном) и с присутствующими правами root (используется chroot).

Демо от авторов программы

Де­мо от авто­ров прог­раммы

В качестве наиболее очевидного примера (даже приведенного авторами outrun) вы можете запустить локальный видео конвертер, такой как FFmpeg, используя ресурсы сервера. GIF показывает очень существенную разницу во времени выполнения.

Ус­тановить мож­но пря­мо из pip

pip3 install outrun

По­том мож­но запус­тить тре­буемую коман­ду на уда­лен­ной машине:

outrun srv4.local neofetch

Фай­ловая сис­тема будет дос­тупна, буд­то локаль­ная, и резуль­таты работы коман­ды (если есть) тоже будут записа­ны в текущую пап­ку на локаль­ном ком­пе.

 

Веб

Webify — трансляция вывода консоли

С помощью Webify вы можете переводить вывод практически любой команды, например веб-службы. Хорошее решение для простого совместного использования консоли: вы запускаете Webify со своей службой, а другой человек обнаруживает браузер (или curl) и взаимодействует с вашим приложением.

Официальное демо работы Webify

Офи­циаль­ное демо  Webify

tmpmail

Этот скрипт- отличный способ получить временный почтовый ящик прямо из терминала. Если вы интеесуетесь ИБ — мне, очевидно, не нужно объяснять, что это такое и зачем он вам нужен, так что приступим сразу к установке.

$ sudo dnf install jq curl w3m

$ wget https://raw.githubusercontent.com/sdushantha/tmpmail/master/tmpmail
$ chmod +x tmpmail

Ге­нери­руем ящик:

$ ./tmpmail --generate

qpasixkauet@1secmail.net

Про­веря­ем поч­ту:

./tmpmail --recent

ZeroSSL

Вы тоже думали, что бесплатные SSL-сертификаты можно получить только в Let’s Encrypt?. Ребята из ZeroSSL представили альтернативный сервис, где вы можете получить те же сертификаты в течение тех же 90 дней. Вы можете использовать старый добрый ACME. Если я по каким-то причинам искал замену старичке Let’s Encrypt — вот она.

Процедура выпуска довольно проста: просто введите свой адрес электронной почты и пароль и подтвердите право собственности на домен через DNS или загрузив указанный файл. Через несколько минут сайт сгенерирует ваш сертификат и предложит его скачать, а что делать дальше — не мне вас учить

TestTLS

testtls.com — это оче­ред­ной сер­вис для про­вер­ки SSL/TLS, ана­лог SSLLabs.

Результат проверки xakep.ru

Ре­зуль­тат про­вер­ки

С его помощью мож­но лег­ко про­верить, пра­виль­но ли нас­тро­ен HTTPS на тво­ем (или чужом) сай­те.

Полезные сайты и сервисы

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

Public API

Public API — сайт, на котором соб­рана информа­ция о пуб­личных интерфей­сах самых раз­ных сер­висов и ссыл­ки на докумен­тацию. Может при­годить­ся в самых раз­ных слу­чаях — от мар­кетин­га до OSINT.

GitExplorer

GitExplorer — хорошая инте­рак­тивная шпар­галка по Git.

Пример

При­мер

Grep.app

Теперь вы можете связать нужную нам запись на GitHub прямо из браузера. Это полезно, например, для поиска секретов во время тестов на проникновение (или в программе bug bounty) или флагов CTF.

Authenticator

Если вы используете двухфакторную аутентификацию, вам явно будет приятно иметь ключи для ввода под рукой, а не в телефоне, который еще нужно найти. Плагин Authenticator для Chrome, Firefox и Microsoft Edge может генерировать коды для 2FA прямо в браузере. Также делает зашифрованную резервную копию на Google Диск, Dropbox или OneDrive. Поддерживает классические TOTP и HOTP, а также Steam Guard и Blizzard Authenticator, если вы используете эти сайты.

https://st768.s3.eu-central-1.amazonaws.com/10ed2e983961740d12001286d5480f2c/19971/auth.png

Free for Dev

Free for Dev — это набор бесплатных сервисов, которые могут быть полезны разработчикам. Конечно, не все бесплатные, но везде есть период бесплатного использования или лимит, которого почти всегда более чем достаточно для личного использования или тестирования.

Заключение

Конечно, вы можете сказать, что легко отказаться от всего этого и автоматизировать рутинные задачи с помощью сценариев, которые вы написали сами. Но зачем, когда есть готовые инструменты для отладки, которые бесплатно улучшают вашу работу и экономят время и нервы? Хакер — это хакер, потому что он может делать свою работу лучше других.

 

 

 

 

 

 

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

Leave a reply:

Your email address will not be published.