У нас есть веб-сервер, на котором пользователям разрешено загружать (SFTP) большие файлы в среде chroot. Мы также хотим иметь возможность использовать SSH для управления этим сервером.
В нашей старой ситуации мы использовали системный sshd и среду chroot с отдельным запущенным внутри sshd. Я надеялся, что смогу упростить конфигурацию с помощью «новой» опции ChrootDirectory.
Наш сервер имеет два IP-адреса, один для общего доступа, а другой для внутреннего доступа. Возможно ли, чтобы один sshd прослушивал два отдельных IP-адреса / интерфейса, но обрабатывал их по-разному? Во всей документации, которую я прочитал, кажется, что можно различать только пользователей или группы, но не IP-адреса / интерфейсы.
Если это невозможно, то является ли установка двойного sshd лучшим вариантом, следует ли мне улучшить управление пользователями, чтобы отфильтровать их по группе, или есть более элегантный способ настроить такой сервер?
Вы могли бы использовать Match
в обратном порядке. Chroot по умолчанию, а затем отменяет директиву при подключении из внутренней сети.
ChrootDirectory /chroot/somedir
Match Address 10.0.0.0/24
ChrootDirectory none
Однако вы должны учитывать последствия принятия решений о безопасности в сетях. Включая возможность аутентифицированного пользователя, создающего новый сеанс через loopback, чтобы обойти такие политики. Как правило, было бы безопаснее определить User
и Group
если возможно.
(править: напечатано перед чтением)
В итоге я использовал следующее решение:
Subsystem sftp internal-sftp
ChrootDirectory <my chroot directory>
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Match User <my admin account> Address <my ip>
ChrootDirectory none
X11Forwarding yes
AllowTcpForwarding yes
ForceCommand /bin/bash
Match User <my admin account>
ForceCommand none
Так что это смесь ответов, которые я видел раньше, и я сделал два блока Match, чтобы люди с других IP-адресов, но пытающиеся использовать мою учетную запись администратора, не могли использовать sftp или ssh. Я буду внимательно следить за активностью на сервере, чтобы увидеть, сработает ли это, но внутренние тесты выглядят многообещающими.
Я создал группу под названием sftpuplod. В эту группу входит каждый клиент без ssh-доступа, который может использовать sftp:
# sshd_config:
Subsystem sftp internal-sftp
Match group sftpupload
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Вы также можете использовать ChrootDirectory% h для настоящего chroot в ~
увидеть страница руководства