본문 바로가기

목록이 없습니다.

iptables를 통한 80번포트 8080포트로 리다이렉팅 설정하기

Server

    웹서버를 셋팅할 때 톰캣을 설치하는 경우 기본포트가 8080으로 지정됩니다. 그렇기 때문에 처음에 톰캣을 설치하고 배포를 완료하고 웹 브라우저를 통해 사이트에 접속하려고하면 ip 또는 도메인 이름 뒤에 콜론과 함께 포트를 같이 붙여주어야 접근이 가능합니다. 이러한 번거로움과 미관상(?) 보기 안좋기도 하고 접근성을 떨어뜨리기 때문에 이를 없애기 위해서 HTTP 기본 포트인 80포트를 8080으로 리다이렉팅 하는 작업이 필요합니다.

     

    여기서 톰캣의 포트를 80으로 설정하면 되지 않냐고 질문이 들어올 수 있는데 리눅스, 유닉스같은 부류의 OS는 1024포트 아래는 잘 알려진 포트(Well Known Port)라 하여 root계정이 아니면 사용할 수 없도록 되어 있습니다. 그렇기 때문에 80포트를 8080포트로 리다이렉팅하는것이 방법이라 할 수 있습니다. (물론 계발계정을 따로 두지 않는 경우엔 상관이 없겠지만.. 보안상 좋지 않다고 생각합니다, 불안하기도 하구요)

     

    80포트를 다른 포트로 리다이렉팅 하는 방법은 여러가지가 있겠지만 이번에는 운영체제에서 제공하는 iptables를 사용해서 설정하는 방법을 정리해보겠습니다.

    (authbind라고해서 설치하여 설정하는 방법도 있다고 합니다)

     


     

    명령어

    $ iptables -A PREROUTING -t nat -i <인터페이스> -p tcp --dport 80 -j REDIRECT --to-port 8080
    여기서 <인터페이스>에 들어갈 것은 명령어를 입력할 서버의 인터넷 장비 인터페이스를 뜻합니다. 리눅스 서버인 경우 ifconfig, 윈도우 서버인 경우 ipconfig 명령어를 통해서 외부아이피가 설정된 장비의 인터페이스를 확인할 수 있습니다.

     

    더보기
    -A : 새로운 룰 추가 (Add)
    ※ 여기서는 PREROUTING에 대한 룰을 추가함
    
    -t : 테이블을 지정하는 옵션
    ※ 여기서는 nat 테이블을 지정
    
    -i : 인터페이스 지정
    ※ 여기서는 인터넷에 연결되어 있는 장비를 eth0으로 지정 (실제로 자신이 설정하는 서버의 인터넷이 다른 장비에 연결되어있으면 위의 명령어와 똑같이 입력하면 안됨. ifconfig 명령어를 통해 연결되어있는 장비의 이름(인터페이스)를 맞게 설정해주어야함
    
    -p : 프로토콜 지정
    ※ 여기서는 tcp 지정
    
    --dport : 도착지 포트를 지정
    ※ 여기서는 80번 포트를 지정
    
    -j : 패킷을 어떻게 처리할지 지정
    ※ 여기서는 8080번 포트로 리다이렉트 처리

     

    위의 명령어를 통해 설정이 끝났습니다. 제대로 명령어가 실행됬는지 확인하려면 아래의 명령어를 통해 iptables의 목록을 확인할 수 있습니다.

     

    $ iptables -t nat -L

     

    Iptables 규칙 제거

    $ iptables -D PREROUTING -t nat -i <인터페이스> -p tcp --dport 80 -j REDIRECT --to-port 8080

    규칙 추가할 때 문법에서 맨 앞에 옵션을 -D로만 바꿔주면 지울 수 있습니다.

     

    재부팅 해도 유지되도록 설정

    보통 위에까지 설정해놓으면 서버가 꺼졌다가 켜지지 않는 이상 유지될텐데요 서버를 재부팅해야할 일이 빈번하게 일어나지는 않지만 가끔 해야할 상황이 생기기도 합니다. 그런데 단순히 재부팅을 했는데 기존 포트로 접속이 안되면 당황스럽겠죠. 그런 상황을 방지하기 위해서 미리미리 설정해둡시다.

     

    # service iptables save

     

    Ubuntu 16.04버전부터는 위의 명령어가 실행되지 않을겁니다. 별도 패키지를 설치해주시고 해당 패키지를 통해서 iptables 설정을 저장하실 수 있습니다.

     

    iptables-persistent 패키지 설치

    # apt-get install iptables-persistent

     

     

    iptables 저장

    # netfilter-persistent save
    # netfilter-persistent reload