리눅스 서버 보안/안전한 웹 서버 구축

아파치 보안 설정

seungwon9201 2024. 7. 28. 20:10

심볼릭 링크 기능 비활성화

symbolic link : 파일이나 디렉터리에 대한 참조를 포함하는 파일을 만드는것(ex.윈도우의 바로가기)

 

리눅스에서 웹 서버를 운영할 때 리눅스의 심볼릭 링크기능을 활용하면 웹 문서 경로 이외의 경로에 접근할 수 있다. 

만약 디렉터리 리스닝이 활성화되어 있고 sym.html이 / 경로로 심볼릭 링크된 파일이라면 공격자가 해당파일에 접근하여 웹 서버 내부에 있는 리눅스 폴더의 구조까지 파악할 수 있게 된다. 

 

이러한 문제점을 해결하기 위해서 심볼릭 링크 기능을 비활성화 해보자.

이렇게 실습 환경 디렉터리에 가서 sym.html이라는 링크 파일을 만들어주자.

만들어둔 링크를 접속해 보니 이렇게 링크 파일의 폴더와 파일에 접근이 가능하다.

이렇게 되면 매우 취약한 환경이니 링크 기능을 비활성화 해보자.

 

링크 기능을 비활성화하려면 apache2.conf파일을 수정해야 한다.

vi /etc/apache2/apache2.conf를 입력하여 아래와 같이 수정해 주자.

FollowSymLinks를 삭제하자.

이렇게 수정을 해주고 systemctl restart apache2를 입력해서 서버를 다시 시작해주면?

이렇게 심볼릭 링크 기능이 비활성화 되었다!


Directory listing 비활성화

앞선 글에서 directory listing이 어떤 것인지 알아봤었다. 

이번에는 이 기능도 비활성화 시켜보자.

심볼릭 링크 기능을 비활성화했던 곳에서 Indexes를 None으로 바꿔주자.

그리고 동일하게 아파치 서버를 재시작 해주면 

이렇게 서버 안에 있는 파일들이 노출되지 않는 것을 확인할 수 있다!


웹 서버 정보 노출 차단

위에서 서버 안에 있는 파일이 노출되지 않도록 설정을 완료했지만 여전히 서버에 대한 정보가 노출이 된다. 이번엔 이 서버의 정보 노출을 막아보자.

 

웹 서버의 정보를 노출하지 않으려면 /etc/apache2/apache2.conf 파일 가장 아래에 다음과 같이 추가해야 한다.

첫 번째 옵션은 웹 서버 정보 노출 설정 최소화 옵션이고, 두 번째 옵션은 웹 브라우저에 정보 노출 비활성화 옵션이다.

이렇게 설정을 하고 서버를 다시 시작하고 접속해 보면 

이제 서버의 정보가 노출되지 않는다!

 


접근 가능한 파일 IP 설정

만약 특정 IP 또는 IP 대역을 허가하거나 차단해야 해야 하는 경우가 있다면 호스트별로 접근을 제어할 수 있다.

 

/etc/apache2/apache2.conf파일 맨 아래에 다음과 같이 추가해 주자.

그리고 ipbalcklist.conf 파일을 만들어서 아래와 같이 내용을 추가해 주자.

다음 두가지 IP에 대한 접속을 차단한다.

그리고 다시 서버를 재시작하면

이렇게 차단이 되어서 접속이 되지 않는 것을 확인할 수 있다.


HTTP 메소드 제한

웹 서버에서 HTTP 프로토콜은 GET, POST가 대표적이고 CONNECT, OPTIONS, HEAD, PUT, DELETE, TRACE 등 다양하게 존재한다. 그래서 공격자는 보안에 취약한 메소드를 골라서 공격이 가능하다. 이번에는 이렇게 많은 메소드 중에서 필요하지 않은 메소드는 차단해 볼 것이다.

 

현재 localhost에서 사용가능한 메소드를 확인해 보니 GET, POST, OPTIONS, HEAD 총 4개가 사용가능한 것을 확인할 수 있다. 이제 대표적으로 사용하는 GET, POST를 제외하고서 모두 차단시켜 보자.

/etc/apache2/apache2.conf파일에 다음과 같이 내용을 추가해 주고

맨 아래에 아래 사진처럼 추가 해주면 된다.

이렇게 설정이 끝났다면 서버를 다시 시작해 주자.

그러면 아까와는 다르게  메소드가 차단된 것을 확인할 수 있다.


오류 페이지 노출 수정

공격자는 역으로 오류 메시지를 유도해서 서버 정보를 획득할 수 있기 때문에 오류 페이지의 노출도 방지하는 것이 좋다. 

 

이번에는 오류 페이지를 임의로 직접 만들어서 실습을 해야 하기 때문에 직접 실습은 하지 않고 어떤 내용이 추가되어야 하는지만 작성하겠다. /etc/apache2/apache2.conf에 이런 내용을 작성하면 된다.

#ErrorDocument 500 "The server made a boo boo"
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html#
ErrorDocument 404 /404.html

 

'리눅스 서버 보안 > 안전한 웹 서버 구축' 카테고리의 다른 글

보안 서버 구축  (0) 2024.08.02
Apache ModSecurity  (0) 2024.08.01
Directory listing  (0) 2024.07.28