Настройка безопасного ftp (sftp)
Настройка SFTP по OpenSSH
SFTP – SSH File Transfer Protocol, SSH-протокол для передачи файлов. Он предназначен для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Вместе с клиентом ssh из пакета openssh ставиться утилита sftp. Её мы и будем настраивать для нашего безопасного ftp. Поэтому если вы уже установили openssh, то ничего больше устанавливать не прийдётся.
Настройка пользователей
Создаем пользователя user1, -m – создать домашнюю директорию пользователя, -s /usr/bin/nologin запрещает пользователю использовать shell.
sudo useradd -m -s /usr/bin/nologin user1
Зададим пароль на пользователя user1
sudo passwd user1
Такой пользователь сможет подключаться только по sftp и будет иметь доступ на чтение из всех поддиректорий /home, но писать сможет только в свою.
Настройка файла /etc/ssh/sshd_config
Закомментируем строку:
#Subsystem sftp /usr/lib/openssh/sftp-server
Добавим строку:
Subsystem sftp internal-sftp
В целях безопасности можно изменить стандартный порт подключения, в строке:
Port 22
на любой другой порт.
Добавим в конец файла, очень важно, именно в конец:
Match User user1 # Применять команды только к указанному пользователю ForceCommand internal-sftp # SSH сервер принудительно запускает SFTP, без доступа к shell. PasswordAuthentication yes # Включает поддержку парольной аутентификации ChrootDirectory /home/ # Блокирует доступ ко всем каталогам, кроме /home/user1 PermitTunnel no # Отключаем туннелирование AllowAgentForwarding no # Отключаем форвардинг AllowTcpForwarding no # Отключаем форвардинг X11Forwarding no # Отключаем X11
Перезапустим SSH-сервер:
sudo systemctl restart sshd
Настройка firewall
sudo ufw allow номер_вашего_порта sudo ufw limit ssh # Запретить более 6 попыток подключения к SSH за 30 секунд sudo ufw enable # Включение ufw
Проверка, подключение и работа
Пробуем подключиться по ssh:
ssh user1@ip_сервера
Если меняли порт то:
ssh -p номер_порта user1@ip_сервера
На что должны получить ошибку что ддля этого пользователя доступ только по sftp
This service allows sftp connections only.
Для подключения к sftp:
sftp user1@ip_сервера
Если меняли порт то:
sftp -P номер_порта user1@ip_сервера
? – Посмотреть все доступные команды
Наиболее используемые команды для работы с ftp
ls – посмотреть содержимое текущей директории
cd user1 – Перейти в свою директорию, именно в ней у нас полный доступ
put movie.avi – Загрузить файл movie.avi с домашнего каталога локального компьютера
put movie.avi xxx.avi – Загрузить файл movie.avi изменив его имя на xxx.avi
put -r Directory – Загрузить каталог с файлами
get file.txt – скачать файл с sftp сервера, сохранит в домашнюю директорию
rm movie.avi – Удалить файл movie.avi
И так, на примере Ubuntu 16 LTS, мы настроили наш безопасный ftp сервер (sftp) для одного пользователя, таким же образом их можно добавить сколько угодно. Мы сменили стандартный порт подключения, запретили ftp пользователю выполнять какие либо команды shell, кроме тех что нужны для работы со своим каталогом и файлами. Настроили файрвол. Можно пойти ещё дальше и настроить sftp доступ по ключам (настраивается так же как обычный ssh). Но это осложнит работу сторонних ftp программ с нашим сервером, это следует делать для серверов где требуется максимальный уровень безопасности.
LEAVE YOUR COMMENT