Chroot debian сжимает доступ к оболочке

Пользователь требует доступа оболочки к серверу Ubuntu со стороны WAN. Существует множество учетных записей с простыми паролями. Поэтому в брандмауэре заблокирован порт (порт 22). Для моего стороннего пользователя WAN я планирую запустить ssh-сервер в chroot Debian и открыть его порт в брандмауэре. Если такая настройка возможна, каков наилучший способ ее достижения?

Одиночный сервер ssh

Если единственная причина, по которой вы планируете запускать SSH-сервер в chroot, – это ограничить аутентификацию паролей для некоторых пользователей, вам это не нужно: вы можете сообщить sshd, чтобы разрешать пароли только для белого списка пользователей. В /etc/ssh/sshd_config используйте директиву Match :

 PasswordAuthentication No Match User trusted_user_1,trusted_user_2 PasswordAuthentication yes 

Если вы хотите chroot некоторых пользователей, вы все равно можете запустить один демон ssh и использовать директиву ChrootDirectory в sshd_config (в рамках директивы Match ).

Два ssh-сервера, прослушивающие разные адреса

У вас может быть два демона ssh, прослушивающих один и тот же порт, если они прослушивают разные адреса. Поместите директиву ListenAddress в каждый /etc/ssh/sshd_config , каждый с IP-адресом (ами), который вы хотите, чтобы сервер прослушивал (слушать, а не слушать, то есть это адреса сетевых интерфейсов вашего сервера). Это имеет ограниченную применимость, только если ваш серверный компьютер является узлом, выполняющим фильтрацию LAN / WAN. Это также означает, что такие вещи, как ssh localhost , не будут прозрачными (вы можете получить доступ к демону, который не прослушивает localhost с помощью ssh -b ).

Два ssh-сервера, прослушивающие разные порты

Вы можете сделать демон ssh в chroot слушать на другом порту, с директивой Port в /etc/ssh/sshd_config . Храните блокирующий порт 22 снаружи на вашем брандмауэре и не блокируйте другой порт, который вы выбрали для chroot sshd.

Два сервера ssh, маршрутизация, выполняемая брандмауэром

Если у вас есть два демона, которые прослушивают разные порты (как указано выше), вы все же можете представить иллюзию, что оба они прослушивают порт 22. Например, запустите chrooted ssh daemon на порт 2201 и перенаправляйте трафик, поступающий на порт 22 на eth1 к порту 2201:

 iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 22 -j REDIRECT --to-ports 2201 

Затем ssh-соединения с localhost или над eth0 на порт 22 достигнут не-chrooted-сервера, тогда как ssh-соединения через eth1-port 22 достигнут chrooted-сервера. Соединения на порту 2201 достигнут chrooted-сервера. Например, вы можете использовать другие критерии, чем -i eth ! -s 10.1.0.0/16 ! -s 127.0.0.0/8 ! -s 10.1.0.0/16 ! -s 127.0.0.0/8 ! -s 10.1.0.0/16 ! -s 127.0.0.0/8 чтобы соответствовать всем исходным адресам, отличным от 10.1.xy или loopback.