Назад | Перейти на главную страницу

Как ограничить всех, кроме определенной группы, в SSH?

Я хочу ограничить всех пользователей на сервере, чтобы они могли использовать только SFTP, в то время как члены группы администраторов должны иметь полный доступ SSH.

Я обнаружил, что можно ограничить членов группы, используя Match Group и ForceCommand. Но я не нашел логического отрицания. Поэтому я попытался построить это в обратном порядке:

# SFTP only, full access only for admin group
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Match Group admin
    X11Forwarding yes
    AllowTcpForwarding yes
    ForceCommand /usr/local/sbin/ssh-allowcmd.sh

и построил сценарий ssh-allowcmd.sh который выполняет либо данную команду, либо /bin/bash для интерактивного доступа.

Есть ли лучшее решение?

Если вы используете OpenSSH 5.1 или новее, он поддерживает Отрицание группового матча.

Предполагая, что настройки по умолчанию подходят для группы администраторов, просто измените всех остальных:

Match Group *,!admin
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp

На самом деле нет причин полагаться на сторонние оболочки для выполнения такой работы с недавними выпусками OpenSSH.

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

http://mysecureshell.sourceforge.net/

Вы хотите scponly. ЕСЛИ вы используете Debian / Ubuntu, он находится в репозиториях. После установки вы просто делаете следующее:

$ sudo chsh -s /usr/bin/scponly username

Это также позволяет вам chroot пользователей.

В качестве альтернативы вы можете сделать следующее:

$ usermod -s /usr/lib/sftp-server username
$ echo '/usr/lib/sftp-server' >> /etc/shells

Первая строка ограничивает оболочку пользователя sftp. Вторая строка - сделать sftp-server действующей оболочкой.

Поскольку вы не указали ОС, которую используете, я не могу адаптировать команды к вашим конкретным потребностям.

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

Если это соответствует вашей ситуации, вы, вероятно, обнаружите, что установка OpenVZ со временем пригодится и для других подобных вещей.