VSFTPD + виртуальные пользователи + SSL = ошибка 500

Автор kapella13, 06 мая 2018, 15:18:57

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kapella13

Доброго времени суток всем! Ситуация следующая: имеется сервер (debian 9) на котором работает vsftpd с виртуальными пользователями (все работает без ssl), локальные отключены. Разграничение прав, в т.ч. по каталогам настроено и работает как надо. Задача стоит в том чтобы добавить ssl шифрование (сертификат самоподписанный) в целях безопасности (ftps), но тут возникла проблема, а именно получаю ошибку 500 illegal PORT command. Подключаться (на удаленной windows машине) пробовал и через total commander и filezilla - без результатно.
Привожу конфиг vsftpd:
Открыть содержимое (спойлер)
# main
dirmessage_enable=YES
connect_from_port_20=YES
ftpd_banner=Welcome to Copy-Paste FTP service.
listen=YES
ftp_username=ftp
nopriv_user=nobody
use_localtime=YES
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=49999
force_dot_files=YES
ascii_upload_enable=YES
ascii_download_enable=YES

# logging
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO
log_ftp_protocol=YES

# local users
local_enable=YES

# anonymous access
anonymous_enable=NO

# Имя службы PAM
pam_service_name=vsftpd.virtual

# Путь к домашним каталогам виртуальных пользователей
user_config_dir=/etc/vsftpd/

# Скрываем реальные ID пользователей от посторонних глаз
hide_ids=YES

# Ремаппинг неанонимных пользователей "гостевой" учётной записи
guest_enable=YES

# Виртуальные пользователи пользуются такими же привилегиями, что и локальные
virtual_use_local_privs=YES

#Настройка SSL/TCL
ssl_enable=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
force_local_data_ssl=NO
force_local_logins_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH
[свернуть]

а также iptables -S:
Открыть содержимое (спойлер)
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 40000:49999 -m conntrack --ctstate NEW -j ACCEPT
[свернуть]

Прошу помощи!!! До этого обращался за помощь на другой форум, но ответов так и не получил.

P.S. Пиво обещаю!
P.S.2. Может логичнее было разместить эту тему в "Администрирование"... Если это так, то прошу высокоуважаемых модераторов переместить её.


ChubaDuba

#2
А если настроить работу vsftpd в пассивном режиме? Т.е. pasv_enable=YES и т.д...
Просмотрел...Он у вас уже настроен.

kapella13

Выкладываю лог:
При попытке подключиться по ssl

Mon May  7 16:04:50 2018 [pid 8798] CONNECT: Client "185.31.165.255"
Mon May  7 16:04:56 2018 [pid 8798] FTP response: Client "185.31.165.255", "220 Welcome to Copy-Paste FTP service."
Mon May  7 16:04:56 2018 [pid 8798] FTP command: Client "185.31.165.255", "USER expert"
Mon May  7 16:04:56 2018 [pid 8798] [login] FTP response: Client "1*.***.**.*5", "331 Please specify the password."
Mon May  7 16:04:56 2018 [pid 8798] [login] FTP command: Client "1*.***.**.*5", "PASS <password>"
Mon May  7 16:04:56 2018 [pid 8797] [login] OK LOGIN: Client "1*.***.**.*5"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "230 Login successful."
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP command: Client "1*.***.**.*5", "SYST"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "215 UNIX Type: L8"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP command: Client "1*.***.**.*5", "FEAT"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "211-Features:"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " AUTH SSL??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " AUTH TLS??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " EPRT??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " EPSV??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " MDTM??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " PASV??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " PBSZ??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " PROT??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " REST STREAM??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " SIZE??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " TVFS??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "211 End"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP command: Client "1*.***.**.*5", "HELP SITE"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "214-The following commands are recognized."
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " ABOR ACCT ALLO APPE CDUP CWD  DELE EPRT EPSV FEAT HELP LIST MDTM MKD??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " MODE NLST NOOP OPTS PASS PASV PORT PWD  QUIT REIN REST RETR RMD  RNFR??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " RNTO SITE SIZE SMNT STAT STOR STOU STRU SYST TYPE USER XCUP XCWD XMKD??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", " XPWD XRMD??"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "214 Help OK."
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP command: Client "1*.***.**.*5", "PBSZ 0"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "200 PBSZ set to 0."
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP command: Client "1*.***.**.*5", "PROT P"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "200 PROT now Private."
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP command: Client "1*.***.**.*5", "OPTS UTF8 ON"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "200 Always in UTF8 mode."
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP command: Client "1*.***.**.*5", "PWD"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "257 "/var/gipexpert" is the current directory"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP command: Client "1*.***.**.*5", "TYPE A"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "200 Switching to ASCII mode."
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP command: Client "1*.***.**.*5", "PASV"
Mon May  7 16:04:56 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "227 Entering Passive Mode (192,168,0,10,157,112)."
Mon May  7 16:05:17 2018 [pid 8799] [login] FTP command: Client "1*.***.**.*5", "PORT 192,168,10,3,245,108"
Mon May  7 16:05:17 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "500 Illegal PORT command."
Mon May  7 16:05:21 2018 [pid 8799] [login] FTP command: Client "1*.***.**.*5", "QUIT"
Mon May  7 16:05:21 2018 [pid 8799] [login] FTP response: Client "1*.***.**.*5", "221 Goodbye."
[свернуть]

endru

добавить для уверенности в конфиг строку:
port_enable = YES
и вывести полный iptables, используя команду:
iptables-save > iptables.txt

kapella13

Добавил:
port_enable = YES

Вот полный iptables:
 iptables

# Generated by iptables-save v1.6.0 on Tue May  8 09:04:06 2018
*filter
:INPUT ACCEPT [256:23082]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [222:63746]
:f2b-apache2 - [0:0]
:f2b-apache2ddos - [0:0]
:f2b-sshd - [0:0]
-A INPUT -p tcp -m tcp --dport 22 -j f2b-sshd
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-apache2
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b-apache2ddos
-A INPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 40000:49999 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 989 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 990 -m conntrack --ctstate NEW -j ACCEPT
-A f2b-apache2 -j RETURN
-A f2b-apache2ddos -j RETURN
-A f2b-sshd -s 58.218.198.153/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 24.16.85.236/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 103.207.39.167/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 103.207.39.166/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 182.100.67.4/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 78.219.239.239/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 58.218.198.172/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 58.218.198.168/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 103.99.3.227/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 188.153.178.22/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 103.99.0.221/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 182.100.67.235/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 103.99.3.92/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 202.29.4.124/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 90.49.198.54/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 193.201.224.241/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 223.18.204.71/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 149.202.223.62/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 213.32.85.127/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 107.190.13.217/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 58.242.83.8/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 5.188.10.144/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 58.218.198.185/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -s 5.188.10.176/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b-sshd -j RETURN
COMMIT
# Completed on Tue May  8 09:04:06 2018
[свернуть]

fail2ban не много работнул...  :)

endru

ну тут вроде бы всё нормально.
только не понятно почему в конфиге
force_local_data_ssl=NO
force_local_logins_ssl=NO

а для чего вообще нужно было включать ssl если пароль не будет передаваться по ssl?

kapella13

Это следствие "танцев с бубном". Планировал включить после успешного соединения по ssl.

kapella13

Всем спасибо за участие. Мне помогли разобраться на соседнем форуме. Проблема заключалась в том,  что не был проброшен диапазон pasv портов.  Теперь всё работает.

endru

это уже проблема всех кто спрашивает. не указано было что сервер стоит за NAT.