일부 취약성 점검을 하다보면 리눅스의 경우 아파치를 주로 이용하게 되는데 기본적으로 디볼트 루트 디렉토리 부분에 manual 디렉토리가 생성되는 것을 볼수 있습니다. 이러한 디렉토리가 웹브라우져에서 바로 리스팅이 되기 때문에 취약한 경우가 있습니다. 이에 대한 대응방안을 알아 보고자 합니다.
 
                                                                                                                         작성자: 엔시스(sis@sis.pe.kr)


1. 스캐너로 취약점 점검을 하면 취약점 리스트 나옴

위약성 점검툴로 스캔 하였을시에 아파치의 디볼트 루트 디렉토리 밑에 manaual 디렉토리가 존재시에는 다음과 같은 취약점이 발견이 됩니다, 이에 적절한 대응 조치가 필요합니다.


                                                <그림-1> 취약점 점검시에 디렉토리 리스팅 취약점보고레포팅


2.  해당 서비스에 대한 위험도 표시
                                              
                                                  <그림-2> 스캔툴에의한 위험도 표시

실제 툴에서는 포괄적인 방향제시와  해당 서비스에 대한 위험도와 해결책을 설명하고 있지만 실제 모든 취약점 점검 툴에서 구체적인 대응 해결책 제시 문구를 포함하고 있지는 않습니다..그래서 각자 관리자가 찾아보고 대응방안을 찾아 수정을 해 주셔야 합니다.


3.  manual 디렉토리 리스팅에 따른 취약점 해결책

일반적으로 리눅스를 설치하면 특히 아파치버전을 RPM으로 설치시에 manual 디렉토리가 디볼트로 설치가 됩니다..이에 취약성이 나타나게 되는데 해결 방법으로는 다음과 같은 방법이 있습니다..

    • maual 디렉토리 삭제하는 방법 - 말 그대로 디렉토리 삭제하는 방법이 있습니다.. manual 디렉토리는 그리 중요한 디럭토리가 아니가에 삭제하여도 무방합니다..하지만 문제는 만약에 삭제하면 안되는 디렉토리가 리스팅 취약점이 있을시에문제가 됩니다.
    • 알리아스(alias)로 셋팅하는 방법 

     
    2) 알리아스(alias)로 셋팅하는 방법


                          <그림 -3>  아파치 컨피그 httpd.conf 파일 수정한 모습

이렇게 httpd.conf 파일에서 중간부분에 있는 <Directory></Directory>에 알리아싱을 주어서 해당 디렉토리에 접근을 할수 업도록 처리를 하면 디렉토리 리스팅이 되는 것을 방지할수 있습니다..


4. 해결 방법 응용방안

 위에서 보듯이 취약성이 있는 디렉토리를 삭제하면 그만이지만 실제 삭제 할수 없는 디렉토리 리스팅이 되었다고 한다면 위와 같은 방법을 이용하여 아파치 컨피그를 이용하여 웹서버에서 해결 할수 있습니다.. 참고 하시면 되겠습니다..


===============================================================================================================
본 포스팅은 보안인닷컴 팀블로그(http://blog.boanin.com)에도 기고된 포스팅입니다.



Posted by 엔시스
SetEnvIf Referer "www.bugs.co.kr" link_allow

<FilesMatch ".(asf|wma|ogg)$">
Order Deny,Allow
Deny from all
Allow from env=link_allow
</FilesMatch>

www.bugs.co.kr를 통해서만 asf, wma, ogg등의 파일을 다운할 수 있게 설정한 것이다.
_________________

Posted by 엔시스
TAG 아파치
레드햇에는 rpm으로 제공되는 아파치 성능 측정툴이 있습니다. 튜닝시에 사용 하면 유용 합니다.

다음은 동시접속수 10 ( -c 옵션 ), 10번 접속 ( -n 옵션) 해서 나오는 ab 의 샘플 입니다.
이 옵션값을 적당하게 조절해서 퍼포먼스가 얼마인지 측정해 보면 되겠습니다.

( 서버는 편집하여 고친 겁니다.  kr.yahoo.com 으로 .. 오해 없으시기를 .. )

# ab -n 10 -c 10 http://kr.yahoo.com/

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.116 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking kr.yahoo.com (be patient).....done

Server Software:        Apache/1.3.19              ; 아파치 버젼을 보여 줍니다.
Server Hostname:        kr.yahoo.com
Server Port:            80                                  ; 포트가 80이 아닐경우 옵션을 주어야 합니다.

Document Path:          /
Document Length:        36043 bytes

Concurrency Level:      10
Time taken for tests:   1.801191 seconds
Complete requests:      10
Failed requests:        0
Write errors:           0
Total transferred:      363330 bytes
HTML transferred:       360430 bytes
Requests per second:    5.55 [#/sec] (mean)
Time per request:       1801.191 [ms] (mean)
Time per request:       180.119 [ms] (mean, across all concurrent requests)
Transfer rate:          196.54 [Kbytes/sec] received

Connection Times (ms) ; 밀리세컨드 단위로 접속 통계를 보여 줍니다.
             min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:  1300 1657 144.9   1713    1800
Waiting:      622  849 163.5    889    1135
Total:       1300 1657 144.9   1713    1800

Percentage of the requests served within a certain time (ms)
 50%   1713
 66%   1733
 75%   1747
 80%   1775
 90%   1800
 95%   1800
 98%   1800
 99%   1800
100%   1800 (longest request)

----------------------------------------------------------------------------
ab 툴을 이용해서 간편하게 웹서버의 성능을 알아 볼수 있습니다. 너무 쉽죠 ?

귀차니즘에 빠진 분들을 위해 한글 man 페이지 ( 출처:kldp.org) 를 추가 합니다.

ab [ -k ] [ -i ] [ -n 요청수 ] [ -t 시간제한 ] [ -c 동시접속 ] [ -p POST file ] [ -A 인증 유저이름:패스워드 ] [ -P 프락시인증 유저이름:패스워드 ] [ -H Custom header ] [ -C Cookie name=value ] [ -T content-type ] [ -v verbosity ] ] [ -w HTML 출력 ] ] [ -x <table> 속성 ] ] [ -y <tr> 속성 ] ] [ -z <td> 속성 ] [http://]서버이름[:port]/path
ab [ -V ] [ -h ]

설명
ab는 Apache Web server의 상태를 측정하는 툴이며 초당 Apache server가 얼마나 많은 요청을 처리할수 있는지를 측정할수 있다.
 
옵션
-k
HTTP KeepAlive (연결 지속성) 요소를 사용 가능 하게 한다. 이것은 하나의 HTTP session에서 여러 개의 요청을 처리할 수 있다. 기본값은 연결 지속성 기능을 사용하지 않는다.
-i
GET 방식 대신에 HTTP 'HEAD'를 사용한다. POST와 섞어서 사용할수 없다.
-n 요청수
측정을 하기 위한 요청수를 지정한다. 따로 지정하지 않는다면 하나의 요청만이 수행된다.
-t 시간제한
측정을 어느 정도까지 할 지 초단위로 지정한다. 따로 지정하지 않으면 측정 세션에 대해서 50000개의 요청을 자동으로 정의한다. 고정된 시간 동안 서버를 측정하기 위하여 사용한다. 기본적으로 시간을 제한하지는 않는다.
-c 동시접속수
동시에 요청을 처리할 수 있는 수량을 지정한다. 기본값으로는 한번에 하나의 요청만을 수행한다. 즉 동시 접속을 하지 않는다는 의미이다.

-p POST file
아파치 웹서버에 어떠한 HTTP POST 요청을 보내기 위한 data를 가진 파일을 지정한다.

-A Authorization username:password
서버로 신용증명을 하는 기본 인증을 지원한다. 사용자 이름과 패스워드는 하나의 ':'로 구분하고, uuencoded로 변환한 데이터를 보낸다. 문자열은 서버가 필요로 하든 안하든 상관없이 보내며, 401 인증을 보내는 것을 필요로 한다.

-p Proxy-Authorization username:password
프락시 서버로 신용증명을 하는 기본 인증을 지원한다. 사용자 이름과 패스워드는 하나의 ':'로 구분하고, uuencoded로 변환한 데이터를 보낸다. 문자열은 프락시가 필요로 하든 안하든 상관없이 보내며, 407 인증을 보내는 것을 필요로 한다.

-C Cookie name=value
요청에 'Cookie:' line을 추가한다. 이 인자는 'name=value'의 형태를 가진다. 이 옵션은 반복된다.

-H Header string
요청에 임의의 헤더를 추가한다. 이 인자는 유효한 헤더의 형태를 가지며, 보통 하나의 쌍으로 이루어진 필드 값을 콜론(:)으로 구분을 한다. 예를 들어

-T content-type
POST data에 대한 content-type header를 지정한다.

-v
출력 레벨을 지정한다. 4단계는 결과값 상단에 HTML 헤더를 출력하며, 3단계는 결과물 상단에 응답 코드(예를 들어 404, 200등)를 출력하며, 2단계는 경고와 정보 메세지를 출력한다.

-w
HTML table로 결과물을 출력한다. 기본 table은 2칼럼이며 흰색 바탕이다.
-x attributes
<table> 에 대한 속성을 지정한다. 속성은 <table 속성> 과 같이 들어간다.
-y attributes
<tr>에 대한 속성값을 지정한다.
-z attributes
<td>에 대한 속성값을 지정한다.
-V
버전 정보를 출력하고 프로그램을 종료한다.
-h
사용법에 대한 정보를 출력한다.
 
버그
고정 길이를 가진 다양한 정적 선언 버퍼가 있다. 이 사실로 인해서 비효율적인 명령 라인의 인자와 서버로부터의 헤더 응답, 그리고 다른 외부 입력과의 결합으로 인해 버퍼 오버 플로우가 발생할 수 있다.
Ab는 HTTP/1.x를 완전하게 충족시키지는 못한다. 대신 어떠한 형태의 응답도 수용할 수 있다. 프로그램에 의한 strstr(3)의 과도한 사용은 비정상적인 수행 결과를 가져오며, CPU 리소스를 잡아 먹게 된다. 서버의 한계에 도달하기 전에 ab에 의하여 한계에 접근 하지 않도록 ab를 수행해야 한다.  
Posted by 엔시스
TAG 아파치

In the May 2006 survey we received responses from 81,565,877 sites, an increase of 909K sites from the April survey. The Internet has grown by 7.2 million hostnames thus far in 2006, and continued growth at this rate would result in an increase of 17 million hostnames this year. That's close to the record pace from 2005, when the Web added 17.5 million sites.

Total Sites Across All Domains, August 1995 - May 2006
                 
              [ total site across all domain 1995 ~ 2006.5 ]

       
              [ total active servers across all domain 1995 ~ 2006.5 ]
출처: http://news.netcraft.com/archives/2006/05/09/may_2006_web_server_survey.html

웹서버의 지존은 역시 아파치 웹서버이군요...무엇보다 무료라는 점에서 강한 어필을 하는것같고, 또한 무료임에도 불구하고 지속적인 업데이트가 많은 영향을 주는것 같군요.
이제 웹서버를 튜닝할수 있는 다양한 스킬이 더 가미되면 전문영역이 되지 않을까 합니다

.

               

Posted by 엔시스
1. apachectl - 아파치 데몬을 제어할수있다.

[root@angelsoma]/usr/local/apache/bin/apachectl [option]

option : start - 데몬을 시작한다.
       stop - 데몬을 죽인다.
       restart - 데몬을 재 시작한다.
       fullstatus - 서버의 다양한 상태를 출력한다.
       status - fullstatus 보다 적은 정보를 출력한다.
       configtest - 구문상의 에러를 체크한다.
       help - 옵션사항을 출력한다.

2. ab - 웹서버에서 벤치마크를 실행시킬수있게 해주는 유틸리티이다.

[root@angelsoma]/usr/local/apache/bin/ad - 사용가능한 옵션을 보여준다.

3. apxs - Dynamic Loading을 위한 모듈 컴파일에 도움을 준다.

4. logresolve - 아파치 로그파일에 있는 IP 주소를 호스트명으로 해석한다.

5. htpasswd - 디렉토리 인증기법별로 사용자명/패스워드를 만들수있게 한다.

6. dbmmanage - DBM에 기반한 인증 기법에 대해 DBM을 사용한 사용자명/패스워드
             를관리하는 유틸리티이다.
7. htdigest - MD5 digest에 기반한 인증 기법에 대한 사용자명/패스워드를 만드는
            유틸리티이다.



Posted by 엔시스
TAG 아파치
보안상 보통 httpd.conf에 추가해주시는 것이 좋습니다.

ServerSignature Off

입니다.

추가후 apachectl restart

서버의 해당 정보를 보내지 않도록 설정하는 것입니다.

수고하세요.
Posted by 엔시스
1. apachectl - 아파치 데몬을 제어할수있다.

[root@angelsoma]/usr/local/apache/bin/apachectl [option]

option : start - 데몬을 시작한다.
        stop - 데몬을 죽인다.
        restart - 데몬을 재 시작한다.
        fullstatus - 서버의 다양한 상태를 출력한다.
        status - fullstatus 보다 적은 정보를 출력한다.
        configtest - 구문상의 에러를 체크한다.
        help - 옵션사항을 출력한다.

2. ab - 웹서버에서 벤치마크를 실행시킬수있게 해주는 유틸리티이다.

[root@angelsoma]/usr/local/apache/bin/ad - 사용가능한 옵션을 보여준다.

3. apxs - Dynamic Loading을 위한 모듈 컴파일에 도움을 준다.

4. logresolve - 아파치 로그파일에 있는 IP 주소를 호스트명으로 해석한다.

5. htpasswd - 디렉토리 인증기법별로 사용자명/패스워드를 만들수있게 한다.

6. dbmmanage - DBM에 기반한 인증 기법에 대해 DBM을 사용한 사용자명/패스워드
              를관리하는 유틸리티이다.
7. htdigest - MD5 digest에 기반한 인증 기법에 대한 사용자명/패스워드를 만드는
             유틸리티이다.

'Operating System > Linux' 카테고리의 다른 글

Ping에 응답하지 않기  (0) 2006.03.12
리눅스기초 보안  (0) 2006.03.12
Apache 지원 툴 사용하기  (0) 2006.03.11
vncserver 설정  (0) 2006.03.09
하드추가하는 법  (0) 2006.03.09
리눅스 기초 보안  (0) 2006.02.17
Posted by 엔시스