오늘의 공부 정리

33. Firewall & DMZ

justkod 2022. 8. 24. 22:49

GCP 쉘에서 도커를 설치하고 서버를 실행시켜도 아직 서버에 접속이 되지 않았다. 그 이유는 방화벽이라는 보안 시스템이 가로막고 있기 때문인데 이 방화벽을 해제하는 과정을 추가로 거쳐야 내 사이트에 접속할 수 있게 된다. 또한 외부에서 서비스를 제공할 때 내부의 데이터들을 보호하기 위해서 내,외부간의 접근을 제한하는 영역인 DMZ에 대해서 공부해보았다.


 

방화벽(Firewall)?

 

https://ko.wikipedia.org/wiki/%EB%B0%A9%ED%99%94%EB%B2%BD_%28%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%82%B9%29

 

방화벽(防火壁) 또는 파이어월(firewall)은 미리 정의된 보안 규칙에 기반한, 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안시스템이다.
 방화벽은 일반적으로 신뢰할 수 있는 내부 네트워크, 신뢰할 수 없는 외부 네트워크(예: 인터넷) 간의 장벽을 구성한다.
서로 다른 네트워크를 지나는 데이터를 허용하거나 거부하거나 검열, 수정하는 하드웨어나 소프트웨어 장치이다.
- wikipedia

이름에서 알 수 있듯 외부로부터 내부를 보호하기 위한 벽을 의미한다. 외부에 누가 있길래 내부의 데이터를 보호할까? 외부에는 우리의 데이터를 가로채가려고 노리는 해커들이 항상 존재하고 그들로 부터 내부의 네트워크 혹은 데이터를 지켜야하기 때문에 방화벽이라는 보안시스템이 존재한다. 당연하겠지만 방화벽의 주요 역할은 외부로부터의 접근을제어하고 접근하려는 사용자의 신분을 요구하게 되며 지난 로드밸런서에서 설명한 프록시 기능을 동일하게 지니고 있다. 

GCP에서의 방화벽 설정

기본적으로 처음에 만든 서버는 모든 외부 접근으로부터 방화벽이 존재한다. 왜냐하면 우리가 어떤 접근을 허용할지에 대한 방화벽 규칙을 설정해주지 않았기 때문이다. 따라서 위의 방화벽 설정 페이지에 접속해서 방화벽 규칙을 만들어준다. 여기서는 어떤 접근에 대해서 접근을 허용할지 정해주는데 여기서 허용해주는 일종의 스티커를 우리가 만들어둔 VM 인스턴스에 붙여주면 이제 우리가 만든사이트에 접속할 수 있게 된다.

0.0.0.0/0 은 모든 입력에 대해서 허용한다는 의미이고 3000번 포트로 접근한다는 뜻

이제 여기서 만든 방화벽 허용 스티커(?)를 우리의 VM 인스턴스에 붙여주어야 한다. VM인스턴스를 수정하게 되면 네트워크 태그를 추가하는 란이 있는데 이곳에 우리가 허용한 태크를 클릭해서 추가해준다. 이로써 우리의 서버는 모든 대상에 대해서 접근이 가능한, 방화벽이 해제된 상태가 된다.

 

DMZ

https://www.techtarget.com/searchsecurity/definition/DMZ

컴퓨터 네트워크에서 DMZ 또는 비무장 지대는 LAN(Local Area Network)을 다른 신뢰할 수 없는 네트워크(일반적으로 공용 인터넷)와 분리하는 물리적 또는 논리적 경계 지역이다. DMZ는 경계 네트워크 또는 차폐된 하위 네트워크 라고도한다. 공용 인터넷에서 사용자에게 제공되는 모든 서비스는 DMZ 네트워크에 배치되어야 합니다. 외부 대면 서버, 리소스 및 서비스는 일반적으로 DMZ에 위치하게 한다. 이러한 서비스 중 가장 일반적으로 사용되는 서비스로는 웹, 이메일, 도메인 이름 시스템, 파일 전송 프로토콜 및 프록시 서버가 있다. DMZ 서브넷은 두 화벽 사이에 배포 된다. 따라서 모든 인바운드 네트워크 패킷은 DMZ에서 호스팅되는 서버에 도착하기 전에 방화벽이나 기타 보안 어플라이언스를 사용하여 검사받게 된다. 한마디로 해킹의 위험으로부터 걱정없는 안전지대인 셈이다.