Linux 의대표적인방화벽모듈로는 iptables 가있다. 2. Netfilter Netfilter 는표준 Berkeley socket interface 의외부에존재하는 packet mangling 에대한 framework 로, 크게네부분으로구성된다. 먼저각각의프로토콜

Similar documents
untitled

Microsoft Word - CPL-TR MOFI-6to4.doc

Chapter #01 Subject

Microsoft PowerPoint - lab14.pptx

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

교육지원 IT시스템 선진화

PowerPoint 프레젠테이션

KEY 디바이스 드라이버

K&R2 Reference Manual 번역본

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

슬라이드 1

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

1217 WebTrafMon II

Embeddedsystem(8).PDF

TCP.IP.ppt

Microsoft Word doc

bn2019_2

PowerPoint 프레젠테이션

SYN flooding

슬라이드 1

Microsoft PowerPoint - Supplement-02-Socket Overview.ppt [호환 모드]

PowerPoint 프레젠테이션

SMB_ICMP_UDP(huichang).PDF

<4D F736F F F696E74202D205BBAB0C3B75D20B8AEB4AABDBA20B5F0B9D9C0CCBDBA20B5E5B6F3C0CCB9F620B8F0B5A82E >

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

vi 사용법

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft Word doc

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

Microsoft PowerPoint - lab15.pptx

PowerPoint 프레젠테이션

6주차.key

Microsoft Word - KPMC-400,401 SW 사용 설명서

Microsoft PowerPoint - L4-7Switch기본교육자료.ppt

Network seminar.key


The Pocket Guide to TCP/IP Sockets: C Version

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft Word - MPC850 SPI Driver.doc

06Àå

Microsoft PowerPoint - Lecture_Note_5.ppt [Compatibility Mode]

Subnet Address Internet Network G Network Network class B networ

Microsoft PowerPoint - 10-EmbedSW-11-모듈

제1장 Unix란 무엇인가?

Microsoft PowerPoint - chap06-5 [호환 모드]

Assign an IP Address and Access the Video Stream - Installation Guide

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

일반적인 네트워크의 구성은 다음과 같다

Adding a New Dev file

/chroot/lib/ /chroot/etc/

PowerPoint 프레젠테이션

교육지원 IT시스템 선진화

제1장 Unix란 무엇인가?

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

슬라이드 1

Microsoft Word doc

Microsoft Word - FunctionCall

ECE30076 Embedded System Programming - LED Device Driver

Microsoft Word doc

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

망고100 보드로 놀아보자 -13

PowerPoint 프레젠테이션

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

시스템, 네트워크모니터링을통한보안강화 네트워크의미래를제시하는세미나 세미나 NetFocus 2003 : IT 관리자를위한네트워크보안방법론 피지피넷 /

The Pocket Guide to TCP/IP Sockets: C Version

untitled

chap 5: Trees

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

PowerPoint 프레젠테이션

SRC PLUS 제어기 MANUAL

[ 네트워크 1] 3 주차 1 차시. IPv4 주소클래스 3 주차 1 차시 IPv4 주소클래스 학습목표 1. IP 헤더필드의구성을파악하고요약하여설명할수있다. 2. Subnet ID 및 Subnet Mask 를설명할수있고, 각클래스의사용가능한호스트수와사설 IP 주소및네트

11장 포인터

13주-14주proc.PDF

Remote UI Guide

본 강의에 들어가기 전

歯9장.PDF

슬라이드 1

hd1300_k_v1r2_Final_.PDF

API 매뉴얼

금오공대 컴퓨터공학전공 강의자료

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

윤성우의 열혈 TCP/IP 소켓 프로그래밍


프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

슬라이드 1

BMP 파일 처리

chap7.key

Microsoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]

금오공대 컴퓨터공학전공 강의자료

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

C++-¿Ïº®Çؼ³10Àå

Microsoft PowerPoint - e9.pptx

商用

Transcription:

양희철 / 이화경부산대학교정보컴퓨터공학부정보보호동아리 Keeper Heecheol, Yang / Hhakyung, Lee Keeper. Dept. of CSE, Pusan National University shrtngo@gmail.com / pongpong21@naver.com 2010 년 5 월 27 일 요약 이문서는 Linux의 Netfilter Framework를이용하여 Network 상의 Packet를분석하고 Accept & Drop 하는방법을담고있다. Netfilter Framework는 Linux Network Stack 사이에서움직이는 Packet를 Hooking하는기능을제공하며이를이용하면다양한네트워크조작이가능하다. Netfilter는 Kernel-Level에서동작하므로 Kernel에포함되거나 Module로서동작가능하며, 이문서에서는 Module로서의사용법을다룬다. 나아가이것들을이용하여간단한 Firewall Module을제작하여 Packet을분석후조건에맞게 Filtering 해본다. 주제어 : Netfilter, Packet, Filter, Module, Linux, Firewall 1. Introduction Firewall( 방화벽 ) 은네트워크의특정계층사이에존재하여정책에따라계층과계층사이의 데이터통신을감시하고, 필요시에는이것을차단하거나허용하는역할을하는모듈 (Module) 이다. 이모듈은하드웨어가될수도있고, 소프트웨어도될수있다. 일반적으로방화벽이네트워크를감시하는방식은계층과계층사이의패킷을분석하는방식이다. 자신을통과하는패킷들에포함되어있는각종계층의헤더파일을분석하여 IP주소, Port등을알아내는것뿐만아니라헤더외에실제데이터의내용도분석하여위험한데이터는차단하는등의방식도가능하다. 이렇게방화벽은계층사이의모든계층을감시해야하기때문에, 물리적, 논리적으로모든 패킷이공통적으로반드시지나가게되는위치에설치를해야한다. Dept. of Computer Science & Engineering 1/18 Pusan National University

Linux 의대표적인방화벽모듈로는 iptables 가있다. 2. Netfilter Netfilter 는표준 Berkeley socket interface 의외부에존재하는 packet mangling 에대한 framework 로, 크게네부분으로구성된다. 먼저각각의프로토콜은 hooks 라는것을정의하며, 이는패킷프로토콜스택의 packet s traversal 에있는잘정의된포인터를의미한다. 이러한포인터에서, 각각의프로토콜은 packet 과 hook number 를이용하여 netfilter framework 을호출하게된다. 두번째로, 커널의일부분은각프로토콜에대하여다른 hook을감시하도록등록할수있다. 따라서패킷이넷필터프레임웍을통과할때, 누가그프로토콜과훅을등록했는지확인하게된다. 이러한것이등록되어있다면, 등록된순서대로패킷을검사하고, 패킷을무시하거나 (NF_DROP), 통과시키고 (NF_ACCEPT), 또는패킷에대한것을잊어버리도록넷필터에게지시하거나 (NF_STOLEN), 사용자공간에패킷을대기시키도록 (queuing) 넷필터에게요청한다 (NF_QUEUE). 세번째부분은대기된패킷을사용자공간으로보내기위해제어하는것으로이러한패킷은 비동기방식으로처리된다. Netfilter 는이러한저수준 framework 와더불어, 다양한모듈이작성되었으며, 이는이전 버전의커널에대하여유사한기능, 확장가능한 NAT 시스템그리고확장가능한패킷필터링시 스템을제공한다. 3. Packet Capture / Drop 대부분의모듈이그렇듯이, Netfilter 모듈은자신을처리하기위한기본정보를구조체에채워 넣은다음커널에등록하는방식으로동작하게된다. Netfilter 의경우, nf_hook_ops 구조체에이정 보가저장되는데, linux/netfilter.h 에정의되어있다. struct nf_hook_ops Dept. of Computer Science & Engineering 2/18 Pusan National University

struct list_head list; ; /* User fills in from here down. */ nf_hookfn *hook; struct module *owner; u_int8_t pf; unsigned int hooknum; /* Hooks are ordered in ascending priority. */ int priority; 그림 1 linux/netfilter.h : struct_netfilter_ops 여기서주의깊게봐야할것은 nf_hook *hook 멤버이다. 이멤버는패킷을받았을시실행할 hooking function 의 function pointer 를지정한다. nf_hook 타입은그림 2 와같다. typedef unsigned int nf_hookfn(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)); 그림 2 nf_hookfn 이함수가호출되면인자로여러가지정보들이넘겨지는데, 이중특히중요한 sk_buff 는실 제 NIC 에전달될패킷을가리키는포인터가저장되어있다. 이함수가어떤값을리턴하느냐에따라패킷의이동여부가결정된다. 예를들어, NF_DROP 를리턴하면이패킷은다음 Layer 로가지못하고 Drop 되며, NF_ACCEPT 를리턴하면이패킷은 다음 Layer 로이동한다. 즉어떤식으로리턴하느냐를조정하여 Packet Filtering 을할수있다. 4. Important Fields in IP & TCP Header 단순히 Packet 만을 filtering 하는것은크게의미없는행위이다. 그러나 Packet 내부의어떤 Dept. of Computer Science & Engineering 3/18 Pusan National University

Netfilter를이용한 Packet Capturing과 정보를이용하면원하는 Packet을 filtering 할수있다. TCP/IP의경우, 일반적으로 Packet filtering 에사용될수있는정보는 protocol, source & destination IP, source & destination Port가있을수있는데, 이는 IP Header, TCP Header 에서찾아볼수있다. 그림 3 IP Header Dept. of Computer Science & Engineering 4/18 Pusan National University

Netfilter를이용한 Packet Capturing과 그림 4 TCP Header IP, TCP Header는그림4, 그림 5와같이구성되어있다. Linux 에서는위와같은 Header 를 <linux/ip.h>, <linux/tcp.h> 에정의해두고있다. struct iphdr #if defined( LITTLE_ENDIAN_BITFIELD) u8 ihl:4, version:4; #elif defined ( BIG_ENDIAN_BITFIELD) u8 version:4, ihl:4; #else #error "Please fix <asm/byteorder.h>" #endif u8 tos; be16 tot_len; be16 id; be16 frag_off; u8 ttl; u8 protocol; Dept. of Computer Science & Engineering 5/18 Pusan National University

; sum16 check; be32 saddr; be32 daddr; /*The options start here. */ 그림 5 IP Header - linux/ip.h : struct iphdr struct tcphdr be16 source; be16 dest; be32 seq; be32 ack_seq; #if defined( LITTLE_ENDIAN_BITFIELD) u16 res1:4, doff:4, fin:1, syn:1, rst:1, psh:1, ack:1, urg:1, ece:1, cwr:1; #elif defined( BIG_ENDIAN_BITFIELD) u16 doff:4, res1:4, cwr:1, ece:1, urg:1, ack:1, psh:1, rst:1, syn:1, fin:1; #else Dept. of Computer Science & Engineering 6/18 Pusan National University

#error "Adjust your <asm/byteorder.h> defines" #endif be16 window; sum16 check; be16 urg_ptr; ; 그림 6 TCP Header - linux/tcp.h : struct tcphdr 그림 3,4의각 Field는각각그림 5,6의각멤버에 mapping 되어있다. 예를들어, 패킷의목적지포트를알고싶으면 iphdr.daddr를조사하면된다. 전송된패킷에서 IP Header 를추출하려면 ip_hdr() 함수의인자로 skb 를넘겨주면 IP Header 의 포인터를리턴한다. 그리고 IP Header 의다음에 TCP Header 가위치하여있으므로그림 7 과같 은방식으로 IP Header 와 TCP Header 의포인터를얻을수있다. struct iphdr *iph = ip_hdr(skb); struct tcphdr *tcph = (struct tcphdr*)((char*)iph + sizeof(struct iphdr)); char *data = (char*)tcph + sizeof(*tcph); 그림 7 skb로부터 IP Header와 TCP Header, Original Data를얻는코드그림 7에서 data는 Application Layer에서생성한 Original Data를가리키는포인터이다. iph 에서는 Source / Destination 의 IP Address 를얻을수있는데, iph->saddr / iph ->daddr 멤버에서 알수있다. 마찬가지로 tcph 에는 Port Number 를알수있으며, tcph->saddr / tcph -> daddr 멤버에 서얻을수있다. 단이때에는 Byte Ordering 에주의하자. 5. Device Driver Module Register to Kernel Netfilter 는 Kernel Level 에서동작하는만큼 Module 로써움직인다. 즉 Netfilter Module 을작성후 등록해야동작한다. Module 의 init_module() 함수는 Module 이 Insert 될때가장먼저실행되는함수로, 여기서등 록작업을할수있다. Dept. of Computer Science & Engineering 7/18 Pusan National University

int init_module() netfilter_ops.hook = main_hook; netfilter_ops.pf = PF_INET; netfilter_ops.hooknum = NF_INET_PRE_ROUTING; netfilter_ops.priority = 1; nf_register_hook(&netfilter_ops); // 모듈등록 return 0; 그림 8 Netfilter 모듈등록 struct nf_hook_ops netfilter_ops 에각초기값을지정한후 nf_register_hook() 함수로등록하면 모듈로서동작이가능하다. Compile 한 Module 은 insmod 명령으로삽입가능하며, lsmod 로확인가능하고, rmmod 로제거 할수있다. 그림 9 모듈컴파일과삽입 Dept. of Computer Science & Engineering 8/18 Pusan National University

6. Example Source Code Simple Firewall Module 2~5 절에서설명한내용을바탕으로간단한방화벽을제작하여보자. 방화벽프로그램은은 그림 10 과같이구성되어있다. 파일 drop.c app.c myprotocol.h Makefile 설명 Netfilter Firewall Module Application that controls module Command Protocol Makefile 그림 10 방화벽소스파일의구성 drop.c 는실제방화벽 Module Source 이다. app.c 의 Application 은 Rule 를등록하는명령을 Module 에게내릴수있으며, 이예제에서는차단할 IP 주소를추가하는명령만넣었다. 필요한명 령은 myprotocol.h 에추가해서넣을수있다. Makefile 은 Module 을 Compile 하기위한 Makefile 이다. 그림 11,12,13,14,15 는 Simple Firewall 의전체소스코드이다. #include <linux/init.h> #include <linux/kernel.h> #include <linux/fs.h> #include <linux/types.h> #include <linux/fcntl.h> #include <linux/module.h> #include <linux/skbuff.h> #include <linux/netdevice.h> #include <linux/netfilter.h> #include <linux/netfilter_ipv4.h> #include <linux/in.h> #include <linux/tcp.h> #include <linux/udp.h> #include <linux/ip.h> #include "myprotocol.h" Dept. of Computer Science & Engineering 9/18 Pusan National University

#define DROP_NAME "drop" #define DROP_MAJOR 240 unsigned long filter_addr[10]; /* array that contains ip addresses to drop */ unsigned int filter_addr_cnt = 0; static struct nf_hook_ops netfilter_ops; struct sk_buff *sock_buff; struct file_operations drop_fops ; void add_addr(const char*); /* open() system call */ int drop_open(struct inode *inode, struct file *filp) return 0; /* close() system call */ int drop_release(struct inode *inode, struct file *filp) return 0; /* write() system call */ ssize_t drop_write(struct file *filp, const char *buf, size_t count, loff_t *fpos) struct myprotocol* pmsg = (struct myprotocol*)buf; if(pmsg->cmd == ADD_IP) char *addr = pmsg->addr; add_addr(addr); return 0; Dept. of Computer Science & Engineering 10/18 Pusan National University

unsigned long inet_aton(const char*); unsigned int main_hook(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff*)) int i; char *data; struct iphdr *iph = ip_hdr(skb); /* ip header*/ unsigned long saddr = 0, daddr = 0; /* ip address */ unsigned short source = 0, dest = 0; /* port number */ //tcph, udph is apart from iph 20byte(size of(struct iphdr)); struct tcphdr *tcph = (struct tcphdr*)((char*)iph + sizeof(struct iphdr)); struct udphdr *udph = (struct udphdr*)((char*)iph + sizeof(struct iphdr)); unsigned short http = 80; //http port number : 80 //get source and dest ip from iph saddr = iph->saddr; daddr = iph->daddr; //get source and dest port from tcph source = htons(tcph->source); dest = htons(tcph->dest); if(iph->protocol == IPPROTO_UDP) data = (char*)udph + sizeof(*udph); /* print udp data */ printk("<1>source : %u \t dest : %u\n %s\n",source,dest,data); for(i = 0 ; i < filter_addr_cnt ; i++) if(saddr == filter_addr[i]) Dept. of Computer Science & Engineering 11/18 Pusan National University

/* ip drop */ return NF_DROP; if(source == http)return NF_DROP; //http port Drop return NF_ACCEPT; int init_module() drop_fops.owner = THIS_MODULE; drop_fops.open = drop_open; drop_fops.release = drop_release; drop_fops.write = drop_write; netfilter_ops.hook = main_hook; netfilter_ops.pf = PF_INET; netfilter_ops.hooknum = NF_INET_PRE_ROUTING; netfilter_ops.priority = 1; nf_register_hook(&netfilter_ops); // 모듈등록 register_chrdev(drop_major,drop_name,&drop_fops); return 0; void cleanup_module() nf_unregister_hook(&netfilter_ops); // 모듈해제 unregister_chrdev(drop_major,drop_name); unsigned long inet_aton(const char * str) unsigned long result = 0; unsigned int iaddr[4] = 0,; unsigned char addr[4] = 0,; Dept. of Computer Science & Engineering 12/18 Pusan National University

int i; sscanf(str,"%d.%d.%d.%d ",iaddr,iaddr+1,iaddr+2,iaddr+3); for(i = 0 ; i < 4 ; i++) addr[i] = (char)iaddr[i]; for(i = 3 ; i > 0 ; i--) result = addr[i]; result <<= 8; result = addr[0]; return result; /* add address to drop */ void add_addr(const char *addr) filter_addr[filter_addr_cnt++] = inet_aton(addr); printk("<1> %s(%lu) drop added! \n",addr,filter_addr[filter_addr_cnt]); 그림 11 drop.c #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include "myprotocol.h" Dept. of Computer Science & Engineering 13/18 Pusan National University

int main() int dev; printf("open start\n"); dev = open("/dev/drop",o_rdwr O_NDELAY); printf("open end\n"); if( dev < 0 ) printf("open error!\n"); return -1; struct myprotocol msg; msg.cmd = ADD_IP; strcpy(msg.addr,"192.168.0.4"); write(dev,(char*)&msg,sizeof(msg)); close(dev); #define ADD_IP 1 그림 12 app.c struct myprotocol unsigned int cmd; char addr[256]; ; 그림 13 myprotocol.h obj-m := drop.o all: make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 그림 14 Makefile Module 은 HTTP Port 인 80 번막도록하였고, app.c 에서 192.168.0.4 IP 를차단할 IP 목록에추가 하여 Firewall Module 이차단하도록하였다. 앞서관련내용들을설명하였고, 코드상특별히어려 Dept. of Computer Science & Engineering 14/18 Pusan National University

운부분은없기에 drop.c 의설명은주석정도로마무리짓겠다. Kernel-Level 에서는 inet_aton() 함 수가제공되지않아서직접구현하였다는것과 add_addr() 함수가차단할 IP 를추가한다는것정 도만염두해두자. Module 은 Application 과연동하기위해 Character Device Driver 를이용하여 I/O 를수행하도록 하였다. Character Device Driver 의설명은이문서의범주를벗어나므로생략하겠다. 그림 15 는 Firewall Module 실행후 HTTP Port(80) 을차단하여웹브라우저가접속을하지못 하는것을보여준다. 그림 15 HTTP Port를차단한모습 app.c는 192.168.0.4라는 IP를차단하게하는데, 이 IP 주소는필자의테스트당시 IP 주소이다. 이 Host에서 Firewall이 Load되어있는 Host로 Ping Test를하였는데, Application을실행시키기전에는 IP 주소가등록되어있지않으므로 Ping Test가성공하지만실행후에는실패하게된다. 그림 16은이것을보여준다. Dept. of Computer Science & Engineering 15/18 Pusan National University

그림 16 Application 실행결과 마지막으로, 이방화벽은 UDP 기반의 Echo Server와 Client가서로데이터를주고받으면 UDP Packet을 Capture하여그내용을보여주는기능도수행한다. TCP의경우에는 Byte Stream 단위로전송되기때문에그내용을알기어렵지만 UDP는 Message 단위로전동되기때문에그내용을쉽게알수있다. 그림 17은그결과를보여준다. Dept. of Computer Science & Engineering 16/18 Pusan National University

그림 17 UDP Packet Capture 7. Conclusion Netfilter Framework 를이용하여 Packet 를 Capture 하는방법을알아보고 TCP/IP 의주요 Field 들을 확인하여보았다. Netfilter는 Packet 전송시중간에서 Hook하여이를처리할수있게해주는 Framework로, 어떻게사용하느냐에따라다양한응용이가능하다. 예를들어 Hooking Function의 Return을어떻게해주느냐에따라패킷을 Accept/Drop할수있고, 패킷의내용을알수있으므로패킷내용의조작도가능하다. Netfilter 도결국 Kernel Level Module 이기때문에 Module 로제작하여동작한다. 이 Netfilter 를이용하여서예제로간단한방화벽을제작해보았다. IP 와 TCP 의 Header 를확인 하여특정 IP 와 Port 를차단할수있게하였고, UDP Packet 인경우 Original Data 도확인하여출력하 여보았다. Dept. of Computer Science & Engineering 17/18 Pusan National University

User Level 이아닌 Kernel Level 에서하는작업은무궁무진하다. Netfilter 도그예이다. 하지만이 렇게 Low Level 의조작은항상시스템을불안하게하고심하게는망가뜨리게할수도있으므로 항상사용에신중을기해야할것이다. Refernces. [1] Rusty Russel, kenji, KLDP Wiki : Netfilter-Hacking HOWTO, http://wiki.kldp.org/wiki.php/docbooksgml/netfilterhacking-trans#netfilter [2] Netfilter Project, http://netfilter.org [3] 유영창, 리눅스디바이스드라이버, 한빛미디어, 2008 [4] Alessandro Rubini & Jonathan Corbet, Linux Device Driver, O Reilly Media, 2001 http://www.xml.com/ldd/chapter/book/ [5] 부산대학교이동통신연구실, http://mobile.cse.pusan.ac.kr 양희철 / Hee-cheol, Yang 2010 년부산대학교정보컴퓨터공학부 2 학년에재학중임. 현재정보컴퓨터공학부산하보안동아리 Keeper 에서회장을담당하고있음. 시스템소프트웨어와컴퓨터네트워크, 임베디드시스템, 전산학이론에관심이있음. 작성한주요프로그램으로 Windows Shell, Network Manager, File Manager, Internet Messenger 등이있음 Blog : http://stdio.tistory.com 이화경 / Hwa-kyung, Lee 2010 년부산대학교정보컴퓨터공학부 4 학년에재학중임. 현재정보컴퓨터공학부산하보안동아리 Keeper 에서기술고문을담당하고있음. 컴퓨터네트워크와컴퓨터보안, 임베디드공부에관심이있음. 작성한주요프로그램으로 Firewall on Windows XP 가있음 Dept. of Computer Science & Engineering 18/18 Pusan National University