netfilter는 FTP의 대역 외 데이터 연결을 제어 연결과 관련된 상태로 어떻게 추적할 수 있습니까?

netfilter는 FTP의 대역 외 데이터 연결을 제어 연결과 관련된 상태로 어떻게 추적할 수 있습니까?

이 URI의 기사https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security_guide/sect-security_guide-firewalls-iptables_and_connection_tracking

RELATED — 새로운 연결을 요청하지만 기존 연결의 일부인 패킷입니다. 예를 들어 FTP는 포트 21을 사용하여 연결을 설정하지만 데이터는 다른 포트(일반적으로 포트 20)에서 전송됩니다.

netfilter연결 추적 메커니즘이 ftp대역 외 데이터 연결 트래픽을 제어 연결 상태에 있는 것으로 표시 RELATED할 수 있음 을 나타냅니다 ftp. 다음 질문이 있습니다.

1) 기본 포트가 아닌 포트를 사용하여 데이터 연결이 설정된 경우 유사한 추적 작업을 수행할 수 있습니까?

2) 그렇다면 데이터 연결 튜플(dst_ip, dst_prt, src_ip, src_prt)을 찾기 위해 FTP 메시지를 통과합니까? 나는 이것이 구현하기에는 너무 비현실적이라는 것을 알고 있습니다. 그러면 실제로 이것을 어떻게 합니까 netfliter?

답변1

데이터 연결 튜플(dst_ip, dst_prt, src_ip, src_prt)을 찾기 위해 FTP 메시지를 통과합니까? 나는 이것이 구현하기에는 너무 비현실적이라는 것을 알고 있습니다.

예, 그것이 바로 그 일입니다. 왜 이것이 그렇게 비현실적이라고 생각합니까?

여기에서 코드를 직접 볼 수 있습니다. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/net/netfilter/nf_conntrack_ftp.c

편집: 좋아, 나중에 귀하의 의견을 듣고 보니 이제 귀하가 무슨 뜻인지 이해한 것 같습니다.

커널은 각 TCP 연결의 처음 몇 패킷의 시작 부분만 분석하여 FTP 제어 연결처럼 보이는지 확인하고 추가 분석을 위해 실제 FTP 제어 연결에만 플래그를 지정하면 됩니다. FTP처럼 보이는 연결만 데이터 연결 튜플에 대해 모니터링됩니다.

하지만 몇 년 전, 이런 종류의 완전 자동화된 추적이 악의적인 목적으로 악용될 수 있다는 사실이 밝혀졌습니다. 따라서 최신 커널에서는 이를 필요로 하는 프로토콜에 대해 iptables 연결 추적 도우미 규칙을 명시적으로 설정해야 합니다. 즉, FTP 연결에 기본이 아닌 대상 포트를 사용하는 경우 이에 대한 규칙을 사용자 정의해야 합니다. 하지만 이제는 Tracking Assistant를 받을 인터페이스, 포트, 연결 대상/방향을 완벽하게 제어할 수 있습니다.

일반 FTP에 대한 연결 추적 도우미 규칙은 다음과 같습니다.

iptables -t raw -A PREROUTING -p tcp --dport 21 -j CT --helper ftp

방화벽이 특정 인바운드 포트에 대한 연결만 허용하는 경우 INPUT 및/또는 FORWARD 체인에서 다음과 같은 규칙을 사용하여 인바운드 활성 FTP 연결을 허용해야 할 수도 있습니다.

iptables -A FORWARD -m conntrack --ctstate RELATED -m helper --helper ftp -p tcp --dport 1024: -j ACCEPT

기본이 아닌 포트에서 제어 연결을 사용하는 데이터 연결의 경우 포트 2121의 제어 연결에 속하는 데이터 연결을 허용하는 등 규칙을 약간 수정해야 합니다.

iptables -A FORWARD -m conntrack --ctstate RELATED -m helper --helper ftp-2121 -p tcp --dport 1024: -j ACCEPT

그런데 사용 가능한 여러 연결 추적 도우미 모듈이 있습니다.

  • ftp분명히 FTP 프로토콜의 경우입니다.
  • irc인터넷 릴레이 채팅 프로토콜에 사용됩니다. 포트 번호는 다양합니다.
  • netbios-nsWannaCry 웜이 SMB 1.0 프로토콜(이전 NetBIOS 스타일 Windows 파일 공유에 사용됨)에 치명적인 결함이 있음을 입증했으므로 더 이상 필요하지 않습니다. 표준 포트는 137/UDP입니다.
  • snmp단순 네트워크 관리 프로토콜의 경우 표준 포트 161/UDP.
  • RASQ.931h.323 화상 회의 하위 프로토콜(이전 Microsoft NetMeeting 등). 포트는 각각 1719/UDP 및 1720/TCP입니다.
  • sipSIP 인터넷 전화 통신 프로토콜에 사용됩니다. 표준 포트 5060은 TCP 및 UDP를 지원합니다.
  • saneSANE 스캐너 소프트웨어용 네트워크 프로토콜, 표준 포트 6566/TCP.
  • pptpRFC2637 VPN의 한 형태인 지점 간 터널링 프로토콜입니다.
  • tftpNAT를 통해 TFTP 연결을 전달해야 하는 경우.
  • amandaAmanda 백업 소프트웨어에 사용되는 네트워크 프로토콜입니다.

관련 정보