Amazon Lightsail을 이용하여 WordPress 인스턴스를 운영하는 경우, 고정 IP를 할당받게 되므로 보안상의 이유로 브라우저에서 IP 주소로 직접 접속하는 것을 차단할 필요가 있다. HTTP(80 포트)를 통한 접근은 SSL 인증서를 적용하지 않은 상태로 접속하게 되어 보안 취약점이 발생할 수 있으므로 반드시 차단해야 한다. 또한 HTTPS(443 포트)로 접근할 경우, 올바른 도메인으로 리다이렉트되도록 설정하여 사용자에게 안전한 접속 환경을 제공할 수 있다. 이러한 설정은 Apache 웹 서버의 VirtualHost 설정 파일을 수정하여 쉽게 적용할 수 있다.
1. SSH 접속 및 Apache 설정 파일 수정
1.1 Lightsail SSH 접속
먼저, Lightsail 콘솔에 접속한 후, 워드프레스 인스턴스를 선택한다. 이후 “Connect using SSH” 버튼을 클릭하여 SSH 터미널에 접속한다. SSH 접속 후 Apache 설정 파일을 수정할 준비를 한다.

1.2 Apache 설정 파일 위치 및 편집
Apache의 주요 설정 파일은 다음과 같은 경로에 위치한다.
- httpd.conf:
/opt/bitnami/apache2/conf/httpd.conf
- httpd-vhosts.conf:
/opt/bitnami/apache2/conf/extra/httpd-vhosts.conf
먼저, httpd.conf 파일을 vi 또는 vim 에디터로 열어 VirtualHost 설정을 활성화한다. 기본적으로 아래와 같이 주석처리되어 있는 VirtualHost 관련 부분에서 주석(#)을 제거한다.

# Virtual hosts
Include "conf/extra/httpd-vhosts.conf"

주석을 제거하여 실제로 httpd-vhosts.conf 파일이 적용되도록 설정한 후 저장(wq)하고 나간다.
2. VirtualHost 설정을 통한 공인 IP 접근 차단
2.1 기존 샘플 설정 주석 처리
httpd-vhosts.conf 파일을 열면 기본 샘플 VirtualHost 설정이 존재한다. 이 샘플 설정은 보통 아래와 같이 구성되어 있으며, 실제 서비스에는 필요 없으므로 모두 주석처리한다.
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot "/opt/bitnami/apache/docs/dummy-host.example.com"
# ServerName dummy-host.example.com
# ServerAlias www.dummy-host.example.com
# ErrorLog "logs/dummy-host.example.com-error_log"
# CustomLog "logs/dummy-host.example.com-access_log" common
#</VirtualHost>
샘플 설정을 모두 주석 처리한 후, 실제 필요한 설정을 추가한다.
2.2 고정IP의 HTTP(80 포트) 접근 차단 설정
공인 IP 주소로의 HTTP 접근을 차단하기 위해 아래와 같이 VirtualHost 설정을 추가한다. 여기서 [본인의 고정IP 주소]
부분에는 실제 할당받은 고정 IP 주소를 입력한다.
<VirtualHost *:80>
ServerName [본인의 고정IP 주소]
<Location />
Order deny,allow
Deny from all
</Location>
</VirtualHost>

이 설정은 브라우저에서 고정 IP로 HTTP 접속 시 “Forbidden” 오류 메시지를 출력하도록 한다. 단, 설정 파일 작성 시 <Location> 태그는 반드시 <Location />
과 같이 슬래시(/
)를 포함해야 하며, Order 지시어의 인자에는 띄어쓰기를 제거하여 “deny,allow”와 같이 작성해야 한다.
3. Apache 서버 재시작 및 인스턴스 재부팅
설정 파일을 수정한 후, Apache 웹 서버를 재시작하여 변경 사항을 적용한다. 재시작 명령어는 아래와 같다.
sudo /opt/bitnami/ctlscript.sh restart apache
설정 오류가 발생할 경우, 로그 메시지를 확인하여 <Location> 태그나 Order 지시어의 문법 오류를 수정한 후 재시작한다. 이후 Lightsail 콘솔에서 워드프레스 인스턴스를 재부팅하여 모든 서비스에 적용되도록 한다. 재부팅 후 약 1분 정도 지나면 설정이 정상적으로 적용되어 공인 IP로의 접근 시 “Forbidden” 메시지가 표시된다.
http://고정IP 으로 접속했을때, 아래와 같이 접속이 차단된다.

4. HTTPS(443 포트) 접근 시 도메인 리다이렉트 및 차단 설정
4.1 HTTPS 접근 차단 설정 필요성
SSL 인증서를 적용한 경우, 443 포트가 열려 있으므로 공인 IP 주소로 HTTPS 접속이 가능하다. 일부 브라우저에서는 SSL 인증서 문제로 보안 경고가 발생할 수 있으므로, 공인 IP를 통한 HTTPS 접근도 차단하는 것이 바람직하다.
4.2 고정IP의 HTTPS(443 포트) 차단 및 도메인 주소로의 리다이렉트 설정 추가
HTTPS 접근을 차단하려면, httpd-vhosts.conf 파일에 아래와 같은 VirtualHost 설정을 추가한다.
# IP 기반 접속을 리다이렉션하는 VirtualHost (HTTPS)
<VirtualHost *:443>
ServerName [본인의 고정IP 주소]
SSLEngine on
SSLCertificateFile "/opt/bitnami/apache/conf/it-server-room.com.crt" --->본인의 인증서 위치 및 파일
SSLCertificateKeyFile "/opt/bitnami/apache/conf/it-server-room.com.key" --->본인의 인증서 위치 및 파일
# IP로 접속시 도메인으로 즉시 리다이렉션
RewriteEngine On
RewriteCond %{HTTP_HOST} ^XXX\.XXX\.XXX\.XXX ---------------> XXX부분에 본인의 고정IP를 넣는다.
RewriteRule ^(.*)$ https://www.it-server-room.com$1 [R=301,L] ---> https://공인IP로 접속시 리다이렉트 하고자 하는 도메인주소
</VirtualHost>
# 도메인 기반 접속을 위한 VirtualHost
<VirtualHost *:443>
ServerName www.it-server-room.com
DocumentRoot "/opt/bitnami/wordpress"
SSLEngine on
SSLCertificateFile "/opt/bitnami/apache/conf/it-server-room.com.crt" --->본인의 인증서 위치 및 파일
SSLCertificateKeyFile "/opt/bitnami/apache/conf/it-server-room.com.key" --->본인의 인증서 위치 및 파일
# WordPress 설정
<Directory "/opt/bitnami/wordpress">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

이와 같이 설정한 후, Apache 서버를 재시작하고 인스턴스를 재부팅하면 공인 IP를 통한 HTTPS 접속시 본인의 도메인으로 리다이렉트 된다. 이 설정을 찾느라 일주일은 꼬박 보낸 것 같다. 아무리 인터넷을 찾아도 공인IP로 https 접속을 완벽하게 막는 방법이나 리다이렉트 하는 방법을 찾을 수 없었다. 대부분 인터넷에 나온 방법으로 443 포트를 막으면, https로 정상 도메인 접속을 하더라도 같이 막혀버리기 일수였다. 또한 리다이렉트도 잘 안되었다. 결국에는 일주일 동안 이리저리 생성형 AI를 구슬려 위와 같은 방법을 찾을 수 있었다. 결국에는 말이다!!!
Apache 웹 서버 재시작 명령어는 아래와 같다.
sudo /opt/bitnami/ctlscript.sh restart apache
이로써, Amazon Lightsail에서 운영 중인 WordPress 인스턴스에 대해 공인 IP로의 HTTP 및 HTTPS 직접 접근을 차단하는 방법을 알아보았다. 이를 통해 보안 취약점을 줄이고, 사용자에게 안전한 접속 환경을 제공할 수 있다. 특히 SSL 인증서와 관련하여 브라우저별 동작 차이가 발생할 수 있으므로, 반드시 본인의 환경에 맞는 설정과 테스트를 진행해보아야 한다.