Назад | Перейти на главную страницу

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

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

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

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

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

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

Учетные данные известны и верны.

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