【AWS 메모⑥】프록시 서버 구축(Squid3.5)
전제
다음 환경에서 실행.
서브넷
서브넷 이름
라우팅 테이블 설정
public-subnet
・local
private-subnet
· local · 인터넷 게이트웨이
보안 그룹
보안 그룹 이름
설정
public-sg
・사내 글로벌 IP 주소로부터의 액세스를 허가(포트 22) ・public-sg로부터의 액세스를 허가(포트 3128) ※ Squid의 포트
private-sg
· public-sg로부터의 액세스 만 허가 (포트 22)
EC2
호스트 이름
OS
보안 그룹
proxy-server
Amazon Linux 2
public-sg
private-server
Amazon Linux 2
private-sg
Squid의 동작 모드는, 포워드 프록시로 실시해, 프라이빗 서브넷 내의 EC2의 패키지 갱신은, Squid를 인스톨한 프록시 서버를 중계해 실시한다.
프록시 서버 설정
proxy-server에 Squid3.5를 설치합니다.
$ sudo yum install squid -y
자동 시작을 활성화합니다.
$ sudo systemctl enable squid
설정방법①
관리하는 서버의 대수나 서브넷의 수가 적은 경우는, Squid의 설정 파일에 직접 대상의 IP 주소 또는 서브넷의 CIDR을 기술하는 일이 있다.
Squid 설정 파일을 엽니다.
$ sudo vi /etc/squid/squid.conf
설정 파일에 다음 설정을 추가합니다.
여기에서는 프라이빗 서브넷으로부터의 모든 액세스를 허가한다.
# 追加: プライベートサブネット用の変数を作成
acl private-subnet src <プライベートサブネットのCIDR>
# 追加: プライベートサブネットからのアクセス許可
http_access allow private-subnet
포트 번호 지정(기본적으로 3128)
# Squid normally listens to port 3128
http_port 3128
설정 완료 후 서비스를 다시 시작합니다.
$ sudo service squid restart
설정 방법②
설정방법 ①과 달리 서버의 대수나 서브넷의 수가 많은 경우에 관리를 쉽게 하기 위해 화이트리스트라는 외부파일을 준비하는 방법이 있다.
다음 파일을 만듭니다.
$ sudo vi /etc/squid/acl/whitelist.txt
프록시를 경유하려는 서버의 사설 IP 주소 또는 서브넷의 CIDR을 설명합니다.
プライベートサブネットのCIDR
サーバーのプライベートIPアドレス
サーバーのプライベートIPアドレスその2
・
・
작성한 외부 파일을 설정 파일로 읽도록 설정한다.
$ sudo vi /etc/squid/squid.conf
다음 설정을 추가합니다.
# 外部ファイルを読み込み、変数を生成
acl Whitelist dstdomain "/etc/squid/acl/Whitelist.txt"
# 外部ファイルに設定されたサーバー、サブネットからのアクセスを許可
http_access allow Whitelist
http_access deny all
설정 완료 후 서비스를 다시 시작합니다.
$ sudo service squid restart
개인 서버 설정
프록시 서버를 통해 액세스하기 위해 yum 및 wget 구성 파일에 프록시 설정을 수행합니다.
yum 설정
구성 파일을 엽니다.
$ sudo vi /etc/yum.conf
프록시 설정을 추가합니다. (포트 번호는 Squid의 기본값)
proxy=http://<プロキシサーバーのプライベートIPアドレス>:3128
wget 설정
구성 파일을 엽니다.
$ sudo vi /etc/wgetrc
프록시 설정을 추가합니다. (포트 번호는 Squid의 기본값)
http_proxy=http://<プロキシサーバーのプライベートIPアドレス>:3128/
https_proxy=http://<プロキシサーバーのプライベートIPアドレス>:3128/
ftp_proxy=http://<プロキシサーバーのプライベートIPアドレス>:3128/
동작 확인
개인 서버에서 패키지를 설치합니다.
$ sudo yum install vim
wget의 동작도 확인한다.
$ wget -pkK https://www.gnu.org/software/wget/
덤 ① : 로그 포맷 설정
프라이빗 서버로부터의 액세스가 있으면, 프록시 서버에 로그가 보존된다.
$ sudo vi /var/log/squid/access.log
기본 설정이라면 액세스 시간을 알기 어렵습니다.
1568267525.352 1183 xxx.xx.xx.xx TCP_TUNNEL/200 19161 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267525.946 591 xxx.xx.xx.xx TCP_TUNNEL/200 4197 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267526.558 610 xxx.xx.xx.xx TCP_TUNNEL/200 6509 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267527.168 609 xxx.xx.xx.xx TCP_TUNNEL/200 7403 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267527.919 748 xxx.xx.xx.xx TCP_TUNNEL/200 19351 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267528.520 600 xxx.xx.xx.xx TCP_TUNNEL/200 5569 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267529.211 689 xxx.xx.xx.xx TCP_TUNNEL/200 11569 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
1568267529.817 603 xxx.xx.xx.xx TCP_TUNNEL/200 6385 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
로그 포맷의 설정은, Squid의 설정 파일에 추가한다.
$ sudo vi /etc/squid/squid.conf
여기 를 참고로 로그 설정을 추가한다.
logformat squid [%{%Y/%m/%d.%H:%M:%S}tl] %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
추가하면 서비스를 다시 시작하고 다시 로그 출력 확인을 한다.
$ sudo service squid restart
$ sudo cat /var/log/squid/access.log
로그 형식이 변경되었는지 확인합니다.
[2019/09/12.06:16:28] xxx.xx.xx.xx TCP_TUNNEL/200 19161 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:29] xxx.xx.xx.xx TCP_TUNNEL/200 4197 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:29] xxx.xx.xx.xx TCP_TUNNEL/200 6509 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:30] xxx.xx.xx.xx TCP_TUNNEL/200 7403 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:31] xxx.xx.xx.xx TCP_TUNNEL/200 19351 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:31] xxx.xx.xx.xx TCP_TUNNEL/200 5569 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:32] xxx.xx.xx.xx TCP_TUNNEL/200 11569 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
[2019/09/12.06:16:32] xxx.xx.xx.xx TCP_TUNNEL/200 6385 CONNECT www.gnu.org:443 - HIER_DIRECT/209.51.188.148 -
덤 ② : 요청 헤더 설정
요청 헤더에 정보를 올리고 싶지 않은 경우, 설정으로 무효로 할 수 있다.
구성 파일을 엽니다.
$ sudo vi /etc/squid/squid.conf
이하의 설정을 추가하는 것으로 무효로 할 수 있다.
request_header_access Referer deny all
덤 ③ : Git의 프록시 설정
다음 명령을 실행합니다.
$ git config --global http.proxy http://<プロキシサーバーのプライベートIPアドレス>:3128
$ git config --global https.proxy http://<プロキシサーバーのプライベートIPアドレス>:3128
덤 ④ : Curl의 프록시 설정
다음 명령을 실행합니다.
$ echo 'proxy = "http://<プロキシサーバーのプライベートIPアドレス>:3128"' >> ~/.curlrc
Reference
이 문제에 관하여(【AWS 메모⑥】프록시 서버 구축(Squid3.5)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kento75/items/a135ff505fd3a33d4495텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)