시스템 측면

 

패키지 사용 및 보안 패치 적용

워드프레스를 구축할 경우 웹 서버(apache httpd, nginx), PHP, PHP-FPM, MySQL 등의 기반 SW 는 소스를 컴파일해서 설치하지 말고 yum 이나 apt-get 등의 패키지 관리자를 사용하여 설치해야 합니다.

소스로 설치할 경우 버그나 보안 패치가 힘들어지며 서버가 늘어날 경우 관리에 드는 시간과 비용이 늘어나게 됩니다.

 

패키지 설치 및 관리는 https://lesstif.gitbooks.io/web-service-hardening/content/linux.html 를 참고하세요.

SELinux 사용

RHEL이나 CentOS 를 사용한다면 SELinux 를 반드시 켜는 게 좋습니다. SELinux 에 대한 설명은 https://lesstif.gitbooks.io/web-service-hardening/content/selinux.html 를 참고하세요.

setenforce 1
CODE

 

Web server 정보 숨김

공격자가 시스템에 대한 정보를 얻기 못하도록 사용중인 운영체제와 웹 서버, 개발 언어에 대한 정보를 최소화합니다.

apache

ServerTokens Prod
ServerSignature Off
 
Header unset X-Powered-By
CODE

 

nginx

nginx.conf 의 http 항목에  server_tokens off; 를 추가합니다.

nginx.conf

http {
    server_tokens off;
    fastcgi_hide_header X-Powered-By;
CODE

 

워드프레스

추측이 쉬운 id 사용 하지 않기

admin, root, administrator 같이 관리자용으로 많이 사용하는 계정은 절대 사용하지 말 것

기존에 admin 계정이 있다면 다음 방법으로 변경

  1. 관리자로 로그인
  2. 새로운 관리자 계정 생성(유추가 쉬운 id (error))
  3. Posts 클릭
  4. Edit -> Apply 클릭후 Author 를 2번에서 생성한 계정으로 변경후 Update 클릭
     
  5. Pages 작성자도 마찬가지 방법으로 수정
  6. admin 계정 삭제

 

로그인 URL 변경

기본 로그인 url 은 wp-login 이며 관리자가 아닌 이상 외부에 노출할 필요가 없으므로 https://wordpress.org/plugins/rename-wp-login/ 를 설치해서 로그인 url 변경.

$ wp-cli plugin install rename-wp-login
$ wp-cli plugin  activate rename-wp-login
CODE

설치후 Permalinks -> Rename wp-login.php 를 선택하여 Login url 변경. 아래처럼 수정했을 경우 my-wordpress.com/?my-login-path 로 연결해야 관리자로 로그인할 수 있음.

 

플러그인/테마 업데이트

플러그인이나 테마의 취약점을 이용한 공격도 많으므로 wp-cli 또는 관리자 화면에서 수시로 플러그인 및 테마 업데이트를 해야합니다.

워드프레스의 취약점은 wpvulndb.com 에서 검색할 수 있습니다.

w
CODE

관리자 화면에서 업데이트시 워드프레스 플러그인 업데이트를 FTP 대신 SSH/SCP 로 하기를 참고하여 SCP 를 사용하는 것이 좋습니다/

설정 파일 접근 차단

.htaccess 나 wp-config.php 같은 설정 파일을 받아서 공격을 위한 자료로 활용할 수 있으니 접근을 차단해야 합니다.

자세한 내용은 https://lesstif.gitbooks.io/web-service-hardening/content/web-server.html#중요-파일-접근-차단 를 참고 하세요

apache httpd 2.2

<Files wp-config.php>
    order allow,deny
    deny from all
</Files>
 
<Files .htaccess>
    order allow,deny
    deny from all
</Files>
CODE

 

nginx

location ~ /\. {
    deny all;
}

location = /wp-config.php {
    deny all;
}
CODE

 

보안 강화 플러그인 사용

플러그인 설치는 command line 워드프레스 관리 유틸리티인 wp-cli 사용

iThemes Security

wp-cli plugin install better-wp-security
wp-cli plugin activate better-wp-security
CODE

 

Sucuri

적극 추천하는 플러그인으로 다음 명령어로 설치

wp-cli plugin install sucuri-scanner
wp-cli plugin activate sucuri-scanner
CODE

워드프레스 무결성 검사

  1. 관리자로 로그인한 후에 Sucuri Security -> Dashboard 로 진입
  2. 추가/변경되어 무결성이 일치하지 않을 경우 첨부처럼 경고창을 표시함
     
  3. 해킹으로 의심될 경우 위와 같이 Restore Source 를 선택하면 워드프레스 최초 소스 상태로 변경 가능
     

Malware Scan

현재 워드프레스 설치본에 malware 가 있는지 검사할 수 있음.

 

Hardening

워드프레스를 견고하게 할 수 있는 메뉴.

wordpress online scanner(온라인 스캐너)

Wordfence

다양한 기능

wp-cli plugin install wordfence
wp-cli plugin activate wordfence
CODE

설치후 scan 을 돌려서 컨텐츠와 설정 파일의 감염 여부 확인

같이 보기

Ref