어제는 멀웨어에 감염된 사이트를 복구하는 작업을 수행했습니다. 워드프레스 자체는 보안에 강하지만 워드프레스, 테마, 플러그인을 최신 버전으로 업데이트하지 않고 방치할 경우나 약한 비밀번호를 사용하는 경우에 악성코드에 감염될 가능성이 있습니다.
또한, 웹호스팅에서도 웹방화벽을 설치하는 등의 보안 조치를 하면 해킹이나 멀웨어 등을 예방하는 데 도움이 됩니다. 하지만 서버 레벨에서 강력한 보안 조치를 취한다 해도 워드프레스 사이트 업데이트를 소홀히 할 경우 문제가 발생할 수 있습니다.
워드프레스 멀웨어 감염 사이트 복구
국내 웹호스팅 업체에 호스팅 중인 워드프레스 사이트가 접속되지 않는 문제를 해결하는 작업을 맡았습니다. 살펴보니 이름의 PHP 파일들이 생성되어 있었습니다.
7월 10일 이전에 멀웨어에 감염된 것으로 보입니다. [**wp-config.php**] 파일에도 이상 스크립트가 추가되어 있었습니다. 이 때문인지 사이트 접속 문제가 발생하기 전부터 사이트 접속 시 이상한 사이트로 리디렉션되는 문제가 발생했다고 하네요. 특히 모바일 기기에서 접속 시 이상한 사이트로 이동하는 문제가 잦았다고 합니다.
참고로 나우호스팅에서는 워드프레스 사이트가 뚫리는 사용자들이 늘어나서 최근 웹방화벽(WAF) 설치를 시도하고 있습니다.
일주일 전에 웹방화벽 설치로 일부 서버에 설치된 워드프레스에서 "업데이트 실패. 응답이 유효한 JSON 응답이 아닙니다" 에러가 발생했습니다. 이 문제는 시간이 지나면서 해결될 것 같습니다.
문제가 된 사이트는 PHP 버전이 5.6 버전이었고, 테마도 오래전에 단종된 워드프레스 테마가 사용되고 있었습니다.
다행히 백업 파일이 있어서 데이터는 작년 6월 버전으로 복원하고, 디비는 비교적 최신 날짜 것으로 복원했습니다. 그리고 누락된 데이터 파일은 기존 파일들을 업로드하는 방식으로 복원을 시도했습니다.
복원 후에 WPBakery Page Builder가 작동하지 않는 문제가 발생했습니다. 테마가 단종되어 테마 사이트를 찾을 수가 없어서 문제 해결에 애를 먹었습니다.
PHP 버전이 너무 낮아서 일부 플러그인을 업데이트가 되지 않았고, 테마 때문에 워드프레스 버전을 낮은 버전으로 다운그레이드했습니다.
플러그인은 가능한 한 최신 버전으로 업데이트하는 것이 안전합니다. 예를 들어, Contact Form 7(문의 양식 7) 플러그인의 경우 워드프레스 6.2 이상, PHP 7.4 이상에서만 최신 버전을 설치할 수 있습니다.
PHP 버전이 낮으면 "사용할 수 있는 연락처 양식 7의 새 버전이 있지만, 현재의 PHP의 버전에서 작동하지 않습니다" 경고가 표시되면서 업데이트가 되지 않습니다.
Contact Form 7은 현재 100만 개가 넘는 사이트에 설치되어 있습니다. 인기 플러그인이다 보니 보안 취약점이 발견될 경우 업데이트를 적시에 하지 않으면 보안 문제가 발생할 수 있습니다.
CF7의 경우 올해 초 보안 취약점이 발견된 적이 있으므로 반드시 최신 버전으로 업데이트하는 것이 안전합니다.
나우호스팅은 현재 PHP 8.0까지 지원되고 최근에 증설되는 일부 서버에는 PHP 8.1까지 지원됩니다. 카페24의 경우 현재 PHP 7.4까지 지원됩니다. 블루호스트, 클라우드웨이즈 등 해외호스팅에서는 PHP 8.2(현재 최신 버전)까지 지원됩니다.
PHP 버전은 가급적 최신 버전을 사용하는 것이 보안과 성능면에서 유리합니다. 특히 워드프레스 6.3부터는 PHP 5 버전에 대한 지원을 중단했습니다.
마치며
항상 강조하는 내용이지만 워드프레스를 안전하게 운영하려면 사이트를 항상 최신 버전으로 유지하는 것이 중요합니다.
- 워드프레스, 테마, 플러그인을 최신 버전으로 업데이트
- 사용하지 않는 테마와 플러그인 삭제
- 오랫동안 업데이트가 안 되고 방치된 플러그인 삭제
- 정기적인 백업
- 보안 플러그인 적용
특히 백업본이 있으면 복구할 가능성이 높아집니다. 이번 건의 경우 1년 전 백업본이 있어서 활용하여 복원할 수 있었습니다. 만약 백업본이 없고, 이번 건처럼 테마도 단종되어 테마 파일을 다운로드할 수 없는 상황이라면 복원이 쉽지 않을 수 있습니다.
워드프레스 관련 문제 때문에 어려움을 겪는 경우 여기에서 서비스(유료)를 요청하실 수 있습니다.
참고
https://avada.tistory.com/3130
https://avada.tistory.com/2897
https://avada.tistory.com/3119