私のCentos 7ファイアウォールは、スクリプトを介して接続しようとすると、外部FTPクライアントとのファイル交換(インポートとエクスポート)をブロックします。ファイアウォールを無効にすると、すべてがうまく機能します。ファイル交換に特定のポートが必要なのか、それとも別の問題があるのかご存知ですか?
# sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ftp http https smtp ssh
ports: 2222/tcp 587/tcp 25/tcp 465/tcp 21/tcp 80/tcp 40000/tcp 443/tcp 22/tcp 53/udp 53/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
# lsmod | grep nf_conntrack_ftp
nf_conntrack_ftp 18478 1 nf_nat_ftp
nf_conntrack 139264 8 nf_nat_ftp,nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_conntrack_ftp,nf_conntrack_ipv4,nf_conntrack_ipv6
# iptables-save -c
# Generated by iptables-save v1.4.21 on Thu Aug 13 19:59:02 2020
*nat
:PREROUTING ACCEPT [81930:11078515]
:INPUT ACCEPT [14712:902333]
:OUTPUT ACCEPT [24878:1693871]
:POSTROUTING ACCEPT [24878:1693871]
:OUTPUT_direct - [0:0]
:POSTROUTING_ZONES - [0:0]
:POSTROUTING_ZONES_SOURCE - [0:0]
:POSTROUTING_direct - [0:0]
:POST_public - [0:0]
:POST_public_allow - [0:0]
:POST_public_deny - [0:0]
:POST_public_log - [0:0]
:PREROUTING_ZONES - [0:0]
:PREROUTING_ZONES_SOURCE - [0:0]
:PREROUTING_direct - [0:0]
:PRE_public - [0:0]
:PRE_public_allow - [0:0]
:PRE_public_deny - [0:0]
:PRE_public_log - [0:0]
[81930:11078515] -A PREROUTING -j PREROUTING_direct
[81930:11078515] -A PREROUTING -j PREROUTING_ZONES_SOURCE
[81930:11078515] -A PREROUTING -j PREROUTING_ZONES
[24878:1693871] -A OUTPUT -j OUTPUT_direct
[24878:1693871] -A POSTROUTING -j POSTROUTING_direct
[24878:1693871] -A POSTROUTING -j POSTROUTING_ZONES_SOURCE
[24878:1693871] -A POSTROUTING -j POSTROUTING_ZONES
[19315:1359674] -A POSTROUTING_ZONES -o eth0 -g POST_public
[5563:334197] -A POSTROUTING_ZONES -g POST_public
[24878:1693871] -A POST_public -j POST_public_log
[24878:1693871] -A POST_public -j POST_public_deny
[24878:1693871] -A POST_public -j POST_public_allow
[81930:11078515] -A PREROUTING_ZONES -i eth0 -g PRE_public
[0:0] -A PREROUTING_ZONES -g PRE_public
[81930:11078515] -A PRE_public -j PRE_public_log
[81930:11078515] -A PRE_public -j PRE_public_deny
[81930:11078515] -A PRE_public -j PRE_public_allow
COMMIT
# Completed on Thu Aug 13 19:59:02 2020
# Generated by iptables-save v1.4.21 on Thu Aug 13 19:59:02 2020
*mangle
:PREROUTING ACCEPT [477222:238129658]
:INPUT ACCEPT [447004:234240830]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [415842:656698573]
:POSTROUTING ACCEPT [415842:656698573]
:FORWARD_direct - [0:0]
:INPUT_direct - [0:0]
:OUTPUT_direct - [0:0]
:POSTROUTING_direct - [0:0]
:PREROUTING_ZONES - [0:0]
:PREROUTING_ZONES_SOURCE - [0:0]
:PREROUTING_direct - [0:0]
:PRE_public - [0:0]
:PRE_public_allow - [0:0]
:PRE_public_deny - [0:0]
:PRE_public_log - [0:0]
[477222:238129658] -A PREROUTING -j PREROUTING_direct
[477222:238129658] -A PREROUTING -j PREROUTING_ZONES_SOURCE
[477222:238129658] -A PREROUTING -j PREROUTING_ZONES
[447004:234240830] -A INPUT -j INPUT_direct
[0:0] -A FORWARD -j FORWARD_direct
[415842:656698573] -A OUTPUT -j OUTPUT_direct
[415842:656698573] -A POSTROUTING -j POSTROUTING_direct
[384088:64944119] -A PREROUTING_ZONES -i eth0 -g PRE_public
[93134:173185539] -A PREROUTING_ZONES -g PRE_public
[477222:238129658] -A PRE_public -j PRE_public_log
[477222:238129658] -A PRE_public -j PRE_public_deny
[477222:238129658] -A PRE_public -j PRE_public_allow
COMMIT
# Completed on Thu Aug 13 19:59:02 2020
# Generated by iptables-save v1.4.21 on Thu Aug 13 19:59:02 2020
*security
:INPUT ACCEPT [409931:227948926]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [415842:656698573]
:FORWARD_direct - [0:0]
:INPUT_direct - [0:0]
:OUTPUT_direct - [0:0]
[409931:227948926] -A INPUT -j INPUT_direct
[0:0] -A FORWARD -j FORWARD_direct
[415842:656698573] -A OUTPUT -j OUTPUT_direct
COMMIT
# Completed on Thu Aug 13 19:59:02 2020
# Generated by iptables-save v1.4.21 on Thu Aug 13 19:59:02 2020
*raw
:PREROUTING ACCEPT [477222:238129658]
:OUTPUT ACCEPT [415842:656698573]
:OUTPUT_direct - [0:0]
:PREROUTING_ZONES - [0:0]
:PREROUTING_ZONES_SOURCE - [0:0]
:PREROUTING_direct - [0:0]
:PRE_public - [0:0]
:PRE_public_allow - [0:0]
:PRE_public_deny - [0:0]
:PRE_public_log - [0:0]
[477222:238129658] -A PREROUTING -j PREROUTING_direct
[477222:238129658] -A PREROUTING -j PREROUTING_ZONES_SOURCE
[477222:238129658] -A PREROUTING -j PREROUTING_ZONES
[415842:656698573] -A OUTPUT -j OUTPUT_direct
[384088:64944119] -A PREROUTING_ZONES -i eth0 -g PRE_public
[93134:173185539] -A PREROUTING_ZONES -g PRE_public
[477222:238129658] -A PRE_public -j PRE_public_log
[477222:238129658] -A PRE_public -j PRE_public_deny
[477222:238129658] -A PRE_public -j PRE_public_allow
COMMIT
# Completed on Thu Aug 13 19:59:02 2020
# Generated by iptables-save v1.4.21 on Thu Aug 13 19:59:02 2020
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [322708:483513034]
:FORWARD_IN_ZONES - [0:0]
:FORWARD_IN_ZONES_SOURCE - [0:0]
:FORWARD_OUT_ZONES - [0:0]
:FORWARD_OUT_ZONES_SOURCE - [0:0]
:FORWARD_direct - [0:0]
:FWDI_public - [0:0]
:FWDI_public_allow - [0:0]
:FWDI_public_deny - [0:0]
:FWDI_public_log - [0:0]
:FWDO_public - [0:0]
:FWDO_public_allow - [0:0]
:FWDO_public_deny - [0:0]
:FWDO_public_log - [0:0]
:INPUT_ZONES - [0:0]
:INPUT_ZONES_SOURCE - [0:0]
:INPUT_direct - [0:0]
:IN_public - [0:0]
:IN_public_allow - [0:0]
:IN_public_deny - [0:0]
:IN_public_log - [0:0]
:OUTPUT_direct - [0:0]
[389741:226716526] -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
[5566:334317] -A INPUT -i lo -j ACCEPT
[51697:7189987] -A INPUT -j INPUT_direct
[51697:7189987] -A INPUT -j INPUT_ZONES_SOURCE
[51697:7189987] -A INPUT -j INPUT_ZONES
[73:4550] -A INPUT -m conntrack --ctstate INVALID -j DROP
[37000:6287354] -A INPUT -j REJECT --reject-with icmp-host-prohibited
[0:0] -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
[0:0] -A FORWARD -i lo -j ACCEPT
[0:0] -A FORWARD -j FORWARD_direct
[0:0] -A FORWARD -j FORWARD_IN_ZONES_SOURCE
[0:0] -A FORWARD -j FORWARD_IN_ZONES
[0:0] -A FORWARD -j FORWARD_OUT_ZONES_SOURCE
[0:0] -A FORWARD -j FORWARD_OUT_ZONES
[0:0] -A FORWARD -m conntrack --ctstate INVALID -j DROP
[0:0] -A FORWARD -j REJECT --reject-with icmp-host-prohibited
[93134:173185539] -A OUTPUT -o lo -j ACCEPT
[322708:483513034] -A OUTPUT -j OUTPUT_direct
[0:0] -A FORWARD_IN_ZONES -i eth0 -g FWDI_public
[0:0] -A FORWARD_IN_ZONES -g FWDI_public
[0:0] -A FORWARD_OUT_ZONES -o eth0 -g FWDO_public
[0:0] -A FORWARD_OUT_ZONES -g FWDO_public
[0:0] -A FWDI_public -j FWDI_public_log
[0:0] -A FWDI_public -j FWDI_public_deny
[0:0] -A FWDI_public -j FWDI_public_allow
[0:0] -A FWDI_public -p icmp -j ACCEPT
[0:0] -A FWDO_public -j FWDO_public_log
[0:0] -A FWDO_public -j FWDO_public_deny
[0:0] -A FWDO_public -j FWDO_public_allow
[51697:7189987] -A INPUT_ZONES -i eth0 -g IN_public
[0:0] -A INPUT_ZONES -g IN_public
[51697:7189987] -A IN_public -j IN_public_log
[51697:7189987] -A IN_public -j IN_public_deny
[51697:7189987] -A IN_public -j IN_public_allow
[2121:165216] -A IN_public -p icmp -j ACCEPT
[6239:372132] -A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[760:43448] -A IN_public_allow -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[3894:222151] -A IN_public_allow -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[32:1852] -A IN_public_allow -p tcp -m tcp --dport 25 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[105:5552] -A IN_public_allow -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[88:4644] -A IN_public_allow -p tcp -m tcp --dport 2222 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[17:984] -A IN_public_allow -p tcp -m tcp --dport 587 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[0:0] -A IN_public_allow -p tcp -m tcp --dport 25 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[1337:80164] -A IN_public_allow -p tcp -m tcp --dport 465 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[0:0] -A IN_public_allow -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[0:0] -A IN_public_allow -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[0:0] -A IN_public_allow -p tcp -m tcp --dport 40000 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[0:0] -A IN_public_allow -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[0:0] -A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[27:1740] -A IN_public_allow -p udp -m udp --dport 53 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
[4:200] -A IN_public_allow -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW,UNTRACKED -j ACCEPT
COMMIT
# Completed on Thu Aug 13 19:59:02 2020
ベストアンサー1
使用されるポートは、FTP接続に使用される「モード」によって異なります。
アクティブモードでは、クライアントはコマンドポート(21)を介してサーバーに接続します。また、サーバーに無許可のランダムポート(> 1023)を提供します。サーバーは、その任意のポートをターゲットとして使用してクライアントに再接続します。
パッシブモードでは、クライアントはコマンドポート(21)を介してサーバーに接続します。その後、サーバーは許可されていない任意のポートを開き、その情報をクライアントに送信します。クライアントはこのランダムポートをターゲットとして使用してサーバーに再接続します。
詳細については、次の記事を参照してください。アクティブFTPとパッシブFTP、権威ある説明。
エラーの説明によると、FTPクライアントは手動モードで接続する必要があります。上記のように、サーバーは自分の側で無許可の任意のポートを開き、クライアントがそのポートに再接続されることを期待します。その後、ファイアウォールは着信接続をブロックし、プロセス全体が失敗します。
手動モードをサポートするための推奨されるアプローチは、特定の範囲のポートを使用するようにFTPサーバーを構成し、ファイアウォールで同じ範囲を開くことです。開く必要があるポートの数は、サポートするクライアントの数によって異なります。
可能であれば、SFTPを代替として考えることもできます。 SFTPはSSHの上に構築されたまったく異なるプロトコルです。ファイアウォールレベルで扱いやすい単一の標準SSHポート(22)を使用して実行されます。 SFTPはまた、既存のFTPでは不可能であったすべての通信を暗号化します。