서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong

#220

서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong

1. 디렉토리 리스팅(Directory Listing)이란?

웹 서버의 특정경로에 있는 파일들을 웹 서비스를 통해 디렉토리 형식으로 볼 수 있는 것을 말합니다.

아래처럼 실제 파일을 열어볼 수도 있고 다운로드도 할 수 있습니다.

서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong

2. 디렉토리 리스팅 취약점

그렇다면 디렉토리 리스팅의 취약점은 무엇일까요?

바로 의도치 않게 서버에 있는 자료가 노출될 수 있습니다.

공개되지 않아야할 자료가 노출되어 문제가 될 수 있고 소스코드가 유출되어 공격자로부터 해킹을 당할 수 있습니다.

그럼 자주 이용하는 Apache와 Tomcat에서 디렉토리 리스팅 취약점이 있을 때의 모습을 살펴보도록 하겠습니다.

1) Apache

Apache 웹 서버를 동작시키고 특정 소스를 배포하였습니다.

서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong

Apache의 경우 Default로 디렉토리 리스팅에 대하여 활성화가 되어있기 때문에 웹을 통하여 취약한 여부를 바로 확인할 수 있습니다.

확인하는 방법은 URL에 디렉토리 경로를 넣어주면 됩니다.

서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong
서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong

원하는 파일을 열어볼 수도 있습니다.

2) Tomcat

두 번째로는 Tomcat입니다.

WAS긴 하지만 단독으로도 많이 사용되어 서버 관리가 마찬가지로 정말 중요합니다.

다행히 Tomcat의 경우 Default로 디렉토리 리스팅 기능이 비활성화되어 있어 수동으로 활성화만 시키지 않는다면 해당 취약점에 대해 안전합니다.

우선 마찬가지로 디렉토리 리스팅을 통해 보고자하는 파일의 위치와 파일을 보겠습니다.

서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong

Tomcat을 설치하였을 때 기본적으로 생성된 폴더(manager)의 이미지 폴더입니다.

이제 웹을 통해 취약점을 확인해보겠습니다.

서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong
서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong

Apache와 마찬가지로 특정 경로에 있는 파일을 볼 수 있었고 열어볼 수도 있었습니다.

만약 이게 이미지 파일이 아니라 소스코드였다면... 보안사고가 발생할 수도 있었겠죠?

3. 디렉토리 리스팅 취약점 조치하기

그럼 이제 조치하는 방법에 대해 알아보도록 하겠습니다.

설정파일을 약간만 수정하면 되는 것이라 금방 조치할 수 있습니다.

1) Apache

Default로 디렉토리 리스팅이 활성화 되어있으므로 꼭!! 설치하신 후에는 조치하셔서 사용하시기 바랍니다.

Apache의 설정파일인 아래의 파일을 수정해야합니다.

/etc/httpd/conf/httpd.conf

서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong

파일을 열어보게 되면 Indexes라고 옵션에 설정된 부분이 있습니다.

이 부분을 모두 지워주셔야 합니다.

저는 Apache에 배포한 폴더가 이거 하나라서 이 부분만 삭제하였지만 혹시라도 폴더가 여러개 있으시다면 모두 삭제해주셔야 합니다.

서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong

그리고 나서 당연하게 서비스를 재기동해주셔야 합니다.

그럼 조치가 되었는지 확인해보도록 하겠습니다.

서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong

아까 전과 동일한 URL을 들어갔는데 이번에는 아무것도 보이지 않고 에러를 반환하고 있습니다.

근데 가장 좋은 방법은 공개가 원치 않는 경로는 어떤 방법으로도 보이지 않게 가리는게 좋습니다.

2) Tomcat

그럼 Tomcat에 대해서 알아보도록 하겠습니다.

Tomcat은 Default로 디렉토리 리스팅이 비활성화 되어있기 때문에 크게 신경을 안쓰셔도 되지만 그래도 어디서 설정을 하는지는 알고 계시는게 좋습니다.

설정 파일은 아래와 같습니다.

아파치 설치 폴더/conf/web.xml

서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong

이 파일에 위와 같은 부분을 보실 수 있습니다.

여기서 true 값을 false로 수정하시면 디렉토리 리스팅을 비활성화하실 수 있습니다.

마찬가지로 서비스를 재기동하고 확인하면 조치가 완료된 것을 확인하실 수 있습니다.

서비스 에서 디렉토리 리스팅 제거 설정 - seobiseu eseo dilegtoli liseuting jegeo seoljeong