Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 3개 있습니다.)
예전과는 달리, 요즘에는 심심치 않게 기업들의 내부 네트워크에서 Proxy 서버를 이용하는 것을 볼 수 있습니다.

개인적으로, 들어오는 요청을 막는 것에 대해서는 이해가 되지만, 나가는 요청에 대해서 막는 것은 ... 전혀 이해할 수가 없습니다. 오히려 그럼으로써, 개발자들의 개발생산성이 현저하게 줄어들게 되지요.

국내 모 기업같은 경우에는, 들어오고 나가는 사람의 노트북과 외장하드를 체크하는데, 그 기준이 도저히 이해할 수 없기도 합니다. 외장하드의 경우, 가지고 나갈 때 무조건 포맷을 하게 하는데요. ^^; 사실 그럼 누가 정보를 외장하드에 복사를 하겠습니까? 차라리 노트북 내장하드에 복사해서 빼내는 방법이 있는것을. 그런 걸 한번 겪고 나면 외부 개발자는 절대로 외장하드를 같이 들고 들어가지는 않을 것입니다. 그런데... 외장하드가 왜 있을까요? 필요하니까 있는 것이죠. 그 개발자는 그 외장하드가 없음으로 인해 평상시 발휘했던 개발 생산성을 그만큼 제한되어지는 결과만 낳을 뿐입니다.

나가는 요청을 80 포트로 제한하는 것이 왜 ... 쓸모없느냐고 묻는 분들이 계실 것 같은데요.
80 포트가 있다는 것 하나만으로도 얼마든지 외부로 파일을 업로드할 수 있지요. 그렇다면... Proxy 서버의 로그에 남게 되지 않느냐고 한 번 더 반문하시는 분이 계시겠지만. 정말로, 증거 없이 기업내 파일을 HTTP:80 포트를 통해 외부로 유출하고자 마음만 먹는다면,,, 암호화를 거쳐 생성된 binary 스트림을 외부에 업로드하면 되는 것입니다. 그런 패킷들은 Proxy 서버에 기록이 남는다고 해도 모니터링을 하고 있는 감시자들은 그것이 어느 파일의 내용인지 전혀 알 수가 없기 때문이죠.

물론, 이러한 일련의 조치를 통해서 다소 일상적인 외부로의 접촉을 줄일 수는 있습니다. 하지만, 중요한 것은... 그것이 결코 100% 안전한 방법이라고 볼수는 없습니다. 정말... 내부 자료에 대해서 보안을 하고 싶다면. 다음과 같은 지침으로 운영해야 합니다.

외부 개발자로 하여금, 노트북이 아닌 데스크톱 컴퓨터를 사용하도록 강제하여야 하며, 업무가 끝나고 그 컴퓨터를 업체로 가지고 나갈 때에는 완벽하게 포맷을 해줘야 합니다. 물론, 해당 데스크톱에서는 내부 네트워크만 사용하게 하여야 하며 절대로 인터넷 접속을 해줘선 안되는 것이지요.

음... ^^ 서론이 길었군요.
암튼... 저 역시 요즘 그러한 이유로 인해서 아주 답답한 심정을 가눌 길이 없습니다. 쓸데없이 나가는 요청을 막는 바람에 ^^ 평소에 해오던 자유로운 작업들을 제한받게 되니까요. 일례로, 요즘... 모 은행에 들어가서 작업을 하고 있는데, Proxy 경유로 인해서 아웃룩 익스프레스를 통한 뉴스그룹 접속도 못하고 있습니다.

그래서,,, 고민을 좀 하다가 방법을 찾은 것이, HTTPort / HTTHost였습니다.
속도는 좀 느리지만, 그나마 이걸로 약간의 불편함은 덜게 되었습니다. 암튼... ^^

대강 이론은 이렇습니다. 방화벽 외부의 컴퓨터(예를 들어, 집에 있는 컴퓨터)에 HTTHost 프로그램을 구동시키고 해당 프로그램은 80 포트로 요청을 대기하고 있게 됩니다. 방화벽 안에 있는 컴퓨터에서는 HTTPort 프로그램을 구동시키고, 여러 가지 Application Port로 포트를 Listening 상태로 열어두고 있게 됩니다. 이후, Outlook Express에서 뉴스그룹 서버를 127.0.0.1:119로 설정을 하면, OE에서의 모든 요청이 HTTPort로 전달되어지고, HTTPor 는 해당 패킷을 HTTP 프로토콜로 한 번 감싼 후에 정해진 Proxy 서버를 통해 원하는 패킷을 HTTHost에게 전달하는 것입니다.
HTTHost 는 들어온 요청에 대해서 HTTP 프로토콜을 제거하고 원래의 패킷으로 실제 뉴스그룹 서버에 접속을 할 수 있게 됩니다.

실제 동작 방법을 나타낸 그림을 HTTPort에 소개된 그림에서 볼 수 있습니다.




HTTPPort/HTTHost는 다음의 URL에서 다운로드할 수 있습니다.
http://www.htthost.com/

HTTPort의 설정 방법은 해당 프로그램을 실행시킨 후, "?" 버튼을 통한 각각의 설정란에 클릭하는 방법으로 익히실 수 있습니다.
HTTHost의 설정 방법은, 해당 프로그램을 설치한 후 같은 폴더에 있는 Readme.txt 파일을 통해서 가능하고요.

참고로, 방화벽 외부의 컴퓨터에 굳이 HTTHost를 둘 수 없는 사용자라도 공용으로 24시간 동작하는 HTTHost에 접속해서 해당 기능을 정상적으로 이용할 수 있습니다. 그나저나... 이렇게... 어차피 접근할 수 있는 뉴스그룹을 왜 막느냐 말입니까?... 기업에 있는 보안 관계자 여러분들. 딱 2가지 환경으로 네트워크를 구분해 주시길 바랍니다.

"HTTP조차 허용되지 않는 완벽한 내부 네트워크와 그 이외에 나가는 포트를 모두 허용하는 네트워크."
[연관 글]






[최초 등록일: ]
[최종 수정일: 6/25/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2009-07-14 11시43분
.NET Service Bus 응용 사례: SocketShifter
; http://www.sysnet.pe.kr/2/0/752
kevin25
2022-07-23 10시28분
blackarrowsec/pivotnacci
 - A tool to make socks connections through HTTP agents
; https://github.com/blackarrowsec/pivotnacci
정성태

... 121  [122]  123  124  125  126  127  128  129  130  131  132  133  134  135  ...
NoWriterDateCnt.TitleFile(s)
10873정성태11/25/201525490.NET Framework: 540. C# - 부동 소수 계산 왜 이렇게 나오죠? (2) [3]파일 다운로드1
10872정성태11/24/201532466.NET Framework: 539. C# - 부동 소수 계산 왜 이렇게 나오죠? (1) [1]
10871정성태11/23/201528075오류 유형: 313. SignTool Error: No certificates were found that met all the given criteria.
10870정성태11/23/201528938오류 유형: 312. 윈도우 10 TH2 (버전 1511) 업데이트가 안되는 경우 [1]
10869정성태11/23/201524709오류 유형: 311. certutil 실행 오류 - 0x80070057 [1]
10868정성태11/20/201524593제니퍼 .NET: 25. 제니퍼 닷넷 적용 사례 (5) - RestSharp 라이브러리의 CPU High 현상파일 다운로드1
10867정성태10/18/201527154.NET Framework: 538. Thread.Abort로 인해 프로세스가 종료되는 현상
10866정성태10/14/201523356.NET Framework: 537. C# - Reflection의 박싱 없이 값 형식을 다루는 방법파일 다운로드1
10865정성태10/13/201523133.NET Framework: 536. Thread.Abort의 스레드 종료 지연파일 다운로드1
10864정성태10/12/201521340.NET Framework: 535. aspnet.config 파일의 설정을 읽는 방법
10863정성태10/9/201526153.NET Framework: 534. ASP.NET 응용 프로그램이 예외로 프로세스가 종료된다면?
10862정성태10/9/201524504오류 유형: 310. 비주얼 스튜디오 - Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL))
10861정성태10/9/201529156기타: 54. 도서: 시작하세요! C# 6.0 프로그래밍: 기본 문법부터 실전 예제까지 (2)
10860정성태10/5/201526603개발 환경 구성: 277. IIS AppPool의 시작/중단에 대한 이벤트 로그 확인 방법
10859정성태10/5/201527802.NET Framework: 533. C#에서 string 형식이 primitive일까요? [6]
10858정성태10/2/201524306VS.NET IDE: 105. Visual Studio의 단위 테스트 작성 시 Fakes를 이용한 메서드 재정의 방법 [1]파일 다운로드1
10857정성태10/1/201520337VS.NET IDE: 104. Visual C++ 프로젝트의 빌드 이벤트에서 환경 변수 사용하는 방법
10856정성태9/30/201531611.NET Framework: 532. WPF DataGrid의 데이터 바인딩 시 리플렉션의 부하는 어느 정도일까요?파일 다운로드1
10855정성태9/30/201521308.NET Framework: 531. C# - XSLT 내의 javascript에 전달한 XML 노드의 타입은?
10854정성태9/30/201521823오류 유형: 309. C# - 포인터를 쓰는 경우 VerificationException이 발생한다면?
10853정성태9/21/201519511오류 유형: 308. 공백 문자를 포함한 계정명의 권한으로 Visual Studio 확장을 설치할 때 오류 발생
10852정성태9/17/201524545VC++: 92. C++ 생성자를 DLL로부터 동적 로드해 객체를 생성한다면? [2]파일 다운로드1
10851정성태9/15/201524286.NET Framework: 530. C# - 중위식을 후위식으로 변환하는 예제파일 다운로드1
10850정성태9/14/201522950.NET Framework: 529. C# - volatile 키워드로 인한 차이점을 발생시키는 예제 [1]파일 다운로드1
10849정성태9/14/201557072오류 유형: 307. CLR20r3 오류 해결을 위해 mscorlib.dll을 덮어쓸때 주의할 점 [12]
10848정성태9/8/201527453VS.NET IDE: 103. Visual Studio의 Ctrl + F5 실행 동작파일 다운로드1
... 121  [122]  123  124  125  126  127  128  129  130  131  132  133  134  135  ...