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
정성태

... 31  32  33  34  [35]  36  37  38  39  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
13064정성태5/18/202215245.NET Framework: 2016. C# - JIT 컴파일러의 인라인 메서드 처리 유무
13063정성태5/18/202215633.NET Framework: 2015. C# - 인라인 메서드(inline methods)
13062정성태5/17/202216551.NET Framework: 2014. C# - async/await 그리고 스레드 (4) 비동기 I/O 재현 [1]파일 다운로드1
13061정성태5/16/202215334.NET Framework: 2013. C# - FILE_FLAG_OVERLAPPED가 적용된 파일의 읽기/쓰기 시 Position 관리파일 다운로드1
13060정성태5/15/202218813.NET Framework: 2012. C# - async/await 그리고 스레드 (3) Task.Delay 재현파일 다운로드1
13059정성태5/14/202216742.NET Framework: 2011. C# - CLR ThreadPool의 I/O 스레드에 작업을 맡기는 방법 [1]파일 다운로드1
13058정성태5/13/202216705.NET Framework: 2010. C# - ThreadPool.SetMaxThreads 사용법 [1]
13057정성태5/12/202218235오류 유형: 812. 파이썬 - ImportError: cannot import name ...
13056정성태5/12/202214339.NET Framework: 2009. C# - async/await 그리고 스레드 (2) MyTask의 호출 흐름 [2]파일 다운로드1
13055정성태5/11/202218745.NET Framework: 2008. C# - async/await 그리고 스레드 (1) MyTask로 재현 [11]파일 다운로드1
13054정성태5/11/202215631.NET Framework: 2007. C# - 10진수 숫자를 담은 문자열을 숫자로 변환하는 방법 [11]파일 다운로드1
13053정성태5/10/202215265.NET Framework: 2006. C# - GC.KeepAlive 메서드의 역할
13052정성태5/9/202215379.NET Framework: 2005. C# - 생성한 참조 개체가 언제 GC의 정리 대상이 될까요?
13051정성태5/8/202214752.NET Framework: 2004. C# XingAPI - ACF 검색 결과로 구한 CSV 파일을 통해 퀀트 종목 찾기파일 다운로드1
13050정성태5/6/202215034.NET Framework: 2003. C# - COM 개체의 이벤트 핸들러에서 발생하는 예외에 대한 CLR의 특별 대우파일 다운로드1
13049정성태5/6/202212856오류 유형: 811. GoLand - Error: Cannot find package
13048정성태5/6/202215023오류 유형: 810. "ASUS TUF GAMING B550M-PLUS (WI-FI)" 모델에서 블루투스 장치가 인식이 안 되는 문제
13047정성태5/6/202214571오류 유형: 809. Speech Recognition could not start
13046정성태5/5/202215106.NET Framework: 2002. C# XingAPI - ACF 파일을 이용한 퀀트 종목 찾기(t1857)
13045정성태5/5/202215434.NET Framework: 2001. C# XingAPI - 주식 종목에 따른 PBR, PER, ROE 구하는 방법(t3341 예제)
13044정성태5/4/202214209오류 유형: 808. error : clang++ exited with code 127
13043정성태5/3/202213301오류 유형: 807. C# - 닷넷 응용 프로그램에서 Informix DB 사용 시 오류 메시지 정리
13042정성태5/3/202214506.NET Framework: 2000. C# - 닷넷 응용 프로그램에서 Informix DB 사용 방법파일 다운로드1
13041정성태4/28/202214581개발 환경 구성: 642. Informix 데이터베이스 docker 환경 구성
13040정성태4/27/202214194VC++: 156. 비주얼 스튜디오 - Linux C/C++ 프로젝트에서 openssl 링크하는 방법
13039정성태4/27/202217318.NET Framework: 1999. C# - Playwright를 이용한 간단한 브라우저 제어 실습
... 31  32  33  34  [35]  36  37  38  39  40  41  42  43  44  45  ...