[우테코 6기 레벨2] EC2 SSH 인바운드 제한 우회

새양·2024년 6월 5일
1

우테코 6기 일기장

목록 보기
9/16
post-thumbnail

AWS

EC2 생성

레벨 2 마지막 인프라 강의에서 AWS 접근을 할 수 있도록 IAM 계정을 할당 받았습니다.
2단계 인증을 등록하고 EC2 를 생성하게 되었고 저는 바로 Security 탭으로 가서 Inbound 규칙 부터 살펴보았습니다.

인바운드 규칙


22 SSH 가 아무 곳에서나 접근이 불가능 하며 캠퍼스 내의 인터넷을 사용해야만 접근이 가능한 상태입니다.

80 HTTP443 HTTPS 은 웹 통신을 위해 사용해야 하고, 테스트를 위해 8080 포트가 열려있는 것을 볼 수 있었습니다.

상황

선배 기수들께서 이야기를 하는 유튜브를 본 적이 있는데 서버에 문제가 생겨 고치려고 밤 중 캠퍼스 앞에 와서 인터넷을 연결하고 접속을 한 적이 있다라는 썰을 들려주시기도 하셨습니다.
우테코에서는 보안을 위해 크루의 불찰로 인해 SSH KeyGithub 에 올라가는 등의 문제가 생겨 EC2 가 털리는 상황을 피하기 위해 쉘 접속은 캠퍼스 내에서 가능하도록 제한을 해 둔 것 같습니다.

하지만 안전하게 관리만 할 수 있다면 서버 관리를 외부에서 하는 것을 생산성을 더욱 향상시켜 줄 것입니다.

EC2

8080 포트로 SSH 접속하기

8080포트로 접속하면 로컬의 22번 포트로 포워딩을 시켜주는 작업을 캠퍼스 내에서 EC2에 접속하여 사전에 한 번만 해주면 됩니다.

sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 22
  • -t nat NAT 테이블을 사용합니다.
  • -A PREROUTING PREROUTING 체인에 규칙을 추가합니다.
  • -p tcp TCP 프로토콜을 사용합니다.
  • --dport 8080 목적지 포트가 8080인 패킷을 대상으로 합니다.
  • -j REDIRECT 패킷을 다른 포트로 리디렉션합니다.
  • --to-port 22 패킷을 22번 포트로 리디렉션합니다.

테이블 규칙 보기

아래 명령어로 리라우팅 규칙이 잘 들어갔는지 확인할 수 있습니다.

sudo iptables -t nat -L PREROUTING -v -n

iptables 규칙 삭제

만약 두 번 이상 규칙이 추가되었거나 더이상 포워딩을 하고싶지 않을 경우 아래 명령어를 사용할 수 있습니다.

sudo iptables -t nat -D PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 22

## iptables 규칙 저장
이 규칙은 임시적이므로 시스템 재부팅 후에도 유지되도록 하려면 iptables 규칙을 저장하고 복원하는 스크립트를 설정해야 합니다.
Ubuntu에서는 iptables-persistent 패키지를 사용하여 이를 간편하게 관리할 수 있습니다.

```sh
sudo apt-get install iptables-persistent -y
sudo netfilter-persistent save

SSH 접속 해보기

ssh -i "[key-filename].pem" -p 8080 [user]@[domain]

하지말자

보안을 조금 더 강화하기 위해선 iptables 규칙으로 자신의 집 IP 에서만 8080 포트로 접속되도록 방화벽 설정을 하는 것이 좋습니다.

해당 EC2 는 우아한형제들 AWS 자원을 테크코스 크루들에게 제공해 주는 것이므로, 보안을 깊게 다루지 못할 경우 하지 않는 것이 좋으며, 코치가 제공해준 소형 테코톡 라이트닝 토크 에서 해당 방법을 발표하니 우테코에서 제공해주는 자산 또한 우아한 형제들의 자산이며 이는 모니터링 팀에서 다 지켜보고 있기에 보안상 권장하지 않는다고 하니 이런 방법도 있구나 정보만 아는 것이 좋을 듯 합니다.

그래도 하고싶다

단순히 모든 곳에서 접속이 가능한 포트 8080을 접속 제한이 있는 22 번 포트로 포워딩 하는 경우는 보안을 더욱 취약하게 만듭니다.
보안까지 생각하여 구성하는 방법도 있습니다.
나만 접속 가능한 배스천 서버 를 통해야만 접속이 되도록 할 경우 보안도 챙기며 어디서든 접속 가능한 환경도 가져갈 수 있습니다.

이는 이후 개발 서버 제작기 에서 다루도록 하겠습니다!

profile
안녕, 세상!

0개의 댓글