포럼
검색쿼리를 이용한 사이트 공격을 받고있습니다
2014.05.15 00:01
중소규모 커뮤니티사이트를 운영중인 유저입니다.
최근 고의성이 보이는 공격을 받고있어서 조언을 구하고자 글을 작성해봅니다.
과도한 트래픽을 유발하는 공격은 아니고 검색쿼리를 수만개를 발생시켜서 서버에 부하를 주는 공격인것같습니다..
이런식으로 검색쿼리 수천개가 계류되니까 점점 느려지다가 결국 서버가 터집니다.
일단 로그를 확인해서 라우팅 테이블에 추가해서 차단하고있는데 정말 끝이없습니다..
결국 사이트 전체에서 댓글내용 검색기능을 제거했는데 이제는 다른방법으로 쿼리를 발생시키네요ㅠㅠ
Xeon E5-2650 두개를 사용하고있어서 저사양서버는 아니라고 생각되는데 공격이 들어오면 10분정도만에 터집니다.
이상이 발견되면 베드게이트 뜨기전에 차단을 해야되는데 24시간 모니터링할수가없어서 괴롭네요..
수집된 IP를 네탄에 신고할 예정이지만 우회했을수도있고 과연 확실하게 대응해줄지 모르겠습니다.
저희 사이트는 분단위로 글이 올라오기때문에 몇분만 터져도 회원들의 불만이 엄청납니다..
우선 라우팅테이블에서 IP를 차단하고 mysql을 재시작해야되는데 재시작없이 진행중인 쿼리를 모두 제거할수는없으련지..ㅠㅠ
엄청 꾸준하고 끈질기고 새벽에도 공격할만큼 집요한데 뭐때문에 공격대상이된건지 짐작도안되네요.
최근 몇일동안 이러한 공격때문에 정말 힘듭니다. 뭔가 해결할 방법이 있다면 부디 공유해주세요 부탁드립니다.
댓글 17
-
알피레이드
2014.05.15 00:13
-
こさき!
2014.05.15 00:15
운영진이 3명있지만 저 이외에는 SSH접근조차 할줄몰라서..
하지만 그렇게 어려운것도 아니고 가르쳐서라도 부탁해볼 필요가 있겠네요
조언 감사합니다:)
-
Luatic™
2014.05.15 07:36
mod_evasive 모듈로도 충분히 어느정도는 막을 수 있을듯 싶은데요 혹 설치안되어있으신지요? -
こさき!
2014.05.15 08:08
웹서버로 nginx를 사용중입니다
혹시 비슷한 역활을 해주는게있나요? -
こさき!
2014.05.15 08:10
limit_req 모듈은 사용중입니다 -
Luatic™
2014.05.15 09:05
흠 엔진엑스는 마땅한 모듈을 모르겠네요.. 웹서버단에서 차단할 수 있는 방법도 있을듯 싶은데 말입니다.
-
こさき!
2014.05.17 07:57
혹시 mysql 재시작없이 진행중인 쿼리만 모두 종료하는 방법이 있나요?
재시작에 걸리는 시간이 아까워서..ㅠ
-
LI-NA
2014.05.15 10:53
같은 검색어를 지속적으로 입력한다면, 쿼리 캐싱을 이용하면 DB 서버의 부하가 줄어들지 않을까 싶습니다.
아니면, 검색 제한 애드온이라도 만들어야하나... +ㅁ+
-
こさき!
2014.05.17 08:00
방화벽에 요청수 제한 규칙을 넣어서 공격자IP를 드롭시키는 방법으로 어느정도 버티고는 있는데.. 결국에는 터지네요ㅠㅠ
24시간 모니터링 할수도없는일이고..
조언감사합니다:)
-
혼마_메이코
2014.05.15 11:01
저런식으로도 공격이 들어오는군요 =_=.. 뭐 특정 집단에 미움살만한 회원이 있었거나 그런 이유로 공격을 시도했을수도 있겠네요 ...
-
こさき!
2014.05.17 08:01
하긴 저희가 적을 많이둔 사이트라서.. 그럴수도있겠네요
-
mAKEkr
2014.05.17 12:06
제가 추천해드릴만한 방법은
1. 멤캐시로 약 1MB가량의 저장소 확보(디스크I/O줄이기 위함입니다)
2. 검색 쿼리가 들어오면 사용자 ip와 검색 쿼리 내용을 파일로 저장
3. 검색이 종료되면 파일 삭제
여기서 2번을 이용해서 만일 검색 쿼리가 끝나지 않았는데도 파일이 있다면 mysql까지 거치지 않고 dead시키는게 가장 좋을것같습니다.
-
mAKEkr
2014.05.17 12:08
여기서 좀더 응용하면 해당 파일에 타임스탬프 기록을 남겨두고 약 10초가 넘어갈경우에는 mysql을 거치게 만들수도 있겠죠. 응용할 수 있는 방법은 다양합니다 :D
-
こさき!
2014.05.17 13:09
정말 감사합니다:)
다만 제가 아는게 적어서 알려주신대로 해볼수가없네요ㅠㅠ
역시 머리가 나쁘니까 몸이 고생입니다
-
mAKEkr
2014.05.17 23:19
적어드린것에서 큰 기능은 요구하지않습니다. 하드디스크 I/O성능을 감수하고서라도 해야겠다면 멤캐시를 안써도 되지만, 파일 크기도 얼마 되지 않고 결정적으로 파일 입출력이 너무 심하게 나가니까 멤캐시를 추천해드리는거죠.
XE코어를 수정하는 방식으로 하셔야될거라 이부분은 제가 적어드린걸로 다른분에게 의뢰를 맡기셔도 좋을것같아요
-
LI-NA
2014.05.17 15:24
그냥 MySQL에서도 지원하는 기능 아닌가요? mysql query cache를 사용하면 (메모리가 넉넉한 경우 추천) 알아서 쿼리를 일정기한 및 데이터 변동 유무에 따라 미리 캐시된 쿼리 결과를 리턴해 주는 걸로 알고 있습니다.
-
mAKEkr
2014.05.17 17:30
파일캐시가 아니라 단순히 파일을 통한 쿼리 결과가 도출되었는가에 대한 확인이에요.
쿼리 결과값 캐싱하는거면 제 영역 밖이라 ㅋ_ㅋ
믿을만한 운영진급 회원 여러명한테 모니터링을 맡기고 저런 정황이 포착되면 아이피랑 차단 커맨드 입력해달라고 하면...