ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 하는것을 확인할 수 있다. 

    반응형

    댓글

Designed by Tistory.