Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Русификация
  COM-порт
  Монтирование образов
  dd
  burncd
  Консоль
  polling
  redirect_port
  wolf3d
  W.O.L.
  HDD->HDD
  bsdstats
  pdf в html
  monitord
  monit
  dvd в avi
  LAM
  Контроль провайдера
  pppd
  ru man
  geom_uzip
  colorize
  nettop
  немного о ssh
  установка по сети
  ClamAV mirror
  BlueTooth
  WiFi WPA
  iftop
  iPod
  2 CD -> 1 DVD
  ipcalc
  LACP и VLAN
  FFS из-под WinXP
  queues
  NFS & Win2k3
  Dynamic DNS
  ProFTPD+iconv
  deltup, xdelta, bdelta
  Приглашение csh/tcsh
  настрока bash
  Lan over Bluetooth
  pppoe
  метаданные exif
  dd : бэкапируем windows
  mozilla autoconfig
  Proxy Auto Configuration
  NNTP сервер
  Rinetd
  ISO DVD FreeBSD
  my disc1
  sftp+chroot
  SendXMPP
  APCUPSD
  Видеонаблюдение
  Настройка аудиоплеера на ximp3
  HDD(mbr) -> HDD(gpt)
  mc 4.6.2
  Динамический DNS
  axel
  LiveCD
  NAS на MPD
  backup конфигов на почту
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> Мелочи —> sftp+chroot

Использование sftp+chroot из openssh в качестве альтернативы ftp-серверу.

Автор: Storoge.


   SFTP расшифровывается как SSH File Transfer ProtocolSSH-протокол для передачи файлов. Он предназначен для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Как правило, в качестве базового протокола, обеспечивающего соединение, и используется протокол SSH2, но это не обязательно.OpenSSH (открытый безопасный shell) — набор программ, предоставляющих шифрование сеансов связи по компьютерным сетям с использованием протокола SSH.
   Он был создан под руководством Teo de Raadt (Тэо де Раадт) как открытая альтернатива проприетарного ПО от SSH Communications Security. В набор программ OpenSSH входит и sftp-сервер.Недавно в дерево исходных текстов OpenSSH принят код,позволяющий помещать отдельных пользователей в изолированное окружение(chroot).
   Собственно, я сам для копирования данных на сервер пользуюсь sftp, меня это вполне устраивает.Возникла необходимость дать возможность нескольким пользователям заливать на сервер контент для своих сайтов.Ставить ради этого какой-нибудь PureFTPd я не хотел, но использование в чистом виде sftp мне не нравилось тем, что они могут залогиниться под ssh, а также тем, что в клиенте (например Filezilla) видна вся файловая система сервера.То есть я хотел, чтобы пользователи могли зайти только по sftp и видеть и изменять только свою папку.
# cd /usr/ports/
# make search name='openssh'
Port:   openssh-portable-5.0.p1,1
Path:   /usr/ports/security/openssh-portable
Info:   The portable version of OpenBSD's OpenSSH
Maint:  mnag@FreeBSD.org
B-deps:
R-deps:
WWW:    http://www.openssh.org/portable.html

Port:   security/openssh
Moved:
Date:   2008-03-02
Reason: Has expired: Outdate and has security issues

   Нашли то, что нам надо, идем туда, компилируем с такими опциями и устанавливаем.
# cd ./security/openssh-portable
# make install clean
[X] PAM             Enable pam(3) support                     
[X] TCP_WRAPPERS    Enable tcp_wrappers support               
[X] LIBEDIT         Enable readline support to sftp(1)
[X] KERBEROS        Enable kerberos (autodetection)            
[ ] SUID_SSH        Enable suid SSH (Recommended off)    
[ ] GSSAPI          Enable GSSAPI support (req: KERBEROS)  
[ ] KERB_GSSAPI     Enable Kerberos/GSSAPI patch (req: GSSAPI)
[X] OPENSSH_CHROOT  Enable CHROOT support                      
[ ] OPENSC          Enable OpenSC smartcard support            
[ ] OPENSCPINPATCH  Enable OpenSC PIN patch                   
[ ] HPN             Enable HPN-SSH patch                      
[ ] LPK             Enable LDAP Public Key (LPK) patch         
[ ] OVERWRITE_BASE  OpenSSH overwrite base      

   Не забудьте прописать в /etc/rc.conf
openssh_enable="YES"
#sshd_enable="YES"

   Далее редактируем файлы настроек
[color=red]# cd /usr/local/etc/ssh
# ls
moduli                  ssh_config-dist         
ssh_host_dsa_key.pub    ssh_host_key.pub        
ssh_host_rsa_key.pub    sshd_config-dist
ssh_config              ssh_host_dsa_key        
ssh_host_key            ssh_host_rsa_key        
sshd_config

   Открываем файл sshd_config и добавляем куда-нибудь в конец следующие строки.
AllowGroups wheel sftponly

# override default of no subsystems
Subsystem       sftp    /usr/local/libexec/sftp-server

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

   Ну, в wheel вхожу я, ничем не ограниченный, а в группу sftponly входят наши пользователи.

   Создадим будущему пользователю домашний каталог, куда он и будет кидать свои файлы
# mkdir /usr/local/www/example

   А внутри этого каталога еще один
# mkdir /usr/local/www/example/www

   Теперь надо правильно добавить пользователя через adduser. Надо включить его в группу sftponly, дать реальную оболочку(например sh),указать правильный домашний каталог(мы его уже создали), ну естественно, пароль.Вернемся  к нашим баранам(т.е. домашним каталогам пользователей),зададим правильные права.
# chown -R root /usr/local/www/example
# chown -R our_user /usr/local/www/example/www 

   Все, теперь перезапускаем openssh
#/usr/local/etc/rc.d/openssh restart

   И пробуем залогинится под нашим пользователем с какой-нибудь машины. Сам я пользуюсь Filezilla, честно говоря, другие клиенты не смотрел.Виден только домашний каталог, а записать пользователь может только в папку www, что и требовалось сделать.
Зайти под ssh этот пользователь не сможет.

Ссылки
1.http://www.openssh.com/-страница проекта OpenSSH
2.http://ru.wikipedia.org/wiki/OpenSSH - страница OpenSSH  в Википедии
3.http://xgu.ru/wiki/Sftp -Информация о протоколе sftp
4.http://www.opennet.ru/opennews/art.shtml?num=14331 - Ссылка на новость о chroot в OpenSSH из Opennet
5.http://blogs.techrepublic.com.com/opensource/?p=229
6.http://www.debian-administration.org/articles/590



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=9445.

размещено: 2008-12-27,
последнее обновление: 2008-12-27,
автор: Storoge

оценить статью:

Dan, 2008-12-27 в 11:54:55

# mkdir /usr/loca/www/example

опечатка в тексте в этой строке

XoRe, 2008-12-28 в 1:17:56

Раз уж решили использовать openssh+chroot, то можно предоставлять и шелл при необходимости.
Определить список доступных команд, и вперед.
И корневой директорией будет папка пользователя.
Ну а статей о том, как сделать chroot'ный шелл юзеру с помощью того-же патча openssh, в инете навалом.
Например тут:
http://www.opennet.ru/search.shtml?exclude=index|%2Fman.shtml&words=ssh+chroot

Alexander Sheiko, 2008-12-28 в 1:40:08


Как альтернатива - давно использую такой вариант:

http://www.mozilla.org.ua/projects/faq/chroot.sftp.openssh/

vorakl, 2009-02-20 в 2:09:51

У меня заработало только после установки

Subsystem sftp internal-sftp
вместо
Subsystem       sftp    /usr/local/libexec/sftp-server

И ещё особое внимание стоит обратить на то, что
все каталоги выше от домашенего и сам домашний, должны быть с владельцем root. Записывать sftp пользователь
сможет толкьо в каталоги "ниже", в которые у него должно быть право записи.

k-unker, 2009-06-23 в 17:50:59

Работает только если

Subsystem       sftp    internal-sftp

Права на каталоги должны быть root (домашний каталог пользователя и каталоги выше по иерархии перед ним)

prOFForg, 2010-06-07 в 21:10:11

необходимость выставлять на пути к chroot директории владельца root может подпортить нормально выставленные права на веб папки(чтобы php скрипты работали в правами пользователя в его директории и не могли лазить в соседнии и т.д.)

симлинки sftp в chroot не обрабатывет, поэтому можно сделать так:
mount_nullfs /hosting/web/localhost/www/ /hosting/sftp/localhost/www/

В итоге юзер localhost chrootится в /hosting/sftp/localhost и видит там папку www, при заходе в которую попадает в каталог веб-сервера /hosting/web/localhost/www


ara, 2011-12-01 в 14:47:31

как сделать общую папку для всех пользователей.
через линк не получается.

ara, 2011-12-02 в 9:03:27

второй вопрос..
как быть с логированием пользователей..


im, 2011-12-02 в 16:03:33

Для логирования можно перепилить вот так:
Subsystem       sftp    /usr/libexec/sftp-server -l INFO
Лог будет писаться в /var/log/auth.log.

Но есть один момент: для юзеров попадающих в "ForceCommand internal-sftp" лог не работает, ибо это internal-sftp, и он  логировать не способен.

ara, 2012-02-01 в 13:25:31

в rc.conf syslogd_flags=\" -s -l /Exchange/user1/dev/log\"
то логирование для user1 попадающих в \"ForceCommand internal-sftp\" работает, но у меня несколько useroв;
у каждого  своя директория. Как запустить несколько копии syslogd c разными флагами если это возможно или  
есть какой нибудь другой метод.

спасибо.

MVS, 2020-09-11 в 17:28:03

Возможно ли все параметры созданных пользователей вынести в отдельный файл, а в sshd_config оставить лишь ссылку?


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 13 чел.
За последние 30 мин было: 27 человек
За сегодня было
6879 показов,
794 уникальных IP
 

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

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0434 секунд
Из них PHP: 30%; SQL: 70%; Число SQL-запросов: 77 шт.
Исходный размер: 135083; Сжатая: 23633