(MS AZURE) SSH Tunneling(port forwarding)

lgw2236·2023년 3월 23일
0

주저리 주저리

보안 이슈로 인해 DB 접근 방식을 SSH 터널링을 사용해서 우회 접근 하도록
변경해야하는 인프라 변경건이 생겼다.
기존 RDS 접근은 Paas로 RDS에 다이렉트로 접근하기 때문에
Azure의 인바운드 규칙에 의해 접근권한이 컨트롤 되고 있었는데,
개인적인 생각으로는 Azure의 인바운드 규칙만으로도 외부 접근에 대해서는
대처가 충분히 될 정도로 강력한 보안성을 가진다고 생각했었지만
생각해보니 로컬 PC가 해킹 당했을 경우, 데이터베이스의 접근을 블록해줄 무언가가 없기 때문에 확실히 기존 방식이 완벽하진 않음을 알 수 있었다.
그래서 이 단점을 커버하기 위해 SSH 터널링(Port forwarding)으로 보안정책을 반영하는 것으로..

SSH ?

SSH 는 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜로
일반적으로는 Public key / Private key를 사용하는 
비대칭 암호화(Asymmetric Encryption) 방식을 사용한다.

SSH Tunneling이란 ?

SSH 클라이언트와 서버 간의 커넥션이 되어 만들어진 통로가 "터널"
여기에 포트 포워딩(Port Forwarding)을 이용하면 만들어진 터널을 다른 애플리케이션이 이용할 수 있다.
방화벽을 우회할 수도있으며, 암호화를 지원하지 않는 프로그램을 SSH 터널을 통해 안전하게 사용할 수 있게 할 수 있다.

 
로컬 터널링 - 클라이언트에서 서버로 연결하여 서버의 포트를 이용함

리모트 터널링 - 서버에서 클라이언트로 연결하여 클라이언트의 포트를 이용함

RDS 접근 플로우

결론적으로 Azure RDS 까지 접근하는 플로우는 아래와 같게 변경되었다.

AS-IS : local(ex) -> RDS (인바운드에서 접근 IP 허용)
TO-BE : local(ex) -> SSH HOST(Azure VM instant) -> RDS (Azure) private EndPoint 

SSH 터널링 예시(MySQL-Workbench)

1. workBench(Standard TCP/IP over SSH) 선택

2. SSH & RDS 정보 입력

3. ssh(port:22) 연결

4. rds(port:3306) 연결

5. Connection 완료

끝으로...

해당 방법은 SSH 터널링의 관해 DB TOOL(MySQL - WorkBench)를 이용해 
RDS에 port forwarding 을 진행하는 것을 예시로 진행해보았다..
한번 하기에는 재밌는 경험이였지만 해당 보안 이슈를 해결하면서 느낀점..
네트워크는 정말.... 정말.... 다시는 보고 싶지가 않다 ... 생각하고 싶지도.... 
VM.... SubNet.... 대역대... ㅠㅠ 스트레스

데브옵스분들 정말 존경스럽습니다.. 
profile
어제보다 오늘 더

0개의 댓글