Reference
- https://cloudest.oopy.io/posting/051
- https://err-bzz.oopy.io/f5616e26-79ca-4167-b2eb-140de69b9b54 (PROXY에 대한 설명 참조)
목표
Window Client의 웹에서 특정 도메인으로만 접속할 수 있게 제어하고 싶음
✔ 위 구조의 WorkSpace와 AWS Console URL은 이전 글에서 만든 리소스들임
✔ WorkSpace가 아닌 Window EC2로 실습해도 무관하며, 접속하고자 하는 URL도 본인이 원하는 URL로 사용
그리고 이는 Squid 라는 오픈소스 소프트웨어 프록시 서버를 통해 구현할 수 있다
※ Squid Proxy Server는 Workspaces가 존재하는 VPC 대역으로부터 TCP 3128 Port를 허용해줘야 한다
※ Squid Proxy Server EC2의 Networking 속성에서 source/destination check를 중지시켜야 한다
시작!
1) Squid 설치 (root로 진행)
yum install -y squid
2) ACL 설정
vi /etc/squid/squid.conf
파일의 초기 내용은 아래와 같다
#
# Recommended minimum configuration:
#
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
#
# Recommended minimum Access Permission configuration:
#
# Deny requests to certain unsafe ports
http_access deny !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports
# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager
# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all
# Squid normally listens to port 3128
http_port 3128
# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 100 16 256
# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid
#
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
이 중 allow할 네트워크 대역과 port, ACL만을 쓴다면 아래와 같다
acl localnet src 10.0.0.0/16 # VPC 대역
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 443 # https
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
acl allow_dst dstdomain .honglab.awsapps.com # 허용할 도메인
http_access allow allow_dst # 위의 allow_dst의 애들은 허용한다
http_access deny all # 위에서 허용한 애들 말고는 다 deny
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
3) Squid 시작/활성화
systemctl start squid
systemctl enable squid
4) 클라이언트(윈도우) 설정
먼저, 현재 클라이언트에서는 허용하고 싶은 도메인 뿐만 아니라 google.com이나 naver.com 등 모든 웹에 접속이 가능하다
윈도우의 Setting > Network & Internet > Proxy
Automatically detect settings를 Off시키고, Use a proxy server를 On 시킨 후,
Proxy Server의 IP와 Squid 기본 포트 3128을 적어주자 (포트는 위의 squid.conf 파일에서 변경 가능)
그러고 다시 웹에 가보면?
구글과 네이버에 접속할 수 없다
그럼 내가 허용한 도메인에 접속해보겠다
얘는 아주 잘 나온다...그러나 로그인을 했더니
이는 URL에 접속할 때 다른 URL에서 리소스를 불러오는 경우가 있기 때문에 생긴다
걱정말고 F12를 눌러 개발자 도구의 Network 창을 킨 후 다시 로그인을 진행해보면 어느 URL에도 액세스를 해야하는지 확인할 수 있다
계속해서 실험을 해 본 결과, AWS Console에 접속하기 위해선 아래의 도메인들을 추가로 허용해줘야 함을 알 수 있었다
.cloudfront.net .aws.amazon.com .amazonaws.com .awsstatic.com
squid.conf 파일을 위와 같이 수정해준 후, systemctl restart squid를 해주었다
WorkSpace로 돌아와보니 AWS Console 접속이 잘 되는걸 확인할 수 있다
끝!
'공부 > Linux' 카테고리의 다른 글
[Linux] cgroup, cpu (3) | 2024.11.04 |
---|---|
[Linux] RADIUS Server 구축해서 AWS Directory Server에 연동하기 (LinOTP, FreeRADIUS) (2) | 2021.08.29 |
[Linux] crontab 기초 & 스크립트 작성 팁 (0) | 2021.04.29 |
[Linux] SSH 포트 변경하기 (0) | 2021.03.14 |
[Linux] SWAP 메모리 설정 (0) | 2021.02.16 |
댓글