WordPress 보안을 향상시키는 최고의 .htaccess 스니펫
WordPress 보안은 초보 블로거들 사이에서 가장 취약한 요소 중 하나입니다. 감독되지 않은 WordPress 설치에는 방치된 잠재적인 취약점이 꽤 많이 있습니다. 대부분의 WordPress 설치 튜토리얼에서는 몇 분 안에 WordPress를 배포하는 빠르고 쉬운 방법을 설명합니다. 그러나 그들은 몇 가지 중요한 보안 요소를 놓치고 있습니다. 예를 들어 디렉터리 검색과 'admin' 사용자 이름 사용은 심각한 보안 허점으로 간주됩니다. 오늘 우리는 WordPress 블로그의 보안을 향상시키는 데 도움이 되는 10개의 .htaccess 코드 조각을 살펴보겠습니다. 시작하기 전에 htaccess 파일이 무엇인지 간단히 살펴보겠습니다.
.htaccess 파일은 무엇입니까?
htaccess 파일은 Apache 웹 서버가 각 디렉터리에 대해 해석할 수 있는 선택적 구성 파일입니다. 디렉토리 비밀번호 보호, IP 차단, 공개 액세스로부터 파일 또는 폴더 차단 등과 같은 다양한 설정을 해당 파일에 저장할 수 있습니다. 일반적으로 .htaccess 파일은 기본 WordPress 설치 디렉토리에 있습니다. 기본적으로 영구링크 구조를 저장합니다.
팁: 튜토리얼을 시작하기 전에 현재 .htaccess 파일(있는 경우)을 Dropbox와 같은 클라우드 저장소 서비스에 백업하세요. 이는 특정 코드 조각으로 인해 사이트가 중단되는 경우 마지막으로 작동하는 것으로 알려진 .htaccess 파일로 롤백하는 것입니다. 의 시작하자.
1. 나쁜 봇 차단
.htaccess 파일의 가장 좋은 용도 중 하나는 여러 IP 주소가 사이트에 액세스하는 것을 거부하는 기능입니다. 이는 알려진 스패머와 기타 의심스럽거나 악의적인 액세스 출처를 차단할 때 유용합니다. 코드는 다음과 같습니다
# Block one or more IP address.
# Replace IP_ADDRESS_* with the IP you want to block
<Limit GET POST>
order allow,deny
deny from IP_ADDRESS_1
deny from IP_ADDRESS_2
allow from all
</Limit>IP_ADDRESS_1은 사이트 액세스를 차단하려는 첫 번째 IP입니다. 원하는 만큼 IP를 추가할 수 있습니다. 이러한 IP 주소가 어떤 사용자 에이전트(브라우저)를 사용하더라도 서버의 단일 파일에 액세스할 수 없습니다. 웹 서버는 자동으로 모든 액세스를 거부합니다.
2. 디렉토리 검색 비활성화
이는 WordPress 사이트에서 가장 취약한 보안 결함 중 하나입니다. 기본적으로 Apache 웹 서버는 디렉터리 검색을 활성화합니다. 이는 웹서버의 루트 디렉터리(때때로 홈 디렉터리라고도 함) 내부의 모든 파일과 폴더를 방문자가 등록하고 액세스할 수 있음을 의미합니다. 사람들이 귀하의 미디어 업로드나 테마 또는 플러그인 파일을 검색하는 것을 원하지 않기 때문입니다.
WordPress를 실행하는 개인 또는 비즈니스 웹사이트 10개를 무작위로 선택하면 그 중 6~8개는 디렉터리 검색이 비활성화되지 않습니다. 이를 통해 누구나가 wp-content/uploads 폴더나 기본 index.php 파일이 없는 다른 디렉토리를 쉽게 탐색할 수 있습니다. . 사실, 여러분이 보고 있는 스크린샷은 제가 수정 사항을 권장하기 전 제 고객 사이트 중 하나에서 가져온 것입니다. 디렉터리 탐색을 비활성화하는 코드 조각:
# Disable directory browsing
Options All -Indexes3. wp-content에서 선택한 파일만 허용
아시다시피 wp-content 폴더에는 대부분의 테마, 플러그인 및 모든 미디어 업로드가 포함되어 있습니다. 사람들이 제한 없이 액세스하는 것을 원하지 않을 것입니다. 디렉터리 검색을 비활성화하는 것 외에도 일부 파일 형식을 제외하고 모든 파일 형식에 대한 액세스를 거부할 수도 있습니다. 본질적으로 JPG, PDF, DOCX, CSS, JS 등과 같은 파일을 선택적으로 차단 해제하고 나머지는 거부할 수 있습니다. 이렇게 하려면 다음 코드 조각을 .htaccess 파일에 붙여넣으세요.
# Disable access to all file types except the following
Order deny,allow
Deny from all
<Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar)$">
Allow from all
</Files>코드를 사용하여 새 .htaccess 파일을 생성하고 wp-content 폴더에 붙여넣어야 합니다. 이것을 기본 설치 디렉토리에 두지 마십시오. 그렇지 않으면 작동하지 않습니다. 'rar' 뒤에 '|'를 추가하여 목록에 모든 파일 형식을 추가할 수도 있습니다. 위 목록에는 필요한 파일(XML, CSS, JavaScript, 일반적인 이미지 및 문서 형식, 마지막으로 가장 많이 사용되는 아카이브 형식)이 포함되어 있습니다.
4. wp-includes에 대한 모든 액세스를 제한합니다.
wp-includes 폴더에는 플러그인이나 테마 없이 WordPress의 핵심 버전을 실행하는 데 꼭 필요한 파일만 포함되어 있습니다. 기본 테마는 여전히 wp-content/theme 디렉토리에 있다는 점을 기억하세요. 따라서 귀하를 포함한 어떤 방문자도 wp-include 폴더의 콘텐츠에 대한 액세스를 요구해서는 안 됩니다. 다음 코드 조각을 사용하여 액세스를 비활성화할 수 있습니다.
# Block wp-includes folder and files
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>5. 선택한 IP 주소만 wp-admin에 액세스하도록 허용
wp-admin 폴더에는 WordPress 대시보드를 실행하는 데 필요한 파일이 포함되어 있습니다. 대부분의 경우 방문자는 계정을 등록하지 않는 한 WordPress 대시보드에 액세스할 필요가 없습니다. 좋은 보안 조치는 선택된 몇 개의 IP 주소만 wp-admin 폴더에 액세스할 수 있도록 하는 것입니다. 편집자, 기여자, 기타 관리자 등 WordPress 대시보드에 액세스해야 하는 사람들의 IP를 허용할 수 있습니다. 이 코드 조각은 고정 IP만 wp-admin 폴더에 액세스하도록 허용하고 나머지 세계에는 액세스를 거부합니다.
# Limit logins and admin by IP
<Limit GET POST PUT>
order deny,allow
deny from all
allow from 302.143.54.102
allow from IP_ADDRESS_2
</Limit>새 .htaccess 파일을 생성하여 기본 설치 디렉터리가 아닌 wp-admin 폴더에 붙여넣었는지 확인하세요. 후자의 경우 귀하 외에는 누구도 귀하의 사이트를 탐색할 수 없습니다. 심지어 검색 엔진도 마찬가지입니다! 당신은 확실히 그것을 원하지 않습니다. 이 법안의 몇 가지 단점은 다음과 같습니다.
- 귀하의 사이트에서 신규 사용자 등록을 허용하거나 홍보하는 경우 사용자 수를 추적하는 것이 거의 불가능합니다. 예를 들어 WPExplorer에서 멋진 무료 테마를 다운로드하려면 등록해야 합니다.
- 동적 IP 주소를 가진 사람들(주로 PPP 또는 PPPoE 프로토콜을 사용하는 ADSL 광대역 사용자)은 ISP에서 로그아웃하고 로그인할 때마다 IP가 변경됩니다. 확실히 이러한 모든 IP를 추적하고 이를 htaccess 파일에 추가하는 것은 비현실적입니다.
- 모바일 광대역: 3G를 사용하든 4G를 사용하든 IP 주소는 현재 연결되어 있는 기지국에 따라 다릅니다. 여행 중이라고 가정해 보세요. 출발지에서 몇 마일 이동할 때마다 IP가 끊임없이 변경됩니다. 다시 말하지만, htaccess 파일을 추적하는 것은 거의 불가능합니다.
- 공용 Wi-Fi 핫스팟: 공용 Wi-Fi 핫스팟을 사용하여 인터넷에 연결할 때 자격 증명을 사용하는 것은 절대 금물입니다. 작은 소프트웨어만 가진 어린이도 사용자가 입력하는 모든 문자를 추출할 수 있기 때문입니다. 말할 것도 없이, 각 Wi-Fi 핫스팟에는 고유한 IP 주소가 있습니다.
다행히도 VPN을 사용하면 이러한 모든 단점(첫 번째 단점 제외)을 해결할 수 있습니다. 단일 IP 주소만 사용하여 연결하도록 VPN을 설정한 경우 이를 htaccess 파일에 추가하기만 하면 모든 문제가 해결됩니다.
6. 모든 사람으로부터 wp-config.php 및 .htaccess를 보호하세요.
wp-config.php 파일에는 WordPress 사이트의 가장 민감한 액세스 자격 증명이 포함되어 있습니다. 여기에는 데이터베이스 이름, 액세스 자격 증명 및 기타 다양한 중요 데이터가 포함되어 있습니다. 어떤 경우에도 다른 사람이 이 파일을 조사하는 것을 원하지 않습니다. 물론 이 모든 보안의 소스인 .htaccess 파일 자체에 대한 공개 액세스를 비활성화하려고 합니다. 다음 코드를 사용하여 wp-config.php에 대한 액세스를 비활성화할 수 있습니다.
# Deny access to wp-config.php file
<files wp-config.php>
order allow,deny
deny from all
</files>모든 htaccess 파일에 대한 액세스를 거부하려면(일부는 wp-admin 및 기타 폴더에 있을 수 있음을 기억하십시오) 다음 코드 조각을 사용하십시오.
# Deny access to all .htaccess files
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>7. 이미지 핫링크 거부
가장 멋진 .htaccess 파일 해킹 중 하나인 이 해킹은 다리 사이에 꼬리를 달고 콘텐츠 스크레이퍼를 전송합니다. 누군가가 귀하의 사이트 이미지를 사용하면 귀하의 대역폭이 소모되고 대부분의 경우 이에 대한 크레딧도 제공되지 않습니다. 이 코드 조각은 해당 문제를 제거하고 핫링크가 감지되면 이 이미지를 보냅니다.
# Prevent image hotlinking script. Replace last URL with any image link you want.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourotherwebsite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/MlQAH71.jpg [NC,R,L]8. 브라우저 캐싱 활성화
클라이언트 측 캐싱으로도 알려진 이 .htaccess 해킹은 WordPress 사이트에 권장되는 브라우저 캐싱 옵션을 활성화합니다. HTML 사이트 등 다른 프로젝트에서도 사용할 수 있습니다.
# Setup browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>9. 유지 관리 페이지로 리디렉션
웹호스트를 마이그레이션하거나 일부 유지 관리 작업을 수행할 때 항상 정적 "유지 관리 중단" HTML 파일을 생성하여 웹 사이트가 업그레이드 또는 유지 관리 작업을 진행 중임을 방문자에게 알리는 것이 좋습니다. Maintenance.html 파일(또는 다른 파일 이름)을 생성하고 이를 기본 WordPress 설치 디렉터리에 업로드하기만 하면 됩니다. .htaccess 파일에 다음 코드 조각을 붙여넣습니다. 작업이 끝나면 전체 작업으로 돌아가려면 이 줄을 삭제하거나 주석 처리해야 합니다. 각 줄의 시작 부분에 '#'을 추가하여 주석 처리할 수 있습니다.
# Redirect all traffic to maintenance.html file
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L] 10. 사용자 정의 오류 페이지
.htaccess 파일을 사용하여 403, 404 및 500과 같은 오류에 대해 사용자 친화적인 사용자 정의 오류 페이지를 구성할 수도 있습니다. 오류 페이지를 준비한 후에는 error.html을 기본 WordPress 설치 디렉토리에 업로드해 보겠습니다. 그런 다음 .htaccess 파일에 다음 코드 조각을 추가하여 사용자 정의 오류 페이지를 활성화합니다.
# Custom error page for error 403, 404 and 500
ErrorDocument 404 /error.html
ErrorDocument 403 /error.html
ErrorDocument 500 /error.html결론:
오늘 우리는 WordPress 사이트를 강화하기 위한 가장 멋진 htaccess 해킹 중 일부를 배웠습니다. 각 모듈을 테스트하기 전후에 .htaccess 파일을 백업하면서 각 모듈을 하나씩 시험해 보는 것이 좋습니다. 이는 .htaccess 파일이 매우 중요하기 때문입니다. '#' 문자가 누락되었거나 '' 위치가 잘못되면 사이트의 무결성이 손상될 수 있습니다. 이동 중에 WordPress 대시보드에 자주 액세스하는 경우 wp-admin 폴더에 선택적 IP를 활성화하지 않는 것이 좋습니다.
당신에게 달려 있습니다. 이 게시물에 대한 당신의 의견은 무엇입니까? 이것이 htaccess 파일을 편집하는 수고를 할 가치가 있다고 생각하십니까? 더 나은 보안 팁을 알고 있나요? 우리는 당신의 의견을 듣고 싶습니다.










