Пошаговые заметки
Главная
Вход
Регистрация
Четверг, 18.06.2026, 10:00Приветствую Вас Гость | RSS
Меню сайта

Категории раздела
Управление пакетами [2]
Управление пользователями [7]
Сервисы [1]
Файловые системы [0]

Всего материалов
Комментариев: 2
Форум: 1/2
Новостей: 4
Файлов: 3
Статей: 35

Вход

Главная » Статьи » Linux » Сервисы

Сервер vsftpd
Содержание
Установка пакета vsftpd и запуск сервера
Настройка iptables
Настройка TCP Wrappers
Настройка анонимного доступа
Доступ локальных пользователей

Сервер vsftpd в Red Hat 5 является FTP-сервером по умолчанию.

Установка пакета vsftpd и запуск сервера

Устанавливаем пакет vstfpd Проверим, установлен ли пакет vsftpd

# rpm -q vsftpd
package vsftpd is not installed
То же самое с помощью yum
# yum list vsftpd
...
Error: No matching Packages to list
Как видим - пакет не установлен. Устанавливаем его
# rpm -i vsftpd-2.2.2-6.el6_0.1.i686.rpm
warning: vsftpd-2.2.2-6.el6_0.1.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Или можно установить с помощью yum
# yum install vsftpd
Снова проверяем, установлен ли пакет
# rpm -q vsftpd
vsftpd-2.2.2-6.el6_0.1.i686
То же самое с помощью yum
# yum list vsftpd
...
Installed Packages
vsftpd.i686 2.2.2-6.el6_0.1 installed
Теперь пакет установлен и можно приступать к настройке сервера FTP.

Проверяем состояние сервиса vsftpd. Сервис, естественно, не запущен, ведь мы его только что установили

# service vsftpd status
vsftpd is stopped

Стартуем сервис vsftpd

# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]

Вновь проверяем статус - сервис запущен

# service vsftpd status
vsftpd (pid 18665) is running...

Настраиваем запуск сервиса vsftpd во время загрузки сервера и проверяем, на каких уровнях выполнения системы сервис будет выполняться

# chkconfig vsftpd on
# chkconfig --list | grep vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

Как видим, сервис выполняется на всех уровнях кроме однопользовательского.

Настройка iptables

В данный момент сервис запущен и работает, но доступ к нему из внешней сети запрещен, т.к. файервол пресекает все попытки соединиться с сервером vsftpd. При попытке соединиться мы увидим примерно следующее

F:\>ftp 192.168.9.59
Связь с 192.168.9.59.
Подключение разорвано удаленным узлом.

Таким образом, сразу же после установки сервера vsftpd требуется настройка файервола iptables (если он работает, конечно).

Настраиваем файервол iptables c тем, чтобы принимались соединения с сервером vsftpd. Для этого в файл /etc/sysconfig/iptables добавляем новое правило.

# nano /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

Перестартуем сервис iptables

# service iptables restart
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]
Loading additional iptables modules: ip_conntrack_netbios_n [ OK ]

Пробуем соединиться с сервером

F:\>ftp 192.168.9.59
Связь с 192.168.9.59.
220 (vsFTPd 2.0.5)
Пользователь (192.168.9.59:(none)):
Связь есть!

Настройка TCP Wrappers

В настройках TCP Wrappers запретим всем хостам кроме pronin-s (192.168.9.18) и stend-bill-04 (192.168.11.182) соединяться с сервисом vsftpd. Для этого отредактируем файлы /etc/hosts.allow и /etc/hosts.deny

Добавим строки в файл /etc/hosts.allow

# nano /etc/hosts.allow

# Allow FTP access only from hosts pronin-s (9.18) & stend-bill-04 (11.182)
vsftpd: 192.168.9.18, 192.168.11.182
Добавим строки в файл /etc/hosts.deny
# nano /etc/hosts.deny

# Restrict FTP access from all hosts except enumerated in hosts.allow
vsftpd:ALL

Настройка анонимного доступа

В конфигурационном файле сервера /etc/vsftpd/vsftpd.conf за разрешение анонимного доступа к серверу vsftpd отвечает параметр anonymous_enable, который по умолчанию имеет значение YES, т.е. анонимный доступ к серверу разрешен.

Запрещение анонимного доступа

Итак, сразу после установки vsftpd анонимный доступ разрешен, т.к. в файле /etc/vsftpd/vsftpd.conf параметр anonymous_enable=YES. Для запрещения анонимного значение этого параметра нужно установить в NO.

# nano /etc/vsftpd/vsftpd.conf
anonymous_enable=NO

Анонимный доступ по паролю

Как было сказано выше, анонимный доступ разрешен по умолчанию. Спрашивать пароль у анонима - это так же умалчиваемое поведение сервера vsftpd. Так что если вы только что установили сервер - делать ничего не надо. Но если вы уже правили конфигурационный файл /etc/vsftpd/vsftpd.conf, то лучше проверить два параметра anonymous_enable и no_anon_password.

anonymous_enable=YES
no_anon_password=NO

Анонимный доступ без пароля

При анонимном доступе к серверу вы должны ввести пароль. Как правило в качестве пароля используется почтовый адрес клиента, хотя это необязательное требование. Но это поведение сервера по умолчанию. На самом деле есть параметр no_anon_password, который имеет значение NO, что означает, что при анонимном доступе сервер vsftpd должен спрашивать пароль. Если мы добавим этот параметр в файл /etc/vsftpd/vsftpd.conf и присвоим ему значение YES, то сервер перестанет спрашивать пароль у анонима.

# nano /etc/vsftpd/vsftpd.conf
no_anon_password=YES

Перезагрузим сервис, чтобы он перечитал файл конфигурации

# service vsftpd reload
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]

Теперь попробуем соединиться с ервером

F:\>ftp 192.168.9.59
Связь с 192.168.9.59.
220 (vsFTPd 2.0.5)
Пользователь (192.168.9.59:(none)): Anonymous
230 Login successful.
ftp>
Как видим, сервер пустил нас без пароля.

Анонимная загрузка файлов

Наша цель - дать возможность анонимным пользователям загружать свои файлы в специально созданный для этого каталог /var/ftp/pub/incomming. При этом анонимные пользователи не могут читать содержимое этого каталога, т.е. сразу после того, как анонимный пользователь загрузил файл - тот исчезает из его поля зрения. Это позволяет предотвратить обмен файлами анонимными пользователями через этот каталог.

# mkdir incoming
# chown root:ftp incoming/
# chmod 730 incoming/

# ls -lahZ
drwx-wx--- root ftp root:object_r:public_content_t incoming

# chcon -t public_content_rw_t incoming
# ls -lahZ
drwx-wx--- root ftp root:object_r:public_content_rw_t incoming

Теперь сервер vsftpd позволяет анонимам загружать файлы на сервер. В случае, если на сервере работает SELinux, загрузка файлов анонимам по умолчанию запрещена. Этот запрет регулируется булевым параметром allow_ftpd_anon_write. Разрешим анонимную загрузку

# setsebool -P allow_ftpd_anon_write=1

или альтернативный синтаксис

# setsebool allow_ftpd_anon_write on

Ограничение на объем анонимной загрузки

Для ограничения объема анонимной загрузки используется возможность системы Red Hat квотировать суммарный объем файлов локального пользователя на файловой системе. Для включения возможности квотирования файловая система монтируется со специальной опцией usrquota. Затем некоему пользователю (в нашем случае это будет anonuploader) назначается квота на использование пространства в данной файловой системе. С этого момента этот пользователь не может занять пространство больше, чем назначено ему квотой.

Следующий шаг - смена владельца каждого из анонимно загруженных файлов на anonuploader. Таким образом каждый анонимно загруженный файл будет уменьшать остаток квоты пользователя anonuploader, а когда квота будет исчерпана - сервер не сможет больше записывать файлы на диск, а анонимные пользователи будут получать отказ в обслуживании.

Приступим к настройке ограничения на объем анонимной загрузки. Поскольку каталог /var/ftp/pub/incoming находится в корневой файловой системе, приходится устанавливать квоту на каталог /

В файле /etc/fstab для корневой файловой системы установливем опцию монтирования usrquote

# nano /etc/fstab

/dev/VolGroup00/LogVol00 / ext3 usrquota 1 1

После чего файловая система должна быть перемонтирована (перезагрузка не нужна)

# mount -o remount /

Далее создаем базу данных квот

# quotacheck -cum /

и включаем режим квотирования на корневой каталог /

# quotaon /

Далее создаем специального пользователя anonuploaderдля контроля за анонимно загруженными файлами

# useradd -g ftp anonuploader

В файл конфигурации сервера vsftpd добавляем специальные опции для изменения владельца загруженных анонимно файлов

# nano /etc/vsftd/vsftpd.conf

chown_uploads=YES
chown_username=anonuploader
и перезапускаем сервер vsftpd
# service vsftpd reload

Теперь все загруженные в каталог /var/ftp/pub/incoming файлы будут иметь владельцем пользователя anonuploader и группу ftp. Зададим для пользователя anonuploader квоты на использование корневого каталога

# setquota -u anonuploader 1000000 1100000 0 0 /

Теперь пользователь anonuploader сможет загрузитьв корневой каталог не более 1 100 000 блоков по 1к, а при 1 000 000 блоков он получит предупреждение о достижении квоты на дисковое пространство.

Посмотреть, как используетяс квота на файловую систему можно так

# repquota /

*** Report for user quotas on device /dev/mapper/VolGroup00-LogVol00
Block grace time: 7days; Inode grace time: 7days
 Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 6937556 0 0 109473 0 0 
daemon -- 20 0 0 3 0 0 
lp -- 16 0 0 2 0 0 
ftp -- 8 0 0 1 0 0 
ntp -- 16 0 0 2 0 0 
avahi -- 20 0 0 3 0 0 
rpc -- 4 0 0 1 0 0 
smmsp -- 16 0 0 2 0 0 
xfs -- 4 0 0 1 0 0 
rpcuser -- 8 0 0 1 0 0 
bercut -- 18076 0 0 13 0 0 
anonuploader -- 140380 1000000 1040000 31 1024 1050

Доступ локальных пользователей

Доступ к домашник каталогам и SELinux

Если в системе работает SELinux, то есть нюансы, связанные с доступом локальных пользователей к своим домашним каталогам. Дело в том, что по умолчанию SELinux запрещает его, т.е. булев пораметр ftp_home_dir = 0. При попытке соединения мы получим сообщение об ошибке примерно следующего содержания

C:\>ftp 192.168.9.59
Связь с 192.168.9.59.
220 (vsFTPd 2.2.2)
Пользователь (192.168.9.59:(none)): bercut
331 Please specify the password.
Пароль:
500 OOPS: cannot change directory:/home/bercut
500 OOPS: priv_sock_get_cmd
Подключение разорвано удаленным узлом.

Следующая команда меняет параметр ftp_home_dir так, чтобы локальные пользователи сервера могли видеть свои домашние каталоги

# setsebool -P ftp_home_dir=1

или альтернативный синтаксис

# setsebool ftp_home_dir on

Немедленно после выполнения последней команды локальные пользователи получают доступ черерез FTP к своим домашник каталогам.

Категория: Сервисы | Добавил: forest (09.02.2012)
Просмотров: 6029 | Рейтинг: 0.0/0
Поиск

Друзья сайта
  • Антиболото
  • Суть времени
  • Специстория
  • Газета "Суть времени"
  • Суть времени ВКонтакте-1
  • Суть времени ВКонтакте-2

  • Статистика

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


    Copyright MyCorp © 2026