Я хочу запустить приложение внутри jail
так что разрешенные пользователи могут подключаться только к заключенной в тюрьму среде (приложению) и ни к чему другому на моем ящике.
Но они должны иметь возможность подключаться к тюрьме по сети, а у меня есть только 1 публичный IP-адрес, который используется моим ящиком.
Как сделать тюрьму доступной для других?
В зависимости от того, к какой службе вы хотите, чтобы люди подключались в тюрьме, вы можете либо использовать правила брандмауэра для перенаправления входящего общедоступного трафика с общедоступных портов на соответствующий порт на частном IP-адресе тюрьмы, либо вы можете настроить прокси, который будет выполнять эту работу. для вас - и, кстати, добавит немного защиты вашей тюрьме.
Я делаю это регулярно для тюрем, в которых работают веб-серверы. Тюрьмы находятся на частных IP-адресах, поэтому у них нет доступа к сети. Единственный способ добраться до них - использовать обратный HTTP-прокси, работающий на jailserver. Ты можешь использовать Apache или nginx как обратный прокси, но я предпочитаю "фунт"для простоты. Вы можете найти его в дереве портов по адресу порты / www / фунт /.
Другие сервисы также могут использовать входящие прокси. nginx можно использовать как прокси-сервер IMAP. Это удобно, если вы хотите иметь возможность обновлять IMAP, не отключая его. Просто проксируйте его на вторую тюрьму, обновите первую тюрьму, затем переключите обслуживание на обновленную тюрьму, пока вы можете обновить резервный. Поскольку запуск тюрьмы практически не требует дополнительных ресурсов, чем запуск чего-то изначально на сервере, вы получаете все преимущества виртуализации без снижения производительности.
Если вам нужно, чтобы люди подключались к вашему ящику через SFTP, вам нужно либо использовать нестандартный порт (возможно, с правилом брандмауэра и / или NAT для перенаправления трафика), либо вы можете настроить учетные записи SFTP, чтобы они будет chroot в каталоги тюрьмы, где они должны быть. Это не запускает SFTP-сервер в тюрьма, но результат тот же.
Если вам нужно предоставить оболочку доступа к тюрьме через SSH, то я подозреваю, что у вас есть только два варианта. Во-первых, как и в случае с SFTP, нужно использовать нестандартный порт и правило брандмауэра. Второй, более сложный вариант - использовать на сервере тюрьмы учетную запись оболочки, которая имеет магические переменные в учетной записи. .ssh/authorized_keys
файл. Посмотри на man sshd
в разделе "AUTHORIZED_KEYS FILE FORMAT".
Короче говоря, вы, вероятно, захотите настроить что-то вроде command="command"
для ключей, которые будут подключаться к вам. Обратной стороной является то, что любому, кто подключится, вам нужно будет заранее получить свой открытый ключ. И вашим клиентам, очевидно, потребуется настроить ключи. Но положительным моментом является то, что вы можете создавать учетные записи оболочки на своем узле тюрьмы, которые либо jexec
в тюрьму, или запустите другой ssh, который попадет туда.
Вы можете использовать другой порт для доступа или внутренний IP-адрес, позволяющий людям использовать туннели ssh / vpn.