GyparkWiki에서 동작하는 스팸 필터에 의해 걸러진 스팸들의 로그를 분석해 보는 페이지.
파일 크기 문제로 로그 파일을 수시로 지워버리기 때문에 장기간 분석은 곤란하고, 어느 페이지에 스팸봇이 왔다가 어느 필터에 의해 걸러지는지 재미삼아 구경하는 용도이다.
1. 필터 적용 순서
GyparkWiki에서는 아래의 순서대로 필터가 동작한다. (앞쪽의 필터에 걸린 것들은 뒤쪽의 필터에도 걸릴 놈이었을 수도 있다.)
- .htaccess 파일에서 User-Agent가 "libwww"로 시작하면 접근을 거부한다.
- 스팸트랙백을 보내는 봇이 주로 저기에 걸리는 듯 한데, 저건 로그를 따로 남길 수가 없어서 확인할 수는 없지만, 저걸 적용한 이후부터는 트랙백 스팸이나 페이지 편집 스팸이 전혀 발생하지 않고 있다.
- C-CODE, E-CODE, T-CODE : 각각 코멘트 매크로, 페이지 편집, 트랙백 전송 시 code필드의 값을 검사하여 올바른 코드가 아니면 거부하는 필터.
- C-TRAP, E-TRAP : 각각 코멘트 매크로, 페이지 편집 시에 함정 텍스트 필드에 값이 채워져 있으면 거부하는 필터.
- Forbid : 코멘트 매크로, 페이지 편집, 트랙백 전송 시 등록금지단어 패턴에 해당하는 문자열이 있으면 거부하는 필터.
- 2007년 5월 29일 현재 금지 단어 목록은 전혀 없는 상태. TRAP 필터의 효과를 확인해보려고 전부 지워뒀음.
- IP차단 목록 필터
- 2007년 5월 29일 현재 IP 차단 목록도 전혀 없는 상태. 예전부터 IP차단은 하지 않았었기에 로그도 따로 남기지 않았음
2. 2024-11-21 8:40 pm 현재 스팸 로그
전체 스팸 기록:
2024-4-29 11:49 pm ~ 2024-11-7 1:34 am
C-CODE | C-TRAP | E-CODE | E-TRAP | T-CODE | Forbid | TOTAL |
2983 | 304 | 0 | 0 | 0 | 1 | 3288 |
날짜별:
C-CODE | C-TRAP | E-CODE | E-TRAP | T-CODE | Forbid | TOTAL | 날짜
0 | 0 | 0 | 0 | 0 | 1 | 1 | 2024-04-29
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-05-04
0 | 2 | 0 | 0 | 0 | 0 | 2 | 2024-05-20
0 | 3 | 0 | 0 | 0 | 0 | 3 | 2024-05-21
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-05-26
0 | 2 | 0 | 0 | 0 | 0 | 2 | 2024-05-27
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-05-30
0 | 3 | 0 | 0 | 0 | 0 | 3 | 2024-06-01
0 | 3 | 0 | 0 | 0 | 0 | 3 | 2024-06-03
0 | 3 | 0 | 0 | 0 | 0 | 3 | 2024-06-05
0 | 2 | 0 | 0 | 0 | 0 | 2 | 2024-06-08
0 | 2 | 0 | 0 | 0 | 0 | 2 | 2024-06-09
0 | 2 | 0 | 0 | 0 | 0 | 2 | 2024-06-11
1119 | 1 | 0 | 0 | 0 | 0 | 1120 | 2024-06-20
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-06-21
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-06-22
1796 | 0 | 0 | 0 | 0 | 0 | 1796 | 2024-06-27
0 | 2 | 0 | 0 | 0 | 0 | 2 | 2024-06-29
0 | 2 | 0 | 0 | 0 | 0 | 2 | 2024-06-30
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-07-12
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-07-13
0 | 2 | 0 | 0 | 0 | 0 | 2 | 2024-07-17
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-07-18
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-07-31
41 | 99 | 0 | 0 | 0 | 0 | 140 | 2024-08-05
0 | 3 | 0 | 0 | 0 | 0 | 3 | 2024-08-07
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-08-10
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-08-21
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-08-25
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-08-26
27 | 155 | 0 | 0 | 0 | 0 | 182 | 2024-09-01
0 | 2 | 0 | 0 | 0 | 0 | 2 | 2024-09-04
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-10-31
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-11-06
0 | 1 | 0 | 0 | 0 | 0 | 1 | 2024-11-07
페이지별:
C-CODE | C-TRAP | E-CODE | E-TRAP | T-CODE | Forbid | TOTAL | 페이지
1796 | 0 | 0 | 0 | 0 | 0 | 1796 | Diary/URL링크를번호로출력하기
1116 | 0 | 0 | 0 | 0 | 0 | 1116 | Diary/2003-12-24
32 | 78 | 0 | 0 | 0 | 0 | 110 | CodeGolf/AsciiArt
20 | 63 | 0 | 0 | 0 | 0 | 83 | Iphone
13 | 29 | 0 | 0 | 0 | 0 | 42 | Git/Reset
0 | 26 | 0 | 0 | 0 | 0 | 26 | Bash
0 | 20 | 0 | 0 | 0 | 0 | 20 | Diary/2024서버이전
0 | 19 | 0 | 0 | 0 | 0 | 19 | FlightSimulator
0 | 19 | 0 | 0 | 0 | 0 | 19 | BigDataSort
0 | 9 | 0 | 0 | 0 | 0 | 9 | Perl/정규표현식
0 | 6 | 0 | 0 | 0 | 0 | 6 | Perl/Plack
0 | 3 | 0 | 0 | 0 | 0 | 3 | UseModWiki소스수정/페이지숨김
0 | 3 | 0 | 0 | 0 | 0 | 3 | 게시판/2007
0 | 2 | 0 | 0 | 0 | 0 | 2 | OpenID
0 | 2 | 0 | 0 | 0 | 0 | 2 | PuTTY
0 | 2 | 0 | 0 | 0 | 0 | 2 | UseModWiki소스수정/TrackBack
0 | 2 | 0 | 0 | 0 | 0 | 2 | RSS
0 | 2 | 0 | 0 | 0 | 0 | 2 | JuanmaMP
0 | 2 | 0 | 0 | 0 | 0 | 2 | Prometheus
0 | 2 | 0 | 0 | 0 | 0 | 2 | Legacy
0 | 2 | 0 | 0 | 0 | 0 | 2 | Diary/아두이노-신호등으로_열차_제어하기
0 | 2 | 0 | 0 | 0 | 0 | 2 | LastUnicorn
0 | 1 | 0 | 0 | 0 | 0 | 1 | StarCraftReplay/리플레이통계스크립트
0 | 1 | 0 | 0 | 0 | 0 | 1 | Perl/Pack
1 | 0 | 0 | 0 | 0 | 0 | 1 | FlightSimulator1QX9uwLM
0 | 1 | 0 | 0 | 0 | 0 | 1 | Unison
0 | 1 | 0 | 0 | 0 | 0 | 1 | Diary/지브리레이아웃전
1 | 0 | 0 | 0 | 0 | 0 | 1 | Git/ResetwduE2nQH
1 | 0 | 0 | 0 | 0 | 0 | 1 | CodeGolf/AsciiArtjwp1H5R2
0 | 1 | 0 | 0 | 0 | 0 | 1 | Diary/히스토리에12권
0 | 1 | 0 | 0 | 0 | 0 | 1 | 컴퓨터관련팁들
0 | 1 | 0 | 0 | 0 | 0 | 1 | Perl/DateTime
0 | 1 | 0 | 0 | 0 | 0 | 1 | 횡설수설/2013-2018
1 | 0 | 0 | 0 | 0 | 0 | 1 | 4728
0 | 1 | 0 | 0 | 0 | 0 | 1 | Perl/Getopt-Long
0 | 1 | 0 | 0 | 0 | 0 | 1 | UseModWiki소스수정/SearchTitle함수
0 | 0 | 0 | 0 | 0 | 1 | 1 | Diary/거북이충원
1 | 0 | 0 | 0 | 0 | 0 | 1 | Diary/2003-12-24(,),(')','
0 | 1 | 0 | 0 | 0 | 0 | 1 | 한RSS에저장되는URL길이제한문제
1 | 0 | 0 | 0 | 0 | 0 | 1 | 7535
3. 꿈보다 좋은 해몽하기
위 분석 결과를 보면서 재미있는 것들을 찾아보면,
- "전체 스팸 기록" 다음 줄에 있는 "시각 ~ 시각" 표시는 로그파일에 있는 첫번째 스팸과 마지막 스팸의 시각이다. 어느 시각에 이 페이지를 보더라도, 마지막 스팸은 최근 한시간 이내에 들어와 있는 것 같다. 스팸은 정말 쉬지 않고 온다.
- 페이지별 스팸 현황을 보면, C-CODE 필터에 걸린 스팸이 있는 페이지에는 C-TRAP 필터에 걸린 게 없다
- C-CODE에 걸렸다는 얘기는, 예전에 저 페이지의 코멘트 입력폼의 필드값을 가져간 후에, 나중에 다시 써먹으려 했거나, 아예 ccode 값은 주지 않고 스팸을 submit하려고 했다는 얘기. 스팸봇은 한번 웹페이지 주소를 얻어가면 그 다음에는 그 페이지에 다시 와서 html소스를 분석하거나 하지는 않는가보다.
- 반대로 C-TRAP 필터에 걸린 스팸이 있는 페이지에는 C-CODE 필터에 걸린 스팸이 없다.
- 특히 최근 일기들은 죄다 C-TRAP에만 걸렸는데, 그 말은 최근에 스팸봇이 방문하셔서 소스를 긁어갔다는 얘기인 듯. (하긴 페이지가 생성된 것 자체가 최근 일이니) 따라서 ccode값은 제대로 얻어갔지만, homepage필드에 자기네 URL을 적어놓고 submit하면서 필터에 걸렸다. 며칠 후에는 긁어간 ccode값도 더 이상 유효하지 않을 테니, 스팸봇들이 다음 번에 방문해서 submit하면 C-CODE 필터 쪽에 걸리지 않을까 예상됨. 아니면 스팸봇은 첫 방문->html소스 긁어서 분석->필드값 채워넣고 submit 과정을 거친 후에 "자기가 올린 스팸이 제대로 저장되었는지 확인"하는 과정을 추가로 거치는 걸까? 그렇다면 TRAP에 걸린 페이지는 아예 포기하고 다시는 방문하지 않을지도 모르겠다.
- T-CODE 필터에 걸린 게 하나 있는데, 저건 페이지 이름이 아예 없다. 가끔 저런 트랙백이 날아오더라. 페이지이름 뿐 아니라 트랙백 핑이 가지고 있어야 할 URL이나 title, excerpt 항목도 없다. 뭐 하자는 건지 모르겠음
- 금지단어 목록이 전혀 없는 상태라서 Forbid 필터는 당연히 0건인데, 그럼에도 불구하고 지난 며칠 동안 gyparkwiki에 스팸이 전혀 없었다! (아래에 언급했지만, 스팸인지 사람인지 알 수 없는 이상한게 몇 건 있긴 하다)
- *-CODE 필터를 만들어 놓고 나서 별로 효과가 크지 않다고 생각했는데, 이제 보니 하루에 백수십건을 걸러내고 있었다. 여기에 *-TRAP 필터까지 합세하여 둘이서 거의 모든 스팸을 다 막아주고 있다.
- 매번 광고URL의 주소가 바뀌고, 어떤 경우는 도저히 금지어로 만들수 없는 일반적인 단어들이나, 반대로 전혀 규칙이 없는 "abre34sx24" 같은 식의 URL을 사용하기 때문에, 금지단어 필터링은 항상 사후약방문 식의 처방이었고, 특히나 생성된지 이틀이 지나지 않은 페이지(최근 일기들 처럼)에 스팸봇이 첫 방문했을 때는 C-CODE필터도 무력하기 때문에 최근 몇 달 동안은 아침에 일어나서 제일 처음 하는 일이 스팸 지우는 거였는데, 지난 4일 동안(물론 안심하기에는 이른 기간이긴 하나)은 매우 평온하다.
- 5월30일-5월31일-6월1일 동안 스팸이 전날의 절반으로 줄어들었음. 이건 웬일일까.
4. 필터를 통과한 스팸
저 필터들을 다 통과한 스팸은... (잡아내지 못했으니까 당연히) 따로 로그가 남지 않는다. 그래서 수작업으로 기록해줘야 하겠다.
- 2007-5-26. 횡설수설과 게시판에 "Nice"라고만 덜렁 적고 간 게 5건 - 가끔 이런 경우가 있던데 이건 도대체 사람인지 봇인지도 모르겠고...
- 2007-5-29. SandBox 페이지를 누가 만들어서 서너번 편집해보다 갔는데, 리퍼러 등을 살펴보니 스페인에서 구글링해서 들어온 걸로 봐서 사람 같기도 하고 봇이 구글링도 하나 싶기도 하고...
- 2007-6-1. 크윽, Newbee, HaraWish, Zehn02 세 페이지에 한 IP에서 와르르 스팸을 남기고 감.
- 2007-6-2. 위 세 페이지에 전날과 동일한 62.231.243.136에서 스팸을 남김. 내일부터는 C-CODE에 걸리리라 예상하지만, 접속 로그를 보니 매번 페이지에 직접 들어와서 쓰는 형태인 것 같다. 내일까지도 스팸이 남으면 이건 IP차단을 해야 할 듯.
- 2007-6-3. 195.245.10.220에서 HaraWish 페이지에 3건을 남김. 어제 그제 왔던 봇과 동일한 놈으로 보이는데 (광고한 사이트도 같은 것 같고) 정말 희한한 놈이다. 마치 검색엔진처럼 수백개의 페이지를 와서 일단 읽어가는데, 그래놓고 스팸은 딱 한 페이지에만 남기고 가다니 -_-?
- 2007-6-7. 3일 이후로 현재까지 하루에 한두 건씩은 올라오고 있음. 다시 금지 단어에 슬슬 추가를 하기 시작했는데 정작 한 번 올라왔던 스팸은 다음 번에 안 오는지 금지 단어 필터에 걸린 스팸이 없다.
- 그리고 도대체 "날마다 좋은 날..." 어쩌고 하는 건 뭘까. 사이트 주소 같은 것도 전혀 없고 덕담만 있는데, 덕담으로 사람 신경질나게 만들다니 무섭군 -_-
- 2007-6-18. 그러고보니 요새는 꽤 잠잠하네.
- 2007-7-5. 한 20일 만에 게시판에 한 건. 간만에 보니 반가울 지경이구먼 -_-; 이번에는 웬 동영상까지.
반대로, 스팸이 아닌데 스팸으로 인식되어서 글을 날리는 경우가 있을까?
- 현재까지 메일이나 어떤 식으로든 내게 그런 일을 겪었다고 알려온 사람은 없었음
- ccode, tcode, ecode 의 경우는, 사람이 정상적으로 브라우저를 통해 접근하는 경우는 그런 경우가 없다. (이론상 그렇다. 주인장이 구현하다 실수한게 있을지는 모르겠지만.) 그런 경우가 생기려면, 웹브라우저로 gyparkwiki를 띄우고, 만48시간 이상 지난 후에 submit 버튼을 눌러야 함.
- c-trap과 e-trap이 문제인데, 만일 텍스트 브라우저 또는 스타일쉬트를 지원하지 않는 브라우저라면 "Homepage:"라는 입력 필드가 눈에 보이게 되고, 여기에 홈페이지 주소를 적으면 스팸취급 당한다. :-) 근데 설마...
5. 기타 & 의견란
기타분류