inline장치는 은 주로 network 디바이스가 된다. network를 고속도로라고 생각했을때 inline장치는 톨게이트 같은 역할을 합니다. bypass시키던지 drop시키던지 결정을 합니다.
특정 포트를 열어놓고 그 포트에 지나가는 패킷을 bit하나 틀리지않게 완전 똑같이 복사합니다. 이 패킷은 readOnly 속성을 띄며 패킷을 스니핑 하는것인데 이렇게하는 것을 sensor라고 합니다. 이렇게 스니핑하는 이유는 장애가 발생하는지 아닌지 확인하거나 탐지의 용도로 두는데 이것이 OutOfPath가 되는것입니다. 해당 작업은 네트워크 장비에 부하가 많이 걸리는 작업입니다.
예시로 고속도로에 과속감시 카메라가 있다고 빨리달리는 자동차를 새울수는 없지만 체크는 할 수 있게 되는것과 비슷합니다.
하나의 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는 유저모드계층에 어플리케이션에서 사용하는 것이라고 생각할 수 있겠습니다.
그렇다면 위 예시에서 왜 굳이 우회를해서 naver에 접근을 한 것일까요? 위 상황에서 naver에 입장에서는 9.9.9.9 ip로 들어온것이 아니라 3.3.3.3으로 들어온것으로 속일 수 있게 됩니다. 이 proxy를 사용해서 우회를 하게되면 주의해야 할 점이 생깁니다.
웹에서 https 를 사용할때 와이어 샤크를 활용해서 통신내역을 모니터링하게 됐을때 데이터를 수집하는 sensor가 분석을 하려고보니 ssl로 패킷이 암호화가 되게 됩니다. 그렇게 되면 이 패킷의 암호를 해석하기전까진 이 패킷이 뭔지 알 수 없게 됩니다.
이를 해결하는 방법중 하나가 소켓수준에 암호화 되기전에 proxy서버를 둬서 localhost:port 로 로컬 컴퓨터에서 프록시서버로 거쳐서 나가게 되는것입니다. 이렇게 되면 해당 proxy서버에는 암호화 되기 전에 데이터가 남아 있게 됩니다. 이런것을 도와주는 피들러 라는 툴이 있습니다.
네트워크 대역이 3.3.3.x이고 모든 pc가 프록시 설정을 해 놓은 상태로 가정을 합니다.
pc1번이 https 통신으로 특정 사이트에 접속할 경우, 프록시서버를 통해 접속하게 됩니다.
이때 악성 코드가 존재하는 사이트에 접속한다면 프록시 서버를 통해 외부에서 악성코드가 유입되는것을 차단해 줍니다. 프록시 서버가 보호 기능을 할 경우 프록시 서버를 Virus Wall 이라고 부른다.
프록시 서버의 감시 기능으로는 회사에서 특정 사이트에 접속하지 못하도록 차단할 수 도 있습니다.
프록시 서버는 네트워크 상 어디에 위치하느냐, 혹은 어느 방향으로 데이터를 제공하느냐에 따라 forward와 reverse로 나뉘게 됩니다.