Cloud/GCP

Squid Proxy를 통한 GCP Web Console 접속

달빛궁전- 2024. 7. 30. 14:18
문서의 목적
Public Cloud Google Cloud Platform은 리소스 생성, 삭제, 확인 여러가지 업무를 Web Console에서 지원하고 있습니다.
VPN
을 통해 GCP의 리소스를 Public망이 아닌 VPN으로 접근은 가능하지만, Web Console의 경우에는 별도의 Web Proxy 사용하는 방안이 있습니다.
본 문서에서는 오픈소스인 Squid Proxy 사용하여 사용자가 VPN을 통해 WebConsole로 접근하는 방안에 대해 작성합니다.

 

 

유의사항
GCP에서는 별도의 secure web proxy라는 PaaS서비스를 제공하고 있습니다.
위의 Squid  proxy는 사용자가 설치, 구축, 유지보수를 다 하여야 하나 GCPSWP 사용한다면 간단한 설정으로도 사용이 가능합니다.

별도의 요금이 책정되므로, 상황에 맞추어 사용을 하면 됩니다.
https://cloud.google.com/secure-web-proxy/docs/overview?hl=ko
 

보안 웹 프록시 개요  |  Secure Web Proxy  |  Google Cloud

의견 보내기 보안 웹 프록시 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 보안 웹 프록시는 이그레스 웹 트래픽(HTTP/S)을 보호하는 데 도움이 되는 클

cloud.google.com

 

- 구성도

본 문서에서 목표로 하는 구성도 입니다.

 

 

- VM기본설정

기본 VM 설정

WebConsole 접속만을 위한 VM으로 자원은 크게 필요가 없습니다.

접속자 수가 늘어난다면, Memory 증설하여 사용하면 됩니다.

본 문서에서는 Ubuntu 22.04 LTS 버전을 사용하나, 기타 다른 linux OS에서도 사용이 가능합니다.

구분
머신 E2-micro
Core 1Core
Memory 1GB
Disk 10GB
OS Ubuntu 22.04 LTS
특이사항 접속자증가시 Memory 증설

 

 

- Squid Proxy 설치

 

명령어 비고
sudo apt update 설치 가능한 패키지 리스트를 최신화
sudo apt install squid Squid 설치
sudo systemctl status squid Squid 프로그램 상태 확인
Active (running)
면 동작임을 확인할 수 있음
sudo systemctl start squid Squid 프로그램 동작
sudo systemctl restart squid Squid 프로그램 재시동
sudo squid -k parse /etc/squid/squid.conf 올바른지 분석, 점검 툴
sudo cp /etc/squid/squid.conf squid.conf_backup

기존 설정파일을 복사 합니다.

 

패키지 업데이트

 

squid 설치

 

squid 동작여부 확인

 

sudo squid -k parse

 

해당 명령어는 /etc/squid/squid.conf 파일을 분석, 검토하는 것으로 실행 하면 문제여부를 검토합니다.
문제 발생시에는 squid가 기동 되지 않으므로, 해당 분석에서 경고가 발생한다면 config 파일을 수정 후 다시 재적용 합니다.

 

parse

 

- Squid Proxy 설정

Squid Config파일이 9000여줄 되는 오픈소스 프로그램입니다.
본 문서에서는 출발지(온프레미스) 설정과 사용할 Port, 마지막으로 허용할 GCP console 도메인 리스트 설정을 작성하도록 하겠습니다.

중점으로 설정이 필요한 부분은 아래 설정 파일을 참고부탁드립니다.

"/etc/squid/allowlist.txt" 는 .google.com을 입력합니다. 

https://console.cloud.google.com 만 접속하길 원한다면 mail부탁드립니다. (별도 리스트 존재)

 

Squid config File (Line 1333 부터)

 

기본 config 기준으로 Line : 1333 번째부터 수정합니다.

acl localnet src 192.168.1.0/24 #접속을 허용하는 On-premise의 내부네트워크 주소
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 443 # https
# 접속을 허용하는 Port들

acl allowlist dstdomain parameters "/etc/squid/allowlist.txt" #허용할 도메인리스트 파일경로
http_access allow allowlist #위 상단의 허용도메인 리스트에 있는 것만 허용처리
http_access deny All #모든요청차단 (위 리스트만 허용 후 차단됨)

Line 2121 : # Squid normally listens to port 3128
http_port 3128
알려진 Port보단 다른 포트로 변경합니다. 
기본으로 사용시에는 3128번을 사용합니다.

 

- Local Test

1. Proxy자체에서 curl을 통해 테스트를 진행합니다.

 

curl -x localhost:9090 http://www.naver.com

curl -x localhost:9090 console.cloud.google.com

 

아래와 같이 허용하지 않은 www.naver.com  이라면 거부 페이지가 발생됩니다.

ERROR The requested URL could not be retrieved 메시지가 발생

 

Access Denied 페이지를 확인할 수 있습니다.

 

허용된 URL이라면 해당 페이지가 문제 없이 표시됩니다.

 

허용은 되었는데 302 리다이렉트...

 

2. TestPC에서 프록시를 설정합니다.

 

WebBrower -> 설정 -> 프록시 -> 프록시 설정 열기

웹프록시 항목에 서버IP, 포트 입력

WebBrower에서 https://console.cloud.google.com 접속 테스트

 

프록시 선택

 

웹프록시 정보 입력