Codeby web-security - новый курс от Codeby Security School

Представляем вашему вниманию новый курс от команды The Codeby - "Тестирование Веб-Приложений на проникновение с нуля". Общая теория, подготовка рабочего окружения, пассивный фазинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...


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:


Paranoid - курс от Codeby Security School

Представляем вашему вниманию курс от команды codeby - "Комплекс мер по защите персональных данных, анонимности в интернете и не только" Подробнее ...


$ 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 ---

02

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

$ sudo sftp-kill mial

Codeby Market от Сodeby

Мы запустили свой магазин CodebyMarket Equipment for InfoSec. Уже добавили RaspberryAlfa Long-RangeOrange PiArduino и многое другое. Купить Pentesting Devices