제한적인 방화벽 규칙을 사용하여 SSL을 통해 FTP를 처리하는 올바른 방법은 무엇입니까?

제한적인 방화벽 규칙을 사용하여 SSL을 통해 FTP를 처리하는 올바른 방법은 무엇입니까?

iptablesSSL이 없으면 FTP는 다음과 같이 netfilter( ) + nf_conntrack_ftp커널 모듈 과 같은 상태 저장 방화벽에서 잘 작동합니다 .

# modprobe nf_conntrack_ftp
# iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# iptables -A INPUT -p tcp --dport 21 -j ACCEPT

문제는 SSL을 사용할 때 데이터 교환을 위해 선택된 세션 포트를 검색하기 위해 세션을 모니터링할 수 없기 때문에 FTP 연결 추적 모듈이 작동하지 않는다는 것입니다. 따라서 포트를 동적으로 열 수 없습니다.

방화벽을 비활성화하지 않고 SSL 지원 FTP 서버를 작동시키는 올바른 방법이 있습니까?

자세한 내용은 구성 옵션을 vsftpd사용하여 작업하고 있습니다.ssl_enable=YES

답변1

SSL과 FTP는 다양한 모드로 제공됩니다.

  • 암시적 SSL, 즉 SSL은 처음부터(보통 포트 990) 사용되며 결코 일반 텍스트가 아닙니다. 이 경우 방화벽의 동적 데이터 포트에 대한 일반 텍스트 정보를 얻을 수 없으므로 해당 포트로만 통신을 제한할 수 없습니다.
  • 로그인하기 전에 SSL을 활성화하려면 "AUTH TLS" 명령 명시적 SSL을 사용하고, 로그인 후 SSL을 비활성화하려면 CCC를 사용하지 마십시오. 여기에는 사용 중인 데이터 포트를 읽을 수 없는 암시적 SSL과 동일한 문제가 있습니다.
  • 이전과 같이 명시적 SSL을 사용하지만 로그인 후 CCC 명령을 사용합니다. 이 경우 로그인은 SSL로 보호되지만 나머지 제어 연결에서는 일반 텍스트를 사용합니다. 데이터 전송은 여전히 ​​SSL로 보호될 수 있습니다. ftp:ssl-use-ccc와 마찬가지로 클라이언트 측에서 이 모드를 활성화해야 합니다 lftp. 이 모드는 FTP 서버에서 시행할 수 없습니다.

관련 명령이 암호화되어 정확한 데이터 포트를 얻을 수 없는 경우 최소한 방화벽 제한을 줄일 수 있습니다.

  • 활성 모드 FTP에서 서버는 포트 20에서 데이터 연결을 시작하므로 iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT설정된 연결과 유사하고 추가로 이러한 연결을 허용하는 iptables 규칙을 가질 수 있습니다.
  • vsftpd수동 모드 FTP에서는 제공된 포트 범위를 제한 및 설정 pasv_max_port하고 pasv_min_port일치 규칙을 추가할 수 있습니다 iptables -A INPUT -p tcp --dport min_port:max_port -j ACCEPT. 예를 들어 이는 매우 엄격하지는 않지만 적어도 방화벽을 비활성화하는 것보다 더 제한적입니다.

관련 정보