예를 들어서

http://a.site 로 접속 하는 주소를 http://a.site:8000 으로 포워딩 하고 싶을때.
뭐... a.site 로 들어와도 프로그램의 변수로 구분을 해서 들어가도 되겠지만
특별한 경우 a.site 로 들어왔는데 포트를 달아줘야 할경우 사용하면 된다.
html의 meta 테그를 써도 되지만 Apache 차원의 포워딩을 해보자

Listen 80
Listen 8000

NameVirtualHost *:80
NameVirtualHost *:8000

<VirtualHost *:80>
    ServerAdmin email
    ServerName te.site
    Redirect    /       http://te.site:8000
</VirtualHost>
<VirtualHost *:8000>
    ServerAdmin email
    DocumentRoot        /var/www/te
    ServerName te.site
</VirtualHost>

위 처럼 셋팅을 하면 a.site 로 접속하면 a.site:8000 으로 보낸다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by 삐꾸강아쥐

2007/09/04 11:31 2007/09/04 11:31
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://blog.blog.n-nuri.com/rss/response/468

Trackback URL : http://blog.blog.n-nuri.com/trackback/468

Leave a comment
[로그인][오픈아이디란?]

출처  : http://truefeel.tistory.com/64
작성자의 요청이 있을경우 자삭 합니다.



apache 웹방화벽 modsecurity용 웹설정 툴, Remo

ModSecurity 는 아파치(apache)에서 사용하는 대표적인 웹방화벽 모듈이다. 아파치에 모듈을 설치하고, 룰(Rule) 설정을 통해 설정한 조건에 맞는 경우 차단을 할 수 있다. modsecurity 2.x 을 기준으로한 간단한 예이다.

- 웹서버명을 숨기거나 속인다.

SecServerSignature "lighttpd"


- 특정 메소드의 사용만 허용한다. (POST, GET, OPTIONS, HEAD 메소드만 허용)

SecRule REQUEST_METHOD "!^((?:(?:POS|GE)T|OPTIONS|HEAD))$" \
    "phase:1,log,auditlog,status:501,msg:'Method is not allowed by policy', severity:'2',,id:'960032',"


- 요청한 HTTP 프로토콜 버전이 1.0, 1.1이 아닐 경우 차단한다.

SecRule REQUEST_PROTOCOL "!^HTTP/(1\.[01])$" \
    "t:none, deny,log,auditlog,status:505,msg:'HTTP protocol version is not allowed by policy', severity:'2',,id:'960034',"


- GET, HEAD 메소드는 Content-Length가 0이 아닌 경우는 차단하고, POST는 Content-Length header가 없으면 차단한다.

SecRule REQUEST_METHOD "^(GET|HEAD)$" "chain,deny,log,auditlog,status:400,msg:'GET or HEAD requests with bodies', severity:'2',,id:'960011',"
SecRule REQUEST_HEADERS:Content-Length "!^0?$"

SecRule REQUEST_METHOD "^POST$" "chain,deny,log,auditlog,status:400,msg:'POST request must have a Content-Length header',,id:'960012',severity:'4'"
SecRule &REQUEST_HEADERS:Content-Length "@eq 0"


오픈소스 IDS인 snort에 기본 룰을 제공하는 것처럼 ModSecurity 에서도 modsecurity-core-rules 이름으로 룰 파일을 제공하고 있으니 참고하기 바란다. 룰에 대해서는 이만하고 원래 꺼내려한 얘기거리로 들어가자.

이런 룰 설정을 웹페이지를 통해서 할 수 있는 REMO(Rule Editor for ModSecurity) beta버전을 6월에 발표했고, Howtoforge에 Introducing Remo - An Easy Way to Secure an Insecure Online Application with ModSecurity 제목으로 REMO 다루는 방법에 대한 글이 올라왔다. 자세한 글은 Howtoforge에 글을 보시고, 간단하게 설명하면 이렇다.

REMO를 사용하기 위해서는 ruby 1.8.2이상, irb, sqlite3-ruby 환경이 필요하다. 또한 ModSecurity 모듈이 설치되지 않은 테스트나 개발 서버, 개인 PC 등에 설치해도 무관하다. 다음과 같이 실행한 후 http://서버:3000/main/index 로 접속하면 설정화면을 볼 수 있다.

wget http://remo.netnea.com/files/remo-0.2.0.tar.gz
tar xvzf remo-0.2.0.tar.gz
cd remo-0.2.0
ruby script/server




REMO화면에서 메소드와 URI등을 새로 입력한 다음, 원하는 조건을 정의한다. 그 후 'generate' 버튼을 누르면 파일로 룰셋 파일을 다운로드 받을 수 있다. 받은 룰셋을 다음과 같이 apache 설정에서 include해주면 된다.

<IfModule mod_security2.c>
    Include /파일경로/rulefile.conf
</IfModule>

REMO툴은 ModSecurity 룰 생성의 모든 것을 제공해주지는 않는다. modsecurity-core-rules 룰 파일을 보면 룰 설정이 쉽지않다는 것을 알 수 있다. 이 툴은 이런 복잡한 룰을 보고 고개를 설레설레 젓지 않도록 보조적인 역할을 하는 툴로 여기면 된다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 삐꾸강아쥐

2007/06/26 09:45 2007/06/26 09:45
, , ,
Response
0 Trackbacks , 1 Comments
RSS :
http://blog.blog.n-nuri.com/rss/response/419

Trackback URL : http://blog.blog.n-nuri.com/trackback/419

Comments List

  1. 삐꾸강아쥐 2007/06/26 09:51 # M/D Reply Permalink

    우와... 펌질 하니깐... 위에 저런거도 붙네... ㅡ.ㅡ 티스토리 플리긴인가...

Leave a comment
[로그인][오픈아이디란?]

무단 이미지 사용 막기

출처 : http://www.thesitewizard.com/archive/bandwidththeft.shtml

무단 이미지 사용 막기

.htaccess 파일에 아래의 내용을 넣으면 된다.

SetEnvIfNoCase Referer "^http://www.your-domain-name-here.com/" locally_linked=1
SetEnvIfNoCase Referer "^http://www.your-domain-name-here.com$" locally_linked=1
SetEnvIfNoCase Referer "^http://your-domain-name-here.com/" locally_linked=1
SetEnvIfNoCase Referer "^http://your-domain-name-here.com$" locally_linked=1
SetEnvIfNoCase Referer "^$" locally_linked=1
<FilesMatch "\.(gif|png|jpe?g)$">
  Order Allow,Deny
  Allow from env=locally_linked
</FilesMatch>

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 삐꾸강아쥐

2007/05/18 17:28 2007/05/18 17:28
,
Response
0 Trackbacks , 0 Comments
RSS :
http://blog.blog.n-nuri.com/rss/response/364

Trackback URL : http://blog.blog.n-nuri.com/trackback/364

Leave a comment
[로그인][오픈아이디란?]

웹 인증 (htpasswd, htaccess)이용

htpasswd와 htaccess를 이용하여 웹 인증 페이지를 만들어보자

우선 인증을 걸고자 하는 디렉토리로 이동하여

ex)cd  /usr/local/apache/htdocs/webfolder

.htaccess 파일을 만든다.

ex) vi .htaccess

아래의 내용을 입력한다.

AuthName WebLog ## 인증창의 이름
AuthType Basic ## 인증 타입 보통 Basic를 사용
AuthUserFile /usr/local/apache/htdocs/weblog/.htpasswd
## htpasswd를 이용하여 생성되는 .htpasswd의 위치
AuthGroupFile /dev/null ## 그룹으로 인증할경우는 그룹 파일을 아닐경우 null 을 넣는다.
<Limit GET POST>
require valid-user ## 인증된 사용자만 접속 허용 하기
</Limit>

이제... 사용자와 패스워드를 만든다.

사용법

Usage:
        htpasswd [-cmdpsD] passwordfile username
        htpasswd -b[cmdpsD] passwordfile username password

        htpasswd -n[mdps] username
        htpasswd -nb[mdps] username password
 -c  Create a new file.
 -n  Don't update file; display results on stdout.
 -m  Force MD5 encryption of the password.
 -d  Force CRYPT encryption of the password (default).
 -p  Do not encrypt the password (plaintext).
 -s  Force SHA encryption of the password.
 -b  Use the password from the command line rather than prompting for it.
 -D  Delete the specified user.
On Windows, NetWare and TPF systems the '-m' flag is used by default.
On all other systems, the '-p' flag will probably not work.


ex) htpasswd -c .htpasswd x2x (엔터)
를 누르고 패스워드 입력

이렇게 하고... 해당 페이지를 접속해 보자...^^

확인 되었으면... 끝.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by 삐꾸강아쥐

2007/05/03 23:16 2007/05/03 23:16
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://blog.blog.n-nuri.com/rss/response/344

Trackback URL : http://blog.blog.n-nuri.com/trackback/344

Leave a comment
[로그인][오픈아이디란?]

Apache 무단링크 방지

Apache 2.x

httpd.conf 파일을 열어서

<Directory "해당 경로">
Oprion FollowSymLinks
AllowOverride None

## 링크 허용 부분
SerEnvIfNoCase Referer ^http://domain.com goout
SerEnvIfNoCase Referer ^http://domain.net goout

#이미지가 새창을 열경우 엑박(X)으로 보이는걸 방지하기 위한 레퍼럴이 존재하지 않는 요청
SerEnvIfNoCase Referer ^$ goout

# 파일 확장자 지정하기
<Files ~ "\.(gif|jpe?g|png|bmp|zip|tar|rar|alz|a00|ace|txt|mp3|mpe?g|wav|asf|wma|wmv|swf|exe)$">
Order deny,allow
deny from all
allow from env=goout

## 무단 링크시 띄워줄 에러
ErrorDocument 403 http:// 경고를 보여줄 Img 나 html
</Files>
</Directory>



참고 : http://www.neosky.info 
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by 삐꾸강아쥐

2007/04/20 11:42 2007/04/20 11:42
,
Response
0 Trackbacks , 0 Comments
RSS :
http://blog.blog.n-nuri.com/rss/response/301

Trackback URL : http://blog.blog.n-nuri.com/trackback/301

Leave a comment
[로그인][오픈아이디란?]

아파치 설정 활용 예(서비스 제한측면)

--------------------------------------------------------------------

제  목 : 아파치 설정 활용 예(서비스 제한측면)
작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2003.2~
정리일 : 2005.1.28(금)

아파치 웹서버의 활용에 있어, 보다나은 보안 설정 방법 몇 가지를 소개한다.

특정 Agent가 자꾸 사이트에 들어와서 긁어간다든지,
이미지 파일을 외부에서 링크하지 못하도록 한다든지,
특정 IP에서는 인증없이, 그 이외 IP에서는 아파치 인증을 통해서만 페이지를 보게하는
등의 응용적인 측면에서 방법들이다.
이 방법들은 제가 사용하고 있는 몇가지 방법을 정리하는 의미에서 적은 것이다.

1. 특정 브라우저의 접속을 차단

--------------------------------------------------------------------
SetEnvIfNoCase User-Agent "^Microsoft URL Control" dont_want

<Directory /usr/local/apache/htdocs>
   <Limit GET POST>
        Order Allow,Deny
        Allow from all
        Deny  from env=dont_want
   </Limit>
</Directory>
[/quote]
--------------------------------------------------------------------

----------------------------------------------
SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot
SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot

The 'SetEnvIfNoCase' simply sets an enviornment (SetEnv) variable called
'bad_bot' If (SetEnvIf) the 'User-Agent' string contains Wget, EmailSiphon, or
EmailWolf, regardless of case (SetEnvIfNoCase). In english, anytime a browser
with a name containing 'wget, emailsiphon, or emailwolf' accesses our website,
we set a variable called 'bad_bot'. We'd also want to add a line for the
User-Agent string of any other Spidert we want to deny.

Now we tell Apache which directories to block the Spiderts from with the
<Directory> directive:

<Directory "/home/evolt/public_html/users/">
        Order Allow,Deny
        Allow from all
        Deny from env=bad_bot
</Directory>

2.  다른 곳에서 images를 link하지 못하도록

1) 디렉토리를 제한하는 방법

referer 체크를 통해 외부에서 /images 이하디렉토리의 파일을 link하지 못하도록 한다.
이를테면 truefeel.kr 이라는 사이트가 있을 때
truefeel.kr내에 있는 동영상을 이 도메인에서는 링크할 수 있지만
외부 사이트에서는 이 동영상을 링크해도 권한이 없도록 할 수 있다.

--------------------------------------------------------------------
SetEnvIf Referer "^http://localhost/"  local_referal
SetEnvIf Referer "^http://127.0.0.1/"  local_referal
SetEnvIf Referer "^http://홈페이지명/" local_referal
SetEnvIf Referer "^$"                  local_referal

<Directory /usr/local/apache/htdocs/images>
   Order Deny,Allow
   Deny  from all
   Allow from env=local_referal
</Directory>
--------------------------------------------------------------------

2) 이미지 파일 확장자로 제한하는 방법 (서비스 페이지가 ????.truefeel.kr 일 때)
                                                                                   
--------------------------------------------------------------------
SetEnvIfNoCase Referer "^http://localhost/"        local_referal
SetEnvIf       Referer "^http://127.0.0.1/"        local_referal
SetEnvIfNoCase Referer "^http://(.*).truefeel.kr/" local_referal
SetEnvIfNoCase Referer "^http://truefeel.kr/"      local_referal
SetEnvIfNoCase Referer "^$"                        local_referal
                                                                                   
<Files ~ "\.(gif|jpg|jpeg|png|bmp)$">
   Order deny,allow
   Deny  from all
   Allow from env=local_referal
</Files>
--------------------------------------------------------------------

3. 특정 IP에서만 접근 가능하게

너무나도 흔한 방법이긴 한데, 개인적으로 저에게 이런 부분을 물어보시는 분이 많았다.
아래의 예는 /usr/local/apache/htdocs 디렉토리를 211.111.222.0/24 대역에서만 접근가능한 설정이다.

--------------------------------------------------------------------
<Directory "/usr/local/apache/htdocs">
    Options FollowSymLinks MultiViews
    AllowOverride AuthConfig
    Order deny,allow
    Deny from all
    Allow from 211.111.222.0/255.255.255.0
</Directory>
--------------------------------------------------------------------

반대로 아래와 같이 하면 지정한 IP대역에서만 접근할 수 없다.

--------------------------------------------------------------------
... 생략 ...
    Order allow,deny
    Allow from all
    Deny from 211.111.222.0/255.255.255.0
... 생략 ...
--------------------------------------------------------------------

4. 특정페이지를 인증된 사용자만 볼 수 있는 아파치 인증 설정

이번 글은 5번의 인증 설정을 알기 전에 아파치 인증에 대해 모르는 분을 위해 적은 것으로
아파치 인증이 무엇인지 안다면 5번으로 바로 넘어가기 바란다.

아파치에서는 특정 페이지를 접근할 때 ID와 비밀번호를 알아야만 접근하도록 설정할 수 있다.
다음 예를 보자.

--------------------------------------------------------------------
<Directory "/home/truefeel/public_html">
            Options FollowSymLinks MultiViews
            AllowOverride AuthConfig
</Directory>
--------------------------------------------------------------------

위 처럼 AllowOverride AuthConfig 설정을 하면 ~truefeel/public_html 디렉토리에 인증 과정을
거치는 기본 설정은 된 것이다.
만약 ~truefeel/public_html/manager/ 아래의 디렉토리에 인증을 걸려고 한다면 그 디렉토리에
다음과 같은 형식의 .htaccess 파일을 생성한다.

[ ~truefee/public_html/manger/.htaccess 파일 내용 ]
--------------------------------------------------------------------
AuthType Basic
AuthName User   <-- "User" 는 인증창에 표시될 메시지 중의 하나일 뿐 신경쓸 필요 없다.
AuthUserFile /home/truefeel/manage/.htpasswd
AuthGroupFile /dev/null
<Limit GET POST>
require valid-user
</Limit>
--------------------------------------------------------------------

.htpasswd 파일에 ID/PW를 생성해두면 해당페이지 인증을 할 수 있게 된다.

5. 특정 IP는 인증없이, 그 이외는 아파치 인증 거치도록

아래의 설정은 위의 4번 글을 읽었다면 뭔가 종합적인 설정을 한 것 처럼 보일 것이다.

--------------------------------------------------------------------
<Location />
    AuthType Basic
    AuthName User
    AuthUserFile /home/truefeel/manage/.htpasswd
    AuthGroupFile /dev/null

    require valid-user
    order deny,allow
    deny  from all
    allow from 211.111.222.0/255.255.255.0
    Satisfy any
</Location>
--------------------------------------------------------------------

위의 설정은
- 211.111.222.0/24 IP 대역에 있는 접속자는 인증없이 통과하고,
- 그 이외의 IP 대역에서 접속하면 인증을 거쳐야하는 설정이다.
이 설정은 Satisfy any 지시자를 통해서 이뤄진다. IP가 맞거나 ID/PW가 맞으면 되는 것이다. (OR)

만약 Satisfy all 이라고 적었다면
- IP대역이 211.111.222.0/24 이면서
- 인증까지 모두 통과 해야
해당 페이지에 접근이 가능하다. (AND)

6. 업로드 디렉토리의 .php파일은 text처럼 인식하기

php나 cgi 등으로 파일 업로드 가능하도록 구현된 경우 .php나 .html 등의 파일을 업로드할 수
있는 실수를 범할 수 있다.

이런 실수를 하더라도 지정한 업로드 디렉토리에 있는 .php나 .html 파일을 php프로그램으로
인식하지 않고 일반 텍스트 파일로 판단하도록 설정하여 보다 안전한 웹페이지 구성이 가능하다.
다음은 /upload/ 와 /files/ 디렉토리 아래의 php파일은 일반 텍스트로 인식하라는 설정이다.

--------------------------------------------------------------------
<Directory ~ "/usr/local/apache/htdocs/(upload|files)">
        RemoveType .html .php
</Directory>
--------------------------------------------------------------------

위에서 ~ 기호는 디렉토리 경로에 정규 표현식을 사용하겠다는 의미로 (upload|files) 부분을
정규 표현식으로 인식한다. 따라서 htdocs/ 이하의 upload 디렉토리와 files 디렉토리를 의미한다.

단순히 /home/truefeel/public_html/data 디렉토리라면
<Directory "/home/truefeel/public_html/data"> 와 같이 설정하면 된다.

7. 참고 자료

* Apache Directives
  http://httpd.apache.org/docs/mod/directives.html
* Apache Authentication and Access Control
  http://www.apache.kr.net/documents/authplus-story.html

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by 삐꾸강아쥐

2007/04/20 10:16 2007/04/20 10:16
Response
0 Trackbacks , 0 Comments
RSS :
http://blog.blog.n-nuri.com/rss/response/300

Trackback URL : http://blog.blog.n-nuri.com/trackback/300

Leave a comment
[로그인][오픈아이디란?]

글쓴이 : 좋은진호(truefeel, http://coffeenix.net/)
글쓴날 : 2004.2
정리일 : 2004.8.10(정리)
제  목 : [튜닝] apache에서 이미지 캐싱 처리(mod_expires)

apache에서는 mod_expires 모듈을 통해 Expires HTTP header 를 설정할 수 있다.
이를 통하여 클라이언트(웹페이지 방문자)에 캐싱되는 문서나 이미지들이 많아서 트래픽을
감소시킬 수 있다. 이미지 전용 서버나 이미지 디렉토리에 설정을 해두면 효과적이다.

이미지 서버에 지정한 다음 예를 보자.

-----------------------------------------------------------
<IfModule mod_expires.c>
        ExpiresActive On
        ExpiresDefault "access plus 1 month"

        # 제외할 디렉토리
        <Directory "/usr/local/apache/htdocs/temp">
        ExpiresActive Off
        </Directory>
</IfModule>
-----------------------------------------------------------

- ExpiresActive On 지시자로 Expires 설정을 enable 한다.
- ExpiresDefault "access plus 1 month" 지시자는 액세스한지 얼마나 지나서 expire할 것인지를 지정한다.
  즉, 지정한 기간만큼 클라이언트에 캐싱이 된다. 위에는 1달이다.

이외에 클라이언트에서 액세스한지 1달, 4주, 30일, 1년 등과 같은 expire 주기와
서버의 파일의 수정 시간으로 expire 주기를 설정할 수 있다.

-----------------------------------------------------------
ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"
ExpiresDefault "access plus 1 years"
ExpiresDefault "modification plus 30 days"
-----------------------------------------------------------

- 설정 마지막부분에 Directory 지시자와 ExpiresActive Off 설정을 통해
  특정 디렉토리만 expire 설정에서 제외할 수 있다.
  반대로 특정 디렉토리만 On으로도 설정할 수 있다. (일반 웹서버에 /images 와 같이 디렉토리가 있는 경우)

-----------------------------------------------------------
ExpiresByType image/gif "acces plus 4 weeks"
-----------------------------------------------------------

- 위처럼 파일의 유형으로도 가능하다.

아주 간단하지 않는가?

참고로 [다음(daum)] 의 이미지 서버는 28일(4주)로 [야후!코리아] 는 5년으로 설정되어 있다.

* 참고 자료 : http://httpd.apache.org/docs/mod/mod_expires.html

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by 삐꾸강아쥐

2007/04/20 10:13 2007/04/20 10:13
, ,
Response
0 Trackbacks , 0 Comments
RSS :
http://blog.blog.n-nuri.com/rss/response/299

Trackback URL : http://blog.blog.n-nuri.com/trackback/299

Leave a comment
[로그인][오픈아이디란?]

출처 : http://blog.naver.com/yuseungku?Redirect=Log&logNo=90001826914 ( 해당 저작권자의 요청시 자삭 합니다. )


트래픽 모니터링을 위한 아파치 모듈 : mod-cband

아파치 2.0.5버전(2006년 기준), 즉 아파치가 버전 업이 되면서 호스팅(서버를 일정 부분 유저에게 할당을 해서 웹 서비스를 제공해주는 서비스)서비스 중 가장 중요한 트래픽 모니터링에 대한 모듈의 부재가 나타났다. 아파치 1.3이상 버전에서만 지원되는 mod-throttle이라는 트래픽 제어 모듈을사용하기 위해 많은 서버 관리자들은 아파치를 다운그레이하여 사용할 수 밖에 없었는데 mod-cband는 이러한 상황을 해결해주는데 충분한 기능을 가졌다. 물론 필자는 mod-throttle을 사용해보지 않았기 때문에 그 기능상의 차이점을 적지 못하는 점을 양해해 주기 바란다. (리눅스 서버관리를 파고 들은지가 이제 겨우 3개월 되었습니다. 그렇기 때문에 아직 많이 미숙하기 때문에 이것저것 질문 하셔도 답변을 해드릴 수 없을지도 모릅니다. 그리고 이 문서는 제가 연구하면서 작성하는 것이기 때문에 일부로 존칭을 생략하였습니다. 양해해주시기 바라며 아파치 이제 다운그레이 하지 말고 사용 해보도록 합시다!!!)

- mod-cband 0.9.7.1

트래픽 양을 제한하고 모니터링 할 수 있는 모듈로 설치가 쉽고 적용이 매우 쉬우며 사용방법도 매우 간단하다. 현재 mod-cband 모듈을 완벽히 제어를 하는 법을 모르기 때문에 큰 내용을 여기서 작성하지는 않는다.

- 설치 하기

링크 : http://backports.org/debian/pool/main/m/mod-cband/

우선 위 링크를 통해 해당 웹페이지로 이동을 하여 mod-cband_0.9.7.1.orig.tar.gz 파일을 받는다. 그런 뒤에 적당한 곳에 압축을 푼다. 안에 매뉴얼을 보면 설치하는 방식은 딱 6줄이다.

$ wget http://backports.org/debian/pool/main/m/mod-cband/mod-cband-0.9.7.1.tgz

$ tar xzvf mod-cband-0.9.7.1.tgz

$ cd mod-cband-0.9.7.1

$ ./configure

$ make

$ make install

이렇게 하면 설치가 된다. 하지만 그전에 모드가 dso so방식. 동적 모듈 로딩으로 초기 설치시 셋팅이 되어 있어야 한다. 필자는 그 전에 셋팅을 위와 같이 했으므로 그 부분은 넘어가도록 한다. 동정 모듈 로딩은 앞으로 중요 프로그램 설치시에 크게 필요하므로 셋팅이 안되어있다면 추가 컴파일을 통해 셋팅을 다시 하도록 하자.

필자는 위와 같이 했을 때 설치를 하지 못했다. 설치가 안되는 사람의 경우에는 다음과 같이 해야 한다. 이건 나름대로 필자가 성공한 방법이기 때문에 모든 사용자의 컴퓨터 리눅스 환경에서 완벽히 성공한다는 보장은 없지만 아마 될 것이다.

$./configure –with-apxs=/아파치2가 깔려있는 PATH/bin/apxs

configure 설정 시 다음처럼만 하면 기분좋은 화면을 볼 수 있을 것이다. 위 구문을 살짝 이야기 하자면 모듈 추가를 위한 apxs의 직접적인 패스를 달아준 것이다. 필자는 이제 리눅스 입문하는 단계 이기 때문에 남들처럼 잘하지 못한다. 일일이 왜 그랫나 설명은 삼가하겠다. 그럼 이제 자동으로 모듈추가도 해주기 때문에 의기양양하게 phpinfo() 함수를 이용해 loaded module란을 확인해보자. cband가 추가되어있는 것을 확인 할 수 있을 것이다. 이제 아파치 설정을 해야 한다.

아파치 설정은 압축 파일 안에 있는 샘플을 보면서 서버 환경에 맞게 설정을 하면 된다. 간단히 몇가지를 이야기 하자면 필자는 샘플 2의 방식을 사용했다. 클래스 방식을 사용하는건 너무 어려웠다.(귀찮기도 했다.)

# define user 'dembol'

<CBandUser dembol>

  # 200MB bandwidth limit for user 'dembol'

  CBandUserLimit 200000

  # redirect to http://abc.org/bandwidth_exceeded.html

  # when the limit has been reached

  CBandUserExceededURL http://abc.org/bandwidth_exceeded.html

  # user's scoreboard file

  CBandUserScoreboard /var/run/apache2/dembol.scoreboard

 

  # a period of time after which the scoreboard will be cleared (2 minutes) (only in >=0.9.5-rc2)

  CBandUserPeriod 2M

</CBandUser>

우선 먼저 유저를 등록한다. 이건 샘플문서에 나와있는 내용으로 하나 하나 설명을 해보겠다. 유저의 이름은 dembol이고 200MB로 한정했다. ExceedeURL의 경우는 트래픽 오버가 나면 이동한 페이지이다. 이부분에서 아직 테스트가 완벽히 이루어지지 않아 자세히는 모르겠지만 현재 상황을 보면 순식간에 루프를 돌아버렸다. 생각해보니 트래픽 제한한 계정으로의 이동을 다시 또 이동을 시켰으니 루프를 돌 수 밖에 없었던 게 아닌가 생각한다. scoreboard는 아직 잘 모르겠지만. 우선은 시키는 대로 했다. 그 다음은 scoreboard가 클리어 되는 시간을 설정한다. 여기서 사용하는 것을 보면 (M : , H : 시간, 없으면 초) 대충 이런 식으로 설정을 하는 것으로 보인다.

# assign virtualhost 'xyz.org' to user 'dembol'

<VirtualHost *:80>

  ServerName xyz.org

  # Specify virtualhost owner

  CBandUser dembol

 

  # 100MB virtualhost bandwidth limit

  CBandLimit 100000

  # redirect to http://abc.org/bandwidth_exceeded.html

  # when the limit has been reached

  CBandExceededURL http://abc.org/bandwidth_exceeded.html

  # virtualhost's scoreboard file

  CBandScoreboard /var/run/apache2/xyz.org.scoreboard

 

  # a period of time after which the scoreboard will be cleared (3 hours) (only in >=0.9.5-rc2)

  CBandPeriod 3H

</VirtualHost>

이것은 위에서 설정한 유저를 바탕으로 직접적인 호스팅의 제어를 하는 곳이다. 이렇게 하기 싫고 특수 유저에 맞게 할당을 하고자 한다면 이 샘플 바로 위에 있는 가상호스트의 제어만 하는 것을 하도록 한다. 위에서 말했듯이 가상호스트 설정은 비슷하니 설명은 빼도록 하겠다.

이제 위 방식의 효율성을 잠시 써보도록 하겠습니다. 웹호스팅 서비스를 할 때 이런 글을 본적이 있을 것이다. 트래픽 제한은 하지 않겠지만 만약 전체 점유율이 다음과 같으면 잠시 트래픽을 제한한다. 라는 글을 본 적 있을 것이다. 이런 것처럼 유저의 트래픽은 가상호스트의 계정과 따로 트래픽을 관리하게 된다. 그렇기 때문에 가상호스트 계정의 트래픽 오버가 나도 유저의 트래픽은 걸리지 않는 것이다. 이것을 이용하면 전체 계정의 트래픽양을 제어 할 수 있을 것이다.

문제는 아직 모듈 분석을 다 하지 못해서 자동으로 서버 가동 24시간이면 클리어 되게 하는 법을 모르고 있다. 혹시라도 알게 되면 다시 글에 덧붙이도록 하겠다.

이제 모니터링을 할 수 있는 부분을 추가해야 하는데, 제작자는 httpd.conf파일에 다음과 같은 구문을 몇 줄 추가해야만 볼 수 있게 해놓았으니 다음 라인을 추가한다.

<Location /cband-status>

SetHandler cband-status

</Location>

필자는 httpd.conf맨 마지막 페이지에 삽입을 하였으나 여러분들은 각자 알아서 원하는 위치에 넣도록 하자. 이제 위 작업이 모두 끝나고 각 가상 호스트에게로의 트래픽 사용량 제한을 완료 하였다면 아파치를 재 실행하여 다음 주소로 접근을 해보자.

http://도메인명/cband-status

이렇게 되면 한 곳에서 모니터링이 가능 할 것이다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 삐꾸강아쥐

2006/10/08 23:47 2006/10/08 23:47
Response
0 Trackbacks , 0 Comments
RSS :
http://blog.blog.n-nuri.com/rss/response/209

Trackback URL : http://blog.blog.n-nuri.com/trackback/209

Leave a comment
[로그인][오픈아이디란?]

블로그 이미지

http://blog.n-nuri.com 이 접속이 안 될경우 http://x2x.dnip.net 으로 접속해 주세요 공유하지 않는 지식은 썩은 물과 같다~~~!!!

- 삐꾸강아쥐