Family.8.The.Ultimate.PC.Collection-FASiSO.vol1~7 다운로드
Family.8.The.Ultimate.PC.Collection-FASiSO.vol1 다운로드 Family.8.The.Ultimate.PC.Collection-FASiSO.vol2 다운로드 Family.8.The.Ultimate.PC.Collection-FASiSO.vol3 다운로드 Family.8.The.Ultimate.PC.Collection-FASiSO.vol4 다운로드 Family.8.The.Ultimate.PC.Collection-FASiSO.vol5 다운로드 Family.8.The.Ultimate.PC.Collection-FASiSO.vol6 다운로드 Family.8.The.Ultimate.PC.Collection-FASiSO.vol7 다운로드
***
리눅스 사용자를 위한 개인용 방화벽 설계 및 구현
요 약 최근 개인용 컴퓨터 사용자들의 인터넷 사용이 빈번해지면서, 개인용 컴퓨터 시스템에 대한 다양한 너| 트워크 공격의 피해가 늘고 있다. 이에 개인용 방화벽이 개알되었으나 현재 대부분이 원도우 Af스템에 기 반하고 있다^ 하지만 최근 리눅스 시스템이 개인용 컴퓨터의 운영체제로 많이 사용되고 있고, 피해 사례가 상당히 많음에도 g 구하고 아직까지 리눅스 기반 개인용 방화벽은 전무한 실정이다. 본 논문에서는 기존 의 리눅스 기반 네트워크 방화벽에서 제공하는 기능들 외에 동적 정책 설정 기능과 악의적안 네트워크 프 로그램 실행의 제어 기능들을 추가적으로 포함하는 리눅스 기반 개인용 방화벽을 설계하고 구현하였다. 1■서 론 최근 빈번하게 발생되고 있는 네트워크a 통한 공격에 는 악의적인 프로그램을 이용한 공격, 바이러스 공격, 서 비스 거부 공격 등이 있다, 그런데 2002년 CERT의 피 해 시스템 분석 결과에 따르면 네트워크 공격 중 트로이 목마 또는 백도어 같은 악의적인 프로그램을 이용한 공 격이 가장 많았다고 한다[1]. 이 같은 공격은 사용자 몰 래 시스템에 설치되어 시스템의 중요한 정보* I배내거나 변경, 삭제하는 형태 또는 재 침입을 용이하게 하는 형 태를 띤다【2]【3]. 현재 네트워크 공격에 대처하기 위해 리눅스에서 가장 많이 사용되는 것이 네트워크 방화벽이다. 네트워크 방 화벽은 네트워크 인터페이스를 통해 들어오고 나가는 패 킷들의 해더를 검사하여 미리 정해둔 정책에 따라 허용 하거나 차단하는 기능을 수행한다[3]. 그러나 네트워크 방화벽은 개민 컴퓨터 시스템을 완벽하게 보호하기에는 많은 문제점을 가지고 있다. 첫째,공격을 차단하기 위한 정책이라는 것이 패킷의 헤더에 포함된 IP 주소나 포트 를 확인하는 수준에 어물기 때문에 트로이목마 또는 백 도어 같은 악의적인 프로그램을 통한 공격 또는 바이러 스를 이용한 공격을 막는 데는 한계가 있다. [4][5h 둘 째,정책의 적용이 정적이기 때문에 Aff로운 g£H의 공격 에 능동적으로 대처하기 어렵다. 네트워크 방화벽이 갖 는 이 같은 문제점들을 보완하기 위해 나온 것이 개인용 방화벽이 다. 개인용 방화벽은 개인 컴퓨터에 설치되어 네트워크 인 터페이스를 통해 들어오고 나가는 모든 패킷에 대해 보 안 관련 작업을 수행한다. 패킷 필터링, 정적인 정책 설 정과 같은 네트워크 방화벽에서도 제공되는 기능 외에 개인용 방화벽에서만 제공되는 주요 기능에는 다음과 같 은 것들01 있다. 첫째는 패킷의 도착 시점에 질의를 통 해 해당 패킷의 허용 여부를 사용자에게 동적으로 확인 받을 수 있다는 것이다I 따라서 새로운 공격에 대한 사 용자의 능동적인 대처가 가능하다. 둘째는 네트워크 프 로그램의 실행 시 프로그램의 변경 여부를 확인함으로서 트로이목마나 백도어 같은 악의적인 프로그램을 이용한 공격에 효과적으로 대처할 수 있다[1][2], 이처럼 개인용 방화벽이 여러 장정들을 가지고 있음에 도 불구하고 아직까지 리눅스 기반의 개인용 방화벽은 전무한 실정이다. 이에 본 논문에서는 기존의 리눅스 시 스템에서 제공하는 네트워크 방화벽의 패킷 필터링 기능 외에 추가적으로 동적 정책 설정 기능과 악의적인 네트 워크 프로그램 실행의 제어 기능들을 포함하는 리눅스 기반 개인용 방화벽을 설계하고 구현하였다. 제안하는 개인용 방화벽은 커널 모둘 형태로 구현되었으며, X-window를 사용하는 사용자를 위한 그래픽 모드 인터 페이스와 원격 사용자를 위한 텍스트 모드 인터페이스 모두가 가능하도록 구현했다. 2. 개인용 방화벽 설계 본 논문에서 제안하는 리눅스 기반 개인용 방화벽은 원도우 기반의 개인용 방화벽 중 하나인 Tiny Persona! Firewall 2.0 버전을 모델로 설계되었으며. 크게 커널 영 역과 사용자 영역 프로그램들로 나누어져 설계되었다. 방화벽 제어 유저프로그램은 사용자 영역에, 개인용 방 화벽의 핵심 모둘인 인증 모둘, 패킷 필터링 모둘, 무결 성 검사 모S , 방화벽 핵심 모둘은 커널 영역에 존재한 다. 포함된 모둘들의 전체적인 구조는 다음 장의 그림1 과 같다. 2.1 인증 모들 인증 모둘은 방화벽 제어 유저 프로그램과 항께 동작 하며 해당 사용자가 방화벽 제어 권한을 갖고 있는지를 확인하고 등록하는 기능을 수행한다. 먼저 방화벽 제어 유저 프로그램이 사용자가 입력한 패스워드를 검사하고. 일치하면 인증 모둘에게 해당 사용자가 인증 받았음을 알리고 해당 사용자를 등록하도록 지시한다, 2.2 프로그램 무결성 검사 모들 무결성 검사 모둘은 방화벽 핵심 모g , MD5 계산 모 둘과 함께 동작하며 실행되고 있는 네트워크 프로그램의 변경 여부를 검사한다. 검사 과정은 다음과 같다. 먼저 Copyright (C) 2005 NuriMedia Co., 2003년도 한국정보과학회 봄 학술발표논문집 Vol. 30, Na 1 [USER] 방화벅 제어 유저 프로그램 패스워드 검사 동적 S 터링 & 성 e 사 S 책 설점 tldf.pnd. bu 인S 오플 a a 벽 핵심 2 S palti 丄 I llag 무3 성 검사 [KERNEL] 그림 1. 개인용 방화벽 전체 구조 네트워크 프로그램이 실행될 때 방화벽 핵심 모둘이 그 프로그램의 절대 경로를 무결성 검사 모들로 전달한다. 무§ 성 검사 모둘은 해당 프로그램의 MD5 값을 MD5 계 산 모둘을 이용해서 계산하고, 그 결과 값과 기존의 무 결성 값 리스트의 모든 값들을 비교한다. 이전에 실행된 적이 있는 프로그램의 경우 값이 같으면 EOUALJHASH S , 다를 경우엔 이FF_HASH§ Ffag에 전달한다. 이전에 실행된 적이 없는 프로그램의 경우는 계산된 MD5 값이 무결성 값 리스트에 존재하지 않을 것이므로 M0T_EXIST가 Flag로 전달된다. 그리고 그 Flag가 방화 벽 핵심 모둘로 전달된다. 2.3 패킷 필터링 모둘 패킷 필터링 모듈은 네트워크 프로그램의 실행을 요청 하는 패킷의 정보(패킷 해더 정보,유저 아이디)를 이용 하여 해당 사용자가 정한 기존 정책이 존재하는지* 확 인하고 해당 정책을 방화벽 핵심 모둘에게 전달한다. 이 때 FitterJ^olicy라는 자료구조가 정의되어 Af용되는데, 패킷의 방향을 나타내는 direction 필드, 사용되는 프로 토雪을 나타내는 TYPE 필드, 포트 번호를 저장하는 port 필드, 해당 패킷에 대한 정책을 나타내는 rule 필드 등이 포함된다. 방화벽 핵심 모둘에서 패51 필터링 모둘로 FilteᄂPolicy 자료 구조가 전달될 때는 rule 필드를 제외 한 다른 모든 필드들이 채워진 상태로 전달되며. 패킷 필터링 모둘이 해당 패킷에 대한 정책 정보를 rule 필드 에 기록하게 된다. rule 필드가 가질 수 있는 가능한 값 들에는 정책 없음(NO_PO니CY), 패킷 차단(DENY), 패킷 허용(ACCEPT)이 있다. 2A 방화벽 핵상 모둘 본 논문에서 제안하는 개인용 방화벽의 가장 핵심이 되는 모둘로서 커널 영역과 사용자 영역 사이의 모든 통 신을 수행하며 개인용 방화벽 기능 제공을 위한 총괄적 인 역할을 수행한다. 네트워크 프로그램의 실행 요청이 있을 경우 프로그램의 실행을 지언하고 무결성 검사와 패킷 필터림을 수행한다* 패킷 필터링 수행 시 사용자의 유저 아이디를 이용하여 해당 사용자가 정한 정책을 리 턴하는 것이 가능하므로 여러 사용자가 하나의 시스템을 각자의 시스템처럼 사용하는 것이 가능하다. 무결성 검사와 리턴€1 패킷 필터링 결과를 바탕으로 애 m 빌터험 2& 동적인 정책 질의 여부,정책 수정/삭제/추가 여부와 무 결성 값 수정/삭제/추가 여부를 결정한다. 이 외에도 정 적인 정책 설정 또한 가늠한데t 방화벽 제어 유저 프로 그램의 정책 설정 부분에서 정적으로 설정된 정책이 방 화벽 핵심 오들을 거쳐 패킷 필터링 모둘로 전달도/어 패 킷 정책 리스트에 추가될 수 있다. 2.4 방화벽 제어 유저 프로그램 방화역 제어 유저 프로그램은 패스워드 검사 부분, 동 적 정책 설정 및 네트워크 프로그램 실행 결정 부분, 정 적 정책 설정 부분으로 구성된다. 패스워드 검사 부분은 패스워드틀 확인하여 인증 모둘에게 인증 받은 사용자임 을 알리며, 정적 정책 설정 부분은 사용자가 정적으로 정책을 설정하고자 할 때 사용되는 부분이다. 마지막으 로 동적 정책 검사 및 네트워크 프로그램 실행 결정 부 분은 방화벽 핵심 모들로부터 제공받는 패킷 허용 여부 와 네트워크 프로그램의 변경 정보醫 확인하여 동적으로 정책을 설정하는 기능을 제공한다. 3. 개인용 방화벽 구현 본 논문에서 제안하는 개인용 방화벽은 커널 모들 형 태로 구현되었다. 또 X-window를 사용하는 사용자를 위 한 그래픽 모드 인터페이스와 원격 사용자를 위한 텍스 트 모드 인터퍼:이스 모두를 제공한다, 두 번패 절 설계”를 통해 알 수 있듯이, 제안된 방화 벽은 사용자 영역과 커널 영역 사이의 통신이 필요하다. 여기서는 시스템 콜 항수 호출과 시그널을 통해 이것을 구현했 CL 3,1 사용자 영역 프로그램 구현 방화벽 제어 유저 프로그램의 핵심 알고리즘은 다음의 표1과 같다. 표 1, 방화벽 제어 유저 프로그램 패스워드 입력 11 (IH 스워드 일 *1) QeT6Uid() AI스8 嫌 호盡 etse 실 B 중지 SIGUSR1 시그널 e f i 러翻 용획 w rM 빽3 파일 touser . .) 시스H # 5 # if ( 3 적으至 3 책욺 설3 ^ 3 ¥ > *rite I . 3 적 t f S 정책, I 시i S « f i * 대기상태 유지 } A【그^ H S 러 (SIGUSR1) 피§!11일 tousarSs?EI BHi' 3 2 확인SKD 시8 자에게 질의 사용자는 w 당 m 킷에 대한 차단 • 온 a s 용의 정a ! * 으s a § writer . 3 9 S g 적 정척 , ) 시스템 * 호S 먼저 사용자로부터 패스워드률 입력받아 비교한 뒤 일 치할 경우 geteuid 시스템 콜을 호출하여 인증 모들에게 해당 사용자가 인증 받은 사용자임을 알린다. 다음으로 write 시스템 클이 호출되는데 이는 커널에게 동적 질의 Copyright (C) 2005 NuriMedia Co., W - 2003년도 한국정 보과학회 봄 학술발표논문집 VoL 30, No, 1 를 위해 패킷에 대한 정보률 넣을 저장 장소가 특정 파 일 lftouser”임을 알리기 위한 것이다, 커널에서 사용자 영역으로의 동적 질의가 필요한 경우 커널은 시그널을 보내게 되며 사용자 프로그램의 시그널 핸晉러 함수가 특정 파일 "touser"로부터 해당 패킷에 대한 정보를 확 인하여 사용자에게 질의한다. 그 패킷에 대해 사용자가 내린 결정은 write 시스템 콜을 통해 커널로 전달되고, 커널은 사용자가 내린 결정에 따라 그 패킷의 허용여부, 프로그램의 실행 여부를 결정한다. 3.2 인증 모둘 구현 인증 모둘에서 가장 핵심이 되는 부분은 인증된 사용 자를 유저 리스트에 등록하는 일이다. geteuid 시스템 콜이 호출된 경우 인증 모들은 이 시스템 콜을 후킹하게 되고, 현재 실행중인 태스크가 방화벽 제어 유저 프로그 램일 경우 그 태스크의 eu]d를 인증된 유저 리스트에 추 가한다. 유저 리스트는 auth jjsr라는 구조체들로 구성되 는데, 이 구조체는 사용자의 euid, 방화벽 제어 유저 프 로그램의 태스크 포인터, file_p 포항한다. 태스크 포인터는 이후에 시그널을 보내고자 할 때 프로세스 아이디에 대한 정보를 얻기 위해 사용되 며. file_path 정보는 커널에서 동적 정책 질의雪 위해 사용자에게 보내는 패킷 정보를 넣을 파일 경로이고 write_addr은 사용자가 정한 정적 정책 정보晉 커널에게 보내기 위해 사용되는 메모리의 주소이다. 3.3 무결성 검사 모둘 구현 무결성 검사 모둘에서는 MD5_res 구조체가 사용되는 데, 이 구조체는 네트워크 프로그램의 절대 경로와 그 프로그램에 대해 계산된 MD5 값을 포함한다. 그래서 현 재 실행중인 네트워크 프로그램의 MD5 값과 이전까지 만들어진 MDlres 구조체로 이루어진 리스트에 포함된 MD5 값을을 비교해서 상황에 따라 적절한 Flag 값을 리 턴한다. 3.4 패킷 필터링 모둘 구현 패킷 필터랑 모둘에서 관리되는 정책들은 Filter_PoNcy 구조체을로 이早어진 리스트의 형태로 보관된다, 그래서 실행을 요청한 패킷에 대해 적용될 수 있는 정책을 찾기 위해 이 리스트를 검색하게 된다. 아래의 표2는 사용자 가 정적으로 설정한 정책의 예이다. •표 ^ 정책 설정 예 % F-Ctrl -A Direction Protocol Type FirsᄂAd dr Las ᄂ Ad dr Port Rule INCOMING TCP 147.46.121.50 147.46.121.100 22 DENY 이 경우 만약 어떤 사용자가 IP 주소 147.46.121.76, TCP 22번 포트로 접속을 시도한다면 접속이 차단될 것 이다. 3.5 방화벽 핵심 모둘 구현 방화벽 핵심 모들에서는 sys_socketcalt, sys^write 두 개의 시스템 콜이 후킹된다. sys_socketcall은 해당 패킷 에 대한 정보营 얻기 위해 후킹되는데, 이렇게 획득된 패킷 정보와 네트워크 프로그램의 경로 정보가 방화벽 핵심 함수의 매개변수로 이용된다, 호출된 방화벽 핵심 함수는 패킷의 허용 여부, 프로그램의 실행 여부를 결정 하고 그 결과률 반환하게 되는데, 이 결과에 따라 정상 적인 socketcall 시스템 콜을 호출하거나 수행을 중지하 게 된다. sys.write 시스템 콜은 사용자가 정적 또는 동 적으로 설정한 정책을 커널에게 보내기 위해 사용된다. 동적 또는 정적 정책 설정을 구분하는 데는 Filter.Poficy 의 flag 필드가 이용된다. flag 값이 동적 정책 설정인 경우에는 동적 질의에 대한 결과(rule 필드)값을 획득하 는 작업이 수행되고. 정적 정책 설정인 경우는 그 정책 을 정책 리스트에 추가하는 작업을 수행한다. 이외에 방화벽 핵심 모 §에 포함된 주요 루틴으로 dyn jmer가 있는데, 이 루틴은 사용자에게 동적 질의를 보내기 위해 사용된다. 루틴이 수행하는 작업은 다음과 같다. 해당 패킷의 정보, 무결성 검사 정보를 특정 파일 제어 유저 프로그램에게 시그널을 보낸뒤 사용자의 응답01 있을 때까지 기다린 다. 일정 시간동안 응답이 없물 경우에는 DENY 값이 반 환된다. 4■결론 기존 리눅스 시스템에서 제공되고 있는 네트워크 방화 벽을 이용해서 개인용 시스템욜 보호하는 데는 한계가 있었다. 이와 같은 문제점을 해결하기 위해 본 논문에서 b 동적 정책 설정 기능과 불법적으로 변조된 네트워크 프로그램 실행의 제어 기능들을 포항하는 리눅스 기반 개인용 방화벽을 설계하고 구현하였다, 제안된 방화벽은 커널 오들 형태로 구현되었으며,텍스트 모드 인터페이 스와 그래픽 모드 인터페이스를 모두 지원한다,