Документация по ОС FreeBSD Пятница, 19.04.2024, 19:59
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » FTP

Использование sftp+chroot из openssh в качестве альтернативы ftp-серверу [2008]
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://freebsd.3dn.ru/вhttp://blogs.techrepublic.com.com/opensource/?p=229
6.http://www.debian-administration.org/articles/590



Источник: http://www.lissyara.su/?id=1828
Категория: FTP | Добавил: oleg (09.01.2009) | Автор: Storoge
Просмотров: 1454 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024