Установка и настройка FTP сервера
FTP-сервер обеспечивает безопасную передачу файлов между локальными компьютерами и сервером, что необходимо для управления веб-сайтами. Это руководство предназначено для системных администраторов и разработчиков, которые хотят установить и настроить FTP-сервер для веб-окружения 1С-Битрикс: Управление сайтом на CentOS 7. При небольших изменениях данное руководство может быть применено и для других конфигураций.
Установка и настройка
Устанавливаем proftpd:
yum install proftpd proftpd-utils
Запускаем и добавляем демон в автозагрузку:
systemctl start proftpd
systemctl enable proftpd
Открываем конфигурационный файл proftpd.conf:
nano /etc/proftpd.conf
И добавляем следующее:
RequireValidShell off
AuthUserFile /etc/proftpd.d/ftpd.passwd
AuthPAM off
RootLogin off
PassivePorts 6000 6100
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c
* где:
- RequireValidShell off – позволяет пользователям входить в систему через FTP, даже если их оболочка не указана в файле /etc/shells;
- AuthUserFile /etc/proftpd.d/ftpd.passwd – указывает путь к файлу, который используется для аутентификации пользователей;
- AuthPAM off – отключает модуль аутентификации PAM (Pluggable Authentication Modules), может использоваться для интеграции с общей системой аутентификации Linux;
- RootLogin off – отключает возможность входа под учетной записью root через FTP;
- PassivePorts 6000 6100 – параметр определяет диапазон портов, которые будут использоваться для пассивного режима передачи данных FTP. Пассивный режим используется для устранения проблем с настройкой фаервола, так как клиент FTP инициирует соединение на порт сервера из диапазона, указанного здесь;
- LoadModule mod_auth_file.c – загружает модуль, который предоставляет базовую аутентификацию на основе файлов;
- AuthOrder mod_auth_file.c – опция устанавливает порядок использования модулей аутентификации.
Закомментировать строчку:
#AuthOrder ...
Создаём каталог для хранения конфигурационных файлов froftpd:
mkdir /etc/proftpd.d
Создаём FTP пользователя:
ftpasswd --passwd --file=/etc/proftpd.d/ftpd.passwd --name=bitrix --shell=/sbin/nologin --home=/home/bitrix/www/ --uid=600 --gid=600
* где:
- –file=/etc/proftpd.d/ftpd.passwd – задает путь к файлу, в котором будут храниться данные пользователей FTP;
- –name=bitrix – устанавливает имя FTP пользователя;
- –shell=/sbin/nologin – устанавливает оболочку, которая будет использоваться для пользователя. В данном случае указан
/sbin/nologin
, что предотвратит вход пользователям через интерактивную оболочку; - –home=/home/bitrix/www/ – задает домашний каталог пользователя, указан путь до каталога с файлами битрикса;
- –uid=600 – устанавливает идентификатор пользователя, в данном случае указан UID системной учётной записи Битрикса;
- –gid=600 – устанавливает идентификатор группы, в данном случае указан GID группы Битрикса.
В данном примеры созданный FTP пользователь будет иметь полный доступ к каталогу с файлами Битрикса!
Перезапускаем демон:
systemctl restart proftpd
Брандмауэр
Если на сервере включен брандмауэр необходимо открыть следующие порты:
- 21 – порт для передачи команд;
- 6000-6100 – диапазон для обмена данными, задаётся в proftpd.conf.
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
iptables -I INPUT -p tcp --dport 6000:6100 -j ACCEPT
Сохранение изменений при перезагрузке:
/sbin/service iptables save
Логирование
Настройка подробного логирования.
Создаём файлы логов:
touch /var/log/proftpd/proftpd.log
touch /var/log/proftpd/xfer.log
touch /var/log/proftpd/access.log
touch /var/log/proftpd/auth.log
proftpd.conf
следующее:
LogFormat default «%h %l %u %t «%r» %s %b»
LogFormat auth «%v [%P] %h %t «%r» %s»
LogFormat write «%h %l %u %t «%r» %s %b»
SystemLog /var/log/proftpd/proftpd.log
TransferLog /var/log/proftpd/xfer.log
ExtendedLog /var/log/proftpd/access.log ALL
ExtendedLog /var/log/proftpd/auth.log AUTH auth
* где:
- SystemLog /var/log/proftpd/proftpd.log – указывает файл для системных логов сервера ProFTPD;
- TransferLog /var/log/proftpd/xfer.log – указывает файл для логов передачи данных;
- ExtendedLog /var/log/proftpd/access.log ALL – указывает файл для расширенных логов всех событий;
- ExtendedLog /var/log/proftpd/auth.log AUTH auth – указывает файл для расширенных логов событий аутентификации.
Перезагружаем демон:
systemctl restart proftpd
Возможные проблемы
Некорректное время в логах
proftpd.conf
следующее:
TimesGMT off
SetEnv TZ :/etc/localtime
Перезагружаем демон:
systemctl restart proftpd
Высокая нагрузка на процессор
Процесс ProFTPD потребляет слишком много процессорных ресурсов, решение, ограничить количество сессий.
Добавляем в файл proftpd.conf
в секцию Global
следующее:
MaxClients 10 "Too many connections"
MaxClientsPerHost 3 "%m client are already connected from your host"
* где:
- MaxClients – устанавливает максимальное количество одновременных подключений ко всему FTP-серверу;
- MaxClientsPerHost – Устанавливает максимальное количество одновременных подключений от одного хоста.
Полезные команды
- ftpwho – показывает текущую информацию о процессе для каждого FTP-сеанса;
- ftpcount – показывает текущее число соединений к FTP-серверу;
- ftptop – отображает активности текущих FTP-сессий в реальном времени.