Как настроить ограниченный SFTP-сервер в Ubuntu?

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

4 ответа

Решение

Лучший ресурс, который поможет вам начать настройку службы ssh на хост-компьютере с использованием Ubuntu, - это OpenSSH Server. Это позволит вам использовать SSH File Transfer Protocol (также Secure File Transfer Protocol или SFTP) для доступа, передачи и управления файлами по SSH с клиентского компьютера.

Обзор решения

  • В Ubuntu вы можете настроить OpenSSH server на хост-машине, и пользователь может затем использовать ssh подключаться от клиента к серверу хоста, используя только имя пользователя и пароль. Обратите внимание, однако, что рекомендуется аутентификация с открытым ключом,

"Убедитесь, что у вас есть надежный пароль перед установкой SSH-сервера (вы можете вообще отключить пароли)"

  • Учетные записи администраторов, созданные на хосте, будут иметь права sudo, а учетные записи стандартных пользователей, созданные на хосте, - нет.

Установите и настройте сервер OpenSSH на хосте

Чтобы установить сервер OpenSSH на хосте:

sudo apt-get install openssh-server

Дайте вашему хосту статический IP-адрес, чтобы вы могли надежно подключиться к нему:

nm-connection-editor

Чтобы настроить сервер OpenSSH, "сначала сделайте резервную копию файла sshd_config, скопировав его в домашний каталог или сделав копию только для чтения в /etc/ssh, выполнив:"

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
sudo chmod a-w /etc/ssh/sshd_config.factory-defaults

"Как только вы сделали резервную копию sshd_config файл, вы можете внести изменения в любом текстовом редакторе, например: "

sudo -H gedit /etc/ssh/sshd_config

Чтобы изменения вступили в силу, необходимо перезапустить службу ssh на хосте.

sudo service ssh restart

Рассмотрим следующие меры безопасности

  • Не включайте переадресацию портов на вашем маршрутизаторе: когда посторонний просит ваш маршрутизатор подключить постороннего к порту 22 и т. Д., Ваш маршрутизатор не будет соответствовать, если вы не включили переадресацию портов
  • Отключить root-логин: закомментировать PermitRootLogin without-password; добавлять PermitRootLogin no на хост /etc/ssh/sshd_config
  • Выберите нестандартный порт SSH: закомментируйте Port 22; добавлять Port <new-port-number> на хост /etc/ssh/sshd_config
  • Разрешить только локальные подключения: Добавить ListenAddress 192.168.0.10
  • Разрешить определенным пользователям на определенных портах: Добавить AllowUsers <username>@<IP_address_1> <username>@<IP_address_2> или же AllowUsers <username>@111.222.333.* на хост /etc/ssh/sshd_config
  • Разрешить только RSA-ключ (без пароля): Добавить содержимое ~/.ssh/id_rsa.pub от каждого клиента в качестве новой линии хостов ~/.ssh/authorized_keys, Затем добавьте PasswordAuthentication no к хозяину /etc/ssh/sshd_config
  • Медленные попытки взлома злоумышленников: используйте ufw (несложный межсетевой экран) на хосте, чтобы ограничить количество входящих соединений до 10 в минуту: sudo apt-get install ufw && sudo ufw limit OpenSSH
  • Дополнительные идеи см. В разделе Обеспечение безопасности доступа SSH.

Если вы чувствуете, что должны, включите PasswordAuthentication в вашем sshd_config файл

Найдите строку с фразой PasswordAuthentication и заставьте это читать:

PasswordAuthentication yes

Сохранить свой новый sshd_config файл, а затем перезапустите хост ssh оказание услуг:

sudo service ssh restart

Если вам нужен доступ из любой точки мира через Интернет, настройте переадресацию портов на локальном маршрутизаторе для направления трафика на ваш сервер OpenSSH

Обратите внимание на порт хоста ssh Служба слушает в sshd_config файл и настройте маршрутизатор для пересылки трафика TCP/UDP, направленного на этот порт, на IP-адрес вашего сервера OpenSSH.

Подключитесь к хосту и войдите через командную строку или терминал

  • Чтобы открыть терминал оболочки SFTP как <username> на хосте откройте терминал на клиенте и введите следующую команду, заменив 123.123.1.23 с IP-адресом хоста:

    sftp <username>@123.123.1.23
    
    • Если вы изменили номер порта, который прослушивает сервер OpenSSH хоста, выполните:

      sftp -P <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      
  • Чтобы открыть терминал оболочки SSH как <username> на хосте откройте терминал на клиенте и введите следующую команду, заменив 123.123.1.23 с IP-адресом хоста:

    ssh <username>@123.123.1.23
    
    • Если вы изменили номер порта, который прослушивает сервер OpenSSH хоста, выполните:

      ssh -p <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      

Подключитесь к хосту и войдите в систему через файловый менеджер с графическим интерфейсом (например, Nautilus) для более наглядного доступа к SFTP для передачи файлов

  1. Откройте Nautilus на клиенте
  2. Выберите "Файл"> "Подключиться к серверу".
  3. Тип: SSH
  4. Сервер: введите IP-адрес хоста
  5. Порт: номер порта, указанный в Хостах sshd_config файл
  6. Имя пользователя: имя пользователя
  7. Пароль: пароль

введите описание изображения здесь

В 14.04:

  1. Откройте Nautilus на клиенте
  2. Подключиться к серверу
  3. Введите: `ssh @123.123.1.23:

Создание стандартных учетных записей пользователей на узле с ограниченными правами доступа к файлам за пределами их домашней папки

Надлежащие права доступа к файлам на хосте гарантируют, что каждый стандартный пользователь (без привилегий sudo), который вы создаете на хосте, будет владельцем своих /home/new_user каталог, но имеют ограниченные разрешения с остальной частью структуры каталога.

  • Ограниченные разрешения не обязательно означают, что они не могут просматривать имена файлов и структуру каталогов.

Надеюсь, это полезно!

Шаг 1: Установите пакет OpenSSH, если не установлен

sudo apt-get install openssh-server

Шаг 2: Создайте отдельную группу для пользователей SFTP.

sudo addgroup ftpaccess

Шаг 3: Редактировать /etc/ssh/sshd_config файл и внесите изменения, как показано ниже. Найдите и прокомментируйте ниже строки.

#Subsystem sftp /usr/lib/openssh/sftp-server

и добавьте эти строки в конец файла.

Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Шаг 4: Перезапустите службу sshd.

sudo service ssh restart

Шаг 5: Добавьте пользователя с группой ftpaccess и создайте пароль.

sudo adduser paul --ingroup ftpaccess --shell /usr/sbin/nologin

Шаг 6: Изменить разрешение домашнего каталога.

sudo chown root:root /home/paul

Шаг 7: Создайте каталог внутри дома для загрузки и измените разрешение с группой.

sudo mkdir /home/paul/www
sudo chown paul:ftpaccess /home/paul/www

Вот и все.

См.: Настройка SFTP на Ubuntu.

Ограничить доступ к пользователю

Здесь мы только позволим пользователю выполнять передачу файлов и отключим доступ к терминалу.

Для этого добавьте следующие коды внизу файла конфигурации.

$ sudo nano /etc/ssh/sshd_config

Теперь файл откроется и вставьте код.

/etc/ssh/sshd_config

. . .

Match User filemg

ForceCommand internal-sftp

PasswordAuthentication yes

ChrootDirectory /var/sftp

PermitTunnel no

AllowAgentForwarding no

AllowTcpForwarding no

X11Forwarding no

замещать filemg с вашим именем пользователя. Затем сохраните и закройте файл.

Вот и все.

Ссылка: Как использовать SFTP в Ubuntu 16.04

Denyhosts - это еще один инструмент, помимо упомянутого jtd, на который вы, возможно, захотите взглянуть. Он может автоматически блокировать повторные попытки подключения к вашему SSH-серверу. Доступно для установки в репозитории Ubuntu.

Другие вопросы по тегам