어플리케이션

httpd.conf 에 대해 알아보겠습니다

forward error correction Circle 2023. 1. 22. 07:43
반응형

Apache 웹 서버의 설정파일은 소스 설치 시 소스파일 설치 경로에 설치되며, CentOS, Fedora 등에서 Yum  명령어를 통한 설치 시 /etc/httpd/conf/httpd.conf 입니다. Apache 의 메인 설정파일인 httpd.conf 설정 파일을 알아 보겠습니다. 

 

Ⅱ. httpd.conf 세션 설정

Listen 8080
ServerName feccle.tistory.com:8080
DocumentRoot "/usr/local/apache"
ServerAdmin webadmin@example.com
DirectoryIndex index.htm index.php
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 100
보안 설정 내용 예시
ServerRoot - 아파치의 기본 Root 경로  
Timeout - 클라이언트의 요청에 서버가 대기하는 시간을 설정 Timeout 300
MaxKeepAliveRequests - 접속을 허용할 수 있는 최대 횟수 Maxkeepaliverequest 100
KeepAliveTimeout - 클라이언트 최초 요청을 받은 뒤에 다음 요청이 전송될 때까지 대기하는 시간을 설정 KeepAliveTimeout 100
KeepAlive - 접속 연결에 대한 재요청을 허용할 것인지 설정 Keepalive On
Directoryindex - 웹 디렉토리 접근 시 인식되는 인덱스 파일의 순서 지정 DirectoryIndex index.htm index.php
Listem - 사용할 포트 지정 Listen 8080
Servername - 서버의 도메인 지정 Servername feccle.tistory.com
DocumentRoot - 웹문서가 위치하는 디렉토리 지정 DocumentRoot "/usr/local/apache"
ServerAdmin - 서버 관리자 이메일 지정 webadmin@example.com
CustomLog  - 엑세스 로그 파일 위치 지정  
ErrorLog - 에러 로그 파일의 위치 지정  

 

Ⅲ. HTTP 접근제어

<Directory />
Order Deny,Allow
Options FollowSymLinks
Deny from All
AllowOverride none
Require all granted
LimitRequestBody 5000000
</Directory>
옵션 내용
Order Deny, Allow - Deny와 Allow의 순서를 정합니다. (Deny, Allow or Allow, Deny)
Deny from All - 모든 접근에 대해 거부합니다.
LimitRequestBody 5000000 - 파일 업로드, 다운로드 시 파일 크기를 제한합니다.
Options FollowSymLinks - 심볼릭 링크로 설정된 링크 파일의 경로 까지도 확인 할 수 있다.
indexes - indexes 웹서버의 디렉토리 접근 시 지정한 파일이 존재하지 않을 경우에 디렉토리내의 파일들을 리스트화하여 보여줍니다. 전체적인 사이트 구조에 대해 확인을 할 수 있기 때문에 보안을 위해 사용하지 않는 것이 좋다.
AllowOverride - 어떻게 접근을 허락할 것인가에 대한 설정입니다.
- 옵션 : None, ALL, AuthConfig, FileInfo, Indexes, Limit, Options

 

Ⅳ. HTTP 파일 지시자 설정

<FilesMatch “\.(ph/lib)”>
Oder allow,deny
Deny from all
</FilesMatch>
 
옵션 내용 보안방법
FilesMatch  지시자를 이용하여 파일 업로드 디렉터리에 위치한 .php, .inc, .lib 등의 서버 사이드 스크립트 파일에 대해 직접 URL 호출을 못하도록 설정 파일 업로드가 가능한 디렉터리에 악의적인 서버 사이드 스크립트(ServerSide Script)가 업로드 된 경우라도 외부에서 직접 URL로 호출하는 것을 차단하여 서버 사이드 스크립트가 실행되지 않도록 한다.
AddType 지시자를 이용하여 파일 업로드 디렉터리에 위치한 .php, .cgi 등 서버 사이드 스크립트 파일들의 MIME Type을 text/html로 재 조정 파일 업로드가 가능한 디렉터리에 악의적으로 서버 사이드 스크립트가 업로드 된 경우라도 서버 사이드 스크립트 파일들의 MIME 타입을 재 조정하여 서버에서 실행되지 않도록 한다

 

Ⅴ. HTTP 액세스 로그

192.168.133.54 - - [16/Jan/2023:00:49:03 +0900] "GET / HTTP/1.1" 200 46 "www.tistory.com" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5414.75 Safari/537.36"

192.168.133.54 - - [16/Jan/2023:00:49:03 +0900]  "GET /favicon.ico HTTP/1.1" 404 46 "www.tistory.com" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.5414.75 Safari/537.36"

1) 클라이언트 호스트의 IP 주소

2) 요청한 날짜와 시간

3) 요청라인 정보 (요청 Method, 요청 URL, HTTP 버전)

4) HTTP 상태 응답코드

5) 응답 데이터의 바이트

6) 현재 요청에 대한 링크를 가지고 있는 이전 URL 정보

7) 클라이언트 OS 정보 및 브라우저 정보 (User-Agent 요청 헤더 정보)

 

Ⅵ. .htaccess 파일

# vi /usr/local/apache/htdocs/admin/.htaccess
AuthType Basic                                                  
AuthName "Admin Login"                                
AuthUserFile /usr/local/apache/conf/password        
Require valid-user                                              
옵션 내용
AuthType 인증 방식 기본(Basic)
AuthName  표시할 인증 메시지
AuthUserFile 사용자인증 파일명
Require  사용인증할 방식 user or group과 인증할 대상

 

Ⅶ. 정보보안기사 관련 문제

1. 다음과 같이 Apache 설정 시 발생할 수 있는 문제점 두가지를 작성하고 대응 방안을 쓰시오.
<Directory />
Options FollowSymLinks
AllowOverride none
Require all granted
</Directory>

<Directory /var/www>
Options indexes FollowSymLinks
AllowOverride none
Require all granted
</Directory>

(1) 발생하는 두가지 문제점
1. 디렉터리 리스팅으로 웹 서버 구조 및 중요 파일 노출됨.
2. 상위 디렉터리로 이동하여 악의적인 접근 가능함.

 

(2) 두가지 문제점에 대한 대응방안
1. /var/www 디렉터리의 Options 지시자에서 Indexes 옵션 제거
2. AllowOverride 옵션을 None -> AuthConfig로 변경

 

2. 다음은 리눅스 웹서버인 Apache의 설정파일 중 일부이다. 표시된 설정 내용이 의미하는 바가 무엇인지 설명하시오.
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 100
DirectoryIndex index.htm index.html
CustomLog /www/logs/access_log common

1) KeepAlive 옵션을 켠다. 속도를 개선시킬 수 있으나 동시접속량이 줄어든다.
2) KeepAlive를 유지시키는 시간을 100초로 설정한다.
3) KeepAlive를 허용하는 유저 수를 100명으로 설정한다.
4) 디렉토리로 접근할 경우 index.htm을 먼저 읽고, 없으면 index.html을 읽는다.
5) 로그파일은 /www/logs/access_log 경로에 저장하고, Apache 기본 로그 포맷을 사용한다.

 

3. Apache 웹 서버 보안 설정을 하고자 한다. 환경설정 파일인 httpd.conf 파일에 (1) ~(4) 각각 해당하는 보안 설정을 기술하시오.

 

(1) 서버가 클라이언트로부터 응답을 기다리는 최대시간을 300초로 설정한다.

=> Timeout 300

(2) KeepAlive 상태에서 연결당 처리할 최대요청 처리 건수를 1000으로 한다.

=> MaxKeepAliveRequest 1000

(3) 디렉터리만을 지정했을 경우 그 디렉터리에서 자동으로 보여줄 웹 문서를 index.htm으로 설정하되, index.htm이 없으면 index.php를 보이게 설정한다.

=> DirectoryIndex index.htm index.php

(4) 서버접속 오류메시지를 /user/local/apache/logs/error_msg에 기록한다.

=> ErrorLog logs/user/local/apache/logs/error_msg

 

4. 불필요한 파일 업로드, 다운로드 시에 대량의 업로드, 다운로드로 인한 서비스 불응 상태가 발생할 수 있다. 이를 방지하고자 파일 크기를 5,000,000바이트로 제한하기 위해서 아파치 설정 파일인 httpd.conf 파일을 아래와 같이 수정하고자 한다. 빈칸 (  A  )에 해당하는 지시자를 작성하시오.

<Directory/>
(  A  ) 5000000
</Directory>

=> LimitRequestBody 

 

5. 다음은 아파치(Apache) 웹 서버 설정파일(httpd.conf)에 적용할 정책 목록이다.

각각의 내용을 만족시키는 적절한 설정 지시자를 사용하여 질문에 답하시오.

1) 클라이언트 연결에 대한 Idle Time(연결 이후 데이터 송수신 없이 연결을 유지하는 시간)을 300초로 지정한다.

   - Timeout 300

2) KeepAlive 옵션 사용 시, 클라이언트와 서버 작업 프로세스와 연결이 유지되는 동안에 허용할 최대 요청 개수를 100개로 지정한다.

   - MaxKeepAliveRequest 100

3) 특정 파일을 지정하지 않고 디렉터리만 지정했을 때 호출할 기본 페이지로 index.html과 index.php를 지정한다.

   - DirectoryIndex index.html index.php

4) 웹 서버의 에러 로그파일을 /var/log/httpd/error_log 로 설정한다.

   - ErrorLog /var/log/httpd/error_log

※ Apache 웹 서버의 httpd.conf 파일에 있는 주요 설정

1) ServerTokens Prod 이란 ?

  - 보안상 최소한의 정보만을 제공하는 Prod로 설정할 것을 권장(웹 서버 종류만 노출)

2) MaxClients 300 이란?

 - 동시 연결 가능한 클라이언트의 최대 개수를 설정한다.

3) KeepAliveTimeout 5 이란?

-  KeepAlive 기능 사용 시, 클라이언트와 서버 프로세스 간에 연결을 지속시키는 동안에 클라이언트의 마지막 요청 이후 다음 요청을 대기하는 시간(초 단위)을 지정한다.

반응형