
누군가가 여기에서 올바른 방향으로 나를 가리킬 수 있기를 바랍니다.
공용 IP에서 proftpd(tls 지원 포함)를 실행합니다.
FTP 클라이언트가 연결되지만 디렉토리 목록을 작성할 수 없습니다. iptables의 "INPUT" 정책을 ACCEPT로 변경하면 작동합니다.
다음은 관련 iptables 규칙입니다.
$IPTABLES -A INPUT -i eno1 -s 0/0 -d x.x.x.x -p tcp --sport 1024:65535 -m multiport --dports 20,21,989,990 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d x.x.x.x --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
Connection_tracking 모듈을 활성화했습니다.
server ~ # lsmod | grep nf_conntra
nf_conntrack_ftp 24576 3
nf_conntrack 176128 8 xt_conntrack,nf_nat,xt_state,xt_nat,xt_helper,nf_conntrack_ftp,xt_CT,xt_MASQUERADE
nf_defrag_ipv6 24576 1 nf_conntrack
nf_defrag_ipv4 16384 1 nf_conntrack
libcrc32c 16384 2 nf_conntrack,nf_nat
또한 /proc에서 nf_conntrack_helper를 활성화했습니다.
server ~ # cat /proc/sys/net/netfilter/nf_conntrack_helper
1
답변1
proftpd(tls 지원 포함)
TLS 지원이 아마도 원인일 것입니다.
일반적으로 지능형 방화벽에서 FTP를 허용할 때 제어 연결용 포트인 TCP 21을 열어야 하며 일반 텍스트 FTP 프로토콜에서 conntrack 모듈이 응답을 검색하고 감지할 수 있습니다 PORT
. 그런 다음 FTP conntrack 도우미 모듈은 FTP 서버에서 해당 특정 클라이언트에 할당한 포트 번호를 자동으로 열어 종료 세부적인 액세스 제어를 허용합니다.
연결이 TLS로 암호화되면 방화벽은 더 이상 PORT 응답을 감지할 수 없으므로 할당된 포트를 자동으로 열지 않습니다. 이에 대한 해결책은 다음과 같습니다.
FTP 서버가 수동 연결에 사용할 포트 범위를 작은 범위로 수정합니다.
PassivePorts min-pasv-port max-pasv-port
방화벽에서 포트 21과 데이터 연결을 위해 고정된 포트 범위를 모두 엽니다.