네트워크

Inline, OutOfPath, proxy 개념 / proxy 활용과 reverse proxy 와 forward proxy

25G 2023. 8. 20. 21:12

inline 장치

inline장치는 은 주로 network 디바이스가 된다. network를 고속도로라고 생각했을때 inline장치는 톨게이트 같은 역할을 합니다. bypass시키던지 drop시키던지 결정을 합니다.

포트 미러링

특정 포트를 열어놓고 그 포트에 지나가는 패킷을 bit하나 틀리지않게 완전 똑같이 복사합니다. 이 패킷은 readOnly 속성을 띄며 패킷을 스니핑 하는것인데 이렇게하는 것을 sensor라고 합니다. 이렇게 스니핑하는 이유는 장애가 발생하는지 아닌지 확인하거나 탐지의 용도로 두는데 이것이 OutOfPath가 되는것입니다. 해당 작업은 네트워크 장비에 부하가 많이 걸리는 작업입니다.
예시로 고속도로에 과속감시 카메라가 있다고 빨리달리는 자동차를 새울수는 없지만 체크는 할 수 있게 되는것과 비슷합니다.

  • 위 두가지 장비가 다루는 데이터 단위는 패킷입니다.

proxy 란?

하나의 pc가 인터넷에 연결돼서 naver에 접속을 한다고 가정했을때 ip주소가 3.3.3.3이고 naver의 ip가 5.5.5.5 라고 가정하면 이둘간에는 소켓통신이 이루어 져 있을것입니다. 이때 만약에 ip가 9.9.9.9를 가진 pc가 naver로 접근할때 3.3.3.3 이 9.9.9.9의 요청을 대신해서 naver로 접근하게 해주는것입니다. 이렇게 대리로 접속하게 해 주는것이 proxy라고 합니다.

유저모드 어플리케이션 프락시 = 소켓 스트림 (유저모드계층)
인라인 아웃오브페스 = 패킷 (커널모드개층)
즉 proxy는 유저모드계층에 어플리케이션에서 사용하는 것이라고 생각할 수 있겠습니다.

proxy 활용 - 우회

그렇다면 위 예시에서 왜 굳이 우회를해서 naver에 접근을 한 것일까요? 위 상황에서 naver에 입장에서는 9.9.9.9 ip로 들어온것이 아니라 3.3.3.3으로 들어온것으로 속일 수 있게 됩니다. 이 proxy를 사용해서 우회를 하게되면 주의해야 할 점이 생깁니다.

  • proxyt서버에 소켓의 모든 통신을 감청을 할 수 있게됩니다.

    proxy 활용 - 분석

    웹에서 https 를 사용할때 와이어 샤크를 활용해서 통신내역을 모니터링하게 됐을때 데이터를 수집하는 sensor가 분석을 하려고보니 ssl로 패킷이 암호화가 되게 됩니다. 그렇게 되면 이 패킷의 암호를 해석하기전까진 이 패킷이 뭔지 알 수 없게 됩니다.
    이를 해결하는 방법중 하나가 소켓수준에 암호화 되기전에 proxy서버를 둬서 localhost:port 로 로컬 컴퓨터에서 프록시서버로 거쳐서 나가게 되는것입니다. 이렇게 되면 해당 proxy서버에는 암호화 되기 전에 데이터가 남아 있게 됩니다. 이런것을 도와주는 피들러 라는 툴이 있습니다.

    proxy 활용 - 감시와 보호

    네트워크 대역이 3.3.3.x이고 모든 pc가 프록시 설정을 해 놓은 상태로 가정을 합니다.
    pc1번이 https 통신으로 특정 사이트에 접속할 경우, 프록시서버를 통해 접속하게 됩니다.
    이때 악성 코드가 존재하는 사이트에 접속한다면 프록시 서버를 통해 외부에서 악성코드가 유입되는것을 차단해 줍니다. 프록시 서버가 보호 기능을 할 경우 프록시 서버를 Virus Wall 이라고 부른다.
    프록시 서버의 감시 기능으로는 회사에서 특정 사이트에 접속하지 못하도록 차단할 수 도 있습니다.

리버스 프록시와 포워드 포록시

프록시 서버는 네트워크 상 어디에 위치하느냐, 혹은 어느 방향으로 데이터를 제공하느냐에 따라 forward와 reverse로 나뉘게 됩니다.

  • 포워드 프록시
    • 클라이언트 바로 뒤에 프록시 서버가 놓여 져 있을때 같은 내부망에 존재하는 클라이언트의 요청을 받아 인터넷을 통해 외부 서버에서 데이터를 가져와 클라이언트에게 응답해 줍니다. 클라이언트가 서버에 접근하고자 할때 클라이언트는 타켓서버의 주소를 포워드 프록시에 전달하여, 포워드프록시가 인터넷으로 요청된 내용을 가져오는 방법입니다. naver.com에 요청을하면 포워드프록시가 대신 리소스를 받아와서 클라이언트에게 주는것입니다.
    • 흔히말하는 프록시서버가 포워드 프록시서버를 의미합니다.
    • 방화벽과 같은 개념으로 제한을 위해 사용됩니다. 직접적으로 웹사이트에 방문하는것을 방지하는 것과 동시에 특정 사이트에 방문하는것도 막을 수 있습니다.
    • 캐싱을 할때도 포워드 프록시가 사용됩니다. 이렇게 서버의 부하를 줄이는 효과를 낼 수 있습니다.
    • 클라이언트의 요청은 포워드 프록시서버를 통과할때 암호화 됩니다. 이는 클라이언트의 ip를 감춰주는 보안효과를 내줍니다. 이렇게 되면 본서버에서 어디서 요청을 왔는지 알기 힘들게 됩니다.왜냐하면 프록시 서버ip만 보이기 때문입니다.
  • 리버스 프록시
    • 웹서버/was 앞에 놓여 있는 것을 말합니다. 클라이언트는 웹서비스에 접근할 때 웹서버에 요청하는 것이 아닌 프록시로 요청하게 되고 프록시가 배후의 서버로부터 데이터를 가져오는 방식입니다. Reverse(배후) 네트워크 환경에서는 DMZ라고 부르는 내부 네트워크/외부 네트워크 사이에 위치하는 구간이 존재합니다. 이 DMZ에 두고 실제 서비스 서버는 내부망에 위치 시킨 후 서비스 하는것이 일반적입니다.
    • 리버스 프록시 서버를 여려개의 본 서버 앞에 두면 특정 서버가 과부화 되지 않게 로드벨런싱 할 수 있습니다.
    • 리버스 프록시를 사용해 본래 서버의 ip주소를 노출시키지 않을 수 있습니다.
    • 포워드프록시와 같이 캐싱을 할 수 도 있습니다
    • ssl암호화에 좋습니다. 리버스 프록시를 사용하면 들어오는 요청을 모두 복호화 하고 나가는 응답을 암호화 해주기때문에 클라이언트와 안전한 통신을 할 수 있고 본 서버의 부담을 줄여줄 수 있습니다.

'네트워크' 카테고리의 다른 글

unicast, broadcast, multicast 얕은 지식  (0) 2023.09.06
개발자가 TCP 송/수신 원리를 알아야 하는 이유  (0) 2023.08.20
와이어 샤크 작동 원리  (0) 2023.08.20
IP 해더 형식과 의미  (0) 2023.08.20
L2 스위치란?  (0) 2023.08.20