Jump to content
Sign in to follow this  
mr.save

Как установить безопасный SFTP сервер в Linux

Recommended Posts

SFTP служба обеспечивает безопасный механизм доступа и передачи файлов через туннель SSH. Если вы настраиваете SFTP сервер, доступ к которому будут иметь множество пользователей, то вам нужно настроить защиту не только от внешних угроз для защиты пользователей SFTP, но и для защиты от угроз от легитимных, но (потенциально) злонамеренных пользователей. Это достигается изолированием окружения индивидуальных пользователей SFTP.

В этой инструкции я покажу, как настроить безопасный SFTP сервер на Linux. Это будет достигнуто защитой SFTP сервера от SFTP пользователей и изолированием индивидуальных SFTP пользователей друг от друга. Эту цель можно достичь множеством способов, но я опишу как это сделать способом, основанном на применении MySecureShell.

MySecureShell — это SFTP сервер, основанный на OpenSSH, особенностью его является ряд функций безопасности:

  • Ограничение на ширину канала загрузки/выгрузки для каждого соединения
  • Ограничение на количество одновременных соединений на один аккаунт
  • Сокрытие владельца/группы/прав файла и каталога
  • Сокрытие файлов и каталогов, к которым пользователь не имеет доступа
  • Ограничение на время жизни соединения
  • Chroot для SFTP пользователей в его/её каталоге
  • Отклоняются выгрузки файлов или каталогов, которые соответствуют заданным регулярным выражениям

Установка MySecureShell на Linux

Для большинства популярных дистрибутивов MySecureShell распространяется в виде скомпилированных бинарных файлов. Но не для всех они включены в официальные репозитории.

Для пользователей свежей версии Debian всё просто — ставим из официального репозитория.

Debian 8 (Jessie)

apt-get update

apt-get install mysecureshell

Чтобы включить все функции, нужно установить уидный бит (setuid) для бинарного файла mysecureshell.

chmod 4755 /usr/bin/mysecureshell

В других дистрибутивах мы добавляем новый источник приложений.

Debian 7 (Wheezy)

echo "deb http://mysecureshell.free.fr/repository/index.php/debian/7.1 testing main

deb-src http://mysecureshell.free.fr/repository/index.php/debian/7.1 testing main" >> /etc/apt/sources

Импортируем ключи репозитория GPG:

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys E328F22B

gpg --export E328F22B | apt-key add -

Ну и устанавливаем

apt-get update

apt-get install mysecureshell

CentOS/RedHat

CentOS 6

echo "[mysecureshell]

name=MySecureShell

baseurl=http://mysecureshell.free.fr/repository/index.php/centos/6.4/

enabled=1

gpgcheck=0" > /etc/yum.repos.d/mysecureshell.repo

yum install mysecureshell

CentOS 5

echo "[mysecureshell]

name=MySecureShell

baseurl=http://mysecureshell.free.fr/repository/index.php/centos/5.5/

enabled=1

gpgcheck=0" > /etc/yum.repos.d/mysecureshell.repo

yum install mysecureshell

Fedora

echo "[mysecureshell]

name=MySecureShell

baseurl=http://mysecureshell.free.fr/repository/index.php/fedora/19/

enabled=1

gpgcheck=0" > /etc/yum.repos.d/mysecureshell.repo

yum install mysecureshell

Ubuntu

Начать нужно с импорта ключей репозитория GPG:

apt-key adv --keyserver pool.sks-keyservers.net --recv-keys E328F22B

Затем добавляем строки репозитория MySecureShell:

add-apt-repository 'deb http://mysecureshell.free.fr/repository/index.php/ubuntu/12.04 testing main'

Всё готово для установки MySecureShell:

apt-get update

apt-get install mysecureshell

Установка MySecureShell из бинарных файлов

Установка необходимых зависимостей

Установка зависимостей на Ubuntu или Debian:

$ sudo apt-get install libssl0.9.8 ssh openssh-server gcc make

Установка зависимостей на CentOS, RHEL или Fedora:

$ sudo yum install openssl-devel openssh-server gcc make

$ git clone https://github.com/deimosfr/mysecureshell

$ cd mysecureshell

$ ./configure --with-logcolor=yes

Если всё прошло хорошо, то должно быть что-то вроде этого:

MySecureShell has been configured with the following options:

Log file: /var/log/sftp-server.log (color: yes)

User binaries: /usr/bin

Shutdown file: /etc/sftp.shut

Configuration file: /etc/ssh/sftp_config

Supported:

Remote Admin : yes

UTF-8 Encoding : yes

Можно запускать компиляцию:

$ make all

И, наконец, устанавливаем (с правами root):

> make install

Настройка MySecureShell

После установки, проверяем, где наш MySecureShell установлен.

whereis mysecureshell

/usr/bin/mysecureshell

Чтобы управлять пользователями SFTP с MySecureShell, сначала создайте группу Linux, к которой будут принадлежать все пользователи SFTP. Давайте назовём эту группу «sftp».

Следующие команды нужно выполнять от суперпользователя. В зависимости от вашей системы, вы можете делать это через sudo или su —

groupadd sftp

Затем сконфигурируйте существующих пользователей SFTP (например mial) так, чтобы они принадлежали группе «sftp» и использовали MySecureShell шелл во время входа.

usermod -s /usr/bin/mysecureshell -g sftp mial

Если вы создаёте нового SFTP «с нуля», то тогда команда должна выглядеть так.

useradd -m -s /usr/bin/mysecureshell -g sftp alice

Для изменения дефолтных настроек MySecureShell, отредактируйте его конфигурационный файл, размещённый в /etc/ssh/sftp_config. В конфигурационном файле вы можете определить различные групповые настройки безопасности. Например, для группы Linux «sftp»:

vim /etc/ssh/sftp_config

<Group sftp>

Download 50k # лимит скорости загрузки для всех соединений

Upload 0 # неограниченная скорость аплоада для всех соединений

StayAtHome true # ограничить пользователя его/её домашним каталогом

VirtualChroot true # фальшивый chroot для домашнего аккаунта

LimitConnectionByUser 1 # максимальное число соединений на одну учётную запись

LimitConnectionByIP 1 # максимальное количество соединений на один IP для каждой учётной записи

IdleTimeOut 300 # отсоединить пользователя при слишком долгой неактивности (в секундах)

HideNoAccess true # спрятать файл/каталог к которым пользователь не имеет доступа

</Group>

Когда конфигурация завершена, убедитесь, что перезапустили sshd следующим образом.

Для перезапуска sshd на Ubuntu или Debian:

$ sudo service ssh restart

Для перезапуска на CentOS, RHEL или Fedora:

$ sudo service sshd restart

Доступ и управление SFTP сервером

На клиентской стороне, вы можете входить в SFTP сервер следующим образом. Пользователям устанавливается корневой каталог в его собственной домашней папке, и никакие другие директории на сервере не видны для пользователя.

$ sftp mial@192.168.1.37

mial@192.168.1.37's password:

Connected to 192.168.1.37.

sftp> pwd

Remote working directory: /

sftp>

На серверной стороне SFTP вы можете управлять SFTP сервером и его пользователями следующим образом.

Для мониторинга пользователей SFTP, которые в данный момент подключены:

$ sftp-who

--- 1 / 10 clients ---

LBEmEPYn6WU.jpg.77cb9dd8e893635d44bec94a1b4e6cc5.jpg

Чтобы принудительно отключить определённого пользователя SFTP:

$ sudo sftp-kill mial

 

  • Like 1

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...