iptables FTP 연결 추적이 작동하지 않습니다

iptables FTP 연결 추적이 작동하지 않습니다

누군가가 여기에서 올바른 방향으로 나를 가리킬 수 있기를 바랍니다.

공용 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과 데이터 연결을 위해 고정된 포트 범위를 모두 엽니다.

관련 정보