저는 약 10개의 WordPress 웹 사이트를 호스팅하는 Apache2를 실행하는 Ubuntu 12.04 시스템을 가지고 있습니다.
최근에 나는 'xmlrpc.php'라는 워드프레스 파일에 POST 요청을 보내는 것처럼 보이는 클라이언트로부터 공격을 받았습니다.
이러한 악의적인 요청을 보내는 IP 주소를 차단하는 방법은 지루한 수동 프로세스이므로 어떻게든 자동화하고 싶습니다.
서버 로드가 높다는 것을 알게 되면 다음 작업을 수행합니다.
모든 가상 호스트 액세스 파일에 대해 apachetop을 실행합니다. 이것은 xmlrpc.php에 대한 요청이 있는지 확인할 수 있도록 모든 요청이 표시됩니다.
어떤 IP가 내 서버를 공격하는지 식별한 후 각 위반 IP 주소에 대해 다음 명령을 실행합니다.
sudo iptables -A INPUT -s 94.102.52.95 -j DROP
모든 IP 주소가 차단 목록에 추가되면 서버 로드가 즉시 정상 수준으로 떨어집니다.
이 프로세스를 자동화하는 방법이 있습니까? 나는 요청을 보내는 모든 IP에 대한 차단 목록에 모든 IP 주소를 추가하는 xmlrpc.php 내에 일부 코드를 작성하려고 생각하고 있었습니다. 누구든지 이 작업을 수행하는 방법에 대해 알고 있습니까?
미리 감사드립니다!
답변1
모든 IP를 차단하는 것이 이 문제의 해결책은 아니라고 생각합니다. IP가 POST 작업을 수행하는 것은 전 세계 PC가 감염/해킹되었을 가능성이 가장 높습니다. IPtable을 모두 블랙리스트에 등록하면 IPtable이 범람하게 됩니다. WP 사이트가 해킹된 경우 오프라인으로 전환하고 고객에게 혼란을 정리하고 모든 구성 요소를 업데이트하도록 알리는 것이 좋습니다.
악성코드 업로드를 방지하기 위해 mod_security를 설치할 수 있습니다. 또한 mod_security에 해당 특정 페이지의 POST 요청을 차단하도록 지시할 수도 있습니다. 이는 단순히 404를 반환하므로 부하가 절약되고 해킹이 중지됩니다.
위의 방법이 여전히 도움이 되지 않고 모든 IP를 차단하려는 경우(큰 IP 테이블을 방지하기 위해 일정 시간 후에 해당 IP를 제거해야 함) access.log를 추적하고 IP를 차단하는 스크립트(예: 셸)를 만들 수 있습니다. cronjob/sleep이 포함된 스크립트 또는 그 이상: Perl/Python의 멋진 데몬).