개요
일반적으로 Proxy Server 란 클라이언트가 서버와 통신 할 때, 프록시 서버를 거쳐 통신하도록 일종의 중계 기능을 제공하는 서버를 뜻하며, 다음과 같은 기능을 제공합니다.
- 특정 사이트에 대한 접근제어 (허용, 거부)
- 캐시를 통한 특정 리소스로의 접근 속도 향상
- 클라이언트 정보 숨김
- Inbound, outbound 컨텐츠에 대한 검사
Squid 는 대표적인 오픈소스(GPL) 프록시 서버이자 웹 캐시로, HTTP, HTTPS, FTP 등 널리 사용되는 네트워크 프로토콜을 지원합니다.
또한, Squid 를 웹 서버 앞에 배치하여 반복 요청을 캐싱하고 웹 트래픽을 필터링 또는 제한된 컨텐츠의 엑세스등을 할 수 있습니다.
Squid 를 사용하여 Forward Proxy 를 구성한 후 특정 도메인에 대해서만 Outbound 접속이 가능하도록 White List 로 구성하는 방법에 대해 소개합니다.
Squid 사용과 관련한 공식 가이드는 아래 링크를 참고하시기 바랍니다.
squid : Optimising Web Delivery
Squid: Optimising Web Delivery Squid is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more. It reduces bandwidth and improves response times by caching and reusing frequently-requested web pages. Squid has extensive access controls and makes
www.squid-cache.org
- 주의
Proxy Server를 구성할 때는 보안에 유의하여야 하며, 서비스 오픈 전 반드시 다음 사항을 체크하시기 바랍니다.
- 접속 허용할 URL White List 구성
- Proxy Server 에 접근할 자원의 허용 리스트 및 근거 관리
- Proxy Server 의 접속 로그 1 년 이상 저장
프록시 구성
테스트 환경 - 네이버클라우드 Ubuntu 20.04 서버 1대, 공인IP 또는 NAT GW 추가
이중화 구성 - 네이버클라우드 Ubuntu 20.04 서버 2대, 공인 로드밸런서, NAT GW( 사설망 통신일 경우 사설 로드밸런서)
Squid 설치
sudo apt install squid
#설정파일 백업
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original
sudo chmod a-w /etc/squid/squid.conf.original
#설정 변경
vi /etc/squid/squid.conf
- 기본 포트 변경과 호스트네임은 설정 권고
#기본 포트 변경 #
http_port 5000
#호스트네임 설정
visible_hostname sslvpntest
- ACL 변경 및 Cache off
#source ip 접근제어 설정
acl localnet src 192.168.1.6
http_access allow localnet
http_access deny all
#destnation url 접근제어 설정
acl allow_dst_reg dstdom_regex ncloud-docs
acl allow_dst_reg dstdom_regex fin-ncloud ncloud
http_access allow allow_dst_reg
#cache는 선택사항
cache deny all
- 기타 검토 사항
: 프록시 인증 추가 여부
: 로깅 설정 검토
cache_access_log /usr/local/squid/logs/access.log
cache_log /usr/local/squid/logs/cache.log
#숫자가 커질 수록 상세 정보 기록
debug_options ALL,1
Squid 주요 명령어 및 구동
Squid 실행 : systemctl start squid
Squid enable : systemctl enable squid
Squid 재실행 : systemctl restart squid
Squid 종료 : systemctl stop squid
Squid 상태 : systemctl status squid
유저 프록시 설정
위의 설정한 프록시를 사용하기 위해서는 단말기에서 프록시 설정이 필요합니다.
- Chrome(windows)
설정 - 시스템 - 컴퓨터 프록시 설정 열기
- safari(mac)
설정 - 개인정보보호 - 프록시 설정
- 리눅스(ubuntu, centos)
$ vi ~/.bashrc
(형식)
export http_proxy=username:password@proxy-server-ip:8080
export https_proxy=username:password@proxy-server-ip:8082
export ftp_proxy=username:password@proxy-server-ip:8080
export no_proxy=localhost, 127.0.0.1
(예시)
export http_proxy=111.111.111.111:5000
export https_proxy=111.111.111.111:5000
export ftp_proxy=111.111.111.111:5000
export no_proxy=localhost, 127.0.0.1
$ source ~/.bashrc
위의 설정은 특정 유저의 설정이며 서버 전역 설정은 environment에 추가해주면 프록시 사용이 가능합니다.
$ vi /etc/environment
(형식)
export http_proxy=username:password@proxy-server-ip:8080
export https_proxy=username:password@proxy-server-ip:8082
export ftp_proxy=username:password@proxy-server-ip:8080
export no_proxy=localhost, 127.0.0.1
(예시)
export http_proxy=111.111.111.111:5000
export https_proxy=111.111.111.111:5000
export ftp_proxy=111.111.111.111:5000
export no_proxy=localhost, 127.0.0.1
# 로그인 아웃/로그인
일시적인 프록시 사용을 위한 설정은 export를 활용합니다.
$ export HTTP_PROXY=username:password@proxy-server-ip:5000
$ export HTTPS_PROXY=username:password@proxy-server-ip:5000
- Repository 사용을 위한 프록시 설정
yum repository
$ vi /etc/yum.conf
proxy=http://[IP]:[PORT]
apt repository
$ vi /etc/apt/apt.conf.d/apt.conf
# apt.conf 파일 내 다음 내용 추가
Acquire::http::proxy “http://[IP]:[Port]/”;
Acquire::https::proxy http://[IP]:[Port]/”;
- docker 사용을 위한 프록시 설정
$ /etc/systemd/system/docker.service.d/http-proxy.conf
# http-proxy.conf 파일 내 다음 내용 추가
[Service]
Environment="HTTP_PROXY=http://[IP]:[Port]"
Environment="HTTPS_PROXY=http://[IP]:[Port]"
Conf 파일 수정 후에는 반드시 restart 를 수행하여야 합니다. daemon-reload 후 restart docker 를 수행하여 status 가 active인지 확인합니다.
맺음말
Squid proxy 라는 오픈소스를 활용하여 Forward-Proxy 를 구성한 후, 접근허용 목록(White lists)를 통해 도메인 기반의 접근제어를 구현하는 방법을 소개하였습니다. 소개한 Squid proxy 는 하나의 예시일 뿐, Proxy 역할을 수행할 수 있는 Nginx를 통해서도 구현이 가능합니다.
운영환경에 해당 아키텍처를 적용할 때는 이중화나 보안 검토도 중요한 항목입니다. 그중에서도 Forward Proxy 의 Outbound 가 any 로 오픈되어 있어 보안에 취약할 수 있으므로 각별한 주의가 필요합니다. 서두에 언급한 것 처럼, Proxy 접근 제어 및 White List 목록에 대한 철저한 관리를 통해 안전하게 사용하세요.
'IT' 카테고리의 다른 글
Feature Store - Feast (33) | 2024.07.03 |
---|---|
DVC 설치 및 활용 (0) | 2024.07.03 |
깔끔한 PPT 만드는 팁 (2) | 2024.06.07 |
MS Ignite 2023 : Common Generative AI Use Cases with Azure and Snowflake (0) | 2024.04.16 |
TeslaMate를 설치하여 테슬라 차량 데이터를 심층적으로 분석하는 상세 가이드. 단계별 설치 과정과 함께 TeslaMate를 통해 얻을 수 있는 인사이트를 알아보세요 (0) | 2024.04.11 |