mieki256's diary



2023/08/06() [n年前の日記]

#1 [ftps][web][linux][ubuntu][windows] ぷららのFTPサーバに接続できない。その4

_昨日 の続き。ぷららのプライベートホームページが、FTPS(Explicit)接続のみに変更されてしまって、ウチの環境からぷららのFTPサーバ(www7.plala.or.jp, 60.43.63.107) にFTPS接続できなくて困っていた。

2023/08/06, 20:00頃に試してみたら…繋がった! サーバが復活したということだろうか。

Windows10 x64 22H2上で、以下のクライアントで動作確認してみた。
FTPクライアントwww7.plala.or.jp との接続成功/失敗
WinSCP 6.1.1Success
FFFTP 2.00Success
FFFTP 5.8 x86Success
Cyberduck 8.6.2Failure
FileZilla 3.65.0Failure
FileZilla 3.58.0 (on Ubuntu Linux 22.04 LTS)Failure

FileZilla 3.65.0、3.58.0, Cyberduck 8.6.2 は接続に失敗した…。

海外では FileZilla を使ってFTPS接続の動作確認をしていることが多いし、Linuxのデスクトップ環境上で使えるGUIのFTPクライアントと言えば FileZilla ぐらいしか選択肢が無かったりするしで、FileZilla で繋がらないなら、まだサーバの設定に問題有り、と判断するのが妥当な気もする。

※ 2023/08/07追記。FileZilla の設定を変更して、「許可されるTLSの最小バージョン」を「TLS1.0 (安全でない)」にすれば、一応 www7.plala.or.jp に接続できることが分かった。ただ、FileZilla のコミュニティとしては推奨しないらしい。追記ここまで。

FFFTP 2.00 で接続できたのはともかく、FFFTP 5.8 でも接続に成功したのは驚いた。自分が Ubuntu Linux 22.04 LTS + vsftpd で実験した際には、FFFTP 3.x 以降が全く接続できなかったので…。どのFTPサーバを使って、どんな設定にすれば、そんな状態が実現できるのだろう…。

でも、「この証明書は信頼できない」とFTPクライアントが言ってくるあたりは、ちょっと気になるなあ…。

転送作業はまだ試してない。明日、親父さんのPCで試してみないと。この手のソレは、いざ転送するとエラーが出る可能性もあるんだよな…。

FFFTPのログ :

FFFTP 2.0 のホスト設定についてメモ。
  • 基本 → ホスト名(アドレス) → IPv4アドレスを直接入力してある。
  • 拡張 → PASVモードを使う → チェックを入れて有効化。
  • 拡張 → ネットワークの種類 → TCP/IPv4 を選択。(この項目は、FFFTP 5.8 には無い)
  • 暗号化 → 暗号化なしで接続を許可 → チェックを外す。
  • 暗号化 → FTPS (Explicit)で接続 → チェックを入れる。
  • 暗号化 → FTPS (Implicit)で接続 → チェックを外す。
  • 暗号化 → 弱い暗号化方式を試用しない → チェックを入れる。(この項目は、FFFTP 5.8 には無い)

FFFTP 2.00 のログは以下。
 FFFTP Ver.2.00 Copyright(C) 1997-2010 Sota & cooperators.
 ...
 OpenSSLが読み込まれました.
 ----------------------------
 FTP over Explicit SSL/TLS (FTPES)を使用します.
 ホスト 60.43.63.107 (21) に接続しています. (TCP/IPv4)
 接続しました. (TCP/IPv4)
 220 FTP Server Ready
 >AUTH TLS
 234 AUTH TLS successful
 >PBSZ 0
 200 PBSZ 0 successful
 >PROT P
 200 Protection set to Private
 >USER xxxxxxx
 331 Password required for xxxxxxx
 >PASS [xxxxxx]
 230 User xxxxxxx logged in
 >FEAT
 211-Features:
  MDTM
  SSCN
  TVFS
  MFMT
  SIZE
  PROT
  CCC
  PBSZ
  AUTH TLS
  MFF modify;UNIX.group;UNIX.mode;
  REST STREAM
  MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
  EPRT
  EPSV
 211 End
 >TYPE A
 200 Type set to A
 >PASV
 227 Entering Passive Mode (60,43,63,107,229,155).
 ダウンロードのためにホスト 60.43.63.107 (58779) に接続しています. (TCP/IPv4)
 接続しました. (TCP/IPv4)
 >MLSD
 150 Opening ASCII mode data connection for MLSD
 226 Transfer complete
 ファイル一覧の取得は正常終了しました. (2233 Bytes)
 ファイル名の漢字コードの判別結果はUTF-8です.
 >>CD D:\hoge\fuga\plala\
 >XPWD
 257 "/" is the current directory
 >TYPE A
 200 Type set to A
 >PASV
 227 Entering Passive Mode (60,43,63,107,217,48).
 ダウンロードのためにホスト 60.43.63.107 (55600) に接続しています. (TCP/IPv4)
 接続しました. (TCP/IPv4)
 >MLSD
 150 Opening ASCII mode data connection for MLSD
 226 Transfer complete
 ファイル一覧の取得は正常終了しました. (2233 Bytes)

「接続しました.」と表示された後、FTPサーバから 220 が返ってきてるし、FTPクライアントから AUTH TLS も送信できて、サーバから 234 も返ってきている。その後、ユーザ名とパスワードも、USER と PASS で送信できている。

これが、正常にFTPS接続できた時の、コマンドとレスポンスの流れ、ということだなと…。

FFFTP 5.8 x86 のログも残しておく。
FFFTP Ver.5.8 32bit Copyright(C) 1997-2010 Sota & cooperators.
...
----------------------------
FTP over Explicit SSL/TLS (FTPES)を使用します.
 ホスト 60.43.63.107 (60.43.63.107:21) に接続しています.
 接続しました.
 220 FTP Server Ready
 >AUTH TLS
 234 AUTH TLS successful
 証明書の検証エラー: 0x800B010F: 証明書の CN 名が渡された値と一致しません。 
 >PBSZ 0
 200 PBSZ 0 successful
 >PROT P
 200 Protection set to Private
 >USER xxxxxxx
 331 Password required for xxxxxxx
 >PASS [xxxxxx]
 230 User xxxxxxx logged in
 >FEAT
 211-Features:
  MDTM
  SSCN
  TVFS
  MFMT
  SIZE
  PROT
  CCC
  PBSZ
  AUTH TLS
  MFF modify;UNIX.group;UNIX.mode;
  REST STREAM
  MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
  EPRT
  EPSV
 211 End
 >>CD D:\hoge\fuga\plala
 >XPWD
 257 "/" is the current directory
 >TYPE A
 200 Type set to A
 >PASV
 227 Entering Passive Mode (60,43,63,107,253,160).
 ホスト 60.43.63.107 (60.43.63.107:64928) に接続しています.
 接続しました.
 >MLSD
 150 Opening ASCII mode data connection for MLSD
 証明書の検証エラー: 0x800B010F: 証明書の CN 名が渡された値と一致しません。 
 226 Transfer complete
 ファイル一覧の取得は正常終了しました. (2233 Bytes)

FileZillaのログ :

接続できなかった FileZilla 3.65.0 のログは以下。
状態:           60.43.63.107:21 に接続中...
状態:           接続を確立しました。ウェルカム メッセージを待っています...
レスポンス:     220 FTP Server Ready
コマンド:       AUTH TLS
レスポンス:     234 AUTH TLS successful
状態:           TLS を初期化しています...
エラー:         GnuTLS エラー -8: A packet with illegal or unsupported version was received.
状態:           "ECONNABORTED - 接続が閉じられました" への接続の試行が失敗しました。
エラー:         サーバーに接続できません

FileZilla 3.58.0 + Ubuntu Linux 22.04 LTS のログは以下。
状態:           60.43.63.107:21 に接続中...
状態:           接続を確立しました。ウェルカム メッセージを待っています...
レスポンス:     220 FTP Server Ready
コマンド:       AUTH TLS
レスポンス:     234 AUTH TLS successful
状態:           TLS を初期化しています...
エラー:         GnuTLS エラー -8: A packet with illegal or unsupported version was received.
状態:           "ECONNABORTED - 接続が閉じられました" への接続の試行が失敗しました。
エラー:         サーバーに接続できません
FileZilla 3.65.0 + Windows10 x64 22H2 と同じに見える。

220 も受け取ってるし、FTPクライアントが AUTH TLS を送信するところまでは進んでいるなと…。

"GnuTLS error -8: A packet with illegal or unsupported version was received." でググってみた。

_Filezilla GnuTLS error preventing connection to server (Solved)
_GnuTLS error -8 when using client version 3.57.0 - FileZilla Forums

「サーバ側の設定に問題アリ」ということらしい。TLSのバージョン絡みのようだなと…。

余談。IPアドレスは変更済み :

昨日メモするのを忘れてたのでメモ。ひょっとすると、ぷららのFTPサーバは、IPアドレスに基づいてアクセスを規制しているのではないかと疑った。

であればと、ルータの再起動をして、ウチのIPアドレスを変えてみてからFTPサーバへの接続を試してみたのだけど。その時は、相変わらず接続できなかった。2回ほどIPアドレスを変更してから試しても結果は同じだったので、おそらくIPアドレスで接続が禁止されている状態ではないのだろうと判断した。

そもそも、例えばサーバの hosts.deny 等にIPアドレスを記述してFTPアクセスを禁止した場合、FTPクライアントには「FTPサービスは提供していませんよ」的レスポンスが残る。しかし、それも残ってなかったので、やはりIPアドレスで何かしてるわけではなさそう、とも考えた。

もっとも、ぷらら側でセキュリティ対策云々を優先して、サーバ側が何も返さない設定にしてある可能性もあるのかなと…。そうなると、一体何が原因で接続できないのか、ユーザ側で推測するのは難しくなりそう。

余談。openssl s_client について :

vsftpd Over SSL/TLS についてググっていた際、openssl s_client というコマンドでSSL/TLS関係の動作確認をすることができると知った。

_openssl s_client コマンドでウェブサーバーの SSL/TLS 対応状況を診断する - ラボラジアン
_openssl s_clientコマンドでウェブサーバのSSL/TLS対応状況を確認

$ openssl version
OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)

例えば、Linux上で以下のようなコマンドを打つと、色々と情報が返ってくる。
openssl s_client -connect 60.43.63.107:21 -starttls ftp

昨日と今日、Ubuntu Linux 22.04 LTS 上で、ぷららのFTPサーバ(www7.plala.or.jp, 60.43.63.107)を相手にして試してみたのだけど…。

2023/08/05の時点。
$ openssl s_client -connect 60.43.63.107:21 -starttls ftp
CONNECTED(00000003)
4027A7E3B77F0000:error:0A000102:SSL routines:ssl_choose_client_version:unsupported protocol:../ssl/statem/statem_lib.c:1952:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 133 bytes and written 310 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---

2023/08/06の時点。
$ openssl s_client -connect 60.43.63.107:21 -starttls ftp
CONNECTED(00000003)
40376175A27F0000:error:0A000126:SSL routines:ssl3_read_n:unexpected eof while reading:../ssl/record/rec_layer_s3.c:308:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 310 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---

違いが判らん…。いや、微妙に違うか…。
> diff -u openssl.20230805.log.txt openssl.20230806.log.txt
--- openssl.20230805.log.txt    Sun Aug  6 23:02:04 2023
+++ openssl.20230806.log.txt    Sun Aug  6 23:02:26 2023
@@ -1,12 +1,12 @@
 $ openssl s_client -connect 60.43.63.107:21 -starttls ftp
 CONNECTED(00000003)
-40376175A27F0000:error:0A000126:SSL routines:ssl3_read_n:unexpected eof while reading:../ssl/record/rec_layer_s3.c:308:
+4027A7E3B77F0000:error:0A000102:SSL routines:ssl_choose_client_version:unsupported protocol:../ssl/statem/statem_lib.c:1952:
 ---
 no peer certificate available
 ---
 No client certificate CA names sent
 ---
-SSL handshake has read 0 bytes and written 310 bytes
+SSL handshake has read 133 bytes and written 310 bytes
 Verification: OK
 ---
 New, (NONE), Cipher is (NONE)
昨日は 0byte だったところが、今日は133byte になってる。

手元で動かしている Ubuntu Linux 22.04 LTS + vsftpd (Over SSL/TTS) を相手にして試したら、全然違う結果になった。
$ openssl s_client -connect localhost:21 -starttls ftp
CONNECTED(00000003)
Can't use SSL_get_servername
depth=0 C = JP, ST = Fukushima, L = Sukagawa, O = RAD11, CN = i36100t, emailAddress = hogeuser@example.com
verify error:num=18:self-signed certificate
verify return:1
depth=0 C = JP, ST = Fukushima, L = Sukagawa, O = RAD11, CN = i36100t, emailAddress = hogeuser@example.com
verify return:1
---
Certificate chain
 0 s:C = JP, ST = Fukushima, L = Sukagawa, O = RAD11, CN = i36100t, emailAddress = hogeuser@example.com
   i:C = JP, ST = Fukushima, L = Sukagawa, O = RAD11, CN = i36100t, emailAddress = hogeuser@example.com
   a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256
   v:NotBefore: Aug  4 19:12:18 2023 GMT; NotAfter: Aug  1 19:12:18 2033 GMT
---
Server certificate
-----BEGIN CERTIFICATE-----
MIID2zCCAsOgAwIBAgIUfQw5di5DcU3RMb2uur6jhK0o28wwDQYJKoZIhvcNAQEL
...
SbShrSFBEcFjzPqxey7q0lkLftO3o2BjxvZl8A1+7Q==
-----END CERTIFICATE-----
subject=C = JP, ST = Fukushima, L = Sukagawa, O = RAD11, CN = i36100t, emailAddress = hogeuser@example.com
issuer=C = JP, ST = Fukushima, L = Sukagawa, O = RAD11, CN = i36100t, emailAddress = hogeuser@example.com
---
No client certificate CA names sent
Requested Signature Algorithms: ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:Ed25519:Ed448:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA512:ECDSA+SHA224:RSA+SHA224
Shared Requested Signature Algorithms: ECDSA+SHA256:ECDSA+SHA384:ECDSA+SHA512:Ed25519:Ed448:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA-PSS+SHA256:RSA-PSS+SHA384:RSA-PSS+SHA512:RSA+SHA256:RSA+SHA384:RSA+SHA512
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: ECDH, prime256v1, 256 bits
---
SSL handshake has read 1805 bytes and written 739 bytes
Verification error: self-signed certificate
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 18 (self-signed certificate)
---
220 Welcome to blah FTP service.
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: B6D3BB3D0172601AC62E8A72C9CD107D259262FBAF7FFB8A37E00EC89D2AF488
    Session-ID-ctx:
    Resumption PSK: 21DAEBE93FE1F65F4B2A4352F98B7F22510571230D5C48D24964F6D24A4F61A2DE8DAA0C210ACCA2D2B97F69700C312A
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    ...

    Start Time: 1691330693
    Timeout   : 7200 (sec)
    Verify return code: 18 (self-signed certificate)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: 49D7A917F01AD6C204F0B4E90F26506515C7B8994BF0234CEE8FACC954688BC7
    Session-ID-ctx:
    Resumption PSK: 386A511798FCCF44DD5D47A216F82238EF8BF36265D5D6B007D56B15FA44B7395CA1B474FD6F34F4C9B8EAD1D974E5B8
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    ...

    Start Time: 1691330693
    Timeout   : 7200 (sec)
    Verify return code: 18 (self-signed certificate)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK
quit
221 Goodbye.
40877323717F0000:error:0A000126:SSL routines:ssl3_read_n:unexpected eof while reading:../ssl/record/rec_layer_s3.c:308:

FTPサーバ(vsftpd)を動かしてない環境で試すと、以下になる。
$ sudo systemctl status vsftpd.service 
● vsftpd.service - vsftpd FTP server
     Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Sun 2023-08-06 23:10:07 JST; 3s ago
...

$ openssl s_client -connect localhost:21 -starttls ftp
140093346547008:error:0200206F:system library:connect:Connection refused:../crypto/bio/b_sock2.c:110:
140093346547008:error:2008A067:BIO routines:BIO_connect:connect error:../crypto/bio/b_sock2.c:111:
connect:errno=111

FTPサーバ(vsftpd)を動かしてるけど、FTPS接続を有効化してない環境で試すと、以下になる。
$ sudo systemctl status vsftpd.service 
● vsftpd.service - vsftpd FTP server
     Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2023-08-06 23:12:35 JST; 3s ago
...

$ openssl s_client -connect localhost:21 -starttls ftp
CONNECTED(00000003)
139654957172032:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:331:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 77 bytes and written 293 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---

-tls1_2 をつけて試すと結果が変わることに気づいた。以下はぷららのFTPサーバに対して試してみた際の結果。
$ openssl s_client -connect 60.43.63.107:21 -starttls ftp -tls1_2
CONNECTED(00000003)
40F7BADA097F0000:error:0A000102:SSL routines:ssl_choose_client_version:unsupported protocol:../ssl/statem/statem_lib.c:1952:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 133 bytes and written 205 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1691334012
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
---
「Early data was not sent」となってたところが、「SSL-Session」になって、TLSv1.2 がどうとか表示されている。

以上です。

過去ログ表示

Prev - 2023/08 - Next
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project