다음 문서를 보고 따라하면 된다.

http://httpd.apache.org/dev/debugging.html

 

이따 좋은데?? (문서 번역하기로 다짐함~~)

 

[dd /usr/local/apache/conf]# gdb httpd
GNU gdb Red Hat Linux (6.3.0.0-1.153.el4_6.2rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/tls/libthread_db.so.1".

(gdb) b ap_process_request
Breakpoint 1 at 0x806d32d: file http_request.c, line 243.
(gdb) run -X -d /usr/local/apache
Starting program: /usr/local/apache/bin/httpd -X -d /usr/local/apache
[Thread debugging using libthread_db enabled]
[New Thread -1208580416 (LWP 29667)]
Syntax error on line 21 of /usr/local/apache/conf/mod_security.conf:
mod_security: Failed to open the debug log file: /usr/local/apache/logs/modsec_debug_log

Program exited with code 01.

'web' 카테고리의 다른 글

oscache 사용 간단기  (0) 2008.08.27
인터넷 익스플로러 버전별 유저 에이전트 정리  (0) 2008.08.14
외부폼과 통신할때 한글 처리하기  (0) 2008.07.01
쿠키값 보기  (0) 2008.06.11
mod_jk2 서버의 문제  (0) 2008.06.10
Posted by '김용환'
,

 <%@ page language="java" pageEncoding="MS949" %>
<script>
function gomail(){
        var form1 = document.form1;
        form1.action = http://gmail.google.com/gmail";
        document.charset = "UTF-8";     // IE only
        form1.submit();
}
</script>

<form name="form1" method ="post">
<input type="hidden" name="ID" value="${memberid}">
<input type="hidden" name="XIE" value="01">
</form>

<script>gomail();</script>

 

외부 폼과 통신할때, UTF-8로 통신해야 하는 이슈가 있었다.

아파치단에서는 KSC5601로 셋팅되어야 하고, 자바 내부는 MS949로 처리하고 있는데..

 

UTF-8 폼으로 id를 전송하려면. document.charset를  UTF-8로 해주면. 문제가 해결된다.

Posted by '김용환'
,

쿠키값 보기

web 2008. 6. 11. 06:09

항상 까먹는다..

 

javascript:alert(document.cookie);

 

 

Posted by '김용환'
,

mod_jk2 서버의 문제

web 2008. 6. 10. 20:25

 

mod_jk2 서버의 문제가 발생하였다. socket 연결이 실패되고.. 10분동안 이유없이 아파치의 리쿼스트가 톰캣의 서버에 소켓연결에 실패하는 현상이 발견했다.

이유는 정말 모르겠다...

 

mod_jk로 업그레이드된 서버는 전혀 이런문제가 없는 걸로 봐서. 문제 분석대신 그냥 패치로 해결..

 

 

 

[Sat Apr 12 11:11:43 2008] [error] channelApr.open() attempt to connect to 127.0.0.1:6094 (127.0.0.1) failed 104
[Sat Apr 12 11:11:43 2008] [error] ajp13.connect() failed ajp13:localhost:6094
[Sat Apr 12 11:11:43 2008] [error] ajp13.service() failed to connect endpoint errno=9 Bad file descriptor
[Sat Apr 12 11:11:43 2008] [error] ajp13.service() Error  forwarding ajp13:localhost:6094 1 1
[Sat Apr 12 11:11:43 2008] [error] mod_jk2.handler() Error connecting to tomcat 120000, status 0
[Sat Apr 12 11:11:43 2008] [error] [client 116.120.89.11] File does not exist: /usr/local/tomcat/webapps/ROOT/common, referer: h
ttp://admin.google.com/info.nhn?m=deq

 

[Sat Apr 12 11:12:25 2008] [notice] child pid 1136 exit signal Segmentation fault (11)
[Sat Apr 12 11:12:25 2008] [notice] child pid 1137 exit signal Segmentation fault (11)
[Sat Apr 12 11:12:25 2008] [notice] child pid 1138 exit signal Segmentation fault (11)
[Sat Apr 12 11:12:25 2008] [notice] child pid 1139 exit signal Segmentation fault (11)
[Sat Apr 12 11:12:25 2008] [notice] child pid 1141 exit signal Segmentation fault (11)
[Sat Apr 12 11:12:31 2008] [notice] child pid 1143 exit signal Segmentation fault (11)
[Sat Apr 12 11:12:33 2008] [notice] child pid 1152 exit signal Segmentation fault (11)
[Sat Apr 12 11:12:39 2008] [notice] child pid 1157 exit signal Segmentation fault (11)

 

 

'web' 카테고리의 다른 글

외부폼과 통신할때 한글 처리하기  (0) 2008.07.01
쿠키값 보기  (0) 2008.06.11
아파치의 httpd -l과 -L 의 차이  (1) 2008.05.31
DDOS Attack UDP Fragment 공격  (0) 2008.05.10
웹에서 Dos 공격 막아보기..  (0) 2008.04.22
Posted by '김용환'
,

 

 

HTTPD L은 다음과 같습니다.

 

-L          Output a list of directives together  with  expected  argu-ments and places where the directive is valid.

 

[e61128 /usr/local/apache/bin]# httpd -L > module

아파치에서 사용하는 directive directive를 포함하는 모듈과의 상관관계와 설명이 나와있습니다.

 

 

...

<Directory (core.c)
        Container for directives affecting resources located in the specified directories
        Allowed in *.conf only outside <Directory>, <Files> or <Location>

....

 

 

 

 

Httpd l static module list를 알려주는 것입니다.

-l          Output a list of modules compiled into the server.

 

[e61128 /usr/local/apache/bin]# httpd -l

Compiled in modules:

  core.c

  mod_access.c

  mod_auth.c

  mod_include.c

  mod_log_config.c

  mod_env.c

  mod_setenvif.c

  prefork.c

  http_core.c

  mod_mime.c

  mod_status.c

  mod_autoindex.c

  mod_asis.c

  mod_cgi.c

  mod_negotiation.c

  mod_dir.c

  mod_imap.c

  mod_actions.c

  mod_userdir.c

  mod_alias.c

  mod_so.c

 

 

우리가 보던 설정파일 httpd.conf의 내용중 Dynamic Shared Object는 위의 httpd l 리스트에 나오면 안나오도록 설계가 되어 있죠.

 

#

# Dynamic Shared Object (DSO) Support

#

# To be able to use the functionality of a module which was built as a DSO you

# have to place corresponding `LoadModule' lines at this location so the

# directives contained in it are actually available _before_ they are used.

# Statically compiled modules (those listed by `httpd -l') do not need

# to be loaded here.

#

# Example:

# LoadModule foo_module modules/mod_foo.so

#

Include conf/mod_charset.conf

Include conf/mod_deflate.conf

Include conf/mod_dosevasive20.conf

Include conf/mod_headers.conf

Include conf/mod_jk.conf

Include conf/mod_proxy.conf

Include conf/mod_proxy_connect.conf

Include conf/mod_proxy_ftp.conf

Include conf/mod_proxy_http.conf

Include conf/mod_rewrite.conf

Include conf/mod_security.conf

Include conf/mod_url.conf

 

 

, LoadModule.conf파일의 경우는 Load를 하되. Load가 되면, forcecharset을 먹이라는 뜻이죠.

LoadModule charset_module     modules/mod_charset.so

 

<IfModule mod_charset.c>

        ForceCharset KSC5601

</IfModule>

 

모듈 리스트에는 mod_charset.c이 포함되어 있습니다.

[e61128 /usr/local/apache/modules]# ll

ÇÕ°è 1388

drwxr-xr-x   2 www www   4096  8¿ù 31 15:45 .

drwxr-xr-x  15 www www   4096  8¿ù 31 15:45 ..

-rw-r--r--   1 www www   8504  8¿ù 31 15:44 httpd.exp

-rwxr-xr-x   1 www www  26687  8¿ù 31 15:45 mod_charset.so

-rwxr-xr-x   1 www www  22892  8¿ù 31 15:45 mod_comicsession2.so

-rwxr-xr-x   1 www www  38228  8¿ù 31 15:45 mod_deflate.so

-rwxr-xr-x   1 www www  36115  8¿ù 31 15:45 mod_dosevasive20.so

-rwxr-xr-x   1 www www  35061  8¿ù 31 15:45 mod_headers.so

-rwxr-xr-x   1 www www 462702  8¿ù 31 15:45 mod_jk.so

-rwxr-xr-x   1 www www 177095  8¿ù 31 15:45 mod_nvidsession.so

-rwxr-xr-x   1 www www  96087  8¿ù 31 15:45 mod_proxy.so

-rwxr-xr-x   1 www www  26845  8¿ù 31 15:45 mod_proxy_connect.so

-rwxr-xr-x   1 www www  67218  8¿ù 31 15:45 mod_proxy_ftp.so

-rwxr-xr-x   1 www www  64674  8¿ù 31 15:45 mod_proxy_http.so

-rwxr-xr-x   1 www www 115709  8¿ù 31 15:45 mod_rewrite.so

-rwxr-xr-x   1 www www 152415  8¿ù 31 15:45 mod_security.so

-rwxr-xr-x   1 www www  21083  8¿ù 31 15:45 mod_url.so

 

만약 mod_charset.so 파일이 없는 상태에서, httpd restart를 하면 다음의 결과가 나옵니다.

[e65004 /usr/local/apache/modules]# mv mod_charset.so mod_charset1.so

[e65004 /usr/local/apache/modules]# ../bin/httpd -k graceful

Syntax error on line 2 of /usr/local/apache/conf/mod_charset.conf:

Cannot load /usr/local/apache/modules/mod_charset.so into server: /usr/local/apache/modules/mod_charset.so: cannot open shared object file: No such file or directory

 

참고하세요.

 

결론은…

, 정적인 모듈은 httpd l 로 확인할 수 있고, 동적인 모듈은 LoadModule시 에러가 나지 않으면 동적으로 로딩됨을 확인이 가능합니다.

 

'web' 카테고리의 다른 글

쿠키값 보기  (0) 2008.06.11
mod_jk2 서버의 문제  (0) 2008.06.10
DDOS Attack UDP Fragment 공격  (0) 2008.05.10
웹에서 Dos 공격 막아보기..  (0) 2008.04.22
Connection reset by peer, Connection reset, Broken Pipe 이런 에러.  (0) 2008.04.19
Posted by '김용환'
,

 

회사에 공격이 들어왔다.

 

네트웍들이 일부 마비되었고, 40분뒤 복구 되었다.

 

DDOS Attack의 UDP Fragment 공격이라 밝혀 졌다.

 

자료를 찾아보니 아래의 자료를 발견했다.

 

UDP 프로토콜을 최대한 활용해서, 네트웍과 시스템에 영향을 미쳐 서비스 지연을 일으키게 하였다..

 

http://nicred.springnote.com/pages/223781/attachments/250640

Posted by '김용환'
,

 

-       어플단

n  웹 어플리케이션에서는 mod_security를 써서 적절하게 수치로 막고 있습니다.

n  도스 공격시에 서버마다 mod_jk timeout을 짧게 주어 처리가 안 되는 것은 timeout되게 하였습니다.

-       네트웍단

n  Dos 공격시 솔루션을 이용하여 ip차단하는 방법이 있습니다. 해당 솔루션이 반복적이거나 이상하게 ip가 들어오면 막습니다.

n  그 외 또한, 가끔씩 vip 주소를 바꿔주기도 하여, ip단위의 공격을 미리 방지했던 적이 있었습니다.

-       서버

n  리눅스의 커널을 높은 버전으로 패치하여 서버당 처리용량을 줄일 수 있습니다.

n  서버를 많이 늘려서 초기부터 Dos 공격이 이루어지더라도 버틸 수 있도록 되어 있습니다.

Posted by '김용환'
,

Connection reset by peer, Connection reset, Broken Pipe

 

Tomcat 4.x 을 쓰는데. 자꾸 이런 에러가 난다.

 

 

찾아보니 이런 말을 찾았다.

- java.io.IOException: Broken pipe
  원인: receiver에서 송신받은 데이터를 제때 처리하지 못하는 상황(네트워크가 느리거나 서버의 CPU가 max인 경우 등)에서 sender가 계속 보내는 경우

 

정상적으로 데이터를 보내지만 받지 못하는 상황이 발생하기 때문에 문제가 된다.

 

톰캣을 5.x를 썼더니.. 빈도수가 확 줄어들었당... 톰캣 쪽 문제였는가??

 

음...

Posted by '김용환'
,

중형서버에서 톰캣 8개를 띄워놓고, 제대로 동작되는지 확인하고 싶었다.

mod_jk.conf 에서 debug 레벨을 debug로 수정하고, 아파치 restart 하였다.

 

 

그리고, 로그를 확인한다. 워커가 정상적으로 선택되는지 알 수 있당~

tail -f mod_jk.log | grep "found best worker"

 


[Thu Apr 17 17:17:28 2008] [15701:9920] [debug] get_most_suitable_worker::jk_lb_worker.c (600): found best worker tomcat8010 (tomcat8010) using method 'Request'
[Thu Apr 17 17:17:30 2008] [15701:9920] [debug] get_most_suitable_worker::jk_lb_worker.c (600): found best worker tomcat8011 (tomcat8011) using method 'Request'
[Thu Apr 17 17:17:30 2008] [15700:9920] [debug] get_most_suitable_worker::jk_lb_worker.c (600): found best worker tomcat8012 (tomcat8012) using method 'Request'
[Thu Apr 17 17:17:30 2008] [15702:9920] [debug] get_most_suitable_worker::jk_lb_worker.c (600): found best worker tomcat8013 (tomcat8013) using method 'Request'
[Thu Apr 17 17:17:31 2008] [15702:9920] [debug] get_most_suitable_worker::jk_lb_worker.c (600): found best worker tomcat8014 (tomcat8014) using method 'Request'
[Thu Apr 17 17:17:31 2008] [15700:9920] [debug] get_most_suitable_worker::jk_lb_worker.c (600): found best worker tomcat8015 (tomcat8015) using method 'Request'
[Thu Apr 17 17:17:33 2008] [15700:9920] [debug] get_most_suitable_worker::jk_lb_worker.c (600): found best worker tomcat8016 (tomcat8016) using method 'Request'
[Thu Apr 17 17:17:33 2008] [15704:9920] [debug] get_most_suitable_worker::jk_lb_worker.c (600): found best worker tomcat8014 (tomcat8014) using method 'Request'
[Thu Apr 17 17:17:33 2008] [15702:9920] [debug] get_most_suitable_worker::jk_lb_worker.c (600): found best worker tomcat8015 (tomcat8015) using method 'Request'
[Thu Apr 17 17:17:33 2008] [15702:9920] [debug] get_

Posted by '김용환'
,

아주 잘 설명하신 분이 있다.. 이 분의 글을 보는게 나을 듯..

 

Value stack

http://sunnykwak.egloos.com/3627457

 

 

 

 

Posted by '김용환'
,