vsftpd error 530 Ошибка входа в систему с действительными учетными данными

Хотя существует ряд подобных существующих вопросов / ответов, которые ссылаются vsftpd и код ошибки 530, но они не кажутся полезными в этом случае:

Ситуация такова, что работающий экземпляр vsftpd-2.2.2-24.el6.x86_64 на RHEL 6 (CentOS 6) переносится на сервер RHEL 7 (CentOS 7).

из vsftpdФайлы конфигурации, только они были изменены:

  • /etc/vsftpd.chroot_list добавить локальные имена пользователей.
  • /etc/vsftpd/vsftpd.conf

Конфигурация выглядит следующим образом, и (*) указывает на изменения или дополнения по умолчанию для распределения:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=Hello.
listen=YES (*)
listen_ipv6=NO (*)
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
dual_log_enable=YES
use_localtime=YES (*)
rsa_cert_file=/etc/httpd/conf/ssl/vsftpd.crt (*)
rsa_private_key_file=/etc/httpd/conf/ssl/vsftpd.key (*)
ssl_enable=YES (*)
allow_anon_ssl=NO (*)
force_local_data_ssl=NO (*)
force_local_logins_ssl=NO (*)
ssl_tlsv1=YES (*)
ssl_sslv2=NO (*)
ssl_sslv3=NO (*)
require_ssl_reuse=NO (*)
ssl_ciphers=HIGH (*)
ssl_tlsv1_1=YES (*)
ssl_tlsv1_2=YES (*)
allow_writeable_chroot=YES (*)

Подчеркивается, что конфигурация была портирована с рабочего vsftpd пример.

После включения и (повторного) запуска службы без сообщений о проблемах:

 $ sudo systemctl status vsftpd
 $ sudo systemctl enable vsftpd
 $ sudo systemctl start vsftpd
 $ sudo systemctl -l status vsftpd

была предпринята попытка проверить сервер:

$ cd ~ ; \
  TEST="${HOME}/tmp/vsftpd_tst.`date +%Y%m%d%H%M`"; \
  date >${TEST} ; \
  curl -v -k -u ${USER} -ftp-ssl -T ${TEST} ftp://host.domain.tld/

Enter host password for user 'xxxx':
* STATE: INIT => CONNECT handle 0x600069c60; line 1418 (connection #-5000)
* Added connection 0. The cache now contains 1 members
*   Trying host.domain.tld ...
* TCP_NODELAY set
* STATE: CONNECT => WAITCONNECT handle 0x600069c60; line 1470 (connection #0)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
* Connected to host.domain.tld (x.x.x.x) port 21 (#0)
* STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x600069c60; line 158 7 (connection #0)
* Marked for [keep alive]: FTP default
* FTP 0x60006fe40 (line 3113) state change from STOP to WAIT220
* STATE: SENDPROTOCONNECT => PROTOCONNECT handle 0x600069c60; line 16 01 (connection #0)
< 220 Hello.
> USER xxxx
* FTP 0x60006fe40 (line 801) state change from WAIT220 to USER
< 331 Please specify the password.
> PASS xxxxxxxxxxxx
* FTP 0x60006fe40 (line 2541) state change from USER to PASS
  0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
< 530 Login incorrect.
* Access denied: 530
* multi_done
* Marked for [closure]: FTP ended with bad error code
  0     0    0     0    0     0      0      0 --:--:--  0:00:03 --:--:--     0
* Closing connection 0
* The cache now contains 0 members
curl: (67) Access denied: 530

Полномочия известны и правильны.

1 ответ

Решение

SELinux может быть кандидатом на подозрение в тех случаях, когда сервер включен. В этом случае и на старом, и на новом серверах был установлен SELinux, но на старом сервере не было принудительного применения.

В случае, показанном ниже, похоже, что поиск файлов.crt и.key в httpd Пространство конфигурации вызвало проблему:

$ sudo audit2allow -w -a
...
type=AVC msg=audit(1532728647.463:74431): avc:  denied  { getattr } for pid=48253 comm="vsftpd" path="/etc/httpd/conf/ssl/vsftpd.crt" dev="dm-2" ino=6687286 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:httpd_config_t:s0 tclass=file

        Was caused by:
        The boolean ftpd_full_access was set incorrectly.
        Description:
        Allow ftpd to full access

        Allow access by executing:
        # setsebool -P ftpd_full_access 1
...

К сожалению, в этом случае, хотя это предложение было полезным, его было недостаточно.

$ sudo setsebool -P ftpd_full_access 1

Неудачи продолжались, и audit2allow показал проблемы, но не имел никаких советов относительно конкретной команды для запуска.

$ sudo audit2allow -w -a
...
type=AVC msg=audit(1532728647.463:74431): avc:  denied  { getattr } for pid=48253 comm="vsftpd" path="/etc/httpd/conf/ssl/com_vsftpd.crt" dev="dm-2" no=6687286 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:httpd_config_t:s0 tclass=file

          Was caused by:
          Unknown - would be allowed by active policy
          Possible mismatch between this policy and the one under which
            the audit message was generated.

          Possible mismatch between current in-memory boolean settings
            vs. permanent ones.

Это было решено с помощью:

$ sudo semodule -R
Другие вопросы по тегам