F T P
FTP 같은 경우는 command 포트와 data 포트 두가지가 사용된다. 운용방법에 있어서도 Active mode와 passive mode로 구분된다.
- Active mode
Client는 서버의 21번 포트로 접속한 후 로그인을 한다.
일단 로그인을 하게 되면 Client는 어떤 포트로 접속해도 되는지를 서버에게 알려주게 된다. 이때 서버는 자신의 20번 포트로 하여 Client가 말해준 포트로 접속을 시도하고 데이터를 전송한다.
1. Client(1023~ port) -> Server(21 port) Client가 서버에게 자신의 데이터 통신할 포트를 알려줌
2. Server(20 port) -> Client(1023~ port) Client가 알려준 포트로 서버가 접속함 (syn)
3. Client(1023~ port) -> Server (syn+ack)
4. Server(20 port) -> Client(1023~ port) (ack)
- Passive mode
Passive mode 에서는 서버가 Client로 접속시도를 하는 취약점이 존재하지 않는다.
Client가 서버의 21번 포트로 접속을 하면 서버가 임의의 포트를 Client에게 알려주고 Client는 서버가 알려준 포트로 다시 접속시도를 하여 데이터 포트가 오픈된다.
1. Client(1023~ port) -> Server(21 port) 서버가 Client에게 데이터 통신할 1023 이상의 포트를 알려줌
2. Clinet(1023~ port) -> Server(1023~ port) 서버가 알려준 포트로 접속 (syn)
3. Server(1023~ port) -> Clinet(1023~ port) 수신확인 및 연결 허락 (syn + ack)
4. Client(1023~ port) -> Server(1023~ port) 데이터 전송 (ack)
Active mode의 경우에는 데이터 세션을 맺기 위해 서버가 Client의 랜덤한 포트로 접속을 하기 때문에 방화벽단에서 Outbound -> Inbound 21, 20 포트와 Inbound -> Outbound 정책의 1023 이상의 모든 포트를 오픈해줘야 한다. 여기서 PIX 방화벽의 fixup 기능이 유용하게 쓰인다.
예를 들어 fixup protocol ftp 21 이와 같이 설정되어 있다면 PIX 방화벽은 데이터세션을 맺기 위해 동적으로 데이터 포트를 오픈한다. 즉
fixup protocol ftp 21
fixup protocol ftp 20
이와 같이 설정하지 않아도 된다는 것이다.
Passive mode의 경우에도 fixup protocol 기능이 동적으로 데이터세션 포트를 생성해 주기 때문에 정상적인 통신이 가능하게 된다.
데이터 세션 포트를 맺기 위해 Outbound(1023~ port) -> Inbound(1023~ port) 로 패킷이 전송될 때 fixup 기능을 이용하면 동적으로 데이터 포트가 오픈되기 때문에 모든 포트를 오픈할 필요가 없다.
방화벽에서 FTP 관련해서 정책 적용을 할 때 주의해야 할 구성도는 아래와 같다.
<그림 1>
<그림 2>
<그림 3>
보통의 경우에 <그림 3> 과 같이 구성되어 있는 경우가 대부분이지만 <그림 1> 과 같은 경우라면 F/W 1 에서도 FTP 관련 포트를 오픈해줘야 한다.
'Security' 카테고리의 다른 글
암호학 (0) | 2017.01.08 |
---|---|
사용자 인증 (0) | 2017.01.08 |
ubuntu 환경에 SNORT & BASE & Metasploit 설치 (0) | 2017.01.06 |
포트 스캐닝으로부터 OS 정보 숨기기 (0) | 2017.01.06 |
R.U.D.Y DDoS (0) | 2017.01.05 |