대학의 학과 홈페이지, 공공기관 부설 연구소, 공공기관에서 운영하는 서비스 등은 정기적으로 보안점검을 받아야 합니다. 대개 외부업체에 돈을 주고 자동화된 점검툴을 돌리는 방식으로 점검을 하는데요, 대부분의 보안관련 툴들이 RXE의 구조를 제대로 이해하지 못하거나 케케묵은 규칙을 중요시하기 때문에 별 것 아닌 일을 심각한 보안취약점이라고 착각하여 무시무시한 보고서가 날아오곤 합니다. 이걸 제대로 해결하지 못하면 사이트를 제작하여 납품한 업체에 불신이 쌓이는 것은 물론, 공공 분야에서 오픈소스 CMS 도입을 꺼리는 핑계가 될 수 있습니다.

 

아래의 팁은 RXE로 만들어진 모 대학 모 학과 사이트에서 보안취약점 보고서를 받고 해결해 드리는 과정에서 발견한 것들입니다. 납품하실 때 꼼꼼하게 체크하여, 오픈소스 CMS를 사용하더라도 보안 면에서 절대 꿇리지 않는다는 것을 보여주세요.

 

1. /admin 경로로 관리자 화면에 접근할 수 없도록 해당 rewrite 규칙을 삭제하거나, 별도의 rewrite 규칙으로 막아야 합니다.

 

2. classes, files, modules 등 파일이 없는 폴더에 접근하면 403 오류가 발생하는데, 여기서 404 코드를 반환하도록 서버 설정을 조정하지 않으면 심각한 취약점이라고 시끄럽게 떠들어댑니다.

 

보안점검 나올 때마다 단골로 지적받는 부분입니다. 보안 점검툴이 대체로 403 코드보다는 404 코드를 선호하는 것 같습니다. 접근 권한이 없는 페이지라면 아예 존재하지 않는 척 해라... 라는 것 같네요. 위의 /admin 경로도 마찬가지입니다. 403으로 막아놓으면 뭐라고 합니다. 아예 없는 척(404)하세요.

 

예를 들어 nginx에서 error_page 403 404 500 502 503 504 =404 /error.html; 이렇게 하고 error.html을 만들어 놓으면 웬만한 오류는 모두 404로 처리되고 해당 에러페이지가 표시됩니다.


3. XE의 경우, captcha 애드온에 allowscriptaccess="always"로 되어 있는 것을 모두 allowscriptaccess="sameDomain"으로 변경해야 합니다. 라이믹스에는 이 애드온이 포함되어 있지 않으나, XE에서 업그레이드한 경우 파일이 남아 있어서 이 문제를 지적받을 수 있습니다.


4. XE는 존재하지 않는 글번호를 요청해도 200 OK 상태코드로 에러팝업을 표시합니다. 이 부분에서 404 코드를 반환하도록 패치해야 합니다. 이것도 보안점검시 단골로 걸리는 메뉴입니다. 아무 주소나 요청해도 모두 OK로 나오니까 글번호 파라미터를 조작할 위험이 있다는 거지요. (라이믹스는 문제 없음)

 

5. vid를 포함한 rewrite 규칙은 삭제해야 합니다. URL 구조가 이상해서 점검툴이 지나가다가 걸려 넘어집니다. (라이믹스 2.0 이상 버전은 해당없음)


6. 부트스트랩, 폰트어썸 등 압축된 스크립트를 갖고 뭐라고 하는 경우가 종종 있는데, 이건 원래 그렇게 제공되는 오픈소스 라이브러리이므로 문제가 아니라고 해명하면 됩니다.


7. 소스를 수정하면서 예전 버전을 이름이나 확장자만 바꾸어 백업해 놓으면 귀신같이 알아냅니다. config.inc.php.bak, _bootstrap.min.js 등 불필요한 예전 버전은 모두 삭제하세요. 특히 db.config.php 같은 파일을 확장자만 바꿔서 백업해 놓으면 소스가 노출될 우려가 있습니다. 이건 실제로 무척 위험한 취약점입니다.


8. 보안취약점 점검툴이 동일한 IP에서 상당히 많은 요청을 발생시킵니다. F5 공격 방어를 위해 아파치에서 mod_evasive를 사용하거나, nginx에서 limit_req를 설정해 놓으면 여기에 걸릴 수 있습니다.

 

아파치는 기본 에러코드가 403이고 nginx는 503인데, 위에서 썼듯이 403도 취약점 점검툴이 그다지 좋아하는 코드는 아니고... 심지어 503은 자기가 해킹에 성공해서 서버가 다운된 줄 알고 신나게 취약점 보고서를 써댑니다. limit_req_status를 429 "Too Many Requests"로 변경해서, 취약점 점검툴이 자뻑하지 않도록 해주세요.

 

9. 코어 업데이트는 기본입니다. 오래된 버전을 사용하면 위에 나열한 것 외에도 굉장히 많은 부분을 지적받습니다. 오래된 레이아웃 등 서드파티 자료도 마찬가지입니다. 공공 부문이라면 서드파티 자료는 거의 사용하지 않는 것이 바람직합니다.

 

기진곰

profile
GitHub @kijin 사람을 위한 인터넷 생태계의 발전에 많은 관심을 갖고 있습니다.
우리가 만들어 가는 XE의 새 이름, 라이믹스(Rhymix) 프로젝트에 참여하고 있습니다.
오픈소스 도로명주소 검색서버 및 API Postcodify를 개발, 운영중입니다.
국내외 서버 및 클라우드서버 세팅, 이전, 튜닝해 드립니다.
  • profile
    4번 저희 라이믹스 사이트 3곳 모두 404 가 뜨지 않고 그냥 대상을 찾을수 없다고 뜨는데요. 이건 뭐가 잘못된 건가요?
  • profile profile
    화면에 무엇이 뜨는지는 중요하지 않습니다. 개발자도구로 봤을 때 HTTP 코드만 404로 나오면 됩니다.
  • profile profile
    네. 404가 뜨는거 확인했습니다. 화면에 다르게 떠서 200이 반환된 줄 알았네요.
  • ?

    예전에 도서관 20개정도 관리할때 늘 머리 아팠던 일 중에 하나가 보안관련 부분이었는데.
    라이믹스 이용하시는분들은 팁을 잘 활용하시면 좋겠네요.
    개인사이트 운영할땐 상관안할수 있는 부분이지만 공공기관의 경우 이부분들은 행정적 절차상의 문제때문에라도 문제가 되는 부분인지라.

    타 CMS보다 XE를 좋아하게 된것도 사실 XE가 보안업데이트가 바로바로 처리 되었기 때문이기도 하네요.

    라이믹스에 기진곰님이 계셔서 참 다행입니다. ^^

  • profile
    추천 + 스크랩 기능이 이럴때 필요한 것이군요!
  • profile
    라이믹스2 도입하면서부터 /admin 관련 rewrite가 사라졌는데, /admin으로 접근하는 걸 막으려면 어떻게 수정해야 할까요?

    별도의 코어 수정이 필요할까요?
  • profile profile
    라이믹스 rewrite 규칙보다 먼저 /admin에 대한 규칙을 추가하면 될 것 같습니다.
    존재하지 않는 경로로 rewrite시켜 버리거나, nginx라면 return 404; 하는 방법도 있겠지요.