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

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 обнаружили, что хранят эти негодяи логии только за последнии сутк
подписка

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

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

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0371 секунд
Из них PHP: 25%; SQL: 75%; Число SQL-запросов: 77 шт.
Исходный размер: 135078; Сжатая: 23628