Confluence 광고/홍보글 스패머 막기 - apache httpd 의 Access Control 사용 및 stopforumspam.com 의 DB 활용
댓글을 누구나 작성할 수 있게 했더니 달리는 댓글이라고는 스패머에 의한 광고밖에 달리지가 않는다.
방문자가 거의 없는 홈페이지지만 늘 소통을 갈구하고 있기에 spammer 때문에 댓글을 막는것보다는 스팸을 올리는 IP 를 차단하는게 나을 것 같다.
차단을 위해 iptables 을 사용할까 하다가 설정이 쉬운 apache httpd 의 access control 기능을 사용하기로 하고 그 절차를 정리해 둔다.
Spammer IP 정보 구하기
- apache log 를 확인해서 스팸을 남기는 IP 를 매번 분리해서 block 했으나 IP 가 자주 바뀌어서 효과가 없음
- googling 해보니 http://www.stopforumspam.com 이라는 사이트가 spammer IP 를 DB 화 해서 배포하는 것을 확인하고 여기에서 IP DB 를 받아서 사용
IP DB 가공
- IP DB download(http://www.stopforumspam.com/downloads/bannedips.zip)
압축 해제
# unzip bannedips.zip Archive: bannedips.zip inflating: bannedips.csv
CODE개행문자가 없이 , 로 IP 가 분리되어 있으므로 , 를 new line 으로 변환
## , 를 개행문자로 변환 perl -p -e 's/,/\n/g' bannedips.csv > blacklist-ip ## IP 앞에 DENY From 추가 perl -p -e 's/^/Deny from /g' blacklist-ip > /etc/httpd/conf/blacklist
BASH/etc/httpd/conf/httpd.conf 에 Location 및 Order Directive 설정 및 위에서 만든 DB 파일 설정
<Location /> Order allow,deny Allow from all # BlackList 는 Deny Include conf/blacklist # 계속 login 을 시도하는 IP 가 있다면 차단 #Include conf/login-attacker </Location>
BASHlogon 을 시도하는 IP 가 있다면 Confluence access log 남기기 를 참고하여 log를 남기게 설정후 log에서 login.action 을 시도하는 IP 를 추출하여 conf/login-attacker 파일에 다음과 같이 남기면 된다.
conf/login-attacker
Deny from 1.2.3.4 Deny from 2.1.4.7
CODEhttpd 재구동
service httpd restart
CODE
사전 정보
- confluence 의 코멘트를 다는 URL 은 doaddcomment.action 이다. httpd 의 log 파일에서 저 URL 만 추출해서 IP 를 추출하면 된다.
댓글 단 IP 가 모두 차단될 수 있으니 정상적인 IP 는 따로 걸러내야 한다.
설정
conf/httpd.conf 에 Location 및 Order Directive 설정 ( 향후 스패머 IP 만 추가할 경우 이 작업은 더는 필요없다)
<Location /> Order allow,deny Allow from all # BlackList 는 Deny Include conf/blacklist </Location>
BASHhttpd log 에서 blacklist IP 추출 (중복된 IP 를 단일화하기 위해 sort 후 uniq 명령어 사용)
access-log 파일명은 apache httpd 설정에 따라 다를수 있다.
## log 파일이 rolling 되었어도 기존 스패머 정보 보존을 위해 기존 blacklist 뒤에 append grep doaddcomment.action /etc/httpd/logs/kwiki-access_log|awk '{print "Deny from "$1}' | uniq >> /etc/httpd/conf/blacklist cp -f /etc/httpd/conf/blacklist /etc/httpd/conf/blacklist.org ## 추가된 IP 의 중복 제거 cat /etc/httpd/conf/blacklist.org | sort | uniq > /etc/httpd/conf/blacklist
BASH다음과 같이 blacklist 파일이 생성됨
Deny from 1.2.3.4 Deny from 11.33.22.11
CODEhttpd 재구동
service httpd restart
CODE
Ref
- http://httpd.apache.org/docs/2.2/howto/access.html
- https://confluence.atlassian.com/display/DOC/Preventing+and+Cleaning+Up+Spam