Хочу представить Вам ещё один вариант поднятия vsFTPD на системе Ubuntu 10.10. В прошлой заметке у нас получилось, что пользователь зашедший на FTP видит все директории, но это не правильно, чтобы этого не было об этом и статья, как запереть пользователей работающих с FTP их собственным домашним каталогом.
Итак, в нашем распоряжении операционная система Ubuntu 10.10.
ekzorchik@ub64amd:~$ uname -a && lsb_release -a
Linux ub64amd 2.6.35-22-generic #33-Ubuntu SMP Sun Sep 19 20:34:50 UTC 2010 i686 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.10
Release: 10.10
Codename: maverick
Произведём обзор имеющегося пакета в репозиториях Ubuntu 10.10:
ekzorchik@ub64amd:~$ sudo aptitude search vsftpd
p vsftpd – lightweight, efficient FTP server written for security
Какая версия и информация по необходимому пакету доступна:
ekzorchik@ub64amd:~$ sudo aptitude show vsftpd
Package: vsftpd
State: not installed
Version: 2.3.0~pre2-4ubuntu2.3
Priority: extra
Section: net
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Uncompressed Size: 442k
Depends: debconf (>= 0.5) | debconf-2.0, upstart-job, libc6 (>= 2.7), libcap2 (>= 2.10), libpam0g (>= 0.99.7.1), libssl0.9.8 (>= 0.9.8m-1), libwrap0 (>= 7.6-4~), adduser, libpam-modules, netbase
Recommends: logrotate
Conflicts: ftp-server
Replaces: ftp-server
Provides: ftp-server
Description: lightweight, efficient FTP server written for security
This package provides the “Very Secure FTP Daemon”, written from the ground up with security in mind.
It supports both anonymous and non-anonymous FTP access, PAM authentication, bandwidth limiting, and the Linux sendfile() facility.
Homepage: http://vsftpd.beasts.org/
Установим пакет в нашу систему:
ekzorchik@ub64amd:~$ sudo aptitude install vsftpd
The following NEW packages will be installed:
vsftpd
0 packages upgraded, 1 newly installed, 0 to remove and 385 not upgraded.
Need to get 116kB of archives. After unpacking 442kB will be used.
Get:1 http://ru.archive.ubuntu.com/ubuntu/ maverick-updates/main vsftpd i386 2.3.0~pre2-4ubuntu2.3 [116kB]
Fetched 116kB in 1s (101kB/s)
Preconfiguring packages …
Selecting previously deselected package vsftpd.
(Reading database … 118497 files and directories currently installed.)
Unpacking vsftpd (from …/vsftpd_2.3.0~pre2-4ubuntu2.3_i386.deb) …
Processing triggers for man-db …
Processing triggers for ureadahead …
ureadahead will be reprofiled on next reboot
Setting up vsftpd (2.3.0~pre2-4ubuntu2.3) …
Adding user ftp to group ftp
vsftpd start/running, process 3115
Создадим резервную копию конфигурационного файла:
ekzorchik@ub64amd:~$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.backup
Редактируем и ограничиваем работу только по IPv4.
ekzorchik@ub64amd:~$ sudo nano /etc/vsftpd.conf
Разрешаем запись:
write_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
напишем свой баннер для входа.
ftpd_banner=Welcome to FTP Ubuntu 10.10 (blog www.ekzorchik.ru).
Запираем пользователей в домашних директориях:
# You may restrict local users to their home directories. See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
chroot_local_user=YES
Разрешаем вход локальным пользователям:
# Uncomment this to allow local users to log in.
local_enable=YES
Запрещаем анонимный доступ, необходимо найти строку:
# Allow anonymous FTP? (Disabled by default)
anonymous_enable=NO
Права доступа на файлы и директории
local_umask=023
Перейдем к созданию пользователя который будет работать с нашим FTP сервисом, в целях безопасности у него будет отлючен шелл:
ekzorchik@ub64amd:~$ sudo useradd user1 -b /home/ -m -U -s /bin/false
для пояснения:
user1 — это произвольное именование создаваемого пользователя.
home — это директория где будет находится его собственный домашний каталог.
Ключ -m — это обозначение его домашнего каталога по создаваемому имени.
Ключ -U — это создать персональную группу.
Ключ -s /bin/false — это указывает, что пользователю будет отключён шелл (т. е. интерпретатор команд).
Присвоим нашему созданному пользователю пароль:
ekzorchik@ub64amd:~$ sudo passwd user1
Enter new UNIX password:
Aa1234567
Retype new UNIX password:
Aa1234567
passwd: password updated successfully
Для того чтобы пользовать смог получить доступ к FTP с отключённым шеллом, следует отредактировать файл:
ekzorchik@ub64amd:~$ sudo nano /etc/pam.d/vsftpd
и закомментировать строчку
#auth required pam_shells.so
И перезапускаем сервис vsftpd:
ekzorchik@ub64amd:~$ sudo service vsftpd restart
vsftpd start/running, process 3193
Вот собственно и наш
FTP
поднят и развернут. Продемонстрирую, как происходит подключение:
через консоль:
ekzorchik@ub64amd:~$ ftp ub64amd
(подключение к ftp с именем системы ub64amd)
Connected to ub64amd.
220 Welcome to FTP Ubuntu 10.10 (blog www.ekzorchik.ru). (баннер который мы указали в конфигурационном файле, просто для информации)
Name (ub64amd:ekzorchik): user1
(созданный пользователь)
331 Please specify the password.
Password: Aa1234567
(Пароль для учетной записи user1)
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
(отобразить текущий каталог)
257 "/"
ftp> ls
(вывести листинг каталогов)
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r-- 1 1001 1002 179 Sep 15 2010 examples.desktop
226 Directory send OK.
ftp> quit
(завершить работу с FTP сервисом)
221 Goodbye.
через GUI интерфейс:
Перейдем, в левом верхнем углу: «Places» — «Home Folder»
в строке адреса, нажмём сочетание клавиш «Ctrl + L» для отображения полного пути к строке адреса
и вместо /home/ekzorchik (в данный момент я из под него настраиваю FTP сервис), напишем
, где ub64amd — имя машины с поднятым FTP сервисом. (В вашем случаем может быть другим, также можно писать IP — адрес системы)
В появившемся окне вводим аутентификационные данные для подключения:
В случаем правильного ввода необходимых данных, таких как имя пользователя и пароля мы попадём на наш FTP:
Вот собственно и всё, задача по ограничению пользователей работающих с FTP достигнута. Результат подключения, как через консоль, так и посредством GUI интерфейса продемонстрирован. Удачи!!!