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

Разрешить SFTP, но запретить SSH?

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

Я хочу дать своим «клиентам» право управлять своими файлами на сервере. Я ненавижу FTP, так как он небезопасен и, на мой взгляд, устарел.

Поэтому я хотел бы разрешить моим пользователям подключаться через SFTP, но не позволять им подключаться через SSH. (Я знаю, я знаю, что SFTP использует SSH). Но мне было интересно, возможно ли это?

Так что мне не пришлось бы устанавливать FTP-сервис на сервер, и все было бы круто!

Начиная с версии 4.9 OpenSSH (недоступно в centos 5.x, но функция ChrootDirectory была перенесена обратно) имеет internal-sftp подсистема:

Subsystem sftp internal-sftp

А затем заблокируйте другое использование:

Match group sftponly
     ChrootDirectory /home/%u
     X11Forwarding no
     AllowTcpForwarding no
     ForceCommand internal-sftp

Добавьте своих пользователей в sftponly группа. Вы должны изменить домашний каталог пользователя на / из-за chroot и /home/user должен принадлежать root. Я бы также установил /bin/false как оболочка пользователя.

Есть ракушка scponly что делает это. Это может chroot слишком.

Checkout rssh - поддельная оболочка, разрешающая sftp, но запрещающая ssh

Подробнее о RSSH

http://www.pizzashack.org/rssh/

RPMs

http://pkgs.repoforge.org/rssh/

Вы можете настроить rssh, чтобы разрешить / запретить различное поведение, такое как sft, scp и т. Д.

Вы можете изменить / etc / passwd и предоставить этому пользователю поддельную оболочку, чтобы он не мог использовать ssh.

Я использую метод указания оболочки пользователя как / bin / false, как уже упоминалось. Однако вы должны убедиться, что / bin / shell находится в / etc / shells. Тогда работает ssh = no ftp = ok.

Я также использую vsftpd и добавляю это
chroot_local_user = YES в /etc/vsftpd/vsftpd.conf, чтобы ftp-пользователи не могли видеть дату, отличную от своей.

Преимущество этих простых изменений - отсутствие раздражающей конфигурации для конфигурации ssh для каждого пользователя.

Не забудь найти линию UsePAM yes и прокомментируйте это:

#UsePAM yes

Если не отключить это, ваш SSH-сервер выйдет из строя при перезагрузке / перезапуске. Поскольку вам не нужны причудливые функции PAM, это нормально.

Настроить ssh для включения только sftp для некоторых выбранных пользователей - хорошая идея, и она работает правильно, при условии, что вы установили либо scponly или rssh.

rssh работает нормально, если вам не нужно настраивать тюрьму, в этом случае пытаться следовать инструкциям, приведенным в руководствах CHROOT, безумие, что приводит к «копированию» больших частей системных исполняемых файлов и библиотеки чуть ниже «каждой пользовательской тюрьмы», включая rssh сама оболочка. Это метод, который тратит много места.

scponly требует глубокого понимания конфигурации, что приводит к постоянной проблеме отказа от входа в систему в случае установки тюрьмы.

Простой способ разрешить функциональные возможности ftp с должным образом работающей тюрьмой, поддержкой SSL / TLS для безопасных транзакций и входа в систему - это использовать «старый, но работающий» VSFTPD, который устанавливается быстро и чисто и предлагает все возможности настройки по мере необходимости и, наконец, но не в последнюю очередь: это работает!

Маурицио.

К сожалению, все ответы вводят в заблуждение: пожалуйста, сделайте следующее:

  1. Сначала создайте пользователя sftp и группу sftp

  2. Создайте отдельный каталог в качестве корневого для файлов SFTP: sudo mkdir -p /home/sftpdir

  3. Имейте протестированный файл sshd_config, который разрешает SSH через порт 22, но также SFTP через случайный порт по соображениям безопасности.
#$OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $
# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

Port 38250 Port 22 PasswordAuthentication no 
ChallengeResponseAuthentication no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'. UsePAM yes X11Forwarding yes PrintMotd no
# Allow client to pass locale environment variables AcceptEnv LANG LC_*
#DenyUsers sftpuser

# override default of no subsystems Subsystem       sftp    internal-sftp 
Match group sftp 
Match User sftpuser 
Match LocalPort 38250 
ForceCommand internal-sftp 
ChrootDirectory /home/sftpdir 
PermitTunnel no 
AllowAgentForwarding no 
X11Forwarding no    
AllowTcpForwarding no
  1. Перезапустите и проверьте статус службы sshd

    sudo service sshd перезапуск

    статус службы sshd

  2. Создайте файл оболочки. Добавить выполнение для вывода уведомляющего сообщения

    sudo touch / bin / sftponly echo -e '#! / bin / sh \ necho "Эта учетная запись ограничена только доступом по SFTP."' | sudo tee -a / bin / sftponly

  3. Предоставьте разрешения на выполнение и добавьте в файл оболочки

    sudo chmod a + x / bin / sftponly echo "/ bin / sftponly" | sudo tee -a / etc / shells

  4. наконец, проверьте, и вы не сможете подключиться.

  5. Шаблон для использования клиента SFTP с ключом SSH и базовой детализацией:

    sftp -v -oPort = $ RANDOM_PORT -i ~ / .ssh / $ SSH_KEY.pem sftpuser @ $ HOST