티스토리 뷰

1. Active  모드 사용시 Server 로 전달한 IP/PORT 가 INBOUND 에 등록되어있는지 확인

FTP 는 Control connection 과 Data connection 두 단계로 커넥션이 나뉘어져 있다.

  • Control connection : 일반적으로 21번 포트로 FTP 서버에 접속. 인증, 디렉토리 변경, 파일 전송 요청등과 같은 명령을 주고 받기 위한 커넥션
  • Data connection : 데이터 또는 디렉터리 리스트를 전송하는데 사용되는 커넥션

Control connection 을 맺은 후에 Data connection 을 맺을때 Active/Passive 모드에 따라서 커넥션을 맺는 주체가 달라진다.

  • Active Mode : Client 가 자신의 IP 와 Port 를 FTP 서버에게 전달하면 서버가 Client 로 역방향 Data connection 연결
  • Passive Mode : FTP Server 가 Client 에게 IP 와 Port 를 전달하면 Client 가 Server 로 Data connection 연결

Active Mode 를 이용할 경우에, 서버로 전달한 IP/PORT 가 NACL 에 INBOUND 로 등록되어있는지 확인해야한다. 또한, FTP Server 에게 응답을 해야하는데, NACL 은 stateless 이므로 요청에 대한 응답을 보낼때도 OUTBOUND 를 검사하게 된다. 즉, FTP Server 의 ephemeral ip 대역이 NACL OUTBOUND 에 등록되어있는 확인 필요.

 

2.  Passive 모드 사용시 Server 가 전달하는 IP/PORT 가 NACL OUTBOUND 에 등록되어있는지 확인

 IP 와 21 번 포트가 NACL OUTBOUND 에 등록되어있어 Control Connection 에 성공했다고 하더라도, Data Connection 을 다시 맺을때 서버가 전달한 IP/PORT 가 NACL OUTBOUND 에 등록되어있지 않다면, Data Connection 연결에 실패할 것이다. 

> EPSV
* Connect data stream passively
< 229 Entering Extended Passive Mode (|||10001|)
* Connecting to 10.0.0.1 (10.0.0.1) port 10001
*   Trying 10.0.0.1:10001...
* Connected 2nd connection to 10.0.0.1 port 10001
* SSL reusing session ID

 

Control Connection 이 맺어진 후 로그인에 성공한 후에, Data connection 을 맺기 위하여 서버로 부터 전달 받은 IP (10.0.0.1) 과 PORT (10001) 로 Data connection 을 시도하는것을 볼 수 있다.

 만약, 10.0.0.1 과 10001 포트가 NACL OUTBOUND 에서 열러있지 않다면 Data connction 을 맺는데 실패했을 것이다. FTP Server 측과 Data connection 에 사용되는 IP/PORT range 를 확인하여 NACL OUTBOUND 에 등록해야한다.

 

3. NAT Gateway IP 가 FTP Server ACL 에 등록되어있는지 확인

Pirvate subnet 의 EC2 는 public NAT Gateway 를 통해서 external internat 과 접속할 수 있다. 이때, 요청을 받은 서버측이 바라본 Client 의 IP 는 NAT Gateway 의 IP가 된다. NAT Gateway 의 IP 접속을 서버측이 허용하고 있는지 확인이 필요하다.

 

부록1) Ephemeral ip 과 NACL OUTBOUDN

 외부와 통신을 시도할떄 Client 측의 OS 는 ephmeral port 대역 안에서 해당 통신을 위한 Port 하나를 할당한다.

bash-5.2# netstat
tcp		0		0	localhost:42890	10.0.0.1:10003	ESTABLIHSED
tcp		0		0	localhost:41368	10.0.0.1:21	ESTABLIHSED
tcp		0		0	localhost:41364	10.0.0.1:21	ESTABLIHSED
tcp		0		0	localhost:42036	10.0.0.1:10001	ESTABLIHSED
tcp		0		0	localhost:42892	10.0.0.1:10002	ESTABLIHSED

 

 netstat 명령어의 결과를 보면 10.0.0.1 로의 커넥션을 확인할 수 있는데 Source 측의 Port 가 40000번대로 linux emphermeral port 범위 안에서 할당된 것을 볼 수 있다.

 10.0.0.1 서버측에서 응답을 보낼때 4000번대의 Port 로 보내질 것이기 때문에, Stateless 인 NACL INBOUND 에는 linux ephemeral port 대역이 허용되어있어야 EC2 에서 응답을 받을 수 있을 것이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함