Web Hacking

apache2 web server security

zz! 2025. 4. 30. 09:53
728x90

안녕하세요. 오늘은 간단하게 웹 서버를 구축을 해보고, 서버 보안 설정을 하는 방법에 대해 알아보겠습니다.

 

apache2 란?

아파치 HTTP 서버는 아파치 소프트웨어 제단에서 관리하는 오픈 소스, 크로스 플랫폼 HTTP 웹 서버 소프트웨어입니다.

https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_HTTP_%EC%84%9C%EB%B2%84

 

아파치 HTTP 서버 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 아파치 HTTP 서버(영어: Apache HTTP Server)는 아파치 소프트웨어 재단에서 관리하는 오픈 소스, 크로스 플랫폼 HTTP 웹 서버 소프트웨어다. BSD, 리눅스 등 유닉스 계열

ko.wikipedia.org

 

아파치 웹 서버 설치

$sudo apt-get install apache2

$systemctl status apache2

만약 active 상태가 아니면, 아래의 명령어를 실행하여 서비스를 시작합니다.

$systemctl start apache2

이제 Ubuntu에서 firefox를 실행하고, localhost에 접속을 합니다.

웹 서버가 정상적으로 구성이 되었다는 것을 알 수 있습니다.

 

아파치 웹 서버 보안 설정

여기서는 디렉토리 리스팅 취약점을 막는 설정에 대해 알아보겠습니다.

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

$vim /etc/apache2/apache2.conf

따라서 Options indexes 가 설정이 되어 있으면 디렉터리 리스팅이 불가능하도록 삭제를 해야합니다.

한번 디렉터리 리스팅에 대해 알아보기 위해 다음과 같은 명령어를 입력합니다.

$sudo mkdir /var/www/html/test

$sudo touch /var/www/html/test/test.txt

현재 웹 사이트의 경로에 test디렉터리를 생성하고, 해당 디렉터리의 안에 있는 파일들을 볼 수 있습니다.

localhost/test/ 에 들어가보면 다음과 같이 사진이 나온것을 알 수 있습니다.

 

이제 옵션을 삭제해서 디렉터리 리스팅 취약점을 제거해보겠습니다.

$systemctl restart apache2

다시 사이트를 접속을 해보면, 

거부 메세지가 나온 것을 알 수 있습니다.

 

로그 관리

$vim /var/log/apache2/access.log

로그 하나를 분석을 해보겠습니다.

1번째 행은 서버에 요청을 한 클라이언트의 IP 주소입니다.

2번째 행은 클라이언트의 사용자 이름입니다. 아무런 정보가 없어 - - 로 표시되어 있다.

3번째 행은 접속을 시도한 날짜와 시간이다.

4번째 행은 요청한 메서드(get)와 접근 경로(/), 프로토콜 종류(HTTP 1.1) 를 보여준다.

5번째 행은 서버가 클라이언트에 보내는 상태 코드이다.

6번째 행은 클라이언트에 보내는 내용의 크기

7번째 행은 링크를 설정한 항목에 대한 접근 기록을 나타낸다.

8번째 행은 서버에 접근하는 클라이언트의 웹 브라우저 종류를 보여준다.

 

에러 로그

웹 서버를 운영할 때 여러 가지 이벤트나 문제점 등이 생기면 이를 로그에 남기는데 이러한 정보는 매우 중요합니다.

Ubuntu에서는 /var/log/apache2/error.log에서 에러 로그를 확인할 수 있습니다.

오류가 생긴 날짜와 시간

오류의 심각성

오류가 발생한 pid 정보

클라이언트의 접속 ip

접근한 웹 경로

성공 또는 실패 여부

발생한 오류 설명

728x90