워드프레스 사이트 안전하게 운영하기

워드프레스로 개발된 사이트는 오픈 소스이기 때문에 관리를 하지 않을 경우, 해킹 당하기가 쉽기 때문에, 꾸준히 관리해야 하는데, 여기서는 관리할 때 무엇부터 보아야 할지 설명을 하겠습니다.

워드프레스는 코어, 플러그인, 테마 순으로 로딩됩니다. 특히 워드프레스 하드닝 ( 보안강화 ) 작업에서 가장 중요한 것은 코어 버전 업입니다.

또 플러그인 중에 취약점이 있는 플러그인을 설치하면 매우 위험합니다.

취약점이 있는 플러그인인지 아닌지 어떻게 아냐고요 ?

다수의 개발자에 의해 검증된 코드는 비교적 안전하지만 사용자가 적은 플러그인은 안전하지 못한 편입니다. 하지만 무조건 다수가 설치했다고 또 안전하다고 말할 수도 없습니다. 개발자가 왠지 실력 있고, 깔끔한 플러그인이 좋습니다.

그것을 어떻게 아냐고요 ? 사실 그 부분은 커뮤니티에서 토론을 통해 알 수 있습니다.

워드프레스 유저들 끼리 어떤 테마와 플러그인이 좋은지 많은 대화를 적극적으로 나누어야 하는 이유라고 생각합니다.

테마 플러그인 많이 깔아보고 사용해보고 또 뭔가 오류 코드 많이 보이거나 속도 느려지면 지우고 그런 과정 속에 좋은 플러그인들을 추천해볼까 해요.


우선 플러그인 하나로 워드프레스 보안 강화를 하겠다 라면 wp_cerber 라는 플러그인을 추천드립니다.

wp-cerber

이 녀석을 설치하면 좋은 점은 Brute force 형식으로 ID PWD 를 주입해서 때려 맞추는 시도들을 막아내고, xmlrpc 보안 취약점이라던지 기타 알려진 많은 취약점들을 퇴치해 줍니다.


firewall-cmd 와 fail2ban 을 이용해서 워드프레스 하드닝 작업을 할 수도 있습니다.

https://bjornjohansen.no/using-fail2ban-with-wordpress

이 블로그의 글을 보고 /etc/fail2ban/jail.d/wordpress.conf 에 필요한 코드를 넣어주면 됩니다.

cerber 에서도 잡아주고 fail2ban 에서 막아주면 좀 더 안전하겠죠 ?

fail2ban 에서 잡으면 좀 더 앞단에서 잡기 때문에 불필요한 자원 리소스를 줄여줄 것 같네요.


또는 웹서버에서도 워드프레스 하드닝 작업을 할 수 있습니다.

Securing your WordPress site running on Nginx

이 블로그의 이야기에 따르면

가상 디렉토리의 폴더에 권한을 다 지정해서 막아버리는 식으로 하드닝 작업을 하더라고요.

네트웍을 통해서 칩입하는 공격은 저런 식으로 막아낼 수 있지만, 파일 권한 역시 중요합니다.

워드프레스의 기능이 문제가 없을려면 사용권한은 호스트 ID 로 되어 있어야 하거든요.

워드프레스는 플러그인 테마가 ftp 로 설치되기 때문에 ftp 서버를 항상 열어두어야 합니다. ftp 를 막으면 자동업데이트라던지 업데이트 할 때마다 애를 먹게 되니깐요.

예를 들어 /home/abc/public_html 에서 abc.com 을 워드프레스로 돌리고 있다면, wp_root 는 /home/abc/public_html 이 됩니다.

그러면 올바른 권한을 위해서는

여기까지가 기본적인 세팅이고요.

하지만  워드프레스는 uploads 폴더를 사용해야 하고, 서버에서 파일이 올라갈려면 또 세팅을 더 해야합니다.

nginx 나 apache 를 apache 권한으로 돌린다고 가정하면

이렇게 한 다음에 플러그인 중에 특별한 폴더를 써야하는 녀석들이 있으면, 그 플러그인을 쓰는 동안 잠깐 권한을 777 로 줬다 빼거나 abc 를 apache 로 바꿨다가 돌리거나 하면 됩니다.

운영하는 사이트를 코어 버전업할 때는 어떻게 하나요 ?

워드프레스 코어를 버전 업 할 때는 파일 권한이 뒤바뀌지 않게 다른 폴더에 파일을 모두 풀어 놓은 다음에 cp -rf 명령어로 복사하는 것이 제일 좋은 방법입니다.

이런 식으로 복사가 되면, 기존에 있던 파일들의 권한과 속성이 그대로 유지되는 장점이 있습니다.

한편 cp -rf 하기 전에는 /root/.bashrc 에 cp -rf 에 alias 로 막힌 거 있는지 확인하고 있으면 주석처리 해야 합니다.