해커즈뉴스 / 해커대학

Donation bitcoin(기부용 비트코인 주소)

 
1Pq3K39XM5xx4CifGKgppXeavtWNNHH7K4
 
기부하신 비트코인은 "보안 취약 계층"을 위해 사용되고 있습니다.
 
 

Donation bitcoin(기부용 비트코인 주소)

 
1Pq3K39XM5xx4CifGKgppXeavtWNNHH7K4
 
기부하신 비트코인은 "보안 취약 계층"을 위해 사용되고 있습니다.
 

공지

 

1. 크롬 브라우저로 접속시 나오는 악성코드 경고창은 구글 크롬의 에러, 즉 오탐(탐지 오류)이므로 무시하시면 됩니다.

2. 이 사이트는 안전하며 깨끗하다는 것을 알려 드립니다.

 

해커즈뉴스 제공 초보 보안 상식


     항상 초심의 마음으로....
No, 84
조회: 7075
프록시 - Proxy 는 크래커를 지켜주지 못한다.  
=============================================================
제목 : Proxy 는 크래커를 지켜주지 못한다.
글쓴이 : beist (http://beist.org)
=============================================================




인터넷 상에서 데이터를 전송할 때 꼭 필요한 것 중에 하나가 IP Address 이다.
네트워크 상에서 IP 는 자신의 고유 주소로써 데이터를 송/수신할 때 꼭 필요한
것 중에 하나이다.

본래 Proxy 는 네트워크의 중간에 설치함으로써 Cache 등의 기능을 활용하여
네트워크 트래픽을 줄이거나 자원의 절약을 위해서 사용되었으나 근래에 들어서
그 용도가 많이 변질되었다.

Proxy 라 함은 주로 Web Proxy 를 많이 뜻하는데, Web Proxy 를 이용하여 인터넷을
사용할 경우 자신의 IP 를 노출시키지 않고 Proxy Server 의 IP 를 이용한다는
점에서, 사용자의 프라이버시를 지킬 수 있다는 것에 많은 사람들이 애용하고 있다.

그러나 특정 부류의 경우 Proxy 를 이용하여 악성 리플을 남기거나, 불법적인
행위를 하는 경우가 있는데, Proxy 의 익명성을 이용하여 이러한 행동을 한다면
이는 잘못된 생각이다. Proxy 는 사용자를 지켜주기 위해 개발된 것이 아니다.

이 글은 Proxy 의 익명성을 이용하여 인터넷에서 악의적인 행동을 하는
사람들을 대상으로 쓸 것이다.

Proxy 서비스를 제공해주는 A 라는 Proxy 서버가 있다고 가정하자. B 라는 사용자는
A Proxy 서버를 이용하여 C 사이트에 연결할 것이다. B 는 인터넷 익스플로어의
Proxy 관련 설정으로 A Proxy 를 지정하였다. 이럴 경우 B 사용자는 C 사이트에 연결
할 때 다음과 같은 경로를 거치게 된다. (중간의 Network 경로는 생략하였다.)

B (사용자) -> A (Proxy Server) -> C (웹 사이트)

보기에, B 사용자는 A Proxy 서버를 거쳐서 C 에 가기 때문에, C 사이트는 B 사용자의
주소를 모를 것처럼 보인다. 이 것이 Proxy 서버가 사용자의 익명성을 지켜준다고
생각한다. 하지만 실제로는 그렇지 않다.

Proxy 서버가 C 사이트에 Web Contents 를 요청할 때, 여러 가지 헤더를 넘기게
되는데, 이 때 Proxy 를 이용하는 원래 사용자의 IP 도 같이 넘겨주기 때문이다.
여기서 A Proxy 서버는 C 사이트에 Web 요청을 보낼 때, B 사용자의 IP 정보도
같이 넘겨주게 되는데, 그 메소드는 "X-Forwarded-For" 이다.

Apache 웹 서버를 대상으로 설명하자면, Apache 웹 서버는 Request 의 헤더 중에
X-Forwarded-For 라는 것이 있다면 이 것을 환경 변수에 저장한다. 즉, C 사이트는
A Proxy 서버를 이용하는 B 사용자의 IP 주소도 알 수 있다는 이야기가 된다.

여기서는 웹 사이트에 접속한 사용자가 Proxy 서버를 이용하여 들어왔는지 알아
내는 방법을 PHP 를 대상으로 설명해보겠다. PHP 에서는 Apache 웹 서버에서 저장한
환경 변수를 상속받아 PHP 의 환경 변수로 다시 저장하는데, Proxy 가 보내온
헤더의 정보 중 "X-Forwarded-For" 는, PHP 에서 $HTTP_X_FORWARDED_FOR 변수에
담기게 된다.

아래는 웹 사이트에 접속한 사용자가 Proxy 를 이용하는지 판별해주는 테스트
소스이다.


---------- proxy-check.php ----------

<html>
<head><title>Proxy Check</title></head>
<body>
<br>
<font size=2>
<?

// 만약 HTTP_X_FORWARDED_FOR 환경 변수가 존재한다면 Proxy 서버를 이용하여
// 접근하는 것이다.

if($HTTP_X_FORWARDED_FOR)
{
echo "당신은 Proxy 서버를 이용하고 있군요.<br><br>";
echo "<font color=blue>Proxy IP</font> : $REMOTE_ADDR<br>";
echo "<font color=red>Your IP</font> : $HTTP_X_FORWARDED_FOR<br>";
}
else
{
echo "당신은 Proxy 서버를 이용하지 않고 있습니다.<br><br>";
echo "<font color=red>Your IP</font> : $REMOTE_ADDR";
}

?>

</body>
</html>

---------- proxy-check.php ----------


위 소스를 테스트해보면 알 수 있지만, Proxy 서버를 이용하여 접근할 경우 원래
사용자의 IP 를 볼 수 있다.

이 글로 우리는 Proxy 서버를 사용하는 것이 사용자의 IP 를 숨겨주는 것이
아니라는 것을 알 수 있다. Proxy 를 이용하여 악의적인 행위를 해서는 안 될
것이다. 자신의 IP 가 노출되기 때문에 해서는 안된다는 것이 아니라, 악의적인
행위는 근절되야한다!!


만약 서버 관리자의 입장으로써, Proxy 서버를 이용하는 사람들을 막고 싶다면
HTTP_X_FORWARDED_FOR 환경 변수를 체크함으로 이용할 수 있을 것이다. 그러나
여기서 한가지 주의해야 할 점은, 회사나 학교 등에서는 내부 IP 를 사용하는
경우가 가끔 존재하는데, 이럴 경우 외부로 나가는 패킷은 집단 내에 존재하는
Proxy 서버를 통해서 나가게 되는 경우가 있다.

이럴 경우에, HTTP_X_FORWARDED_FOR 환경 변수가 존재한다고 무조건 사용자의
접근을 차단하는 방법을 이용해서는 안되고, Original IP 가 가상 IP 에서만
존재할 수 있는 것인지 확인을 한 후 처리를 해야할 것이다. 예를 들어 Original
IP 가 "192.168.0.100" 이라면 가상 IP 이다.

그러나 이 것도 100% 신뢰할 수는 없는데 그 이유에 대해서는 내가 쓴 "CGI
에서 Proxy 환경 변수를 이용할 경우 문제가 되는 점" 에서 참고하도록 하자.


그럼 이만..


                   
 
 
초보를 위한 정보는 이곳에서. ..
번호초보 보안상식첨부조회
86   자격증 - 보안관련 자격증 리스트    3231
85   네트워크 - 세계 IP 주소 분포도    3096
84   프록시 - Proxy 는 크래커를 지켜주지 못한다.    7075
83   윈도보안 - 윈도2k dns 보안     1877
82   윈도보안 - 윈도2k에서의 기초보안     1979
81   윈도보안 - 윈도xp/2k 방어하기     2193
80   기타 - 채팅에서 사용하는 약자들    2287
79   네트워크 - 네트워크 용어 사전    38616
78   윈도보안 - 스파이웨어 수동으로 제공하기    1843
77   리눅스보안 - 리눅스관련 정보 제공 사이트    3104

 
목록