Computer >> 컴퓨터 >  >> 네트워킹 >> 인터넷

공격으로부터 WordPress 사이트를 지키는 6가지 고급 보안 전략

공격으로부터 WordPress 사이트를 지키는 6가지 고급 보안 전략

WordPress 보안의 중요성은 날로 커지고 있습니다. 통계에 따르면 WordPress 사이트에는 분당 약 90,978건의 공격이 발생하며, WordPress가 출시된 이후 패치된 취약점만 무려 2,450개를 넘어섭니다. 기본적인 보안 조치 외에도 여러분의 사이트를 한 단계 더 안전하게 만들어 줄 고급 보안 설정들을 소개합니다. 특히 DDoS(분산 서비스 거부) 공격을 막는 방법까지 함께 다룹니다.

1. HTTP Trace 기능 비활성화하기

XSS(Cross Site Scripting)나 XST(Cross Site Tracing) 같은 공격은 HTTP Trace 기능이 활성화되어 있는 시스템을 노립니다. 대부분의 웹 서버는 디버깅 등의 목적으로 HTTP Trace가 기본적으로 켜져 있어 있으며, 해커는 헤더 요청을 이용해 XST 공격을 실행하여 쿠키 같은 민감한 정보를 탈취할 수 있습니다. OWASP Top Ten Project에서는 WordPress 웹사이트의 주요 취약점과 공격 유형을 상세하게 정리해 두고 있으니 참고하시면 좋습니다.

공격으로부터 WordPress 사이트를 지키는 6가지 고급 보안 전략

여러 취약점 유형 가운데 XSS가 1위를 차지하고 있으며, 실제로 모든 웹사이트의 46.9%가 이 공격에 노출되어 있습니다. HTTP Trace 기능을 비활성화하려면 아래 코드를 .htaccess 파일에 추가하세요.

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]

2. WordPress 설치 헤더 출력 제거하기

WordPress 사이트의 각종 기능을 위해 헤더에 많은 출력이 추가됩니다. 불필요한 정보 노출을 줄이려면 테마의 "functions.php" 파일에 아래 코드를 추가하여 이러한 출력을 제거할 수 있습니다.

remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
remove_action( 'wp_head', 'wp_generator' );
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
remove_action( 'wp_head', 'noindex', 1 );

3. WordPress 기본 데이터베이스 접두사 변경하기

공격으로부터 WordPress 사이트를 지키는 6가지 고급 보안 전략

WordPress 데이터베이스 테이블의 기본 접두사는 "wp_"입니다. 해커나 악성 봇은 이 값을 이용해 데이터베이스 테이블 이름을 추측할 수 있습니다. 접두사 값은 wp-config.php 파일에서 설정되므로, WordPress를 처음 설치할 때 변경해 두는 것이 가장 좋습니다. Change Table Prefix 플러그인을 사용하거나, 직접 수동으로 진행하려면 아래 단계를 따라 하세요.

  1. 데이터베이스 백업: 먼저 데이터베이스를 완전히 백업하고 안전한 곳에 저장합니다. UpdraftPlus, BackWPup 같은 백업 플러그인을 활용하면 편리합니다.
  2. 데이터베이스 덤프: 웹호스팅 관리자 페이지에서 phpMyAdmin을 사용해 WordPress 데이터베이스 전체를 텍스트 파일로 내보내고, 해당 파일도 별도로 백업해 둡니다.
  3. 접두사 교체: 코드 에디터로 텍스트 파일을 열어 모든 "wp_" 접두사를 새로운 값으로 일괄 교체합니다.
  4. 플러그인 비활성화: 관리자 화면에서 모든 플러그인을 비활성화합니다.
  5. 새 데이터베이스 가져오기: phpMyAdmin에서 기존 데이터베이스를 삭제한 뒤, 3번 단계에서 수정한 파일을 새 데이터베이스로 가져옵니다.
  6. 설정 파일 수정: wp-config.php 파일의 접두사 값을 새로운 값으로 수정합니다.
  7. 플러그인 재활성화: 비활성화했던 플러그인을 다시 활성화합니다.
  8. 퍼머링크 갱신: 설정 > 고유주소로 이동해 저장 버튼을 누르면 퍼머링크 구조가 새로고침됩니다. 단, 데이터베이스 접두사 변경은 도메인, URL, 퍼머링크 설정 자체를 바꾸는 작업이 아니라는 점을 기억하세요.

4. 위험 가능성이 있는 쿼리 문자열 차단하기

XSS 공격을 예방하려면 .htaccess 파일에 아래 코드를 추가하세요. 코드를 적용하기 전에 어떤 쿼리 문자열이 위험할 수 있는지 먼저 파악하는 것이 중요합니다. 이 규칙 세트는 URL 요청에서 다양한 악성 인젝션 시도를 걸러줍니다. 적용 시 두 가지를 유의하세요.

  • 일부 플러그인이나 테마가 이미 사용 중인 문자열을 제외하지 않으면 기능이 오작동할 수 있습니다.
  • 아래 나열된 문자열은 가장 흔한 사례일 뿐이며, 필요에 따라 문자열을 더 추가할 수 있습니다.
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC]
RewriteCond %{QUERY_STRING} ../ [NC,OR]
RewriteCond %{QUERY_STRING} boot.ini [NC,OR]
RewriteCond %{QUERY_STRING} tag= [NC,OR]
RewriteCond %{QUERY_STRING} ftp: [NC,OR]
RewriteCond %{QUERY_STRING} http: [NC,OR]
RewriteCond %{QUERY_STRING} https: [NC,OR]
RewriteCond %{QUERY_STRING} mosConfig [NC,OR]
RewriteCond %{QUERY_STRING} ^.*([|]|(|)|<|>|'|"|;|?|*).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%22|%27|%3C|%3E|%5C|%7B|%7C).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(%0|%A|%B|%C|%D|%E|%F|127.0).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(globals|encode|config|localhost|loopback).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(request|select|insert|union|declare|drop).* [NC]
RewriteRule ^(.*)$ - [F,L]

5. Deflect로 DDoS 공격 방어하기

초기 스타트업, 독립 언론, 인권 단체·활동가들의 웹사이트는 대체로 DDoS 공격을 감당할 만큼 충분한 기술력과 재정을 갖추지 못합니다. 바로 이런 상황에서 Deflect가 도움이 됩니다. Deflect는 상용 DDoS 완화 솔루션보다 더 나은 선택이라고 스스로를 소개합니다.

공격으로부터 WordPress 사이트를 지키는 6가지 고급 보안 전략

상용 DDoS 방어 서비스는 비용이 많이 들며, 보호 대상 사이트가 정기적으로 공격을 받으면 서비스 약관을 변경해 버릴 수도 있습니다. 반면 Deflect는 사이트를 지속적으로 보호함으로써 DDoS 공격을 선제적으로 차단합니다.

Deflect를 사용하면 클라이언트 서버와 시스템 관리 리소스에 가해지는 부담을 줄여 비용 절감 효과도 얻을 수 있습니다. 또한 모든 소스 코드와 문서를 크리에이티브 커먼즈 라이선스로 공개하고 있어, 누구나 자체 Deflect 네트워크를 구축해 DDoS 공격에 대응할 수 있습니다. 홈페이지에서 무료로 가입하면 즉시 서비스를 이용할 수 있습니다.

6. SSL 인증서와 방화벽 보호 적용하기

Sucuri 같은 보안 서비스 업체는 SSL(Secure Sockets Layer) 인증서 설치와 PCI 규정을 준수하는 방화벽 보호 같은 옵션을 제공합니다. 기술 지식이 없는 분들도 쉽게 이용할 수 있는 방법입니다.

공격으로부터 WordPress 사이트를 지키는 6가지 고급 보안 전략

이런 보안 솔루션은 간단히 설정해 두면 백그라운드에서 계속 작동하며, Sucuri처럼 필요할 때 자동으로 업데이트되는 경우도 있습니다. 유지보수 부담이 적으면서도 효과가 뛰어난 보안 옵션이라고 할 수 있습니다.

WordPress 플러그인을 통해서도 SSL 인증서를 적용할 수 있습니다. 추천할 만한 플러그인으로는 CM HTTPS Pro, Really Simple SSL, WP Force SSL, SSL Insecure Content Fixer, Easy HTTPS Redirection 등이 있습니다.

마무리

위에서 소개한 방법들을 활용하면 사이트 보안 수준이 눈에 띄게 향상될 것입니다. 다만 WordPress 보안은 항상 진화하고 있다는 점을 기억해야 합니다. 목표는 위험을 완전히 없애는 것이 아니라 최소화하는 것입니다. 그것이 사실상 불가능하기 때문입니다. WordPress 보안은 역동적이고 여러 층위에서 작동하기 때문에, 모든 상황에 맞는 만능 플러그인이나 만능 전략은 존재하지 않습니다.