콘텐츠로 건너뛰기
Home » 내 워드프레스에서 스팸 댓글 공격을 차단하는법 및 IP 차단 방법

내 워드프레스에서 스팸 댓글 공격을 차단하는법 및 IP 차단 방법

스팸 댓글을 지속적으로 올리는 세션 차단법

얼마 전에 꽤나 당황스러운 일을 겪게 되었습니다. 워드프레스 블로그를 운영하면서 처음 겪은 일인데요, 특정 IP의 세션이 지속적으로 제 포스트 마다 랜덤으로 테스트용 스팸 댓글을 달고 있었습니다.

딱 봐도 스팸 댓글임을 알 수 있다.

갑자기 제 블로그로 많은 유입이 일어났었는데 이상하다고 판단이 되어 통계 정보를 확인해 보니 실제 세션은 많지 않으나 접속 페이지는 엄청나게 늘어난것이 확인이 되었습니다.

위 그림에도 보이듯이 9/27일에 파란색의 그래프를 보면 페이지 접속량이 폭등한 것이 보입니다. 붉은색 그래프는 실제 세션의 숫자입니다.

이런 상황인즉 누군가 제 블로그의 페이지에 지속적으로 접속한다는 의미가 됩니다. 뭔가 하고 봤더니 위와 같이 누군가가 스팸 댓글 달기 테스트를 제 블로그에서 하고 있더군요.

좀 괘씸한게 몇십개 다는 걸 떠나서 실시간으로 거의 1초~1분 마다 스팸 댓글을 달고 있었습니다. 그렇다고 제 서버의 트래픽을 많이 소모하지는 않겠지만 관리하는 저의 입장에서는 꽤나 거슬리고 스팸 댓글을 처리하는게 또하나의 일이 되는 거였습니다.

일전에 워드프레스에서 “스팸 댓글” 을 차단하는 방법에 대해 소개를 해드린 적이 있습니다. 그런데 이 방법은 스팸으로 지정된 댓글을 자동으로 휴지통으로 보내는 것이지 해당 봇이나 프로그램의 세션을 차단하지는 못합니다.

따라서 원천적으로 해당 봇이나 자동 프로그램의 세션을 차단하는게 필요해 보였습니다. 그래서 이번에 효과적으로 차단을 하면서 사용했던 방법에 대해 공유를 해볼까 합니다.

댓글 봇 및 자동 댓글 프로그램의 세션을 효과적으로 차단 하려면?

워드프레스를 운영하다보면 한번쯤은 외부로부터 댓글 공격이나 스팸 댓글을 다는 등의 경우를 보실 수 있게 됩니다. 저도 현재까지 지속적으로 스팸 댓글을 다는 방문자(혹은 세션) 들이 즐비한거 같습니다.

그런데 단순히 스팸 댓글을 “자동으로 휴지통”에 보내는 것은 한계에 부딪히게 됩니다. 분명 끊임없이 지속적으로 댓글을 다는 방문자나 세션이 존재하기 때문이지요. 이럴 때는 해당 세션의 IP 자체를 차단하는 방법이 효과적입니다.

워드프레스를 운영하려면 “웹 호스팅” 이나 “클라우드 서버” 등을 사용할 텐데요, 웹 호스팅의 경우에는 호스팅 서비스 마다 차이가 있지만 대다수는 “IP 차단” 기능이 존재할 겁니다.

위 그림을 보시면 댓글에서 접속한 세션의 IP 정보가 표시가 되는데요. 이 IP를 등록하면 차단을 할 수 있게 됩니다.

그런데 저 같은 경우는 “클라우드 서버” 를 사용하기 때문에 약간은 상황이 다릅니다. 저의 경우에는 어떻게 차단을 하면 될까요?

AWS 라이트세일에서 IP를 차단하는 방법

저는 라이트세일에서 워드프레스를 설치하여 사용중입니다.

워드프레스 설치 관련해서는 위의 글을 참고하셔도 좋습니다.

라이트세일의 경우에는 가성 리눅스 서버에 워드프레스를 설치하여 사용하는 구조이기 때문에 별도로 “IP 차단” 기능은 존재하지 않는거 같습니다. 그래서 이럴 때는 수동으로 내 리눅스 서버에서 IP를 차단하는 방법이 있습니다.

먼저 라이트세일 관리자 화면으로 접속합니다.

그런 다음에 내 워드프레스의 인스턴스로 가서 “터미널” 아이콘을 클릭해 줍니다.

그러면 내 워드프레스 인스턴스의 터미널 화면으로 접속이 됩니다. 이제 여기서 스팸 댓글을 다는 세션의 IP 차단을 위해 “iptables” 를 사용하여 수동으로 직접 차단을 해보겠습니다.

iptables 는 리눅스 네트워크 트래픽을 관리하는 시스템 유틸리티 입니다. 제가 예전에 리눅스 기반 시스템을 운영해 보면서 iptables 로 트래픽 공격 IP를 차단해본 적이 있었네요. 이번에 이렇게 다시 사용할 줄은 꿈에도 몰랐습니다^^

먼저 터미널에서 다음 명령어를 통해 iptables 의 리스트를 확인해 봅니다.

sudo iptables -L

아마 이 명령어를 처음 쓰시는 분들은 어느 Chain 이건 간에 별도의 리스트가 없을 겁니다.(위 화면에서 INPUT Chain 에 전 이미 설정을 했습니다)

여기에 INPUT chain 에 IP를 추가하여 들어오는 세션을 차단할 수가 있습니다. INPUT의 의미는 외부에서 들어오는 트래픽을 의미합니다.

sudo iptables -A INPUT -s 154.194.124.242 -j DROP

명령어는 위와 같습니다. 옵션에 대해 간단히 설명드리면 -A 는 INPUT chain 에 추가를 한다는 뜻이고 -s 는 Source IP 즉 들어오는 IP 입니다. 여기에 스팸 댓글 공격을 하는 IP를 넣어줍니다.

-j 는 정책을 입력하는데 DROP 은 차단을 의미합니다.

이 외에 iptables 는 다양한 룰과 정책을 가지고 있으니 궁금하신 분들은 구글에서 검색을 하시면 좀더 많은 내용을 확인하시는게 가능합니다. 일단 여기서는 자세한건 생략합니다.

이렇게 추가를 하면 해당 IP의 세션은 더이상 내 라이트세일 인스턴스로 접근하지 못하게 됩니다. 이렇게 조치를 취하자 댓글 테스트를 하던 그 세션은 자취를 감추게 되었습니다.

그랬더니 다시 IP를 바꿔서 재차 공격을 하더군요. 또다시 IP를 추가해 주니 더이상 접근을 하지 않고 있습니다.

현재 저의 iptables 리스트입니다. 2개의 IP가 댓글 공격을 했는데 현재는 더이상 들어오지 못하고 있습니다.

iptables 사용시 유의할 점

크게 2가지 유의할 점이 있습니다. 첫번째로는 해당 인스턴스가 재부팅되거나 재시작되면 설정했던 iptables 리스트가 전부 날라가게 됩니다. 이럴 때는 설정한 리스트들을 미리 백업 해 놓는게 필요합니다.

# iptables 리스트 백업
sudo iptables-save > iptables-rules

# iptables 설정 복원
sudo iptables-restore < iptables-rules

리스트 백업을 하면 설정해 놨던 iptables 리스트가 iptables-rules 라는 파일로 저장이 됩니다. 추후 재부팅이나 재시작이 된 후에 위 명령어로 설정을 복원하면 손쉽게 IP 차단 룰을 복원하는게 가능합니다.

두번째로는 iptables 룰을 추가할 떄는 꽤 신중하게 사용해야 한다는 점입니다. 특정 IP를 아예 차단해 버리기 때문에 실수로 내 집의 IP나 접속을 허용해야 하는 IP도 차단할 수 있다는 점입니다.

이럴 때는 당황하지 말고 실수로 추가한 IP를 삭제해주면 됩니다.

sudo iptables -D INPUT -s 111.222.333.444 -j DROP

-D 옵션을 사용해서 추가했던 IP를 삭제해 주면 됩니다.

iptables 를 사용하면 IP 차단에 매우 효과적이지만 잘못 사용하면 아예 접근 조차 안되기 때문에 사용에 신중을 해야 합니다. 물론 잘 사용하면 스팸 댓글 공격에 매우 효과적입니다.

이상으로 IP 차단 방법에 대해 알아봤습니다. 워드프레스를 운영하시는 분들에게 도움이 되셨음 좋겠네요

'정원딸린집'에는 쿠팡파트너스 등의 제휴링크가 포함되어 있으며 수수료를 제공받을 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

error: Content is protected !!