apache killer에 대한 버그 패치 (3192)에 대한 improved 버전(http://httpd.apache.org/security/CVE-2011-3192.txt)과 새로 발생된 3348 보안 패치에 대해서 apache httpd 쪽에서 패치를 내놓았다.

dos 공격시 문제를 줄인 버그라고 하니. 패치하는 게 좋을 것 같다.

https://www.redhat.com/security/data/cve/CVE-2011-3348.html
https://bugzilla.redhat.com/show_bug.cgi?id=736690
mod_proxy_ajp 모듈이 잘못된 HTTP requests이 요청이 왔을때 문제가 일어날 수 있다.

moderate: mod_proxy_ajp remote DoS CVE-2011-3348

A flaw was found when mod_proxy_ajp is used together with mod_proxy_balancer. Given a specific configuration, a remote attacker could send certain malformed HTTP requests, putting a backend server into an error state until the retry timeout expired. This could lead to a temporary denial of service.




Apache HTTP Server 2.2.21 Released 2011-09-13

The Apache HTTP Server Project is proud to announce the release of version 2.2.21 of the Apache HTTP Server ("httpd"). This version is principally a security and bugfix release. Notably, it resolves CVE-2011-3348 and provides further bug fixes to the resolution of CVE-2011-3192 (initially corrected in 2.2.20).

The current advisory for CVE-2011-3192 has been be revised at http://httpd.apache.org/security/CVE-2011-3192.txt and further updates for the community will be published to this url.

This version of httpd is a major release of the stable branch, and represents the best available version of Apache HTTP Server. New features include Smart Filtering, Improved Caching, AJP Proxy, Proxy Load Balancing, Graceful Shutdown support, Large File Support, the Event MPM, and refactored Authentication/Authorization.


3192에 대한 문제를 원천적으로 해결하기 위해서 이번 버전부터 MaxRange라는 지시자가 새로 생겼다.
최대값은 200이다.
(http://httpd.apache.org/docs/2.2/mod/core.html#maxranges)

MaxRanges Directive

Description: Number of ranges allowed before returning the complete resource
Syntax: MaxRanges default | unlimited | none | number-of-ranges
Default: MaxRanges 200
Context: server config, virtual host, directory
Status: Core
Module: core
Compatibility: Available in Apache HTTP Server 2.2.21 and later

The MaxRanges directive limits the number of HTTP ranges the server is willing to return to the client. If more ranges then permitted are requested, the complete resource is returned instead.

default
Limits the number of ranges to a compile-time default of 200.
none
Range headers are ignored.
unlimited
The server does not limit the number of ranges it is willing to satisfy.
number-of-ranges
A positive number representing the maximum number of ranges the server is willing to satisfy.

Posted by '김용환'
,

내가 사용하는 리눅스 서버의 네트웍 카드의 종류를 알고 싶고, zero copy를 지원하는지 확인하는 법

ethtool을 이용
]# ethtool  -i eth0
driver: bnx2
version: 1.9.3
firmware-version: 3.5.12 ipms 1.6.0
bus-info: 0000:03:00.0

# ethtool  -i eth1
driver: bnx2
version: 1.9.3
firmware-version: 3.5.12 ipms 1.6.0
bus-info: 0000:07:00.0


dirver 명이 bnx2 이다.
구글링 검색해서 내용을 찾는다.



http://www.broadcom.com/support/ethernet_nic/faq_drivers.php

 What are the Linux tg3, bnx2, bnx2x and b44 drivers?
To better support users, Broadcom has been actively supporting, maintaining, and testing the in-kernel Linux drivers for the NetXtreme, NetXtreme II, NetLink and 4401 product lines. The following is list of drivers supported for each product line:

NetXtreme and NetLink - tg3
NetXtreme II - bnx2 1G
NetXtreme II - bnx2x 10G
4401 - b44

Broadcom officially releases the Linux drivers as packages. The Linux driver packages released by Broadcom are based on the latest in-kernel drivers with some added compatibility code to make it backwards compatible with most 2.6 kernels and some 2.4 kernels (generally newer than 2.4.24). If you are using the latest upstream kernel from www.kernel.org, you generally do not need to download the Linux driver packages from Broadcom as the latest upstream kernel has the latest Linux driver patches.

For the NetXtreme and NetLink product lines, the tg3 driver is now the only Linux driver that Broadcom supports. Accordingly, Broadcom has discontinued support for the bcm5700 driver and no longer provides updates.




아하. broadcom의 NexXtrem II 였다.


여기서 프로그래밍 문서를 찾으면 zero copy 여부를 확인할 수 있다.

NetXtreme II Programmer's Reference Guide
http://www.broadcom.com/collateral/pg/NetXtremeII-PG203-R.pdf


Single-chip solution for LOM and NIC applications
- Integrated 10BASE-T/100BASE-TX/1000BASE-T transceivers
- 10/100/1000 triple-speed MAC
- Host interfaces
PCI v2.3—32 bit/64 bit, 33 MHz/66 MHz
PCI-X v1.0—64 bit, 66 MHz/100 MHz/133 MHz
- TCP offload engine
- Full fast path TCP offload
- Zero Copy-capable hardware




 


Posted by '김용환'
,

강의를 재미있게 한다. 너무 MS을 까고, Apple의 스티브잡스의 이야기를 리눅스에 빗대 언급했다.
여기에 MS 발표자도 왔는데.. 괜찮나?
근데. 이 사람들.. Linux 발음을' 리눅스'가 아니라. '리~닉스' 라고 한다. 헉!!!

내용은 다들 알고 있는 내용이긴 하지만,  재미있다. ㅋㅋㅋ

Posted by '김용환'
,

 Source : watch.c
파일(디렉토리) 의 create, modify, delete, move에 대해서 모니터링
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/inotify.h>
#define EVENT_SIZE  ( sizeof (struct inotify_event) )
#define BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )
int main( int argc, char **argv ) {
  char target[20]; /* monitoring directory name */
  int fd;
  int wd; /* watch desc */
  char buffer[BUF_LEN];
  fd = inotify_init();
  if (fd < 0) {
    perror("inotify_init");
  }
  if (argc < 2) {
    fprintf (stderr, "Watching the current directory\n");
    strcpy (target, ".");
  } else {
    fprintf (stderr, "Watching '%s' directory\n", argv[1]);
    strcpy (target, argv[1]);
  }
  wd = inotify_add_watch(fd, "/home1/knight", IN_MODIFY | IN_CREATE | IN_DELETE | IN_MOVED_FROM | IN_MOVED_TO | IN_MOVE_SELF);
  while(1) {
    int length, i = 0;
    length = read(fd, buffer, BUF_LEN);
    if (length < 0) {
      perror("read");
    }
    while (i < length) {
      struct inotify_event *event = (struct inotify_event *) &buffer[i];
      printf ("[debug] wd=%d mask=%d cookie=%d len=%d dir=%s\n", event->wd, event->mask, event->cookie, event->len, (event->mask & IN_ISDIR)?"yes":"no");
      if (event->len) {
        if (event->mask & IN_CREATE) {
          if (event->mask & IN_ISDIR) {
            printf("The directory %s was created.\n", event->name);      
          } else {
            printf("The file %s was created.\n", event->name);
          }
        } else if (event->mask & IN_DELETE) {
          if (event->mask & IN_ISDIR) {
            printf("The directory %s was deleted.\n", event->name);      
          } else {
            printf("The file %s was deleted.\n", event->name);
          }
        } else if (event->mask & IN_MODIFY) {
          if (event->mask & IN_ISDIR) {
            printf("The directory %s was modified.\n", event->name);
          } else {
            printf("The file %s was modified.\n", event->name);
          }
        } else if (event->mask & IN_MOVED_FROM || event->mask & IN_MOVED_TO || event->mask & IN_MOVE_SELF) {
          if (event->mask & IN_ISDIR) {
            printf("The directory %s was moved.\n", event->name);
          } else {
            printf("The file %s was moved.\n", event->name);
          }
        }
      }
      i += EVENT_SIZE + event->len;
    }
  }
  /*
  inotify_rm_watch(fd, wd);
  close(fd);
  */
  return 0;
}



빌드 및 실행
[/home/knight]  gcc -o watch.out watch.c
[/home/knight] ./watch.out
Watching the current directory


터미널 하나를 띄워서 테스트해본다.

[/home/knight] mkdir xx1
[/home/knight] mkdir xx2
[/home/knight] mv xx2 xx222
[/home/knight] rm -rf xx222

watch.out을 실행시켰던 터미널에서 결과를 확인한다.


./watch.out
Watching the current directory
[debug] wd=1 mask=1073742080 cookie=0 len=16 dir=yes
The directory xx1 was created.
[debug] wd=1 mask=1073742080 cookie=0 len=16 dir=yes
The directory xx2 was created.
[debug] wd=1 mask=1073741888 cookie=33508 len=16 dir=yes
The directory xx2 was moved.
[debug] wd=1 mask=1073741952 cookie=33508 len=16 dir=yes
The directory xx222 was moved.
[debug] wd=1 mask=1073742336 cookie=0 len=16 dir=yes
The directory xx222 was deleted.


괜찮은 Referneces
http://ko.wikipedia.org/wiki/Inotify
http://www.ibm.com/developerworks/kr/library/l-ubuntu-inotify/index.html
http://linux.die.net/man/7/inotify
http://darkeside.blogspot.com/2007/12/linux-inotify-example.html
Posted by '김용환'
,

centos 운영

c or linux 2011. 7. 21. 16:16

아주 훌륭한 centos 설치후 작업/운영/업그레이드/중요 어플리이션/데몬 설치 깔끔 정리

http://www.jopenbusiness.com/mediawiki/index.php/CentOS#CentOS_.EC.82.AC.EC.96.91_.ED.99.95.EC.9D.B8
Posted by '김용환'
,

udev

c or linux 2011. 7. 7. 16:15
mknod를 2.4에서까지만 하고, 2.6에서는 하지 않는다.
나는 그냥 시스템이 자동으로 하는 줄 알고 그려려니 했었는데. udev 라는 툴이 그 역할을 하고 있었을 줄이야.. 좀 더 깊이 들어갈 수 있는 Insight가 좀 필요하다.
안드로이드 내부도 이것을 사용하고 있으니 알아두어야지..

웹 서버에서 잘 돌아가고 있군.

# ps -ef | grep udev
root      1788     1  0  2010 ?        00:00:00 udevd


관련 정보를 모아본다

http://free-electrons.com/doc/udev.pdf
http://www.reactivated.net/writing_udev_rules.html
http://visionmaru.com/wp/?p=147
http://w3.linux-magazine.com/issue/71/Dynamic_Device_Management_in%20Udev.pdf
http://en.wikipedia.org/wiki/Udev
http://www.kroah.com/linux/talks/ols_2003_udev_paper/Reprint-Kroah-Hartman-OLS2003.pdf









'c or linux' 카테고리의 다른 글

inotify 함수 예제 (inotify function example/sample)  (1) 2011.07.21
centos 운영  (0) 2011.07.21
Centos 5.6 빨리 다운받기  (1) 2011.07.07
리눅스 프로세스 절대 위치 찾기  (0) 2011.06.02
GDB 테스트하기  (0) 2011.05.11
Posted by '김용환'
,

centos 홈페이지에서 download 찾아들어가서 mirroing 찾는 것보다 아래 링크로 들어가면 더 빨리 받을 수 있다. 특히 한국사람에거는 한국 싸이트 다음에 들어가서 centos 다운 받으면 됨.


http://iso.linuxquestions.org/centos/centos-5.6/


아니면, 여기서 직접 centos 5.6 이미지 다운받기! (주소는 ftp.daum.net)

Download ISO 1
Download ISO 2
Download ISO 3
Download ISO 4
Download ISO 5
Download ISO 6
Download ISO 7
Download ISO 8
Download ISO 9
Download ISO 10
Download ISO 11

'c or linux' 카테고리의 다른 글

centos 운영  (0) 2011.07.21
udev  (0) 2011.07.07
리눅스 프로세스 절대 위치 찾기  (0) 2011.06.02
GDB 테스트하기  (0) 2011.05.11
[공부중] Memory fs 테스트  (0) 2011.04.22
Posted by '김용환'
,



]# ps -ef | grep http
root      1180     1  0  2010 ?        00:00:02 httpd
]# file /proc/1180/exe
/proc/1180/exe: symbolic link to `/usr/sbin/httpd'
]# ls -al /proc/1180/exe
lrwxrwxrwx 1 root root 0  6월  2 11:56 /proc/1180/exe -> /usr/sbin/httpd

(which나 whereis로 찾을 수 있다.)


 

'c or linux' 카테고리의 다른 글

udev  (0) 2011.07.07
Centos 5.6 빨리 다운받기  (1) 2011.07.07
GDB 테스트하기  (0) 2011.05.11
[공부중] Memory fs 테스트  (0) 2011.04.22
개념 정리  (0) 2011.04.22
Posted by '김용환'
,

GDB 테스트하기

c or linux 2011. 5. 11. 15:01

 

#include <stdio.h>
int test();
int main(void) {
        int a = 0;
        printf("hello world\n");
        a = test();
        return 1;
}
int test() {
        return 10;
}
~


공부 #1 - 디버그 심볼 테이블 정보가 필요하다.

gcc a.c
./a.out

file a.out

gdb a.out
b test

quit
 
-------------

공부 #2 - break point, status 정보 확인
gcc -g a.c
ls a.out
gdb a.out


list

b 6
b 7
b 8
b 9

info break

 

run

p a
n
p a

(값 확인 완료)

s
s
list

(함수안으로)

n
n
(함수 밖으로)
p a

quit

-----------

#공부 3 - watch

b 7
run

watch a
n
n

quit
-----------

# 공부 4  continue, break방법, break 지우기
b a.c:5
b a.c:8

 

info break

 
d b 1-2


b a.c:5
b a.c:8

run

c
c

quit

-----------




 

Posted by '김용환'
,





임베디드 디바이스 드라이버 소스(vrd.c)를 이용한다. 


[root@linux2 vrd]# ls
Makefile  vrd.c  vrd.ko  vrd.mod.c  vrd.mod.o  vrd.o
[root@linux2 vrd]# ls -l /dev/vrd*
ls: /dev/vrd*: 그런 파일이나 디렉토리가 없음
[root@linux2 vrd]# insmod vrd.ko
[root@linux2 vrd]# ls -l /dev/vrd*
brw-r-----  1 root disk 240, 0  4월 22 11:48 /dev/vrda
brw-r-----  1 root disk 240, 1  4월 22 11:48 /dev/vrdb
[root@linux2 vrd]#



참고
두개는 동일
[root@linux2 vrd]# mke2fs
[root@linux2 vrd]# mkfs -t ext2



[root@linux2 vrd]# mke2fs /dev/vrda
mke2fs 1.37 (21-Mar-2005)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1024 inodes, 4096 blocks
204 blocks (4.98%) reserved for the super user
First data block=1
Maximum filesystem blocks=4194304
1 block group
8192 blocks per group, 8192 fragments per group
1024 inodes per group

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@linux2 vrd]#

[root@linux2 ~]# mkdir test

[root@linux2 ~]# ls test
아무것도 없음



[root@linux2 ~]# mount /dev/vrda test
[root@linux2 ~]# ls -al test
합계 21
drwxr-xr-x   3 root root  1024  4월 22 11:52 .
drwxr-x---  22 root root  4096  4월 22 11:47 ..
drwx------   2 root root 12288  4월 22 11:52 lost+found


테스트
[root@linux2 ~]# cp /etc/p*
[root@linux2 ~]# cd test
[root@linux2 test]# cp /etc/p* .
cp: omitting directory `/etc/pam.d'
cp: omitting directory `/etc/pango'
cp: omitting directory `/etc/pcmcia'
cp: omitting directory `/etc/php.d'
cp: omitting directory `/etc/pki'
cp: omitting directory `/etc/ppp'
cp: omitting directory `/etc/profile.d'
[root@linux2 test]# ls -al

해제
[root@linux2 ~]# umount test

[root@linux2 ~]# ls test
아무것도 없음


다시 mount
[root@linux2 ~]# mount /dev/vrda test
[root@linux2 ~]# ls -al test
합계 432
drwxr-xr-x   3 root root   1024  4월 22 11:54 .
drwxr-x---  22 root root   4096  4월 22 11:47 ..
drwx------   2 root root  12288  4월 22 11:52 lost+found
-rw-r--r--   1 root root     10  4월 22 11:54 pam_smb.conf
-rw-r--r--   1 root root   1891  4월 22 11:54 passwd
-rw-------   1 root root   1850  4월 22 11:54 passwd-
-rw-r--r--   1 root root   1844  4월 22 11:54 passwd.OLD
-rw-r--r--   1 root root   1362  4월 22 11:54 pbm2ppa.conf
-rw-r--r--   1 root root    657  4월 22 11:54 pear.conf
-rw-r--r--   1 root root  44117  4월 22 11:54 php.ini
-rw-r--r--   1 root root   2888  4월 22 11:54 pinforc
-rw-r--r--   1 root root   6300  4월 22 11:54 pnm2ppa.conf
-rw-r--r--   1 root root 340940  4월 22 11:54 prelink.cache
-rw-r--r--   1 root root    821  4월 22 11:54 prelink.conf
-rw-r--r--   1 root root    218  4월 22 11:54 printcap
-rw-r--r--   1 root root    840  4월 22 11:54 profile
-rw-r--r--   1 root root   5834  4월 22 11:54 protocols
-rw-r--r--   1 root root    134  4월 22 11:54 pwdb.conf


컸다 키면 다 날아감..


정리
[root@linux2 ~]# rmmod vrd





2.6에 devfs 파일 시스템에서 mknod하는 api 함수들이 소개되었다.
그러나, 최근에 sysfs 파일시스템에서 제공하는 api 함수들이 생기면서 이런 작업들을 다 포함하게 되었다..

내용은 별거 없는데, 왜이리 비슷한 반복이다. class, bus 등록하는거다.. 귀찮지만, linux 2.6에서는 권장이란다.






Posted by '김용환'
,