일반적으로 사용하는 관리형 워드프레스 호스팅 서비스 보단 나는 개발자니깐 비용을 아끼자라는 마음가짐으로 AWS Lightsail을 선택하였다. 웹 개발에는 많은 경험이 없기에 하나씩 배우면서 재미있게 하고 있는 와중 내 블로그를 구글에서 검색 했을때 워드프레스 IP 노출 문제가 발생하였고 해결한 방법에 대해 작성한다.
워드프레스 IP 노출 문제 해결 목차
IP주소 노출 문제점
웹 사이트나 어플리케이션을 운영하는데 있어 보안은 매우 중요하다. IP로 직접 노출되면 사용자의 개인 정보와 보안에 취약해 질 수 있다. 공격자들은 IP주소를 통해 시스템에 대한 정보를 수집하고 취약점을 찾아내는데 사용 할 수 있다고 한다.
그리고 데이터 전송과정에서 발생하는 보안 문제를 해결하기 위해 SSL인증서가 사용 되지만 IP주소로 노출된다면 보안인증서가 적용되지 않아 보안상 문제가 생긴다.
또한 검색 엔진은 도메인을 통해 콘텐츠의 신뢰성을 높이는데 IP주소로 정보를 전달하게 되면 효과적이지 않으며 IP주소는 기억하기 어렵고 가독성이 떨어져 사용자의 편의성이 저하된다.
IP주소 노출 원인
IP주소가 노출되는 이유는 당연히 외부에서 IP 접근이 가능하도록 허용해두었기 때문이라고 하며 원인 두가지를 살펴 보았다.
- DNS 설정 문제: 도메인과 IP 주소 간의 매핑이 올바르게 이루어지지 않은 경우 발생할 수 있다.
- 검색 엔진 최적화 부적절한 설정: 웹 페이지의 SEO 설정이 부적절하게 구성 되었을 경우, 검색 엔진이 IP 주소를 우선시 될 수 있다.
사실 DNS 문제는 처음 워드프레스 개설시 AWS lightsail의 도메인서버 주소와 도메인사이트에서 설정을 제대로 했다면 문제가 있지 않을 것이다. 그래서 워드프레스 설정을 살펴보았다.
1. 워드프레스 주소 및 사이트 주소 설정
- WordPress 대시보드에서 “설정” > “일반”으로 이동
- “워드프레스 주소 (URL)”와 “사이트 주소 (URL)”이 올바른 도메인을 가리키도록 설정
- 만약 IP 주소가 여전히 사용 중이라면, 도메인으로 수정
2. WordPress 주소와 사이트 주소 변경
- 만약 대시보드에서 비활성화되어 변경이 어렵다면,
wp-config.php
파일을 열어 수정해야 된다.
# wp-config.php
define( 'WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/' );
define( 'WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/' );
3. htaccess 파일 확인
- WordPress 설치 디렉토리에 위치한
.htaccess
파일을 확인 - 올바른 RewriteRule이 있는지 확인, 도메인을 사용하도록 구성되어 있는지 확인
문제 해결 방법
위의 3가지 방법에 확인 하였을 때 처음 설정시 수정한 부분이 없었기 때문에 문제가 없었다. 구글링을 하다가 IP주소가 노출시 리다이렉트 시켜서 해결하는 방법으로 진행하였다.
방법은 AWS lightsail 인스턴스에 접속하여 .htaccess파일에 다음과 같이 조건을 추가 해주었다. (111.111.111.111 자신의 IP에 맞게 수정) 주석을 참고하여 필요한 조건을 추가하면 된다. 만약에 워드프레스 멀티사이트 일경우는 아래 사이트를 참고
vim /opt/bitnami/wordpress/.htaccess
# /opt/bitnami/wordpress/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
# HTTPS로 전송되었는지 확인
RewriteCond %{HTTPS} =on
# 요청 호스트 헤더가 지정된 IP인지 확인
RewriteCond %{HTTP_HOST} ^111\.111\.111\.111
# 앞의 두 조건이 동시에 충족될 경우 Forbidden(403)오류를 반환
RewriteRule ^ - [F]
# HTTP로 전송되었는지 확인
RewriteCond %{HTTPS} =off
# 요청 호스트 헤더가 지정된 IP인지 확인
RewriteCond %{HTTP_HOST} ^111\.111\.111\.111
# 앞의 두 조건이 동시에 충족될 경우 Forbidden(403)오류를 반환
RewriteRule ^ - [F]
# 기존 규칙
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Apache 웹서버를 재시작해준다.
sudo /opt/bitnami/ctlscript.sh restart apache
정상적으로 ip주소로 접속시 에러가 발생한다. 반영이 되지 않는 다면 브라우저의 쿠키 삭제 후 확인한다.
문제해결 후 작고 소중한 나의 방문자들이 사라졌다..얼릉 구글에서 반영해주기를 기다린다.
지금까지 검색엔진에서 IP 주소로 색인 되었을 때의 문제에 대해 해결해 보았습니다. 만약에 서버에 익숙하지 않은 개발자나 비개발자분들이라면 사소한 문제에 노출될 수 있기 때문에 관리형 호스팅 서비스를 선택하는 것도 좋은 방법인 것 같습니다. 읽어주셔서 감사합니다.
저도 위와 같은 문제로 알려주신 내용으로 수정했는데 반영 되는데 얼마나 걸릴까요?
안녕하세요 1~2주정도면 자동으로 반영이되는데 서치콘솔에서 삭제요청하는 방법도 있습니다.