Вопрос или проблема
Мой FTP пользователь сталкивается с ошибкой:
FTP 127 Ответ: 500 Я не открою соединение с xxx.xxx.xxx.xxx (только с yyy.yyy.yyy.yyy)
Это ответ моего сервера, захваченный с помощью Wireshark в FTP-клиенте для Windows.
Я включил VerboseLog
в /etc/pure-ftpd.conf
, и там есть строка, которая гласит:
# Если вы хотите записывать все команды клиентов, установите это на "yes".
# Эта директива может быть указана дважды, чтобы также записывать ответы сервера.
#VerboseLog yes
Итак, я отредактировал свой конфигурационный файл и добавил VerboseLog yes
дважды, чтобы записывать ответы сервера, что-то вроде этого:
# Если вы хотите записывать все команды клиентов, установите это на "yes".
# Эта директива может быть указана дважды, чтобы также записывать ответы сервера.
VerboseLog yes
VerboseLog yes
Тем не менее, я всё равно не могу найти логи в /var/log/message для этой ошибки нигде.
Может кто-то сказать, что не так?
P.S.: Я хочу иметь логи, поскольку хочу контролировать состояние сервера и проверить, возникнет ли проблема снова или нет. Я не ищу захвата или слежки за интерфейсами как временное решение/обходной путь.
Вот мой /etc/pure-ftpd.conf
:
############################################################
# #
# Конфигурационный файл для pure-ftpd #
# #
############################################################
# Если вы хотите запустить Pure-FTPd с этой конфигурацией
# вместо параметров командной строки, пожалуйста, выполните
# следующую команду :
#
# /usr/sbin/pure-ftpd /etc/etc/pure-ftpd.conf
#
# Онлайн документация:
# https://www.pureftpd.org/project/pure-ftpd/doc
# Ограничить пользователей их домашним каталогом
ChrootEveryone yes
# Если предыдущий параметр установлен в "no", члены следующей группы
# не будут ограничены. Другие будут. Если вы не хотите, чтобы
# кто-то был chroot()'нут, просто закомментируйте ChrootEveryone и TrustedGID.
# TrustedGID 100
# Включить совместимость с плохими клиентами
BrokenClientsCompatibility no
# Максимальное количество одновременных пользователей
MaxClientsNumber 250
# Работать как фоновой процесс
Daemonize No
# Максимальное количество одновременных клиентов с одинаковым IP-адресом
MaxClientsPerIP 20
# Если вы хотите записывать все команды клиентов, установите это на "yes".
# Эта директива может быть указана дважды, чтобы также записывать ответы сервера.
VerboseLog yes
VerboseLog yes
# Отображать точки-файлы, даже когда клиент не отправляет "-a".
DisplayDotFiles yes
# Запретить аутентифицированным пользователям - действовать только как открытый FTP-сервер.
AnonymousOnly no
# Запретить анонимные подключения. Принимать только аутентифицированных пользователей.
NoAnonymous yes
# Уровень Syslog (auth, authpriv, daemon, ftp, security, user, local*)
# По умолчанию используется "ftp". "none" отключает ведение журнала.
SyslogFacility ftp,auth,authpriv,daemon,security,user
# Отображать удачи
# FortunesFile /usr/share/fortune/zippy
# Не разрешать имена хостов в файлах журналов. Рекомендуется, если вы не доверяете
# обратным именам хостов и не заботитесь о возможной медленной DNS-резолюции.
DontResolve yes
# Максимальное время простоя в минутах (по умолчанию = 15 минут)
MaxIdleTime 15
# Файл конфигурации LDAP (см. README.LDAP)
# LDAPConfigFile /etc/pureftpd-ldap.conf
# Файл конфигурации MySQL (см. README.MySQL)
# MySQLConfigFile /etc/pureftpd-mysql.conf
# Файл конфигурации PostgreSQL (см. README.PGSQL)
# PGSQLConfigFile /etc/pureftpd-pgsql.conf
# База данных пользователей PureDB (см. README.Virtual-Users)
# PureDB /etc/pure-ftpd.pdb
# Путь к сокету pure-authd (см. README.Authentication-Modules)
ExtAuth /var/run/ftpd.sock
# Если вы хотите включить аутентификацию PAM, раскомментируйте следующую строку
# PAMAuthentication yes
# Если вы хотите простую аутентификацию Unix (/etc/passwd), раскомментируйте это
# UnixAuthentication yes
# Обратите внимание, что LDAPConfigFile, MySQLConfigFile, PAMAuthentication и
# UnixAuthentication могут быть указаны один раз, но можно комбинировать
# вместе. Например, если вы используете MySQLConfigFile, а затем UnixAuthentication,
# SQL-сервер будет использован первым. Если аутентификация SQL не удастся, потому что
# пользователь не найден, будет предпринята новая попытка с использованием системной аутентификации.
# Если аутентификация SQL не удалась, потому что пароль не совпадал, то
# цепочка аутентификации останавливается здесь. Методы аутентификации связываются в
# порядке их указания.
# Ограничения рекурсии 'ls'. Первый аргумент - максимальное количество
# файлов для отображения. Второй - максимальная глубина подкаталогов.
LimitRecursion 10000 8
# Разрешено ли анонимным пользователям создавать новые каталоги?
AnonymousCanCreateDirs no
# Если системная нагрузка превышает заданное значение, анонимные пользователи
# не могут загружать.
MaxLoad 4
# Диапазон портов для пассивных соединений - держите его максимально широким.
PassivePortRange 49152 65534
# Принудительно указывать IP-адрес в ответах PASV/EPSV/SPSV. - для NAT.
# Символические имена хостов также принимаются для шлюзов с динамическим IP-адресом.
# ForcePassiveIP 5.9.161.221
# Соотношение загрузки/выгрузки для анонимных пользователей.
# AnonymousRatio 1 10
# Соотношение загрузки/выгрузки для всех пользователей.
# Эта директива превосходит предыдущую.
# UserRatio 1 10
# Запретить загрузку файлов, принадлежащих системному пользователю "ftp";
# файлы, которые были загружены, но не были подтверждены местным администратором.
AntiWarez yes
# IP-адрес/порт для прослушивания (по умолчанию все IP-адреса, порт 21).
Bind 21
# Максимальная пропускная способность для анонимных пользователей в КБ/с
# AnonymousBandwidth 8
# Максимальная пропускная способность для *всех* пользователей (включая анонимных) в КБ/с
# Используйте либо AnonymousBandwidth, либо UserBandwidth, но не оба.
# UserBandwidth 8
# Маска создания файла. <умаска для файлов>:<умаска для директорий> .
# 177:077, если вы чувствуете паранойю.
Umask 133:022
# Минимальный UID для аутентифицированного пользователя, чтобы войти в систему.
# Например, значение 100 предотвращает вход всех пользователей с идентификатором пользователя ниже
# 100. Если вы хотите, чтобы "root" мог войти, используйте 0.
MinUID 100
# Разрешить FXP-тTransfers для аутентифицированных пользователей.
AllowUserFXP no
# Разрешить анонимный FXP для анонимных и неанонимных пользователей.
AllowAnonymousFXP no
# Пользователи не могут удалять/записывать файлы, начинающиеся с точки ('.')
# даже если они являются их владельцами. Но если TrustedGID включен, эта группа
# будет иметь доступ к точечным файлам.
ProhibitDotFilesWrite no
# Запретить *чтение* файлов, начинающихся с точки (.history, .ssh...)
ProhibitDotFilesRead no
# Не перезаписывать файлы. Когда файл с уже существующим именем загружается,
# он автоматически переименовывается в file.1, file.2, file.3, ...
AutoRename no
# Запретить анонимным пользователям загружать новые файлы (no = загрузка разрешена)
AnonymousCantUpload yes
# Разрешены только соединения с этим конкретным IP-адресом для
# не анонимных пользователей. Вы можете использовать эту директиву, чтобы открыть несколько публичных IP-адресов для
# анонимного FTP и оставить частный фаерволл для удалённого администрирования.
# Вы также можете разрешить только непреводимые локальные IP (такие как 10.x.x.x) для
# аутентифицированных пользователей и запустить публичный сервер FTP только для анонимов на другом IP.
# TrustedIP 10.1.1.1
# Чтобы добавить PID к записям журнала, раскомментируйте следующую строку.
# LogPID yes
# Создать дополнительный файл журнала с передачами, записанными в формате, подобном Apache:
# fw.c9x.org - jedi [13/Apr/2017:19:36:39] "GET /ftp/linux.tar.bz2" 200 21809338
# Этот файл журнала затем можно обрабатывать с помощью общих анализаторов HTTP-трафика.
AltLog xferlog:/etc/apache2/logs/domlogs/ftpxferlog
# Создать дополнительный файл журнала с передачами, записанными в формате, оптимизированном
# для статистических отчетов.
AltLog stats:/var/log/pureftpd.log
# Создать дополнительный файл журнала с передачами, записанными в стандартном формате W3C
# (совместимом со многими анализаторами логов HTTP)
# AltLog w3c:/var/log/pureftpd.log
# Запретить команду CHMOD. Пользователи не могут изменять разрешения своих собственных файлов.
# NoChmod yes
# Разрешить пользователям возобновлять/загружать файлы, но *НЕ* удалять их.
# KeepAllFiles yes
# Автоматически создавать домашние каталоги, если они отсутствуют
# CreateHomeDir yes
# Включить виртуальные квоты. Первое значение - максимальное количество файлов.
# Второе значение - максимальный размер в мегабайтах.
# Таким образом, 1000:10 ограничивает каждого пользователя до 1000 файлов и 10 МБ.
# Quota 1000:10
# Если ваш pure-ftpd был скомпилирован с поддержкой автономного режима, вы можете изменить
# местоположение файла pid. По умолчанию это /var/run/pure-ftpd.pid
# PIDFile /var/run/pure-ftpd.pid
# Если ваш pure-ftpd был скомпилирован с поддержкой pure-uploadscript,
# это приведет к тому, что pure-ftpd будет записывать информацию о новых загрузках в
# /var/run/pure-ftpd.upload.pipe, чтобы pure-uploadscript мог читать её и
# запускать сценарий для обработки загрузки.
# Не включайте эту опцию, если вы фактически не используете pure-uploadscript.
# CallUploadScript yes
# Эта опция полезна на серверах, где разрешена анонимная загрузка.
# Когда раздел заполнен более чем на процентное соотношение,
# новые загрузки запрещены.
MaxDiskUsage 99
# Установите в 'yes', чтобы предотвратить переименование файлов.
# NoRename yes
# Будьте 'защитой клиента': запрещены распространенные ошибки клиентов, такие как
# 'chmod 0 public_html', которые являются допустимыми, но могут вызвать непреднамеренные проблемы.
CustomerProof yes
# Ограничения по одновременности для каждого пользователя. Будет работать только если FTP-сервер
# был скомпилирован с флагом --with-peruserlimits.
# Формат: <максимальное количество сеансов на пользователя>:<максимальное количество анонимных сеансов>
# Например, 3:20 означает, что аутентифицированный пользователь может иметь до 3 активных
# сеансов, и что разрешено до 20 анонимных сеансов.
# PerUserLimits 3:20
# Когда файл загружается, а предыдущая версия файла
# с таким же именем уже существует, старый файл не будет ни удален, ни обрезан.
# Файл будет сохранен под временным именем, и после завершения загрузки
# он будет атомарно переименован. Например, когда загружается большой PHP-
# сценарий, веб-сервер будет продолжать использовать старую версию и
# позже переключится на новую, как только весь файл будет
# передан. Эта опция несовместима с виртуальными квотами.
# NoTruncate yes
# Эта опция принимает три значения:
# 0: отключить уровень шифрования SSL/TLS (по умолчанию).
# 1: принимать как открытые, так и зашифрованные сеансы.
# 2: отказать в соединениях, которые не используют механизм безопасности TLS,
# включая анонимные сеансы.
# Не раскомментируйте это слепо. Дважды проверьте, что:
# 1) Сервер был скомпилирован с поддержкой TLS (--with-tls),
# 2) Действительный сертификат установлен,
# 3) Только совместимые клиенты смогут войти.
TLS 1
# Набор шифров для TLS-сеансов.
# Обычный набор шифров безопасен, и установка этого свойства обычно
# требуется только для *понижения* безопасности, чтобы соответствовать устаревшим клиентам.
# Префикс с -C: для требования действительных клиентских сертификатов.
# Если используется -C:, убедитесь, что открытые ключи клиентов присутствуют на
# сервере.
TLSCipherSuite HIGH
# Файл сертификата для TLS
# CertFile /etc/ssl/private/pure-ftpd.pem
# Слушать только IPv4 адреса в автономном режиме (т.е. отключить IPv6)
# По умолчанию включены как IPv4, так и IPv6.
# IPV4Only yes
# Слушать только IPv6 адреса в автономном режиме (т.е. отключить IPv4)
# По умолчанию включены как IPv4, так и IPv6.
# IPV6Only yes
# Поддержка UTF-8 для имён файлов (RFC 2640)
# Установите кодировку файловой системы сервера и, при необходимости, кодировку по умолчанию
# для удалённых клиентов, которые не используют UTF-8.
# Работает только, если pure-ftpd был скомпилирован с флагом --with-rfc2640
# FileSystemCharset big5
# ClientCharset big5
Создайте файл /etc/pure-ftpd/conf/AltLog
, содержащий только stats:/var/log/pureftpd.log
– это должно решить проблему отсутствия логов (когда pure-ftpd.conf
находится в /etc/pure-ftpd/
).
Ответ или решение
Для того, чтобы видеть логи ответов сервера Pure-FTPd на CentOS, вам нужно убедиться, что вы правильно настроили файл конфигурации /etc/pure-ftpd.conf
. Вы уже сделали некоторые изменения, активировав директиву VerboseLog
. Однако следует учесть несколько моментов, которые могут помочь вашему случае.
-
Проверка конфигурации: Убедитесь, что у вас действительно в конфигурации присутствуют две строки
VerboseLog yes
, как вы указали. Эти строки позволяют записывать как команды клиента, так и ответы сервера. -
Проверка папки для логов: По умолчанию Pure-FTPd отправляет логи в системный журнал (например,
/var/log/messages
). Однако, чтобы получить более детализированные логи в виде отдельного файла, вы можете использовать опциюAltLog
. Для этого создайте файл/etc/pure-ftpd/conf/AltLog
(если он еще не существует) и поместите в него строку:stats:/var/log/pureftpd.log
Этот файл будет содержать логи в формате статистики.
-
Помощь с SyslogFacility: Проверьте параметр
SyslogFacility
в конфигурации. Убедитесь, что он настроен на значение, которое соответствует вашим нуждам. Например, вы можете оставить его как:SyslogFacility ftp
-
Перезапуск службы: После внесения изменений в конфигурационный файл не забудьте перезапустить службу Pure-FTPd, чтобы изменения вступили в силу. Это можно сделать командой:
systemctl restart pure-ftpd
-
Проверка логов: Логи теперь должны писаться в
/var/log/pureftpd.log
(если вы добавили директивуAltLog
). Вы можете просматривать этот файл с помощью команды:tail -f /var/log/pureftpd.log
Это позволит вам в реальном времени видеть записи, связанных с FTP-сессиями.
-
Убедитесь в наличии разрешений: Убедитесь, что служба Pure-FTPd имеет необходимые разрешения на запись в указанный лог-файл и директорию.
Следуя этим шагам, вы сможете увидеть более подробные ответные логи сервера Pure-FTPd, которые помогут вам мониторить статус сервера и выявлять проблемы, такие как ошибка 500 I won't open a connection to xxx.xxx.xxx.xxx (only to yyy.yyy.yyy.yyy)
.