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

1  2  3  4  5  6  7  8  [9]  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
13411정성태9/12/20233555Windows: 252. 권한 상승 전/후 따로 관리되는 공유 네트워크 드라이브 정보
13410정성태9/11/20235090닷넷: 2141. C# 12 - Interceptor (컴파일 시에 메서드 호출 재작성) [1]
13409정성태9/8/20233924닷넷: 2140. C# - Win32 API를 이용한 모니터 전원 끄기
13408정성태9/5/20233894Windows: 251. 임의로 만든 EXE 파일을 포함한 ZIP 파일의 압축을 해제할 때 Windows Defender에 의해 삭제되는 경우
13407정성태9/4/20233619닷넷: 2139. C# - ParallelEnumerable을 이용한 IEnumerable에 대한 병렬 처리
13406정성태9/4/20233606VS.NET IDE: 186. Visual Studio Community 버전의 라이선스
13405정성태9/3/20234020닷넷: 2138. C# - async 메서드 호출 원칙
13404정성태8/29/20233592오류 유형: 876. Windows - 키보드의 등호(=, Equals sign) 키가 눌리지 않는 경우
13403정성태8/21/20233389오류 유형: 875. The following signatures couldn't be verified because the public key is not available: NO_PUBKEY EB3E94ADBE1229CF
13402정성태8/20/20233479닷넷: 2137. ILSpy의 nuget 라이브러리 버전 - ICSharpCode.Decompiler
13401정성태8/19/20233739닷넷: 2136. .NET 5+ 환경에서 P/Invoke의 성능을 높이기 위한 SuppressGCTransition 특성 [1]
13400정성태8/10/20233577오류 유형: 874. 파이썬 - pymssql을 윈도우 환경에서 설치 불가
13399정성태8/9/20233513닷넷: 2135. C# - 지역 변수로 이해하는 메서드 매개변수의 값/참조 전달
13398정성태8/3/20234349스크립트: 55. 파이썬 - pyodbc를 이용한 SQL Server 연결 사용법
13397정성태7/23/20233830닷넷: 2134. C# - 문자열 연결 시 string.Create를 이용한 GC 할당 최소화
13396정성태7/22/20233610스크립트: 54. 파이썬 pystack 소개 - 메모리 덤프로부터 콜 스택 열거
13395정성태7/20/20233493개발 환경 구성: 685. 로컬에서 개발 중인 ASP.NET Core/5+ 웹 사이트에 대해 localhost 이외의 호스트 이름으로 접근하는 방법
13394정성태7/16/20233473오류 유형: 873. Oracle.ManagedDataAccess.Client - 쿼리 수행 시 System.InvalidOperationException
13393정성태7/16/20233643닷넷: 2133. C# - Oracle 데이터베이스의 Sleep 쿼리 실행하는 방법
13392정성태7/16/20233537오류 유형: 872. Oracle - ORA-01031: insufficient privileges
13391정성태7/14/20233559닷넷: 2132. C# - sealed 클래스의 메서드를 callback 호출했을 때 인라인 처리가 될까요?
13390정성태7/12/20233499스크립트: 53. 파이썬 - localhost 호출 시의 hang 현상
13389정성태7/5/20233542개발 환경 구성: 684. IIS Express로 호스팅하는 웹을 WSL 환경에서 접근하는 방법
13388정성태7/3/20233688오류 유형: 871. 윈도우 탐색기에서 열리지 않는 zip 파일 - The Compressed (zipped) Folder '[...].zip' is invalid. [1]파일 다운로드1
13387정성태6/28/20233739오류 유형: 870. _mysql - Commands out of sync; you can't run this command now
13386정성태6/27/20233798Linux: 61. docker - 원격 제어를 위한 TCP 바인딩 추가
1  2  3  4  5  6  7  8  [9]  10  11  12  13  14  15  ...