[Amazon Lightsail] 아마존 라이트세일 워드프레스(WordPress) 고정IP 주소(80포트)로 접근하는 것을 차단하자!!
라이이트세일 vps 호스팅을 이용하여 워드프레스 인스턴스를 생성하여 웹사이트를 개설하였습니다.
그리고 난 후 도메인을 연결해주었고, SSL인증서 설치도 완료하였습니다.
고정IP를 할당 받기 때문에 보안적인 측면에서 브라우저에서의 IP주소로의 접근은 막아야할 필요가 있습니다. https가 아닌 80포트(http://)를 타고 들어오기 때문입니다.
#비트나미 설정#, #AWS 보안#
고정IP로 접근 차단을 설정하는 방법에 대해 알아봅니다.
설정에 앞서 리눅스(유닉스) vi에디터 혹은 vim에디터 사용법을 먼저 알고 계셔야 합니다
1. 라이트세일 접속 후 >_아이콘을 클릭하거나 워드프레스 인스턴스를 선택 후 Connect using SSH 버튼을 클릭합니다.
![](http://playground.naragara.com/wp-content/uploads/2021/11/img-14.png)
2. 아파치 서버의 httpd.conf파일과 httpd-vhost.conf을 수정해야합니다. 해당파일 경로는 다음과 같아요
/opt/bitnami/apache2/conf/httpd.conf
/opt/bitnami/apache2/conf/extra/httpd-vhost.conf
위 파일을 vi에디터나 vim 에디터로 열어서 설정 변경을 해야합니다. 다음 명령어을 실행해주세요.
vim /opt/bitnami/apache2/conf/httpd.conf |
위파일을 열어보면 아래와 같은 정보를 찾을 수 있고, 주석처리 되어있습니다. 즉 실행하지않음을 뜻해요. 주석은 #으로 시작됩니다. Include 앞에 #을 제거한 다음 저장합니다.(shift + 😉 키를 누르면 하단에 명령어 실행창에 나타납니다.
wq를 타이핑 후 빠져나옵니다.
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
주석을 제거한 후 ( a키를 누르면 파일을 수정할 수 있는 INSERT 모드가 활성화됩니다.)
# Virtual hosts
Include "conf/extra/httpd-vhosts.conf"
그 다음으로 httpd-vhost.conf파일 설정을 변경해야합니다.
vim /opt/bitnami/apache2/conf/extra/httpd-vhosts.conf |
파일을 열어보니 샘플로 2개의 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>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.example.com
DocumentRoot "/opt/bitnami/apache/docs/dummy-host2.example.com"
ServerName dummy-host2.example.com
ErrorLog "logs/dummy-host2.example.com-error_log"
CustomLog "logs/dummy-host2.example.com-access_log" common
</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>
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host2.example.com
# DocumentRoot "/opt/bitnami/apache/docs/dummy-host2.example.com"
# ServerName dummy-host2.example.com
# ErrorLog "logs/dummy-host2.example.com-error_log"
# CustomLog "logs/dummy-host2.example.com-access_log" common
#</VirtualHost>
그리고 실제로 필요한 정보를 설정합니다.
<VirtualHost*:80>
ServerName 본인의 고정IP 주소 입력
<Location>
Order deny, allow
Deny from all
</Location>
</VirtualHost>
shift + : 키를 눌러 명령어 실행할 수 있는 상태로 변경합니다. 저장(wq)로 저장하고 나옵니다.
3. 이제 아파치 웹서버를 재시작해야합니다. 재시작 명령어는 다음과 같습니다. 둘 중 아무 명령어나 실행하세요.
apachectl restart
또는
httpd restart
오류가 발생했네요.
bitnami@ip-:/opt/bitnami/apache2/conf/extra$ apachectl restart AH00526: Syntax error on line 42 of /opt/bitnami/apache/conf/extra/httpd-vhosts.conf: <Location> directive requires additional arguments bitnami@ip-:/opt/bitnami/apache2/conf/extra$ |
확인해보니 <Location> 에서 "/" 누락되어서 구문오류가 발생했어요.
<Location> 을 <Location/>으로 급히 변경 후 다시 아파치 서버를 시작했습니다.
<VirtualHost*:80>
ServerName 본인의 고정IP 주소 입력
<Location />
Order deny, allow
Deny from all
</Location>
</VirtualHost>
"httpd-vhosts.conf" 49L, 1609C written bitnami@ip-:/opt/bitnami/apache2/conf/extra$ apachectl restart AH00526: Syntax error on line 43 of /opt/bitnami/apache/conf/extra/httpd-vhosts.conf: order takes one argument, 'allow,deny', 'deny,allow', or 'mutual-failure' |
이번엔 또 다른 오류가..... 43번째 라인에서 문제가 발생했어요. Order deny, allow 라인입니다. allow, deny 혹은 deny, allow 또는 mutual-failure 중에 사용할 수 있다고 합니다. 띄어쓰기를 했더니 문제가 발생합니다. 너무 오랜만에 아파치 웹서버 설정을 하니 이런 문제가 발생하네요. 5년전 쯤 했던 것 같아요.
<VirtualHost*:80>
ServerName 본인의 고정IP 주소 입력
<Location />
Order deny,allow
Deny from all
</Location>
</VirtualHost>
위와 같이 하시면 이제 정상적으로 동작합니다. 아파치 웹서버의 재시작이 가능합니다.
4. 위 작업을 마무리했다면 이제 마지막으로 워드프레스 인스턴스를 다시 시작해야합니다. Reboot 버튼을 클릭하세요.
![](http://playground.naragara.com/wp-content/uploads/2021/11/img_1-8.png)
재부팅하면 인스턴스의 모든 웹 사이트 또는 서비스를 일시적으로 사용할 수 없습니다. 인스턴스를 재부팅하시겠습니까? 라는 팝업창이 뜨면, Reboot 버튼을 클릭하세요.
![](http://playground.naragara.com/wp-content/uploads/2021/11/img_2-7.png)
서버를 재시작 후 1분 정도 지나면 사이트에 다시 접근 가능합니다. 서버가 재시작 완료가 되지않은 경우 사이트에 접근하면 아래와 같은 메세지가 나타납니다.
![](http://playground.naragara.com/wp-content/uploads/2021/11/img_3-7.png)
이제 IP주소로 접속 시도를 하면 아래와 같이 Forbidden 접근권한 없음 메세지가 노출됩니다.
![](http://playground.naragara.com/wp-content/uploads/2021/11/img_4-5.png)
Forbidden
You don't have permission to access this resource.
https://본인아이피 주소를 치면 여전히 브라우저에서 접근할 수 있어요. SSL인증서를 설치했기 때문에 443포트가 열리는 것인데요. 열어두어야할지 막아둬야할지 고민이 되는 부분입니다. Let's Encrpt SSL인증서가 무료로 제공되고 있는데, 그렇게 신뢰할 수 있는 인증서는 아닌것 같아요. 익스플로어 엣지와 크롬브라우저에서 https가 제대로 동작하지 않고 보안 경고 메세지가 노출되거든요. 파이어폭스 브라우저에서는 https로 정상 접근이 가능합니다.
만약 https:// (443)포트의 아이피 주소 접근을 막고 싶은경우 아래와 같이 더 추가하신 후에 위 절차를 다시 하시면 됩니다.
<VirtualHost*:443>
ServerName 본인의 고정IP 주소 입력
<Location />
Order deny,allow
Deny from all
</Location>
</VirtualHost>
따라하시느라 수고하셨습니다. 오늘도 뭔가 유익한 하루가 되고 있어요.