워드프레스 보안 강화하기
시스템 측면
패키지 사용 및 보안 패치 적용
워드프레스를 구축할 경우 웹 서버(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
Web server 정보 숨김
공격자가 시스템에 대한 정보를 얻기 못하도록 사용중인 운영체제와 웹 서버, 개발 언어에 대한 정보를 최소화합니다.
apache
ServerTokens Prod ServerSignature Off Header unset X-Powered-By
nginx
nginx.conf 의 http 항목에 server_tokens off; 를 추가합니다.
http { server_tokens off; fastcgi_hide_header X-Powered-By;
워드프레스
추측이 쉬운 id 사용 하지 않기
admin, root, administrator 같이 관리자용으로 많이 사용하는 계정은 절대 사용하지 말 것
기존에 admin 계정이 있다면 다음 방법으로 변경
- 관리자로 로그인
- 새로운 관리자 계정 생성(유추가 쉬운 id
)
- Posts 클릭
- Edit -> Apply 클릭후 Author 를 2번에서 생성한 계정으로 변경후 Update 클릭
- Pages 작성자도 마찬가지 방법으로 수정
- 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
설치후 Permalinks -> Rename wp-login.php 를 선택하여 Login url 변경. 아래처럼 수정했을 경우 my-wordpress.com/?my-login-path 로 연결해야 관리자로 로그인할 수 있음.
플러그인/테마 업데이트
플러그인이나 테마의 취약점을 이용한 공격도 많으므로 wp-cli 또는 관리자 화면에서 수시로 플러그인 및 테마 업데이트를 해야합니다.
워드프레스의 취약점은 wpvulndb.com 에서 검색할 수 있습니다.
w
관리자 화면에서 업데이트시 워드프레스 플러그인 업데이트를 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>
nginx
location ~ /\. { deny all; } location = /wp-config.php { deny all; }
보안 강화 플러그인 사용
플러그인 설치는 command line 워드프레스 관리 유틸리티인 wp-cli 사용
iThemes Security
wp-cli plugin install better-wp-security wp-cli plugin activate better-wp-security
Sucuri
적극 추천하는 플러그인으로 다음 명령어로 설치
wp-cli plugin install sucuri-scanner wp-cli plugin activate sucuri-scanner
워드프레스 무결성 검사
- 관리자로 로그인한 후에 Sucuri Security -> Dashboard 로 진입
- 추가/변경되어 무결성이 일치하지 않을 경우 첨부처럼 경고창을 표시함
- 해킹으로 의심될 경우 위와 같이 Restore Source 를 선택하면 워드프레스 최초 소스 상태로 변경 가능
Malware Scan
현재 워드프레스 설치본에 malware 가 있는지 검사할 수 있음.
Hardening
워드프레스를 견고하게 할 수 있는 메뉴.
wordpress online scanner(온라인 스캐너)
Wordfence
다양한 기능
wp-cli plugin install wordfence wp-cli plugin activate wordfence
설치후 scan 을 돌려서 컨텐츠와 설정 파일의 감염 여부 확인
같이 보기
- WP-CLI - 워드프레스를 명령창에서 관리하는 유틸리티
- wordpress site url 변경
- 워드프레스 보안 툴과 사이트
- RHEL/CentOS 7 httpd SELinux policy 변경
Ref
- https://yoast.com/wordpress-security/
- http://researchasahobby.com/best-security-plugin-for-wordpress-combination/