-
ALB 사용 환경에서 특정 IP 만 웹 접근하도록 설정NAVER Cloud 2022. 1. 14. 19:40
네이버클라우드의 ALB 에는 ACG 로 인입되는 트래픽을 제어할 수 없다. NACL을 이용해서 LB Subnet 단위로 제어할 수 있지만, LB 별로 제어해야 하는 IP 가 다를 경우 이 방법을 사용하기 어렵다.
LB 를 통해 서버로 트래픽이 들어올 때는 LB IP 를 달고 들어오기 때문에 서버의 ACG로도 source IP 를 제어할 수 없다.
이런 경우 ALB 에서는 모든 트래픽을 받고 서버에 설치한 apache, nginx 와 같은 웹서버에서 접근할 수 있는 IP 를 제어해야 한다.
ALB 는 생성이 되었다는 가정하에 CentOS apache 기준으로 설정하는 방법이다.
1. X-Forwarded-For 설정
먼저 서버로 들어오는 IP가 ALB IP 가 아닌 source IP 를 헤더에 가지고 들어올 수 있도록 설정을 변경한다.
X-Forwarded-For 설정을 하기 전에 access_log 를 보면 계속 ALB의 IP 만 찍힌다.
/etc/httpd/conf/httpd.conf 에서 아래와 같이 1) LogFormat을 수정 , 2) Directory "/var/www/html"에 접근 허용할 설정,
3) mod_remoteip.c 에 LB IP 설정 후 httpd 를 재시작한다.
vi /etc/httpd/conf/httpd.conf # 아래 내용과 같이 수정 # 1.%{X-Forwarded-For}i 를 추가 # 2.%h 를 %a 로 변경 # 3.Directory "/var/www/html" 에 접근을 허용할 IP 지정 (Source IP & LB IP) # 4.mod_remoteip.c 에 LB IP 추가 <IfModule log_config_module> # # The following directives define some format nicknames for use with # a CustomLog directive (see below). # LogFormat "%{X-Forwarded-For}i %a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%a %l %u %t \"%r\" %>s %b" common <IfModule logio_module> <Directory "/var/www/html"> Order deny,allow Deny from all Allow from 54.180.128.140 10.0.3.92 10.0.3.93 </Directory> <IfModule mod_remoteip.c> RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 10.0.3.92 10.0.3.93 </IfModule> # 서비스 재기동 systemctl restart httpd
설정이 정상적으로 되면, 아래와 같이 source IP -> LB IP 가 로그에 찍히는 것을 확인할 수 있고, 접근 허용을 설정한 IP는 200, 접근 허용을 설정하지 않은 IP는 403을 return 하는것을 확인할 수 있다.
반응형'NAVER Cloud' 카테고리의 다른 글
NKS 에서 GPU 사용 job 실행해보기 (0) 2023.07.25 네이버클라우드 Kubernetes (NKS) subaccount iam 인증 kubeconfig 생성 (0) 2023.02.02 VM 의 NIC 별 통신 트래픽 확인하기 - flow log 설정 (0) 2022.01.10 ALB Ingress 로 subdomain 분기 설정 (0) 2021.12.20 kubernetes Pod 에서 NAS 공유 볼륨 사용하기 (0) 2021.12.01