WordPress 설치의 상위 5가지 보안 허점

WordPress 설치는 원하는 만큼 안전하거나 안전하지 않을 수 있습니다. 보안과 관련하여 가장 중요한 5가지 사항을 알아보십시오.

WordPress 보안에 대한 우려와 불만은 새로운 것이 아닙니다.

CMS가 필요하고 WordPress를 사용하지 않는 서비스 제공업체에 문의하게 된 경우 보안은 가장 많이 듣게 될 죄수입니다. 모든 사람이 WordPress를 중단하고 정적 사이트 생성기 또는 헤드리스 CMS로 전환해야 한다는 의미입니까?

아니요, 인생의 모든 진리와 마찬가지로 이 진리에도 많은 면이 있기 때문입니다.

WordPress는 매우 안전하지 않습니까?

WordPress에 구축된 몇 가지 거대한 웹사이트를 살펴보겠습니다.

  • 테크크런치
  • 더 뉴요커
  • BBC 아메리카
  • 블룸버그
  • MTV 뉴스
  • 플레이스테이션 블로그

그렇다면 터무니없이 깊은 주머니와 상상을 초월하는 인력을 보유한 이 회사들이 WordPress에서 전환하지 않는 이유는 무엇입니까? 답이 레거시 코드라고 생각한다면 다시 생각해 보십시오. 이러한 이름의 경우 데이터 보안과 공개 이미지가 200,000달러 미만의 비용(추정)이 드는 단순 마이그레이션보다 훨씬 더 중요합니다.

확실히 그들의 엔지니어는 자신이 하는 일을 알고 있고 WordPress에 근본적이고 해결할 수 없는 보안 문제가 없다고 생각합니까?

나조차도 한 달에 350만~400만 명의 방문자가 방문하는 WordPress 설치를 관리하는 행운을 누리고 있습니다. 지난 8년간 총 보안 침해 건수는? 영!

그래서 . . . 워드프레스는 안전한가요?

트롤링처럼 보이면 죄송하지만 제 답변은 다음과 같습니다.

내가 그렇게 말하는 이유는 삶의 모든 진리가 그렇듯이 복잡하기 때문입니다. 합법적인 답변에 도달하려면 먼저 WordPress(또는 그 문제에 대해 사전 빌드된 CMS)가 어딘가에 영구적으로 붙이고 끝낼 수 있는 찬장과 다르다는 것을 이해해야 합니다.

종속성이 많은 복잡한 소프트웨어입니다.

  • PHP는 빌드 언어입니다.
  • 설치를 호스팅하는 공개적으로 보이는 시스템
  • 방문자를 처리하는 데 사용되는 웹 서버(Apache, Nginx 등)
  • 사용 중인 데이터베이스(MySQL/MariaDB)
  • 테마(PHP, CS 및 JS 파일 번들)
  • 플러그인(PHP, CS 및 JS 파일 번들)
  • 설치 목표 달성 목표에 따라 그 이상

즉, 이러한 이음매 중 하나에서 보안 위반이 발생하면 WordPress 위반이라고 합니다.

  DNS 캐시란 무엇이며 업데이트 방법

서버의 루트 비밀번호가 admin123이고 해킹당했다면 워드프레스 보안 결함인가요?

PHP 버전에 보안 취약점이 있거나 구매하여 설치한 새 플러그인에 눈에 띄는 보안 허점이 있는 경우 등등. 요약하자면: 하위 시스템이 실패하고 WordPress 보안 실패입니다.

제쳐두고, 이것이 PHP, MySQL 및 Apache가 안전하지 않다는 인상을 주지 않도록 하십시오. 모든 소프트웨어에는 취약점이 있으며 오픈 소스의 경우 그 수는 어마어마합니다(누구나 보고 분석할 수 있기 때문에).

누군가가 “보안”이라고 말했습니까? 😛

이 모든 연습에서 우리가 배우는 것은 다음과 같습니다.

그 자체로 안전하거나 안전하지 않은 것은 없습니다. 사슬의 연결을 형성하는 데 사용되는 다양한 구성 요소가 사용됩니다. 물론 사슬은 가장 약한 것만큼이나 강합니다. 역사적으로 WordPress의 “안전하지 않음” 레이블은 이전 PHP 버전, 공유 호스팅 및 신뢰할 수 없는 소스의 플러그인/테마 추가의 조합이었습니다.

동시에, 꽤 흔한 실수로 인해 WordPress 설치를 악용하는 방법을 알고 결정한 사람들에게 취약하게 만듭니다. 그리고 그것이 이 포스트의 내용입니다. 따라서 더 이상 고민하지 않고(및 순환 인수) 시작하겠습니다.

해커가 악용할 수 있는 주요 WordPress 허점

WordPress 테이블 접두사

유명한 5분 설치는 WordPress에 일어날 수 있는 가장 좋은 일이지만 모든 설치 마법사와 마찬가지로 우리를 게으르게 만들고 모든 것을 기본값으로 남겨둡니다.

즉, WordPress 테이블의 기본 접두사는 wp_이므로 누구나 추측할 수 있는 테이블 이름이 됩니다.

  • wp 사용자
  • wp 옵션
  • wp 포스트

이제 악의적인 데이터베이스 쿼리가 교묘하게 삽입되어 WordPress 내부에서 실행되는 SQL 주입으로 알려진 공격을 고려하십시오(참고 — 이것은 결코 WordPress/PHP 전용 공격이 아닙니다).

WordPress에는 이러한 유형의 공격을 처리할 수 있는 메커니즘이 내장되어 있지만 누구도 이러한 공격이 발생하지 않을 것이라고 보장할 수 없습니다.

따라서 어떤 식으로든 공격자는 DROP TABLE wp_users와 같은 쿼리를 실행할 수 있습니다. DROP TABLE wp_posts;, 모든 계정, 프로필 및 게시물은 복구할 기회 없이 즉시 지워집니다(백업 구성표가 없는 경우에도 마지막 백업 이후 데이터는 손실될 수 있습니다. ).

설치 중에 접두사를 변경하는 것은 큰 일입니다(노력이 필요 없음).

sdg21g34_와 같은 임의의 것은 말도 안되고 추측하기 어렵기 때문에 권장됩니다(접두사가 길수록 더 좋습니다). 가장 좋은 점은 이 접두어를 기억할 필요가 없다는 것입니다. 접두사는 WordPress가 저장하는 것이므로 다시는 그것에 대해 걱정할 필요가 없습니다(기본 wp_ 접두사에 대해 걱정하지 않는 것처럼!).

  전화기 및 데스크탑에서 알람 이름을 지정하는 방법

기본 로그인 URL

웹 사이트가 WordPress에서 실행 중인지 어떻게 알 수 있습니까? 대표적인 징후 중 하나는 웹사이트 주소에 “/wp-login.php”를 추가하면 WordPress 로그인 페이지가 표시된다는 것입니다.

내 웹사이트(http://ankushthakur.com)를 예로 들어 보겠습니다. 워드프레스에 있나요? 글쎄, 계속해서 로그인 부분을 추가하십시오. 너무 게으른 경우 다음과 같은 일이 발생합니다.

¯_(ツ)_/¯

워드프레스 맞죠?

이 정도가 알려지면 공격자는 기뻐서 손을 비비고 알파벳순으로 Bag-O’-Doom에서 불쾌한 트릭을 적용하기 시작할 수 있습니다. 가난한 날!

해결책은 기본 로그인 URL을 변경하고 신뢰할 수 있는 사람에게만 제공하는 것입니다.

예를 들어, 이 웹 사이트는 WordPress에도 있지만 http://koreantech.org.com/wp-login.php를 방문하면 깊은 실망만 얻을 수 있습니다. 로그인 URL은 숨겨져 있고 관리자만 알고 있습니까?

로그인 URL을 변경하는 것도 로켓 과학이 아닙니다. 이것만 잡아 플러그인.

축하합니다. 무차별 대입 공격에 대한 실망스러운 보안의 또 다른 계층을 추가했습니다.

PHP 및 웹 서버 버전

우리는 이미 작성된(그리고 작성 중인) 소프트웨어의 모든 부분이 악용되기를 기다리는 버그로 가득 차 있다는 점을 논의했습니다.

PHP도 마찬가지입니다.

최신 버전의 PHP를 사용 중이더라도 어떤 취약점이 존재하는지 확신할 수 없으며 하룻밤 사이에 발견될 수 있습니다. 해결책은 웹 서버에서 보낸 특정 헤더를 숨기는 것입니다(헤더에 대해 들어본 적이 없습니까? 읽기 이것!) 브라우저가 브라우저에 연결할 때: x-powered-by.

즐겨 사용하는 브라우저의 개발 도구를 확인하면 다음과 같습니다.

여기에서 볼 수 있듯이 웹사이트는 Apache 2.4에서 실행되고 PHP 버전 5.4.16을 사용한다고 알려줍니다.

이제 우리는 이미 이유 없이 수많은 정보를 전달하고 있어 공격자가 도구 선택 범위를 좁힐 수 있습니다.

이러한(및 유사한) 헤더를 숨겨야 합니다.

다행히도 신속하게 수행할 수 있습니다. 불행히도 시스템의 내부로 뛰어들어 중요한 파일을 엉망으로 만들어야 하므로 정교한 기술 지식이 필요합니다. 따라서 제 조언은 웹사이트 호스팅 제공업체에 이 작업을 요청하는 것입니다. 컨설턴트가 작업을 완료할 수 있는지 여부를 확인하지 못하는 경우 설정이 그러한 가능성이 있는지 여부는 웹사이트 호스트에 크게 좌우됩니다.

  집에서 더 나은 사진을 찍는 방법(플래시 필요 없음)

작동하지 않으면 호스팅 공급자를 전환하거나 VPS로 이동하고 보안 및 관리 문제에 대한 컨설턴트를 고용해야 할 때일 수 있습니다.

그만한 가치가 있습니까? 당신만이 결정할 수 있습니다. 🙂

아, 그리고 보안 헤더를 무시하고 싶다면 여기 수정 사항이 있습니다!

로그인 시도 횟수

해커 핸드북에서 가장 오래된 트릭 중 하나는 사전 공격.

아이디어는 그 중 하나가 성공하지 않는 한 엄청나게 많은 조합(가능한 경우 수백만)의 암호를 시도한다는 것입니다. 컴퓨터는 하는 일에서 번개처럼 빠르기 때문에 그러한 어리석은 계획은 합리적이고 합리적인 시간에 결과를 산출할 수 있습니다.

일반적이고 매우 효과적인 방어 방법 중 하나는 오류를 표시하기 전에 지연을 추가하는 것입니다. 이것은 수신자를 기다리게 만듭니다. 즉, 해커가 사용하는 스크립트인 경우 완료하는 데 너무 오래 걸립니다. 이것이 바로 컴퓨터나 즐겨찾는 앱이 약간 튕기다가 “아, 잘못된 비밀번호입니다!”라고 말하는 이유입니다.

어쨌든 요점은 WordPress 사이트에 대한 로그인 시도 횟수를 제한해야 한다는 것입니다.

설정된 횟수(예: 5회)를 초과하면 계정이 잠기고 계정 소유자의 이메일을 통해서만 복구할 수 있어야 합니다.

고맙게도 이 작업을 완료하는 것은 멋진 플러그인.

HTTP 대 HTTPS

귀하의 공급업체가 귀하를 괴롭히는 SSL 인증서는 귀하가 생각하는 것보다 더 중요합니다.

브라우저에 “보안”이라고 표시된 녹색 잠금 아이콘을 표시하는 것은 단순히 평판 도구가 아닙니다. 오히려 SSL 인증서를 설치하고 모든 URL이 “https”에서 작동하도록 하는 것만으로도 웹사이트가 열린 책에서 비밀스러운 스크롤로 바뀌기에 충분합니다.

어떻게 이런 일이 일어나는지 이해가 되지 않는다면 다음을 읽어보십시오. 중간자 공격.

컴퓨터에서 서버로 흐르는 트래픽을 가로채는 또 다른 방법은 패킷 스니핑입니다. 패킷 스니핑은 수동적인 형태의 데이터 수집이며 중간에 위치하기 위해 애쓸 필요조차 없습니다.

일반 “HTTP”를 통해 실행되는 사이트의 경우 네트워크 트래픽을 가로채는 사람, 암호 및 신용 카드 번호가 일반 텍스트로 명확하게 표시됩니다.

출처: comparitech.com

무서운? 매우!

그러나 SSL 인증서를 설치하고 모든 URL이 “https”로 변환되면 이 민감한 정보는 서버만 해독할 수 있는 횡설수설로 표시됩니다. 즉, 일년에 몇 달러를 낭비하지 마십시오. 🙂

결론

이 5가지를 제어하면 웹사이트가 잘 보호될까요?

아니, 전혀. 수많은 보안 기사에서 말했듯이 100% 안전하지는 않지만 합리적인 노력으로 이러한 문제의 많은 부분을 제거하는 것은 가능합니다. 사이트를 전체적으로 보호하기 위해 SUCURI 클라우드 WAF 사용을 고려할 수 있습니다.