Как настроить ограниченный 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.
- Как правило, вы можете указать свой веб-браузер на
192.168.1.1
для того, чтобы войти в свой маршрутизатор и настроить переадресацию портов. См. Настройка сервера и маршрутизатора OpenSSH для приема SSH-соединения через Интернет?
Подключитесь к хосту и войдите через командную строку или терминал
Чтобы открыть терминал оболочки 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 для передачи файлов
- Откройте Nautilus на клиенте
- Выберите "Файл"> "Подключиться к серверу".
- Тип:
SSH
- Сервер: введите IP-адрес хоста
- Порт: номер порта, указанный в Хостах
sshd_config
файл - Имя пользователя: имя пользователя
- Пароль: пароль
В 14.04:
- Откройте Nautilus на клиенте
- Подключиться к серверу
- Введите: `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
с вашим именем пользователя. Затем сохраните и закройте файл.
Вот и все.
Denyhosts - это еще один инструмент, помимо упомянутого jtd, на который вы, возможно, захотите взглянуть. Он может автоматически блокировать повторные попытки подключения к вашему SSH-серверу. Доступно для установки в репозитории Ubuntu.