개발자의 끄적끄적

[보안] 웹사이트 보안 강화를 위한 10가지 팁 [펌] 본문

개발

[보안] 웹사이트 보안 강화를 위한 10가지 팁 [펌]

효벨 2020. 3. 22. 02:00
728x90
반응형

[보안] 웹사이트 보안 강화를 위한 10가지 팁 [펌]

 

 

온라인에서 존재감을 높이기 위한 방법으로 많은 업체들이 홈페이지를 이용합니다. 그리고 개인들도 워드프레스와 같은 CMS(콘텐츠 관리 시스템)를 이용하여 블로그를 운영하는 경우가 많습니다. 웹사이트를 운영하다 보면 보안이 항상 염려될 수 있습니다. 보안을 소홀히 하면 사이트가 악성코드에 감염되거나 해킹을 당해 난처한 상황에 놓일 수 있습니다.

이 글은 보안업체인 Sucuri에서 최근 공개한 "10 Tips to Improve Your Website Security"라는 글을 참고하여 웹사이트 보안 강화를 위해 주의할 사항을 다루고 있습니다. 이 블로그에서 보안에 관한 여러 가지 글을 작성했지만, 종합적으로 정리할 필요성을 느끼고 있었습니다.

목차

  1. 1 - 항상 최신 버전으로 업데이트하기
  2. 2 - 강력한 암호 사용
  3. 3 - 1개 사이트 운영
  4. 4 - 현명한 사용자 액세스 관리
  5. 5 - 기본 CMS 세팅 변경
  6. 6 - 확장기능(Extension) 선택
  7. 7 - 백업
  8. 8 - 서버 Configuration 파일
  9. 9 - SSL 설치
  10. 10 - 파일 퍼미션
  11. 마치며
  12. 참고:

1 - 항상 최신 버전으로 업데이트하기

보안을 위해 최신 버전으로 업데이트해야 합니다. 매일 수 많은 웹사이트가 업데이트가 제대로 이루어지지 않은 소프트웨어 때문에 보안에 문제가 발생합니다.

새로운 플러그인이나 새로운 CMS 버전이 공개되면 곧바로 업데이트하는 것이 매우 중요합니다. 업데이트는 기능 개선뿐만 아니라 보안 개선이나 취약점 패치가 포함될 수 있습니다.

대부분의 웹사이트 공격은 자동화되어 봇이 끊임없이 사이트를 스캔하여 취약점이 있는 기회를 노리고 있습니다. 1개월마다 혹은 1주일마다 업데이트하는 것으로 충분하지 않습니다. 패치를 하기 전에 봇이 취약점을 발견할 가능성이 높습니다.

2 - 강력한 암호 사용

강력한 비밀번호를 사용해야 한다는 것은 보안에서 단골로 등장하지만 의외로 약한 비밀번호를 사용하는 사용자들이 많은 것 같습니다. 외우기 싶다는 이유로 'starwars' 같은 암호를 사용하는 경우가 있는데, 그런 경우 해킹을 당할 위험이 매우 높아집니다.

 

비밀번호는 △12자리 이상의 문자 조합 △대문자 및 소문자 포함 △특수문자 포함 등을 고려해서 랜덤하게 비밀번호를 설정하고, 여러 개의 계정에서 동일한 비밀번호를 사용하지는 안 됩니다.

비밀번호를 외우는 데 어려움을 겪는 경우 “LastPass”(온라인)나 “KeePass 2”(오프라인) 같은 비밀번호 관리자를 사용할 수 있습니다.

3 - 1개 사이트 운영

블루호스트나 사이트그라운드 등에서 제공하는 '무제한' 웹호스팅 플랜에서는 단일 서버 또는 계정에 많은 웹사이트를 호스팅할 수 있습니다. 하지만 이런 경우 공격 표면(Attack surface)이 커지기 때문에 바람직하지 않다고 하네요.

저는 한 계정에 여러 개의 도메인을 연결하여 이용하고 있습니다. 보안적인 측면에서 별로 좋지 않은 것 같습니다. 한 사이트가 멀웨어에 감염되면 동일 서버 내의 다른 사이트에 쉽게 감염이 될 수 있다고 하네요. 이런 경우 백업을 철저히 해야 할 것 같습니다.

사이트에 문제가 발생할 경우 롤백할 수 있도록 웹호스팅에서 복원 기능을 제공하는지 여부를 사전에 파악하면 좋을 듯 합니다. 카페24의 경우 1주일 이내의 기간으로 복원이 가능하고 사이트그라운드에서는 30일 이내 기간으로 롤백이 가능합니다.

4 - 현명한 사용자 액세스 관리

사이트에 여러 명의 사용자가 있는 경우 각 사용자에게 꼭 필요한 최소한의 권한을 부여하는 것이 안전합니다.

예를 들어, 어떤 사용자가 글을 작성하기를 원한다면 관리자 권한을 부여할 것이 아니라 글을 작성하는 데 필요한 최소한의 권한을 허용해야 합니다. 워드프레스의 경우 '글쓴이'(Author) 권한을 부여할 수 있습니다.

관리자 계정 개수도 최소화하는 것이 좋을 것 같습니다. 특정 작업을 위해 꼭 필요한 경우 임시로 권한을 높여주고, 작업이 완료되면 다시 회원 레벨을 본래대로 되돌릴 수 있습니다.

또, 외부인이 사이트에 접속해야 하는 경우(예: 문제 해결을 위해 필요한 경우), 임시 관리자 계정을 생성하여 제공하고 작업이 완료되면 계정을 삭제하도록 합니다. FTP 계정도 가급적이면 임시 계정을 만들어 제공하고, 작업 완료 후에 삭제하는 것이 좋습니다. 임시 계정을 만들 수 없는 경우에는 작업 완료 후에 비밀번호를 변경하도록 합니다.

5 - 기본 CMS 세팅 변경

오늘날의 CMS 어플리케이션은 사용이 편리하지만 보안적인 측면이 쉽지 않을 수 있습니다. 웹사이트에 대한 대부분의 공격은 자동적으로 이루어지며, 많은 공격이 기본 설정(Default settings)만을 사용하는 사용자를 대상으로 합니다.

따라서 선택한 CMS를 설치할 때 기본 설정을 변경하는 것만으로도 많은 공격을 피할 수 있습니다.

6 - 확장기능(Extension) 선택

CMS의 강점은 확장성이 뛰어나다는 점입니다. 하지만 이것은 또한 가장 큰 약점 중 하나가 될 수 있습니다. 사용자가 상상하는 거의 모든 기능을 제공하는 플러그인, 애드온, 익스텐션이 있습니다.

플러그인 등을 선택할 때에는 다음 사항을 고려해야 합니다.

  • 언제 최근 업데이트되었는가? - 가령 1년 이상 업데이트되지 않았다면 보안에 문제가 있을 수 있기 때문에 선택하지 않는 것이 좋습니다.
  • 플러그인의 나이와 설치 수 - 초자 개발자가 최근에 만들어졌고 설치된 사이트 수가 얼마 되지 않는 플러그인보다 경험 있는 개발자가 만들었고 많은 사이트에서 사용되고 있는 플러그인이 더 신뢰할 수 있습니다. 노련한 개발자는 최상의 보안 관행에 대해 잘 알고 있을 뿐만 아니라 플러그인 등에 악성코드를 넣어서 어렵게 쌓은 명성을 더럽히는 행위를 할 가능성이 훨씬 낮습니다.
  • 믿을 수 있는 출처 - 간혹 유료 테마나 유료 플러그인의 해킹 버전(Nulled version/Pirated version)을 다운로드하는 사용자가 있습니다. 하지만 그런 불법 버전에는 악성코드가 포함되어 있을 가능성이 매우 높습니다. 돈 몇 푼 아끼려고 하다가 더 큰 손해를 볼 수 있습니다.

워드프레스의 경우 오랫동안 업데이트가 안 된 플러그인은 피하도록 합니다. 그리고 비슷한 기능의 플러그인을 선택할 때에는 더 많은 사이트에 설치되어 사용되고 있고 사용자 평가가 좋은 플러그인을 선택하는 것이 좋습니다.

7 - 백업

백업은 아무리 강조해도 지나치지 않는 것 같습니다. 사이트에 예상치 못한 문제가 발생할 경우 백업본이 있으면 복구가 가능합니다. 백업본은 서버가 아닌 다른 곳에 저장해놓아야 안전합니다.

웹호스팅 업체에서 자동 백업을 제공하지 않는 경우, 워드프레스에서는 플러그인을 사용하여 백업할 수 있습니다.

 

8 - 서버 Configuration 파일

사용하는 웹 서버의 구성 파일에 대해 파악하도록 합니다.

  • Apache 웹서버는 .htaccess 파일을 사용합니다.
  • Niginx 서버는 nginx.conf 파일을 사용합니다.
  • Microsoft IIS 서버는 web.config 파일을 사용합니다.

서버 Configuration 파일을 통해 보안을 위한 몇 가지 설정을 할 수 있습니다.

9 - SSL 설치

SSL(Secure Sockets Layer)은 악성코드 공격으로부터 사이트를 보호하는 역할을 하지 않지만 개인정보보호를 위해 필요합니다.

특히 구글 크롬이 최근 업데이트되면서 SSL이 적용되지 않은 사이트에 "주의 요함" 경고가 표시됩니다. SSL 보안서버 인증서를 설치하면 SEO에도 유리합니다.

10 - 파일 퍼미션

파일 퍼미션(권한)은 파일에 대해 누가 어떤 작업을 할 수 있는지를 정의합니다.

퍼미션이란 다중 사용자가 이용하는 컴퓨터 시스템에서, 파일이나 디렉토리를 읽거나(read), 기록하거나(write) 또는 실행(execute)하는 등의 행위, 즉 파일 시스템과 같은 자원에 액세스 할 수 있는 자격 또는 접근 허가를 의미한다. 운영체계에 따라 조금씩 다르긴 하지만, 일반적으로 각 파일은 서로 다른 종류의 액세스나 사용자 또는 사용자 그룹에 대해 각기 다른 퍼미션을 부여할 수 있다(출처: permission ; 퍼미션 또는 (접근) 허가).

파일 퍼미션을 666으로 설정하거나 폴더 퍼미션을 777로 설정하면 *아무나" 악성코드를 삽입하거나 파일을 삭제하도록 허용하는 것이므로 안전하지 않습니다.

  • 워드프레스에서 모든 파일의 퍼미션은 644로 설정되어야 합니다.
  • 워드프레스에서 모든 폴더의 퍼미션은 755로 설정되어야 합니다.

마치며

항상 최신 버전으로 업데이트하고, 정기적으로 백업을 실시하고, 보안 관련 플러그인을 설치하면 도움이 됩니다. 그리고 강력한 비밀번호를 사용하고 다른 사람과 비밀번호를 공유하지 않아야 합니다.

기본적인 보안 관행을 따르고 위에서 다룬 사항에 유의하면 사이트를 안전하게 운영할 수 있을 것입니다.

 

 

출처 : https://www.thewordcracker.com/miscellaneous/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8-%EB%B3%B4%EC%95%88-%EA%B0%95%ED%99%94%EB%A5%BC-%EC%9C%84%ED%95%9C-10%EA%B0%80%EC%A7%80-%ED%8C%81/

반응형
Comments