티스토리 뷰
스팸을 걸러내는 방법중에 몇년전부터 유행인 RBL (Realtime Blackhole List; Relay Block List)이라는 것이 있다. 이 서비스는 DNS 서비스 즉, 영문 이름을 IP 주소로 변환시켜주는 도메인 네임 서비스를 기반으로 만들어지는데, 그 개념이야말로 상당히 깜찍하다.
메일서버 입장에서 보면, 지금 접속해 들어온 IP 주소가 혹시 스패머가 이용하는 설정이 제대로 안되어 아무나 메일 서버로 사용되는 서버이거나, 아니면 실제 메일 발송기가 장착된 스팸 발송 머신이 아닐까 확인할 수 있는 방법이 있다면 참 좋은 것이 아니겠는가?
이를 위해서 별도의 연동 라이브러리가 필요없이 DNS를 기반으로 그 서비스를 한다니 참 신통방통한 방법이다. 그 원리는 다음과 같다.
만약 외부에서 접속해 들어온 IP가 172.17.122.20 이라하고, "172.16.122.20.rbl-service.net" 라는 호스트 명에 해당하는 IP 주소를 찾아보는 일상적인 행위(?)를 자신의 DNS 서버에게 물어 본다고 가정하자. 그러면 그 DNS 서버는 최상위 도메인 net을 주관하는 서버에게 rbl-service.net 의 DNS 서버를 알아낼것이고, 그 서버에게 저런 장황한 영문 호스트가 있는지 물어 보게 된다. 그러면, 그 호스트에 만약 172.16.122.20이 확실히 스패머인지 알고 있다면 "127.0.0.2" 라는 IP 주소를 돌려준다고 하자
이런 시나리오에서 "127.0.0.2" 라는 IP는 결코 사용되지 않는 IP 주소 이지만, (실제 127.0.0.x 는 localhost를 나타내는 127.0.0.1 외에는 존재하지 않는다!) DNS 서비스상 그 내용에는 아무 하자가 없는 패킷이므로 처음 도메인 네임을 찾아본 녀석에게까지 전달된다. 여기서 어떻게 그 IP가 스팸이었는지 아는 방법은 그 회사만의 노하우라고 하자. 우리의 관심사는 어떻게 하나의 IP에 대한 질의/응답 채널을 만들것이냐이고, 위와같이 DNS는 훌륭한 솔루션이 될 수 있다는 것을 알 수 있다.
실제 상황으로 돌아와서 생각해보자. 위에서는 IP 주소를 그대로 사용하였지만, 실제 RBL 서비스 규칙은 IP를 거꾸로 사용한다. 위의 예에서 rbl-service.net에 해당하는 것을 RBL base라하면,
http://www.uceprotect.net/ 에서 제공하는 RBL base로 dnsbl-2.uceprotect.net 이라는 것을 사용해보자. ( http://www.uceprotect.net/en/index.php?m=6&s=11 ) 위의 예에서 사용된 IP를 거꾸로 하면 20.122.17.172 가 되고 여기에 RBL base를 붙이면
20.122.17.172.dnsbl-2.uceprotect.net
과 같이 된다. 이 호스트를 nslookup 명령으로 찾아 보자.
> 20.122.17.172.dnsbl-2.uceprotect.net
Server: 172.16.11.25
Address: 172.16.11.25#53
** server can't find 20.122.17.172.dnsbl-2.uceprotect.net: NXDOMAIN
NXDOMAIN! 이것은 DNS에 타임아웃이 아니라 DNS로부터 온 정상적인 응답이며, Non-eXistent DOMAIN 이라는 뜻이다.
222.111.22.33 이라는 호스트를 질의한다면,
33.22.111.222.dnsbl-2.uceprotect.net과 같이 될 것이다. 이 IP주소는 몇번의 추측으로 찾아낸것이므로, 별 생각하지 마시라.
> 33.22.111.222.dnsbl-2.uceprotect.net
Server: 172.16.11.25
Address: 172.16.11.25#53
Name: 33.22.111.222.dnsbl-2.uceprotect.net
Address: 127.0.0.2
이게 왠일이냐. 127.0.0.2 랜다. 아! 요놈은 스팸 전력이 있는 놈이구나! 하~ 이거 신기하지 않은가?
IP를 DNS에 질의할 때는 위와 같이 IP 주소를 거꾸로 하여 질의하는 경향이 있다. 그 이유는 관리상 편의 때문인데, 위의 예를 가지고 설명하자면, 만약 222.111.22.x 전체가 유동 IP 주소대역이라, 결코 메일을 직접 보낼일이 없는 주소공간이라는 것이 확실하다면, 굳이 255개의 IP 정보를 다 가지고 있을 필요가 없다. 즉,
22.111.222.dnsbl-2.uceprotect.net 이라는 도메인에 맨 앞에 어떤 추가적인 호스트 이름이 오던지 모두 127.0.0.2로 돌려줄 수 있다. 이를 DNS 쪽 용어로는 Wild card 지원이라하는데, 실제 DNS에
*.22.111.222 라는 호스트 명을 127.0.0.2 로 등록하여 놓으면 위 설명과 같은 응답이 가능하다.
아뭏든 위와 같이 DNS 를 기반으로하는 IP 검사방법에 대한 좋은 예가 있으니 뒤져서 머리를 건강하게 해보시라.
- Total
- Today
- Yesterday
- macosx
- 디버깅
- 대화
- 벤자민
- nodejs
- SVN
- 클레로덴드럼
- perl
- url
- 구근
- VIM
- BlogAPI
- 수선화
- TCP/IP
- writely
- Tattertools plugin
- Subversion
- ssh
- Linux
- 식물
- 퀴즈
- 오픈소스
- 커피
- OpenID
- 덴드롱
- MySQL
- tattertools
- 킹벤자민
- JavaScript
- SSO
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |