LINUX.ORG.RU
ФорумAdmin

Сделал из ssh «прокси» для ssh. Насколько это плохая идея?

 , ,


0

2

Привет всем!

Есть, кучка контейнеров. Они создаются, они удаляются, ip у них жёстко не заданы. Для доступа к ним с хоста используется имя_контейнера.lxc. Настроено вот так.
Теперь появилась надобность ходить в них по ssh снаружи. Сделал это вот так:

Match Group proxyusers
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand ssh -o 'StrictHostKeyChecking no' $USER.lxc $SSH_ORIGINAL_COMMAND

Т.е. в хостовой системе есть специальный прокси-пользователь, который состоит в группе proxyusers. Имя его, как можно догадаться из конфига, совпадает с именем контейнера и пользователя внутри этого контейнера. Я подумал, что это будет более удобным, чем пробрасывать порты и указывать их при подключении.
На всякий случай, домашняя директория прокси-пользователя на хостовой системе огорожена от него самого:
# ls -la /home/proxyuser/
total 24
drwxr-xr-x 3 root      root      4096 Nov 17 11:26 .
drwxr-xr-x 9 root      root      4096 Nov 18 22:48 ..
-rw-r--r-- 1 root      root       220 Sep  1  2015 .bash_logout
-rw-r--r-- 1 root      root      3771 Sep  1  2015 .bashrc
-rw-r--r-- 1 root      root       655 Jun 24 18:44 .profile
drwx------ 2 proxyuser proxyuser 4096 Nov 17 11:29 .ssh

Аутентификация хостового прокси-пользователя внутри контейнера происходит по ключу. Контейнеры непривилегированные, для каждого задается своё отображение id-шников (у всех разное стартовое число):
lxc.id_map = g 0 2148794368 65536
lxc.id_map = u 0 2148794368 65536


Вопрос, уважаемые знатоки. На какие грабли с т.з. безопасности я могу встать при таких настройках? Какие вообще возможны косяки?

★★★★★

Много букв не читал, но чем это лучше традиционного:

~/.ssh/config

Host aurora
Hostname aurora.example.tld
User lsh

Host orange
ProxyCommand ssh -q aurora nc -q0 orange.lxc 22


Ну и потом: ssh orange

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Много букв не читал, но чем это лучше традиционного

Эм... Ну я как-то не знал про это традиционное. =)
Читал ман, нашёл там ForceCommand и навелосипедил.
Ммм... И оно работает! Может и нет смысла переделывать на традиционное?

ls-h ★★★★★
() автор топика
Ответ на: комментарий от Deleted

как отработает?

Похоже, что это происходит внутри контейнера. Получается «Failed to open /dev/initctl: Permission denied». Ну, пользователь внутри контейнера не root, это было ожидаемо. Но я понял мысль. Нужно передать какую-то такую команду при подключении, чтобы переменная $SSH_ORIGINAL_COMMAND получила такое значение, которое заставить sh -c (собственно, так, через шел, ForceCommand и запускает команду) выполнить команду после подключения к контейнеру. Т.е., чтобы получилось вроде этого:
sh -с ssh -o 'StrictHostKeyChecking no' contname.lxc command_inside_container; command_inside_host
Пробовал передавать всевозможные комбинации ;&&||\«»". Пока так не получилось.

ls-h ★★★★★
() автор топика

Теперь появилась надобность ходить в них по ssh снаружи.

VPN и прямой роутинг, а вышеописанное больше похоже на костыли.
Более того, для огранизации SSH-VPN даже не требуется ничего доустанавливать:
https://github.com/danfruehauf/NetworkManager-ssh#behind-the-scenes---how-doe...

ArcFi
()
Ответ на: комментарий от ArcFi

Более того, для огранизации SSH-VPN даже не требуется ничего доустанавливать:

Хорошее решение, спасибо. Но не совсем подходит, т.к. коннектится будут разные люди с разных машин, в т.ч. с оффтопика. Поэтому да, костыли.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

~/.ssh/config

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

ls-h ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.