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上で、以下のクライアントで動作確認してみた。
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で試してみないと。この手のソレは、いざ転送するとエラーが出る可能性もあるんだよな…。
2023/08/06, 20:00頃に試してみたら…繋がった! サーバが復活したということだろうか。
Windows10 x64 22H2上で、以下のクライアントで動作確認してみた。
FTPクライアント | www7.plala.or.jp との接続成功/失敗 |
---|---|
WinSCP 6.1.1 | Success |
FFFTP 2.00 | Success |
FFFTP 5.8 x86 | Success |
Cyberduck 8.6.2 | Failure |
FileZilla 3.65.0 | Failure |
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 のホスト設定についてメモ。
FFFTP 2.00 のログは以下。
「接続しました.」と表示された後、FTPサーバから 220 が返ってきてるし、FTPクライアントから AUTH TLS も送信できて、サーバから 234 も返ってきている。その後、ユーザ名とパスワードも、USER と PASS で送信できている。
これが、正常にFTPS接続できた時の、コマンドとレスポンスの流れ、ということだなと…。
FFFTP 5.8 x86 のログも残しておく。
- 基本 → ホスト名(アドレス) → 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 のログは以下。
FileZilla 3.58.0 + Ubuntu Linux 22.04 LTS のログは以下。
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のバージョン絡みのようだなと…。
状態: 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アドレスで何かしてるわけではなさそう、とも考えた。
もっとも、ぷらら側でセキュリティ対策云々を優先して、サーバ側が何も返さない設定にしてある可能性もあるのかなと…。そうなると、一体何が原因で接続できないのか、ユーザ側で推測するのは難しくなりそう。
であればと、ルータの再起動をして、ウチの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対応状況を確認
例えば、Linux上で以下のようなコマンドを打つと、色々と情報が返ってくる。
昨日と今日、Ubuntu Linux 22.04 LTS 上で、ぷららのFTPサーバ(www7.plala.or.jp, 60.43.63.107)を相手にして試してみたのだけど…。
2023/08/05の時点。
2023/08/06の時点。
違いが判らん…。いや、微妙に違うか…。
手元で動かしている Ubuntu Linux 22.04 LTS + vsftpd (Over SSL/TTS) を相手にして試したら、全然違う結果になった。
FTPサーバ(vsftpd)を動かしてない環境で試すと、以下になる。
FTPサーバ(vsftpd)を動かしてるけど、FTPS接続を有効化してない環境で試すと、以下になる。
-tls1_2 をつけて試すと結果が変わることに気づいた。以下はぷららのFTPサーバに対して試してみた際の結果。
_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 がどうとか表示されている。
[ ツッコむ ]
以上です。