Web Hosting

[Amazon Lightsail] 비트나미 bitnami “index of” 차단하는 방법 (아파치 디렉토리 리스팅 차단)

아마존 라이트세일에서 LAMP인스턴스를 생성하여 새로운 사이트 하나를 만들었다. 보안 취약점 중에 가장 기본인 디렉토리 리스팅 차단 설정은 되어 있겠지? 하는 마음으로 체크를 해보았다. 체크 방법은 간단하다. 웹브라우저를 열고 사이트 주소 뒤에 본인이 알고 있는 폴더 주소를 타이핑 해보면 된다.

예를 들어 루트 풀더 다음에 이미지가 들어있는 폴더 assets있다는 가정하에 https://playground.naragara.com/assets 주소를 치고 들어갔을 때 아래와 같이 index of /assets 나타나면 안된다.

그런데 새로 만든 LAMP 인스턴스의 경우는 나타났다.  왜 비트나미 기본 설정에 디렉토리를 접근 가능하도록 보이게 해놨을까?

demo 디렉토리와 img 폴더에 어떤 파일들이 존재하는지 확인이 가능하고, 다운로드가 까지 가능하기 때문에 반드시 막아주어야한다.

보통 아파치가 설치된 폴더 아래의 conf 폴더에서 httpd.conf 설정 파일을 아래와 같이 수정하면 차단할 수 있다.

<Directory "/opt/bitnami/apache/htdocs">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

또는

<Directory "/opt/bitnami/apache/htdocs">
    Options -Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

그런데 어찌된 영문인지 httpd.conf파일을 수정후 아파치 웹서버를 재시작해도 먹히지 않는다.

나중에 알아보니 비트나미의 경우 아파치 웹서버가 설치된 /opt/bitnami/apache2/conf/httpd.conf 파일을 변경을 해야하는 것이 아니었다. 비트나미 설정 파일을 수정해주어야한다.

/opt/bitnami/apache2/conf/bitnami/bitnami.conf 파일을 열고 설정 변경 작업이 필요하다.

vi 에디터로 파일을 열면 아래와 같은 디렉토리 설정 정보가 있다.

Options Indexes FollowSymLinks 설정때문에 디렉토리 리스팅이 되어 index of~가 보이게 된다. 그럼으로 이 설정을 아래와 같이 인덱스를 제거해주는 설정을 해야한다.

Options -Indexes FollowSymLinks
또는
Options FollowSymLinks  

참고로 비트나미 계정으로 로그인 되어 있을 것이다. 루트 계정으로 접근해야 해당 파일을 수정할 수 있다. (콘솔창에서 su 입력후 슈퍼계정 비밀번호를 입력하면 된다.)

아래와 같이 작업 후 아파치 서버를 재시작했다.

[아마존 AWS] bitnami 아파치 서버 재시작 및 중지 하는 명령어

서버가 먹통되어 사이트 접근이 불가능했다.

Either all Options must start with + or -, or no Option may.

위 에러가 발생되어 서버가 재시작되지 않았다.

Options가 포함된 라인에 -가 붙은 옵션이있으면 나머지 모든 항목이 +가 붙든지 -가 붙어야 한다.

그래서 아래와 같이 +를 붙이고 재시작하였다.

서버는 정상적으로 부팅되었지만 여전히 디렉토리가 리스팅되었다.

혹시나 해서 Options FollowSymLinks 로 설정 후 재부팅했으나 여전히 디렉토리가 노출되었다.

그래서 아래와 같이 설정을 변경 후 다시 아파치 웹서버를 재시작해보았다

그러나 여전히 디렉토리가 리스팅된다.. 아 이거 해결방법이 뭐냐??

전부 제거하고 Require all denied만 남겨두고 서버를 재부팅해도 여전히 브라우저에서 디렉토리 접근이 가능하다.

[아마존 AWS] bitnami 아파치 서버 재시작 및 중지 하는 명령어

--아파치 HTTP 서버 재시작
 sudo /opt/bitnami/ctlscript.sh restart

--서비스 중지
 sudo /opt/bitnami/ctlscript.sh stop

아무리 생각해보아도 이 위치의 파일이 전혀 먹히지 않는것으로 보아 다른 파일이 존재하는 것인가? 아무리 인터넷을 찾아도 정보가 없다. 그래서 apache 폴더를 전부 뒤지기 시작했다. 그리고 아래 폴더에서 ssl 인증서 443 포트 관련 설정파일을 찾았다. bitnami-ssl.conf 파일을 수정해보기로 하였다.

/opt/bitnami/apache/conf/bitnami

su 계정으로 로그인하거나 아래 명령어 앞에 sudo를 추가하면 수정할 수 있다.

sudo vi bitnami-ssl.conf

디렉토리 위치 설정에서 Indexes만 제외하고 sudo /opt/bitnami/ctlscript.sh restart 명령어로 서버를 재시작하였다.

와 너무나 기뻤다. 드디어 원하던 화면이 나타났다. 인앱 결제 정보를 기록하기 위한 백엔드 서버 준비는 끝났다.

이거 하나 해결하기 위해 많은 시간을 날렸다. 이런 설정들은 대학교 다닐적에 해보고 다시 할 일이 없었기에 많은 시간이 걸렸던 것 같다. 직장에 다닐 때도 대부분 이런 작업은 서버 관리하는 인프라팀에서 다 했으니까!! 정말 개발만 하면되었으니까!!!

인증서 갱신작업을 할 때 다시 한번 확인을 해야한다. 혹시나 변경될 수 있으니!!

Leave a Reply

error: Content is protected !!