rxd_txd
301 subscribers
505 photos
31 videos
22 files
2.79K links
Download Telegram
Forwarded from Bash Days | Linux | DevOps (Роман Шубин)
Ты - самый счастливый человек на планете!

Почему? Потому, что сейчас узнаешь про ONLY.

Частенько возникала необходимость разрешить пользователю запускать только определенные команды по ssh. То есть явно указать ему белый список таких команд.

Городили мы конечно знатные велосипеды с помощью костылей, rbash, симлинков, chroot и т.п.

Кстати про chroot писал в этом посте, почитай на досуге, мож где применишь.


Все эти костыли были неудобные и какие-то пиздец сложно поддерживаемые. Но решение было найдено и вполне элегантное. Всё уже украдено придумано за нас.

Для затравки: /home/user/.ssh/authorized_keys

command="only rsync ls cat" ssh-rsa AAAAB3Nza


Думаю идею ты понял. Пользователь подключается по ssh и может выполнить только 3 команды rsync, ls, cat.

И тут большой плюс - пользователь не получает интерактивную оболочку, то есть всё сводится к выполнению подобной конструкции:

ssh user@bashdays.ru ls /home/user/


Команда ls находится в белом списке и успешно отработает при подключении по ssh, а дальше сессия завершится.

Нехер ему на сервере делать. Есть список команд, вот пусть ими и довольствуется без интерактива.

✔️ Теперь подробности

ONLY это НЕ какая-то встроенная команда в Linux, это Bash скрипт, который аккуратно лежит в /usr/local/sbin, положить его туда ты должен самостоятельно.

1. Берем only из репы
2. Кидаем его в /usr/local/sbin/only
3. Ставим chmod +x чтобы запускался
4. Делаем пару ключей для работы

ssh-keygen -P "" -f only


P = пустая парольная фраза
f = задаем имя ключа

Содержимое ключа only pub добавляем в authorized_keys нужному пользователю, а private key отдаем, тому кто будет подключаться к серверу.

Да, файл authorized_keys у меня выглядит примерно так:

command="only rsync cat ls", no-agent-forwarding, no-port-forwarding, no-pty, no-user-rc, no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAA


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

Важная штука, потребуется файл с правилами, называется .onlyrules. Забирай тут.

Этот файл нужно также скопировать в папку, того пользователя, которого ограничиваем, например в /home/user/.onlyrules

Правила нужны, чтобы еще сильнее ограничить пользователя на ввод команд, этакие лимиты на регулярках и sed.

\:^ls$:{p;q}
\:^who$:{p;q}


Короче это фильтры на аргументы, ключи и т.п. Можно не заморачиваться и просто обернуть нужные команды между \:^ и $:{p;q}.

Бонусом, в папке пользователя можешь разместить файл .onlyrc и затюнить всякие информационные сообщения. Но автор не рекомендует этого делать и использовать only без этого файла.


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

Лично мне эта штука понравилась, раздал тестировщикам ключики, теперь они сами могут своих вонючих демонов перезапускать, без блуждания по серверу и фраз — да блядь, я что-то нажал и всё сломалось!

Такие дела. Увидимся!

tags: #bash #linux #utils

@ВАSНDАYS | BАSHDАYS.CОM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Код и Капуста
croc

Инструмент для простой и безопасной передачи файлов и папок между любыми двумя компьютерами. Насколько мне известно, это единственная консольная утилита для передачи файлов, которая поддерживает все перечисленные возможности: позволяет передавать данные между любыми устройствами через релей, обеспечивает сквозное шифрование с помощью PAKE, работает на всех основных платформах (Windows, Linux, Mac), поддерживает передачу нескольких файлов одновременно, возобновление прерванных загрузок, не требует настройки локального сервера или проброса портов, использует IPv6 с автоматическим переходом на IPv4 при необходимости, а также может работать через прокси, например Tor.

#golang #utils

https://kodikapusta.ru/news/15l5-croc