netstat -na|grep ES|awk '{print $5}'|sort
위 명령어로 조회하면 ip 들이 출력이 되는데요.
사이트 트래픽이 심하게 증가해서 문제가 될 정도의 공격에서 위 명령어로 출력되는 ip 중 동일한 ip가 마지막 포트 ? 를 달리해서 많은 숫자가 조회가 되면 그 ip가 공격 ip로 보는 건가요??
netstat -na|grep ES|awk '{print $5}'|sort
위 명령어로 조회하면 ip 들이 출력이 되는데요.
사이트 트래픽이 심하게 증가해서 문제가 될 정도의 공격에서 위 명령어로 출력되는 ip 중 동일한 ip가 마지막 포트 ? 를 달리해서 많은 숫자가 조회가 되면 그 ip가 공격 ip로 보는 건가요??
문제가 발생하는 시간대의 아파치 접속로그를 살펴보면 그 시간대에 누가 방문하는지 알 수 있겠죠. 크롤러인지 정상적인 사용자들인지... 예를 들어 자동알림 애드온과 문제라면 index.php에 POST 요청이 엄청나게 들어옵니다.
netstat 명령은 어떤 옵션을 넣어보셨나요? 제가 가장 즐겨쓰는 옵션은 netstat -tulpn 입니다. 현재 시스템 서비스들이 사용중인 포트만 깔끔하게 정리해서 보여주죠.
그것도 한 가지 방법이죠. 정상적인 브라우저라면 도메인당 8개 이상의 연결을 동시에 열지 않습니다. 여러 도메인이나 서브도메인을 함께 쓰는 서버라면 그것보다 더 많을 수도 있지만, 사이트 하나만 돌린다면 웹소켓까지 감안해도 15~20개를 넘을 일은 드물어요.
물론 netstat은 현재 연결된 갯수만 파악하니까, 연결해서 공격하고 연결 끊고 다시 연결하는 방식이라면 잡아낼 수 없습니다. 이런 경우는 아파치의 mod_evasive, nginx의 limit_conn/limit_req 등의 기능을 사용해서 IP당 요청횟수를 제한해야 하고요...
만약 서버 자체가 마비될 정도의 공격이라면 다 소용없고 윗단에서 막아야죠 ㅠㅠ
가끔은 악의를 갖고 공격하는 게 아니라 사이트 설정이 잘못되어서 셀프 DDoS 공격이 발생하기도 합니다. 예를 들어 댓글 자동알림 애드온의 체크 주기를 너무 짧게 해두면 모든 방문자가 계속해서 AJAX 요청을 하게 되어 서버 부하가 막 올라갑니다. 모든 회원을 공격자로 만들어버리는 무시무시한 기능이죠!