|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> программы
—> VSFTPD + AD && MySQL
Vsftpd + AD && Vsftpd + MySQL
Автор: atrium.
Здравствуйте уважаемые читатели!
Сегодня попробуем разобраться с прекрасным ftp сервером - VSFTPD (Официальный сайт). Но для начала некоторые общие понятия :).
FTP – это протокол передачи файлов. Программы, использующие этот протокол, стали частью отдельного сервиса Интернет. Для пользования FTP нужна специальная программа – FTP-клиент. FTP-клиент - это сервисная программа, с помощью которой можно произвести соединение с FTP сервером. Обычно эта программа имеет командную строку, но некоторые имеют оконный интерфейс и не требуют запоминания команд. Пример FTP-клиента - программы CuteFTP, Go!Zilla, ReGet и т.д, называются они менеджерами загрузки. У них удобный интерфейс и позволяют пользователям удобно осуществлять загрузку-выгрузку файлов.
FTP-сервер - компьютер, который содержит общедоступные файлы и настроен на поддержку протокола FTP (FTP-сервер должен иметь программное обеспечение, поддерживающее протокол FTP).
И так приступим к настройке нашего FTP сервера, вся установка проводилась на FreeBSD v_7.1. Нам понадобятся следующие пакеты:
Port: vsftpd-2.0.7
Path: /usr/ports/ftp/vsftpd
Info: A FTP daemon that aims to be "very secure"
Port: mysql-server-5.0.67_1
Path: /usr/ports/databases/mysql50-server
Info: Multithreaded SQL database (server)
Port: pam_mysql-0.7.r1
Path: /usr/ports/security/pam-mysql
Info: A pam module for authenticating with MySQL
| Так же для связки FTP с AD необходимо что бы машина с FreeBSD была включена в домен Windows. Статья, которая описывает процедуру введения машины с FreeBSD в домен - FreeBSD и AD.
Устанавливаем базу данных MySQL, пример настройки и установки я не буду приводить, думаю в интернете есть большое количество статей :)
Настроим сначала связку vsftpd и AD, для этого устанавливаем vsftpd со следующими опциями:
[X] RC_NG install RC_NG script
[X] VSFTPD_SSL Include support for SSL
| После того как vsftpd установлен, необходимо создать пользователя 'ftp' с домешнем каталогом, в который будут логиниться anonymous и создать файл конфигурации в каталоге /usr/local/etc есть файл vsftpd.conf.dist, его можно переименовать в vsftpd.conf, но лучше сделать с нуля:
touch /usr/local/etc/vsftpd.conf
| После создания файла vsftpd.conf приступаем к внесению конфигурационных опций :) Созданный нами конфиг предполагает работу vsftpd в качестве анонимного сервера и сервера с авторизацией юзеров из AD. По желанию можно отключить одно из двух :)
# Работа сервера в standalone режиме
listen=YES
# Работа в качестве демона
background=YES
# На каком IP работать
listen_address=192.168.0.1
# Имя файла pam сервиса в /etc/pam.d
pam_service_name=ftp
session_support=YES
# Включить пассивный режим
pasv_enable=YES
pasv_max_port=50000
pasv_min_port=60000
# Использовать sendfile
use_sendfile=YES
# Для пролхих клиентов
async_abor_enable=YES
#----Ограничения
#-----------------------------------------------
# Определяет какие email адреса использовать для анонимов в качестве пароля
# из файла email_password_file
secure_email_list_enable=NO
#email_password_file=/usr/local/etc/vsftpd_email.password
# Запретить использовать email для доступа анонима из файла banned_email_file
deny_email_enable=NO
#banned_email_file=/usr/local/etc/vsftpd_email.deny
# Chroot в каталог
secure_chroot_dir=/usr/local/share/vsftpd/empty
# Chroot по списку из файла chroot_list_file
chroot_list_enable=NO
#chroot_list_file=/usr/local/etc/vsftpd_chroot.list
# Разрешить запись
write_enable=YES
# Чтение юзеров из файлов deny
userlist_enable=YES
# Запрещён доступ для юзеров перечисленных в указанном файле
userlist_deny=YES
userlist_file=/usr/local/etc/vsftpd_user.deny
# Время ожидания соединения на порт в sec
connect_timeout=60
# Время передачи простоя, если данные не передаются
data_connection_timeout=300
# Задержка перед сообщением об ошибке регистрации
delay_failed_login=1
# Задержка при правильной регистрации
delay_successful_login=0
# Задрежка между вводом FTP команд в sec
idle_session_timeout=300
# Запрет команды chmod
chmod_enable=NO
# Максимальное количество клиентов
max_clients=10
# Максимально количество неправильных входов, далее разрыв
max_login_fails=3
# Максимальное количество соединений с одного ip
max_per_ip=1
# Запрещённые файлы через запятую
deny_file={*.lnk}
# Скрыть указанные файлы через запятую
hide_file={*.lnk}
# Запретить использовать команду ls -R
ls_recurse_enable=NO
# Проверка существования shell в /etc/shells
check_shell=NO
# Не показывать файлы начинающиеся с точки
force_dot_files=NO
# Скрывать кто является реальным владельцем файла
# Будет указываться владелец 'ftp'
hide_ids=YES
# Блокировать доступ к загружаемому файлу
lock_upload_files=YES
# Разрешить чтение каталогов
dirlist_enable=YES
# Разрешить загрузку
download_enable=YES
# Удалить файлы загруженные с ошибками или недокачанные
delete_failed_uploads=YES
# Разрешить соединение на 20 порт
connect_from_port_20=NO
#------------------------------------------------
#----Локальные пользователи
#------------------------------------------------
# Разрешить локальных пользователей из файла /etc/passwd
local_enable=YES
# Использовать привелегии локальных юзеров для виртуальных
# Если NO то используются привелегии anonymous
virtual_use_local_privs=YES
# Посадить в тюрьму локального юзера
chroot_local_user=YES
# Маска для локальных пользователей
local_umask=022
# Каталог для локальных юзеров
local_root=/home/IMPEX/$USER
# Создание папки пользователя
# Образец каталога берётся из параметра guest_username
user_sub_token=$USER
# Chroot в каталоге юзера указанного в /etc/passwd
passwd_chroot_enable=YES
# Скорость закачки byt/sec
local_max_rate=2097152
#-------------------------------------------------
#----Анонимные пользователи
#-------------------------------------------------
# Разрешить анонимных пользователей
anonymous_enable=YES
# Каталог для анонимов
anon_root=/server/ftp
# Разрешает загрузку. Работает при write_enable=YES
anon_upload_enable=YES
# Создание каталогов. Работает при write_enable=YES
anon_mkdir_write_enable=YES
# Создание, загрузка и удаление
anon_other_write_enable=NO
# Не использовать пароль для анонимного доступа
no_anon_password=YES
# Маска для файлов созаваемых анонимом
anon_umask=022
# Режим для загружаемых файлов
chown_upload_mode=0440
# Только чтение, запрещает скачивать файлы с FTP
anon_world_readable_only=NO
# Установить владельцем файлов юзера указанного в chown_username
chown_uploads=YES
chown_username=ftp
# Скорость закачки byt/sec
anon_max_rate=2097152
#--------------------------------------------------
#----Ведение логов
#--------------------------------------------------
# Логирование всех запросов к ftp
# Работает при выключенной опции xferlog_std_format
# Используется для отладки
log_ftp_protocol=NO
# Файл логов
vsftpd_log_file=/var/log/vsftpd.log
# Отправка логов в syslog
syslog_enable=YES
# Паралельное ведение логов в vsftpd.log и xferlog
dual_log_enable=NO
# Логи детальной upload/download
xferlog_enable=NO
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
#--------------------------------------------------
#----Определение кодировки
#--------------------------------------------------
# Использование ASCII при скачке/загрузке
# Работают русские символы, кодировка для клиента KOI8-R
ascii_download_enable=YES
ascii_upload_enable=YES
#--------------------------------------------------
#----Сообщения
#---------------------------------------------------
# Банер приветствия при входе
ftpd_banner=Welcom to FTP service
# Показ сообщения пользователю из файла '.message' при входе в каталог. Файл определяется
# в опции message_file. Файл должен находится в этом же каталоге.
dirmessage_enable=NO
message_file=.message
#--------------------------------------------------
# Разрешить гостя. Все не анонимные пользователи логинятся как гость
# Имя юзера гостя определено в опции 'guest_username'
guest_enable=NO
guest_username=atrium
# Пользователь для анонимных юзеров
ftp_username=ftp
nopriv_user=nobody
# Показать имя и группу вместо uid/gid
text_userdb_names=YES
| После того как настроили vsftpd, создаём файл с именем 'ftp' в /etc/pam.d, если он отсутствует, со следующим содержанием:
auth required pam_nologin.so no_warn
auth sufficient /usr/local/lib/pam_winbind.so krb5_auth
auth sufficient pam_opie.so no_fake_prompts
auth requisite pam_opieaccess.so allow_local no_warn
auth required pam_unix.so no_warn try_first_pass
account required pam_nologin.so no_warn
account sufficient /usr/local/lib/pam_winbind.so krb5_auth
account required pam_unix.so
session required pam_permit.so
| Делаем проверку:
220 Welcom to FTP service
Name (10.178.1.11:atrium): Administrator
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
| Настроим теперь vsftpd с MySQL :)
Как говорилось выше, базу данных MySQL установили и запустили, всё работает. Создаём необходимую базу и таблицу, в которой будут храниться наши юзвери :)
-- MySQL dump 10.11
--
-- Host: localhost Database: vsftpd
-- ------------------------------------------------------
-- Server version 5.0.67
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Current Database: `vsftpd`
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `vsftpd`
/*!40100 DEFAULT CHARACTER SET cp1251 */;
USE `vsftpd`;
--
-- Table structure for table `accounts`
--
DROP TABLE IF EXISTS `accounts`;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `accounts` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(50) NOT NULL,
`pass` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;
| Создадим тестового пользователя, пароль будет шифроваться алгоритмом MD5, заданный алгоритм определят параметр crypt=3 в файле /etc/pam.d/ftp, листинг которого приводится ниже:
use vsftpd;
insert into accounts set username='testuser', pass=md5('test');
| После создания базы, таблицы и пользователя необходимо установить pam-mysql и создать файл с именем 'ftp' в каталоге /etc/pam.d, если он отсутствует, со следующим содержанием:
auth requisite /usr/local/lib/pam_mysql.so user=root passwd=root \
db=vsftpd host=localhost table=accounts usercolumn=username passwdcolumn=pass crypt=3
account requisite /usr/local/lib/pam_mysql.so user=root passwd=root \
db=vsftpd host=localhost table=accounts usercolumn=username passwdcolumn=pass crypt=3
| После всех операций в конфиге vsftpd.conf, который был представлен выше необходимо изменить:
# Разрешить гостя. Все не анонимные пользователи логинятся как гость
# Имя юзера гостя определено в опции 'guest_username'
guest_enable=YES
guest_username=ftp
| Делаем проверку:
220 Welcom to FTP service
Name (10.178.1.11:atrium): testuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
| Важно:
- Для доступа к MySQL создайте отдельного пользователя с минимальными привилегиями
- Представленный конфиг vsftpd.conf подходит также для работы с локальными пользователями, аутентификация определяется с помощью pam.
Читайте комменты в них указана строчка, которую необходимо добавить в файл /etc/pam.d/ftp
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?t=18079.
размещено: 2009-04-01,
последнее обновление: 2009-06-01,
автор: atrium
|
|
|
|
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 обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
2010-03-02, BlackCat
Шлюз: Часть 4
Настройка дополнительных сервисов: синхронизация времени (OpenNTPD), клиент DynDNS.org.
2010-03-01, BlackCat
Шлюз: Часть 3
Настройка DHCP и DNS серверов для работы внутри частной сети, c поддержкой внутренних (частных зон) DNS, а так же интеграция DHCP и DNS сервисов.
2010-03-01, BlackCat
Шлюз: Часть 2
Конфигурация МСЭ pf для проброса портов с изменением порта назначения и без, а так же поддержки активного режима FTP и ограничения максимального размера сегмента
2010-03-01, BlackCat
Шлюз: Часть 1
Быстрая настройка шлюза/маршрутизатора с установлением PPPoE-соединения, поддержкой NAT и DNS-forwarding.
2010-02-23, Morty
darkstat
Простая считалка траффика, со встроенным веб-сервером. Очень маленькая, может делать отчеты трафика по хостам, портам, протоколам, а также строить графики
2010-01-23, gonzo111
squid+sams+sqstat
Пилим squid и sams - примеры конфигов с объяснениями. Установка SqStat.
2009-12-19, schizoid
mpd5 + radius + ng_car + Abills
Настройка pppoe-сервера с биллинговой системой Abills и шейпером ng_car
2009-11-16, lissyara
UFS->ZFS
Удалённая миграция с UFS на ZFS. Загрузка с раздела zfs. Настройка для работы с малым количеством памяти под архитектурой i386.
|
Комментарии пользователей [11 шт.]