FTPS 로그인이 성공해도 제어 연결이 동작했다는 것만 증명됩니다. 디렉터리 목록에는 다른 연결이 필요하므로, 프록시가 로그인은 허용하고 다음 단계는 차단할 수 있습니다.

명시적 FTPS 서버라면 WinSCP .NET으로 제어 경로와 수동 모드를 구성하세요.

var options = new WinSCP.SessionOptions
{
    Protocol = WinSCP.Protocol.Ftp,
    HostName = "ftp.example.net",
    PortNumber = 21,
    UserName = ftpUser,
    Password = ftpPassword,
    FtpSecure = WinSCP.FtpSecure.Explicit,
    FtpMode = WinSCP.FtpMode.Passive
};

options.AddRawSettings("ProxyMethod", "3");
options.AddRawSettings("ProxyHost", "proxy.example.net");
options.AddRawSettings("ProxyPort", "8080");

ProxyMethod 설정의 값 3 은 HTTP CONNECT를 선택합니다. 이 옵션은 애플리케이션의 일반적인 WinSCP Session 수명 주기를 통해 열고, 중개 서버가 인증을 요구하면 ProxyUsername 및 ProxyPassword 원시 설정을 추가하세요.

목록 실패 추적하기

세션 로그에서 협상된 수동 데이터 엔드포인트와 그 연결 실패를 확인하세요. 프록시는 해당 대상과 포트는 물론 FTP 제어 엔드포인트도 허용해야 합니다. 그래서 제어 포트로의 CONNECT만 허용하는 규칙은 로그인을 수락하고 목록은 거부할 수 있습니다.

제어 포트만 바꿔서는 차단된 데이터 경로가 해결되지 않습니다. 네트워크 정책을 점검할 때는 로그에 기록된 데이터 엔드포인트를 사용하세요.

이 예제는 21번 포트에서 명시적 FTPS를 시작하고 TLS를 협상합니다. 암시적 FTPS 엔드포인트에는 해당 FtpSecure 모드와 서버 포트를 사용하세요. 두 경우 모두 서버의 실제 TLS 호스트 이름과 인증서 검증 구성을 사용하세요.

관련 글