arp_sniffing.hwp

Similar documents
Network seminar.key

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

운영체제실습_명령어

Windows 8에서 BioStar 1 설치하기

BEA_WebLogic.hwp

작성자 : 기술지원부 김 삼 수

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

SSL Strip Attack JAC (SemiDntmd) 이우승 semidntmd.tistory.com

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

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

메일서버등록제(SPF) 인증기능적용안내서 (AIX - sendmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 AIX 5.3 sendmail spf-filter 년 6 월

슬라이드 1

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - postfix) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i postfix spf-filter 년 6 월

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1

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

< FBBE7B0EDB3EBC6AE5FB5F0C6FAC6AEC6D0BDBABFF6B5E5C3EBBEE0C1A128BCF6C1A4292E687770>

TCP.IP.ppt

USB USB DV25 DV25 REC SRN-475S REC SRN-475S LAN POWER LAN POWER Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl C

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - qmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i qmail 1.03 spf-filter 년 6 월

6강.hwp

아래 항목은 최신( ) 이미지를 모두 제대로 설치하였을 때를 가정한다

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

정적으로 설치된 mod_ssl 모듈확인 동적으로 설치된 mod_ssl 모듈확인 웹서버에 설치된 모듈중 mod_so.c 를 먼저 확인후 동적으로 설치된 모듈중 mod_ssl.so 를 확인합니다. 동적으로 설치된 경우 apache 설치 디렉토리의 module 이나 libe

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

제20회_해킹방지워크샵_(이재석)

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

PowerPoint 프레젠테이션

WebtoB.hwp

. PC PC 3 [ ] [ ], [ ] [ ] [ ] 3 [ ] [ ], 4 [ ] [ ], 4 [Internet Protocol Version 4 (TCP/IPv4)] 5 [ ] 6 [ IP (O)], [ DNS (B)] 7 [ ] 한국어 -

bn2019_2

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Snort Install Manual Ad2m VMware libnet tar.gz DebianOS libpcap tar.gz Putty snort tar.gz WinSCP snort rules 1. 첫번째로네트워크설정 1) ifconf

게시판 스팸 실시간 차단 시스템

Microsoft Word - NAT_1_.doc

Keil Flexlm 라이선스 설명서

Subnet Address Internet Network G Network Network class B networ

2. 개인키권한설정 보안경고개인키의유출방지를위해 group 과 other 의 permission 을모두제거한다. chmod 600 /etc/pki/tls/private/lesstif-rootca.key 3. CSR(Certificate Signing Request) 생

[ tcpdump 패킷캡처프로그램 ] tcpdump란? tcpdump 버전확인 tcpdump 플래그 (flags) tcpdump 사용법 tcpdump의사용예제 telnet을활용해 root와 passwd 암호알아내기 [01] tcpdump란? tcpdump는 Lawren

Microsoft PowerPoint - 06-IPAddress [호환 모드]

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

VPN.hwp

정보보안 개론과 실습:네트워크

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

ApacheWebServer.hwp

정보보안 개론과 실습:네트워크

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

Microsoft Word - release note-VRRP_Korean.doc

초기설정 WebtoB Web Server 에서인증서를사용하기위해 CSR 을생성하는방법입니다. 1. 초기설정 - CSR 을생성하기전에다음의몇가지사항을필히확인합니다. 부팅후 Path 나환경변수를일일이설정하지않게초기설정파일을사용하여로그인시자동으로실행되도록하고있습니다. 그러나

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

StruxureWare Data Center Expert 7.2.x 의 새 기능 StruxureWare Data Center Expert 7.2.x 릴리스에서 사용할 수 있는 새 기능에 대해 자세히 알아보십시오. 웹 클라이언트 시작 화면: StruxureWare Cen

Sena Device Server Serial/IP TM Version

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2003) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2003 Exchange Server 2003 GFI MailEssentials 2010 fo

Microsoft Word - src.doc

Tomcat.hwp

Webtob( 멀티도메인 ) SSL 인증서갱신설치가이드 본문서는주식회사한국기업보안에서 SSL 보안서버인증서설치를위해작성된문서로 주식회사한국기업보안의동의없이무단으로사용하실수없습니다. [ 고객센터 ] 한국기업보안. 유서트기술팀 Copyright 201

2009년 상반기 사업계획

1217 WebTrafMon II

메일서버등록제(SPF) 인증기능적용안내서 (Exchange Windows 2000) OS Mail Server SPF 적용모듈 작성기준 Windows Server 2000 Exchange Server 2003 GFI MailEssentials 14 for

GRE(Generic Routing Encapsulation) GRE는 Cisco에서개발한터널링프로토콜으로써특정네트워크망에서새로운 IP 헤더를인캡슐레이션하여패켓을전송하는 VPN 기능을제공한다. GRE 터널링을이용하여패켓을전송하면, 데이터를암호화하지않기때문에보안적으로는취

The Pocket Guide to TCP/IP Sockets: C Version

H.I.S.L 스니핑동작원리및공격방법 작성자 : 한서대학교 H.I.S.L 동아리전정수 본보고서의전부나일부를인용시반드시 [ 자료 : 한서대학교정보보호동아리 (H.I.S.L)] 를명시하여주시기바랍니다

2-11Àå

Remote UI Guide

Install stm32cubemx and st-link utility

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

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

chapter4

Microsoft PowerPoint - ch13.ppt

IP Cam DDNS 설정설명서(MJPEG) hwp

시스코 무선랜 설치운영 매뉴얼(AP1200s_v1.1)

A SQL Server 2012 설치 A.1 소개 Relational DataBase Management System SQL Server 2012는마이크로소프트사에서제공하는 RDBMS 다. 마이크로소프트사는스탠다드 standard 버전이상의상업용에디션과익스프레스 exp

Studuino소프트웨어 설치

서버설정 1. VLAN 설정 1.1 토폴로지를참고로 SW1 에 vlan 설정을한다. (vlan 이름을설정하고해당인터페이스에 vlan 이름과동일한코멘트를처리하시오.) 1.2 PC에토폴로지에부여된 IP를설정하고, 게이트웨이는네트워크의마지막주소를사용합니다. - 서버에는 DN

Microsoft PowerPoint - 2.Catalyst Switch Intrastructure Protection_이충용_V1 0.ppt [호환 모드]

PowerPoint 프레젠테이션

서비스) 와서버( 관리대상서버) 간에자격증명을사용하여서로의 ID 를확인하고서로주고받는데이터를검사하고암호화하는프로세스 이다. 높은인증수준은일반적으로성능의저하를가져올수있지만높은 수준의보안과데이터무결성을제공한다. 기본값 - 관리대상서버에설정되어있는 DCOM 인증수준기본 값을

EJRWXFSEKSPJ.hwp

KISA-GD

PowerPoint 프레젠테이션

PowerPoint Template

gcloud storage 사용자가이드 1 / 17

목차 데모 홖경 및 개요... 3 테스트 서버 설정... 4 DC (Domain Controller) 서버 설정... 4 RDSH (Remote Desktop Session Host) 서버 설정... 9 W7CLIENT (Windows 7 Client) 클라이얶트 설정

<4D F736F F F696E74202D E20B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D62E >

Windows Server 2012

Mango-E-Toi Board Developer Manual

소프트웨어설치 1. 소프트웨어설치및제거 ( 소스코드 ) 소스코드컴파일을이용한 S/W 설치 1. 소스코드다운로드 - 예 ) httpd tar.gz - 압축해제 : #tar xzvf httpd tar.gz - INSTALL 또는 README파일참조

The Pocket Guide to TCP/IP Sockets: C Version

DoS 공격의유형분석및탐지방법 (Monitoring and Investigation of DoS Attack) 영산대학교 사이버경찰학과 이성진

ARP(Address Resolution Protocol) ARP - Layer 2 계층, Ethernet 환경에서 Destination IP 에대한 MAC Address 변환동작을담당한다. - 논리주소 (IP) 를물리주소 (MAC) 로변환시켜주는프로토콜이다. - 서로

untitled

hd1300_k_v1r2_Final_.PDF

Microsoft PowerPoint - ch02_인터넷 이해와 활용.ppt

untitled

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

Microsoft Word - access-list.doc

Transcription:

네트워크통신의비밀 ARP 웹브라우저를띄운후아무생각없이접속하는도메인( 예:www.tt.co.kr) 이지만실제로이도메인네임은내부적으로 DNS 에의해 IP 주소로바뀌어 IP 로접속이되는것이다. 과연그것이다인가? 그렇지않다. 실제로 IP 요청은다시 ARP 라는프로토콜에의해 MAC 주소라는하드웨어주소로변경된후접속이되는것이다. 이과정은그리복잡하지는않지만이과정을제대로이해하지않고서는 네트워크보안을이야기할수없을정도로많은것 들을놓치게된다. 실제로 ARP 를이용한해킹은그리낯선방법도어려운방법도아니다. 이번호에서는많은사람들이그중요성을놓치고있는 LAN 구간에서의통신프로토콜인 ARP 와이와관련하여숨겨져있는재미있는사실들에대해알아보도록하자. 오늘과내일넷센터홍석범 (antihong@tt.co.kr) WAN 과 LAN 흔히들일상적인네트워크구간을크게 WAN(Wide Area Network) 구간과 LAN(Local Area Network) 구간으로나눈다. 흔히이러한 WAN과 LAN 구간을나누는장비로는게이트웨이역할을하는라우터가담당하는데, 혹시라우터라는장비를보신분들도있을지모르겠지만라우터라는장비를보면적게는두개에서많게는몇십개까지의많은인터페이스 ( 랜카드) 로이루어져있는것을볼수있을것이다. 이인터페이스들은담당하는역할에따라 WAN 구간을담당하는시리얼(Serial) 인터페이스와 LAN 구간을담당하는이더넷 (Ethernet) 인터페이스로나눌수있다. 따라서흔히들 WAN 구간을시리얼구간, LAN 구간을이더넷구간이라부르기도한다. WAN 구간에서는라우터와라우터간에서로약속한라우팅프로토콜을이용해통신을하게되는데,( 이를테면전세계적으로 ISP간에연동시에는 BGP 라는프로토콜을이용하여연동한다. 이에대해서는 CISCO 홈페이지등라우팅관련서적을참고하기바란다.) 그렇다면 LAN 구간에서는어떤프로토콜을이용하여서로통신하게될까? 그렇다. 바로 ARP 이다. ARP ARP 는 Address Resolution Protocol 의약자로서마치 DNS 가도메인주소를 IP 주소 로바꾸어주는것처럼 IP 주소를 MAC(Media Access Control) 주소로변환해주는프로토 콜이다. 그렇다면 MAC 주소는또무엇인가? MAC 주소는각이더넷카드마다유일한하드 웨어주소로서이정보는리눅스의경우 ifconfig 로, 윈도우즈의경우 ipconfig /all 로확 인할수있다. ARP는일반유저들에게는그리친숙하지않은단어이지만이프로토콜은로컬네트워크의매우중요한규약이며 ARP를이해하여야만이네트워크의보안을설명할수있을정도로반드시숙지하여야할중요한프로토콜이다. DNS와 ARP ARP를쉽게이해하기위해아래그림과같이자신의 PC에서인터넷을접속하는경로를생

각해보자. 자신의 PC에서브라우저를실행하여 www.tt.co.kr 을입력한후엔터를치면해당도메인의웹페이지가접속이된다. 너무당연한것같은이절차는실제로어떠한경로를통해접속이되는것일까? 다소지루할지모르겠지만전체네트워크를이해하기위해처음과정부터거슬러올라가보도록하자. 자신의브라우저에서도메인명을입력하면이요구는제일먼저자신의 PC에서설정한 DNS 서버( 이 DNS 서버를편의상 Client DNS 라하자.) 로가게된다. Client DNS 서버는 www.tt.co.kr 의 Resolving 요구( 도메인을 IP 주소로변환) 를받아자신스스로가위임권한이있는지( 즉, 자신의 /etc/named.conf 파일에질의한도메인이정의되어있는지) 여부를확인하여없을경우에는, 질의한도메인에대한캐싱이있는지여부를확인하고있을경우바로해당정보를넘겨주지만없을경우에는소위 root 서버라는최상위 DNS 서버에질의를하게된다. 일반적으로웹접속시 http://www.tt.co.kr 이라고입력하지만실제로엄격히이야기한다면 http://www.tt.co.kr. 와같이주소의제일끝에. 을붙이는것이맞는것이다. 여기에서주소제일끝에있는. 을 root 서버로부른다. root 서버는전세계적으로 13 개가있으며만약 root 서버에장애가생기면전세계의인터넷은마비가되고말것이다. 여하튼질의를받은 root 서버는질의한도메인의주소가.kr 인것을보고.kr을관장하는 DNS 서버는한국전산원의 DNS 서버라는답을해주고이답을받은 Client DNS 서버는한국전산원의 DNS 서버에다시 www.tt.co.kr 을질의하게된다. 이질의를받은한국전산원의 DNS 서버는질의한도메인이.co.kr 인것을보고이번에는 co.kr 을관장하는 DNS 서버에다시질의하라고응답하고, 이응답을받은 Client DNS 서버는다시 co.kr을관장하는 DNS 서버에 www.tt.co.kr 을질의하게된다. 이질의를받은 DNS 서버는 tt.co.kr을보고이도메인을관장하는 DNS 서버는 ns1.tt.co.kr 이라는것을알려주게되고이응답을받은 Client DNS서버는최종적으로 ns1.tt.co.kr 에게 www.tt.co.kr을질의하여 211.47.65.1 이라는 IP 주소를알게되어이주소를요청한 PC 에게알려주게된다. 참고로이와같이 root 서버부터시작해서위임권한이있는각 DNS 서버로내려오면서 반복적인질의를하는방법을 recursion 이라한다.

< 그림1> DNS의 recursion 예 Client DNS 서버로부터 IP 주소를받은 PC는자신의라우팅정보에따라이요구를 PC에설정되어있는게이트웨이, 즉라우터로넘긴다. 이요청을받은라우터는라우터자신의라우팅프로토콜에따라가장최적화된( 비용이적은) 여러라우터를경유하여접속하려는서버가위치한최종라우터까지다다르게된다. 이경로는자신의윈도우즈 PC의경우도스프럼프트에서 tracert -d 목적지 나리눅스등의유닉스계열의서버일경우 "traceroute -n 목적지" 로확인할수있다. 내부네트워크에서의통신원리 이제해당서버가있는라우터에서부터는 LAN 구간이므로앞에서이야기한대로 ARP 가작동하게된다. 이부분을아래와같이간단히도식화하였고라우터하단에는아래와같이각각의 IP 주소에해당하는 MAC 주소가각각 192.168.1.1(AA:AA), 192.168.1.2(BB:BB), 192.168.1.3(CC:CC) 인시스템이있다고약식으로가정하였다.

< 그림2> 내부네트워크구성도 만약라우터를통해접속하려는요구가 A 서버인 211.47.65.1 이라면여기에서부터 ARP가 작동하게된다. 그런데, LAN 구간에서는서버의 MAC 주소를알아야통신을할수있는데, 라우터는 211.47.65.1의 MAC 주소를아직모르기때문에라우터에서는밑단의네트워크에 대해 211.47.65.1 인서버는 MAC 주소를알려달라는 Broadcasting 패킷( 이패킷에는라 우터의소스IP 주소와소스 MAC 정보를포함하고있다.) 을보내게된다. 이패킷은라우터 하단의모든서버들이받게되며이패킷의목적지 IP 가자신이아닌 B나 C 서버는이요 청에대해응답하지않으며이요청을받은 A 서버(IP가 211.47.65.1) 는자신의 MAC 주소 를적은패킷을라우터에게 Unicast( 즉, arp 요청을한라우터에게만) 로응답하게된다. 이 렇게해서라우터와 A 서버는서로의 MAC 정보를알게되었으므로드디어통신을할수 있게 되었다. 아래는 실제 로컬 랜상의 arp 가 실시간으로 broadcasting 하고 있음을 tcpdump 로 캡처한 예이다. 아래에서 보는 것처럼 arp 요청 (arp who-has) 은 Broadcasting 을하지만 arp 응답(arp reply) 은 Unicast( 즉 arp를요청한 IP 에게만응답) 하는것을알수있다. 참고로아래그림에서 arp reply를하는패킷이하나가아니라몇 개있는것은이시스템의환경이 dummy 이기때문이다. 이에대해서는아래에서다시설 명하기로한다.

< 그림3> arp broadcast 를 tcpdump 로잡은모습 ARP CACHE 와 Gratuitous ARP 그런데, 이렇게한번접속할때마다매번 arp broadcasting을하고 reply를해야한다면그만큼불필요한프로세스가발생하게되고많은오버헤드가유발될것이다. 따라서라우터및서버등각장비에서는 arp broadcast와 reply를한후에는이정보를바로폐기하지않고일정시간동안캐시를하게된다. 기종과계열에따라다소의차이는있지만많은데이터의교환이있는라우터는통상 4 시간, 서버는 60 초동안캐시를하게된다. 리눅스의경우현재시스템에서의캐시는아래와같이확인결과 60초로설정되었다는것을알수있으며 Soft Kernel 튜닝(sysctl -w kernel_parameter=value) 으로이값을적절히조절할수있다. # sysctl -a grep gc_stale_time net.ipv4.neigh.eth0.gc_stale_time = 60 net.ipv4.neigh.lo.gc_stale_time = 60 net.ipv4.neigh.default.gc_stale_time = 60

현재리눅스시스템의 arp 캐시정보는아래와같이 arp -a 를입력하면된다. < 그림4> arp 캐시정보확인 아래와같이라우터에서도 arp 를캐시하고있는것을확인할수있다. < 그림5 > 라우터의 arp 캐시 여기에서주의할점은, arp 는내부 LAN 에서만의미가있으므로라우터를벗어난 WAN 구간에서는의미가없으며 LAN 구간에서도브로드캐스팅도메인영역에서만의미가있다는것이다. 따라서 arp 캐시는해당서버에접근하는모든클라이언트나서버에대해서캐시하는것이아니라 C Class 로 netmask 되어있을경우해당영역( 위의경우 211.47.65.0 대역) 만캐시하는것을볼수있다. 가끔여러분의서버나 PC의이더넷카드를변경하였을때바로인식이되지않고빠르면몇분, 길게는몇시간까지기다린후에야네트워크가다시작동하는것을경험해보았을것이다. 이를테면이더넷카드를기존의 RealTek 8139에서 3com 계열로바꾸었고, 커널에서도잘인식이되었다. 모듈도도해보고커널에정적으로포함시켜보기도하고, 분명시스템에서는정상적으로이더넷카드를인식하고설정도전혀문제가없는데, 네트워크가작동하지않는경우가있다. 왜그럴까? 이제여러분은이이유를알수있을것이다. 그렇다. 바로 arp 캐시때문이다. 앞에서라우터는평균 4시간정도 arp 를캐시한다고말했다. 따라서이더넷카드를변경했다면해당하는 IP 에대한 MAC 주소가변경되었는데, 라우터에서는이전의정보를캐시하고있는것이다. 즉, 211.47.65.1의 MAC 주소를 3com 이아닌이전의 RealTek 으로인식하고있는것이다. 따라서외부에서라우터를통해 211.47.65.1로접속요구가들어왔을때라우터는이전의정보인 AA:AA MAC 주소를가지고있는서버를찾는데, 이미 211.47.65.1은 3com 의 MAC 주소인 HH:HH 로변경되었고기존의 AA:AA MAC 주소는존재하지않기

때문에접속할수없게되는것이다. 만약이더넷카드를변경후바로네트워크가되었다 면다행히 arp 캐시가작동하지않았거나캐시시간이짧았기때문이었을것이다. 그런데 arp 캐시때문에캐시가업데이트될때까지무작정기다리기만해야한다면너무불합리 하지않은가? 당장서비스도중지없이해야하는데말이다. 이를위해서는 Gratuitous arp 라는것을사용하면된다. gratuitous arp 는로컬랜상의 arp 캐시정보를업데이트하는 arp 로서이를실행하면모든캐시정보를바로업데이트 할수있다. 리눅스에서는 send_arp 라는실행파일을이용하면되며이실행파일은클러 스터링패키지인 piranha 라는패키지에포함되어있다. 사용방법은 send_arp src_ip_addr src_hw_addr targ_ip_addr tar_hw_addr 인데, 만약 /usr/sbin 디렉토리에 send_arp 실행 파일이 있고 211.47.65.1의 MAC정보를 기존의 AA:AA에서 HH:HH 로변경하여이정보를업데이트하려면아래와같이실행하면될것이 다. # /usr/sbin/send_arp 211.47.65.1 HHHH 211.47.65.255 ffffffffffff 위와같이실행하면 211.47.65.255 즉 211.47.65.0 대역의서버중 211.47.65.1 에대한 arp 캐시를가지고있는모든서버에대해 211.47.65.1의 MAC 주소는 HH:HH 로업데이트하라고브로드캐스트하는것이다. 이를실행하면라우터를포함하여모든네트워크장비가 arp 캐시를업데이트하며네트워크가다시작동하는것을확인할수있을것이다. 참고로자신의MAC 정보는아래와같이ifconfig 를실행하면확인할수있다. < 그림6> MAC 주소의확인 실제로 gratuitous arp를이용하면한서버가다운시다른서버가대신서비스하는클러스터링의용도로도사용되며매우유용한프로그램이라할수있다. 이외 ARP와관련하여 Unarp 라는것도있는데, 이는 Gratuitous arp 가기존의 arp 캐시를다른정보로업데이트하는것이라면 Unarp 는기존의 arp 캐시가있는시스템이있다면단지 arp 캐시를삭제만하는것이다. 따라서접속할때마다 IP가변하는 ADSL 등의 DHCP의경우는접속을끊을때 Unarp를 Broadcasting 하고, IP를할당받아네트워크를시작할때에는 Gratuitous arp를실행하면 arp 캐시로인하여접속이되지않는문제는해결이될것이다. 이렇듯 gratuitous arp 는매우유용하지만다른한편으로악용될경우에는쉽게다른시스템을무력화시킬수있는무서운공격프로그램이될수도있다는점을양지하기바란다.

Switch 와 Dummy 허브 이번에는로컬구간에서의통신에대해알아보도록하자. 많은사람들은 LAN 네트워크의보안을위해더미허브대신스위치를사용하라고권장한다. 과연그런가? 실제로스위치는애초에디자인시보안을고려했기보다는 Performance 를염두해두고개발된것인데, 어떻게하다보니우연히더미(Dummy) 허브에비해보안에좋은것뿐이지반드시그러한것은아니다. 그럼, 여기서잠깐더미허브와스위치의차이에대해알아보도록하자. 더미허브와스위치는일반적으로차선의개념과연관지어생각하면쉽다. < 그림7> Switch 의개념 스위치의경우위와같이 input이 4차선이면 output도 4 차선인개념이다. 반면에더미허브는 input 은 4차선이지만 output 은 1차선인개념이므로당연히 output에서병목현상이발생할수밖에없게된다. 이때병목현상으로인하여동시에 output 에도달하려면필연적으로 collision( 충돌) 이생기게되어결국속도저하가발생하게된다.( 리눅스에서특정인터페이스의 collision 여부는 ifconfig 로확인할수있다.) 그런데, 이러한속도저하보다는좀더중요한차이점이있다. 즉, 스위치는지정된 IP로패킷을바로포워딩해주지만더미허브는모든패킷을모든포트에 broadcast 한다는것이다. 그럼여기에서각각더미허브및스위치환경에서데이터가통신하는경로에대해다시생각해보자. # Dummy

더미(dummy) 환경에서 A 서버와 C 서버가 telnet 과같은 TCP 통신을한다면, A 서버에서는제일먼저 ARP Broadcasting 을하게된다. 이때이요청은 Broadcasting 이므로 B, C 모두에게전달된다. 이중 B 서버는 ARP 목적지 IP가자신의 IP가아니므로이요청에응답하지않고 C 서버는목적지가자신의 IP 이므로이요청에대하여요청을한 A 서버에게 ARP reply 를한다. 그러나 dummy 환경에서는모든패킷이 broadcast 하므로 B 서버에서도 C 서버의 unicast 응답을캡처할수있다.( 이는위의 tcpdump 그림에서확인하였다.) A 와 C 간에 ARP broadcast와 reply를한후에는 TCP 통신을하려고하므로본격적인데이터교환을하기전에 TCP 3 Way handshake 과정을선행하게된다. < 그림8> TCP 3 way handshake tcp 3 way handshake 과정은위그림에서와같이서버와클라이언트간에위 3가지절차를거친후에야연결이성립되어데이터가교환된다는것을익히알고있을것이다. 그런데, dummy 에서는위 3 way handshake 뿐만이아니라 Connection 이후의모든데이터교환역시 broadcast 하게된다. 아래에서는 211.47.65.106 서버에서 www35.tt.co.kr 서버로 telnet 접속시반응하는패킷을 www35.tt.co.kr 서버에서 tcpdump 로잡은예이다. tcpdump 에서보는것처럼먼저 arp 통신이되어서버의 MAC 정보를교환한후에야비로서 3 way handshake 가이루어지는것을확인할수있을것이다. 만약한번시도를한후에는 arp 캐시가있으므로캐시가있는상태에서재시도를하면 arp 요청과 reply 절차 가없이바로3 way handshake 가이루어지는것을< 그림10> 에서확인해볼수있다.

< 그림9> arp cache가없을때의 tcpdump < 그림 10> arp cache가있을때의 tcpdump # switch switch 환경에서 A 서버와 C 서버가 telnet 과같은 TCP 통신을한다면 A 서버에서는 C 서버의 MAC 주소를알기위해먼저 ARP Broadcasting 을한다. 이때이요청은 Broadcasting 이므로 B, C 모두에게전달된다. 이중 B 서버는 ARP 목적지 IP가자신이아니므로이요청에응답하지않고, C 서버는목적지가자신의 IP 이므로이요청에대하여요청을한 A 서버에 ARP reply 를한다. 여기까지는스위치나 dummy 환경이동일하다. 그러나 switch 환경에서는 arp broadcast 이외의모든패킷이 broadcast 하지않으므로 B 서버에서는 C 서버의 unicast 응답을캡처할수없다. A 와 C 간에 ARP broadcast와 reply를한후에는 TCP 통신을하려고하므로본격적인데이터교환을하기전에 TCP 3 Way handshake 과정을거치게된다. A 와 C 간에서로의 MAC 정보를교환한후에는서로의 MAC 주소를알기때문에 3 way handshake 뿐만이아니라 connection 이후의모든데이터교환역시 broadcast 하지않고 A와 C 간에만통신을하게되며 B 에서는 A와 C 간의통신을엿볼수없게된다. 즉, dummy 환경에서는 (1) arp 요청과응답

(2) tcp 3 way handshake (3) 데이터교환 이모든과정이broadcasting 되어B 에서도A와 C 간의통신을엿볼수있으나 switch 환경에서는 (1) arp 요청만이 broadcasting 하며 (2) arp 응답 (3) tcp 3 way handshake (4) 데이터교환모두 A 와 C 간에 unicast 로작동하기때문에 B 에서는A 와C 간의통신을엿볼수없게된다. 여기에서 B처럼자신을출발지또는목적지로하지않은 A 와 C 간의통신을엿보는(?) 일 련의행위을스니핑(Sniffing) 한다고한다. 스니핑 (Sniffing) 그렇다면스니핑은어떻게가능한가? 크게두가지이유로가능하다. 첫번째는위에서본것처럼 dummy 환경에서는모든패킷을 broadcast 하여직접적인통신과는관계없는다른 PC나서버에서도다른시스템의패킷을캡처할수있다는특성을이용한것이고, 두번째는인터넷의표준프로토콜로사용중인 TCP/IP 의전송방식이암호화하지않은 Plain text( 평문) 를사용한다는점을이용한것이다. 그렇다고해서 Plain text 방식으로 broadcasting 한다고바로모든패킷을스니핑할수있는것은아니다. 왜냐하면기본적으로목적지 IP가자신의 IP가아닌패킷은이더넷에서패킷을드롭(drop) 하는특성이있기때문이다. 이처럼스니핑을하려면자신의목적지가아닌패킷도받아들여야하는데, 그렇게하려면인터페이스가 promiscuous ( 또는 promisc) 모드로작동하도록설정하여야한다. promisc 모드는우리말로 무차별모드 라고도하는데, promisc 모드로설정되면이더넷에서패킷을드롭하지않고모든패킷을다받아들이게되어스니핑이가능하게된다. 리눅스에서인터페이스가 promisc 모드인지여부를알수있는명령어는앞에서본것처럼 ifconfig 라는명령어로확인가능하다. 이때아래와같이 PROMISC 라는문자열이보이면인터페이스는 promisc 모드로되어있는것인데,promisc모드를수동으로설정하려면 # ifconfig eth0 promisc 와같이하면되고, 설정을해제하려면 # ifconfig eth0 -promisc 로실행하면된다.

< 그림11> promisc 설정여부확인 특별한이유가없다면평상시에는 promisc 모드로설정되어있을필요가거의없으므로만약자신의시스템이 promisc 모드로설정되어있다면스니핑여부를주의깊게검토해보아야할것이다. 그러나시스템에따라자동으로 promisc 로설정하는경우도있으니 promisc로설정되어있다고해서반드시스니핑이작동하고있는것은아니라는것을참고하기바란다. 스니핑에대한대책 그렇다면이에대한대책은무엇인가?3 가지정도의방법을대안으로제시할수있겠다. 첫번째는, Plain text로전송되는 TCP/IP 대신암호화전송프로토콜을사용하는것이다. 이의대표적인예가 telnet 대신 SSH, http 대신 https(ssl 웹서버) 등을사용하는것이그예이다. 여기서잠깐 SSL 에대해이야기하고자한다. 적지않은사람들이 SSL 보안웹서버를설치하면마치방화벽처럼모든보안에완벽해지는것으로오해하는경우가있는데, SSL 은 80번포트를사용하는 http 프로토콜역시 TCP/IP 에속하므로평문으로전송되어스니핑될수있기때문에기존의 http 대신암호화전송프로토콜인 SSL을사용하는것뿐이지다른것은아닌것이다. 아마도보안웹서버라는이름때문에다소혼동하는것이아닌가한다. 두번째는앞에서본것처럼 broadcasting을하는 dummy 대신스위치를사용하는것이다. 세번째는기업간통신시암호화된통신을하는가상사설망인 VPN(Virtual Provate Network) 을사용하는것이다. 이중가장근본적인방법은첫번째로제시한암호화전송프로토콜을사용하는것이다. 여기에서잠깐두번째방법으로제시한 dummy 대신스위치에대해알아보도록하자. 앞에서본대로스위치를사용할경우초기 arp broadcast 요청시에만 broadcast 하고이후에는모두 unicast 로통신하므로상대적으로스니핑에안전하다는것을이해했을것이다. 하지만과연스위치를사용한다면스니핑에안전할까? 답은 결코그렇지않다. 이다. 왜냐하면쉽지는않지만스위칭환경에서도스니핑을할수있는방법이있기때문이다. 바로 arp 의특성을이용하여아래와같은몇가지방법이가능하다. 스위치환경에서도가능한스니핑기법 (1) MAC Flooding 스위치에서는각각의포트에해당하는물리적인 MAC 주소를기억하고있는데이메모리에 는어느정도의한계치가있다. 이러한스위치의특성을이용하여위조된 MAC을지속적으 로발생시켜스위치의 ARP 테이블을 Flood 시키는방법으로 MAC 정보가 Flood 되면스 위치는마치 dummy처럼모든포트에 broadcast 하게된다. 보안적인용어로이러한것을 fail open 이라한다.

(2) ARP Spoofing ARP Spoofing은스니핑하고자하는서버인것처럼 MAC을위조한패킷을 Broadcast 하여 트래픽을포워딩하는것을말하는데, 앞의그림2와같은스위치환경에서 B 서버가 A와 C 서버간의통신을스니핑할수있는방법으로아래와같이 ARP 의원리만알면아주쉽게 스니핑할수있다. B 서버에서 A 서버에게 211.47.65.3 의 MAC 주소가 CC:CC가아니라 B 서버의 MAC주소인 BB:BB 라는패킷을발송하고, C 서버에는 211.47.65.1 의 MAC 주 소가 AA:AA 가아니라 B 서버의 MAC주소인 BB:BB 라는패킷을발송하는것이다. 그렇 게되면 A 서버와 C 서버는이정보를의심없이받아들여정보를갱신한후 A와 C간통신 시모든패킷은 B 서버로보내지게되며 B 서버는모든패킷을받은후원래의서버로포 워딩만해주면되는것이다. 이때 B 서버의 net.ipv4.ip_forward=1 로설정되어있어야원 래의서버로패킷을포워딩하게되며 A와 C 서버는정상적인데이터전송이되므로패킷이 B 를거쳐간다는사실을알수없게되는것이다. (3) ARP Redirect ARP Redirect 역시 ARP Spoofing 과비슷한방법인데, 자신이마치 Gateway 인것처럼위조된 MAC 을 Broadcast 하여모든트래픽이자신을통과하게하는방법이다. 즉, A와 C 서버에게 Gateway 주소인 211.47.65.254 의 MAC 주소가라우터의 MAC 주소인 RR:RR 이아니라 B 서버의 MAC 주소인 BB:BB 라는패킷을 broadcast 하는것이다. 그렇게되면로컬랜상에있는서버들은이정보를아무런의심없이받아들여캐시정보를갱신한후게이트웨이로보내는모든패킷을 211.47.65.254가아니라 B서버인 211.47.65.2로보내게되며, B 서버는모든패킷을받은후원래의게이트웨이인 211.47.65.254 로포워딩만해주면되는것이다. 이때 B 서버의 net.ipv4.ip_forward=1 로설정되어있어야원래의게이트웨이로패킷을포워딩하게되며 A와 C 서버는정상적인데이터전송이되므로패킷이 B 를거쳐간다는사실을알수없게되는것이다. (4) MAC Duplicating 만약 B 서버에서 A 서버의트래픽을스니핑하고싶다면 B 서버에서 A 서버의 MAC주소와같은 MAC 정보로설정을하는방법이바로 MAC Duplicating 이다. ifconfig를이용하면이는어렵지않게설정할수있는데, 이를테면 eth0 의 MAC 주소가 00:50:8B:9A:1B:1B인경우이를 AA:AA:AA:AA:AA:AA 와같이설정하고자한다면먼저 ifconfig eth0 down 으로 eth0 인터페이스를다운시킨후 ifconfig eth0 hw ether AA;AA:AA:AA:AA:AA up 와같이실행하면 eth0 인터페이스의 MAC 정보를변경할수있다. 이러할경우스위치를혼란시켜두포트모두같은 MAC 주소를가진것처럼인식하게되며스위치는 A 서버로보낼트래픽을 A와 B 모두에게발송하게되는것이다. 데이터는두포트모두에게보내어지므로 B서버에서는 IP 포워딩을설정할필요가없다. 실제로위와같이스위치환경에서스니핑하는것은그리어렵지않으며 hunt나 dsniff(http://www.monkey.org/~dugsong/dsniff/) 등과같은관련툴을이용하면어렵지않게구현할수있다.

스니핑차단하기 이제스위치환경도결코스니핑에안전하지않다는사실을알았을것이다. 그렇다면스위치또는 dummy 환경에서어떻게보안을강화할수있을까? 아래의몇가지방법을대안으로제시할수있다. (1) IP Flitering 스위치에서제공하는 IP Filtering 기능을사용함으로써각각의포트에서오가는트래픽을 필터링할수있다. 그러나이기능을제공하는스위치에서만가능하며매번포트가바뀔 때마다수작업으로설정해주어야하므로많은수고가따르게된다. (2) Port security 만약스위치에서 Port security 기능을지원할경우 MAC Flood 나 MAC Spoofing을예방할수있는방법으로각각의포트에물리적인 MAC 주소를정적(Static) 으로설정하는것이다. 각종 ARP 기반의스니핑에가장확실한방법이라할수있지만과연이렇게하는곳이얼마나될까는의문이다. 원격지서버의스니핑모니터링프로그램 특정서버에서스니핑이작동하고있는지리눅스의경우 ifconfig를실행시 PROMISC가설정되었는지여부로확인할수있다고하였다. 그런데, 관리하는서버가여러대라면매번로그인하여 ifconfig 로 PROMISC 설정여부를확인하겠는가? 거기다가만약 ifconfig 실행파일자체가변조되어 ifconfig 결과를신뢰할수없다면? 이는아무런의미가없게되는것이다. 이를위해원격에서도특정서버의스니핑작동여부를체크할수있는 Sentinel 과 AntiSniff 라는프로그램을소개하고자한다. Sentinel 을설치하려면미리패킷캡처라이브러리인 Libnet 1.0과 libpcap 가설치되어야하는데, 각각 (http://www.packetfactory.net/projects/libnet) 와 (ftp://ftp.ee.lbl.gov/libpcap-0.4.tar.z) 에서다운로드받아압축해제후압축이풀린디렉토리에서./configure; make ; make install 로설치하면된다. 그리고 Sentinel 은 http://www.packetfactory.net/projects/sentinel/ 에서다운로드할수있으며다운로드후압축해제를하고압축이풀린디렉토리에서 make all 로컴파일하여설치하면된다. 현재 Sentinel이원격지시스템에서스니핑여부를감지하는방법은 3 가지가있는데, 이방법은각각 DNS test, Etherping test, ARP test 등이다. 참고로이방법은 ARP를이용한방법이므로같은네트워크세그먼트에속해있어야만탐지의의미가있다는점을양지하기바란다. 먼저각각의방법이가능한원리에대해간단히살펴보면, 우선 DNS test 의경우목적지서버에위조된연결요청을보내어, 일반적인스니핑프로그램이요청한시스템의 IP 주소를역리졸브(Inverse DNS lookup) 한다는특징을이용하여 DNS 트래픽을감시하여스니 핑여부를감지하는방법이다. Etherping test는목적지에 ping 패킷을보낼때목적지의

IP 는맞지만목적지의 MAC 주소는존재하지않는정보로위조하여 Icmp Echo Packet 을보내어응답이오는지여부를감시하는방법으로대부분의정상적인시스템에서는존재하지않는 MAC 정보이기때문에패킷에대해응답하지않지만 promisc mode가설정된시스템에서는이와관계없이응답을한다는특징을이용하여감시하는방법이다. 마찬가지로 ARP test 역시 IP 는목적지의 IP로설정하지만목적지의 MAC 주소를다르게하여 icmp 대신 ARP 요구를보내는방법으로 Promisc 모드가아닌경우에는패킷이목적지까지갈수없으므로목적지에서는응답하지않지만 Promisc 모드인경우에는모든패킷을받아들이므로결국응답한다는특징을이용하여스니핑여부를감시하는방법이다. 각각의방식에대한실행예는아래와같다../sentinel -a -t 211.47.65.4./sentinel -d -f 1.1.1.1 -t 211.47.65.4./sentinel -e -t 211.47.65.4 # ARP 테스트 # DNS 테스트 # Etherping 테스트./sentinel -t 211.47.65.4 -f 1.1.1.1 -d -a e # 3개의테스트를동시에수행 위와같이실행시 Results: 211.47.65.4 tested positive to etherping test. 와같이탐지결과가 positive 가나오면 Promisc 모드로설정되었다는의미이므로해당 인터페이스의 PROMISC 여부를조사하여야한다. 그런데, 한시스템에대해각각의테스트 를동시에실행했을때결과가각기다르게나오는경우가있는데, 이는리눅스의커널버 전에따라종종발생하는현상으로세가지방법중에어느하나라도 positive 라는결과가 나온다면반드시스니핑작동여부를확인하기바란다. 아울러 Antisniff 의경우 http://www.securitysoftwaretech.com/antisniff/ 에서다운로드 가능하며리눅스버전과윈도우버전의프로그램도사용할수있는데, 테스트하는원리는 위의 Sentinel 과비슷하며추가적으로 Latency test 라는재미있는방법이있는데, 이방 법은스니핑이작동시 promisc 모드로설정되어있을경우에는로컬네트워크상의모든트 래픽을받아들이느라시스템의로드가전반적으로높아진다는점을이용해불필요한쓰레기 트래픽을전송하여시스템의응답시간이길어지는지여부를조회하는방법으로아직까지는 100% 신뢰할수는없는방법이며계속적으로개선중인기능이다. 윈도우버전의 Antisniff 의경우모니터링하고자하는 IP 대역을지정하여한꺼번에검사가가능하고, 검사결과에대해각종통계도볼수있으며, 얼마의주기로테스트를할것인지를시간대별, 날짜별, 주별로정할수있는예약기능및검사결과가변경시메일로발송하거나음악이나오게하는등의알람기능도있어편리하게사용이가능하다. 아울러 arp와관련된프로그램으로작지만강력한프로그램인 ARPWatch 라는프로그램을소개하고자한다. 앞에서 tcpdump -e arp 를실행하였을때실시간으로 IP 주소와 MAC 정보가 broadcast 되는것을확인하였을것이다. 이프로그램은이러한 ARP 트래픽을실시간으로모니터링하여 MAC 주소와 IP 간의매칭을감시하는프로그램으로서만약현재의 ARP 정보가데이터베이스에저장되어있는 ARP 정보와다르거나새로운 MAC 주소가추가 / 확인시에는해당하는내용을지정된관리자에게메일로통보하게된다. arpwatch 프

로그램을이용하면매우유용하다. MAC 주소나 ARP 를이용하는공격에대한대응및네트워크관리에 암호화전송프로토콜사용하기 앞에서 TCP/IP 가얼마나취약한지그리고이를위한대책이어떤것이있는지알아보았다. 물론 TCP/IP 의취약점을개선하기위해 ipv6 등새로운개발이가시화되고있지만현재의상태에서가장확실한방법은암호화전송프로토콜을사용하는것에는모두동의할것이다. 이는 telnet 대신 ssh 를, http 대신 https 를사용한다고말했었다. 그렇다면 ftp, smtp, pop3 등다른프로토콜은어떻게할것인가? 만약 telnet 만사용한다면그냥 ssh를사용하기만하면되겠지만한서버에서 telnet 과 ftp, pop3등을함께사용한다면어느하나의서비스만암호화하는것은그리큰의미가없다. 어차피 TCP/IP 자체가취약한것이므로암호화전송프로토콜을사용하려면모든서비스에대해암호화전송프로토콜을사용해야하기때문이다. 그래서이를위해기존 TCP/IP 기반의서비스에암호화전송프로토콜을사용하려면아래와같은두가지방법이가능하다. (1) sslwrap 를이용한암호화 (2) SSH 의포트전송기능을이용한암호화 (1) sslwrap를이용한암호화 sslwrap 는 pop3나 imap, smtp 등의 TCP 서비스를감싸 TSL/SSL 을이용하여모든 TCP 데이터전송을암호화하는간단한유닉스서비스로서기존의서비스를다시설치할필요없이어렵지않게사용이가능하다. sslwrap를이용하려면 openssl 이나 ssleay를설치하여야하는데, 여기에서는 openssl 을사용하는방법을알아보도록하자. 먼저 http://www.openssl.org/ 에접속하여최신의 openssl을다운로드하여설치할서버에업로드한다. 또는설치할서버에서직접 lynx http://www.openssl.org/source/openssl-0.9.6b.tar.gz 나 wget http://www.openssl.org/source/openssl-0.9.6b.tar.gz 로다운로드받아도된다. 다운로드후압축해제하여압축이풀린디렉토리에서아래와같이실행하여컴파일하여설치를한다. [root@www ~/openssl-0.9.6b]#./config ; make; make test; make install 이번에는 sslwrap 을설치할차례이다. 역시 "lynx http://www.rickk.com/sslwrap/sslwrap.tar.gz" 나 "wget http://www.rickk.com/sslwrap/sslwrap.tar.gz" 으로다운로드한후압축해제하여 make 만실행하여컴파일하면된다. 컴파일후생성된 sslwrap 파일을 /usr/sbin/ 디렉토리레복사한다. 혹컴파일이잘안되는경우에는 http://rpmfind.net/ 에서자신의버전에맞는적당한rpm 파일을다운로드하여설치해도된다. 이번에는인증서를생성할차례이다. 물론베리사인이나 Thawte등공인된 CA(Certificate

Authority) 기관에서일정정도비용을지불하고, CSR 를생성후인증서를구입하는방법도있지만여기에서는자기자신이사인한인증서를발급하는방법에대해알아보도록하자. 인증서를발급하는명령어는아래와같다. # openssl req -new -x509 -nodes -out /usr/local/include/sslwrap.pem -keyout /usr/local/include/sslwrap.pem -days 365 이명령어를한줄에이어서입력하기바란다. 아래는위와같이실행시보이는화면이다. Using configuration from /usr/share/ssl/openssl.cnf Generating a 1024 bit RSA private key...++++++..++++++ writing new private key to '/usr/local/include/sslwrap.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. Therearequiteafewfieldsbutyoucanleavesomeblank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:KR State or Province Name (full name) [Some-State]: Locality Name (eg, city) []:Seoul Organization Name (eg, company) [Internet Widgits Pty Ltd]:Today & Tomorrow Organizational Unit Name (eg, section) []:Net-Center CommonName(eg,yournameoryourserver'shostname)[]:test1.tt.co.kr Email Address []:antihong@tt.co.kr 위에서굵게표시된부분은각자의상황에맞게적절히입력하여야하는내용이다. 각각에대해잠깐알아보도록하자. Country Name (2 letter code) [AU]:KR --> 국가이름을코드로입력한다. 한국은 KR 이라입력한다. State or Province Name (full name) [Some-State]: --> 주는존재하지않으므로적당히입력하거나그냥엔터를입력한다. Locality Name (eg, city) []:Seoul --> 도시이름을입력한다. Organization Name (eg, company) [Internet Widgits Pty Ltd]:Today & Tomorrow --> 회사나조직, 기관의이름을입력한다. Organizational Unit Name (eg, section) []:Net-Center

--> 부서이름을적절히입력한다. CommonName(eg,yournameoryourserver'shostname)[]:test1.tt.co.kr --> 인증서가설치되는서버의받는메일서버주소를입력한다. 만약여기에서처럼 pop3, smtp 에대해암호화프로토콜을사용하려면이주소는아웃룩익스프레스등의메일프로그램에서보내는메일서버또는받는메일서버로입력할주소이다.Kildong,Hong등과같이자신의이름을입력하지않도록주의하기바란다. Email Address []:antihong@tt.co.kr --> 자신의 e-mail 주소를입력한다. 이제인증서생성을끝났으므로 sslwrap를 inetd 나 xinetd 에설정할차례이다. 먼저 /etc/services 파일을열어 pop3s 995/tcp smtps 465/tcp 와같이설정되어있는지확인하고없으면위와같이추가한다. 그리고 xinetd 의경우 xinetd.conf 설정파일에아래와같이추가한다. service smpts { disable = no flags = REUSE socket_type = stream wait = no user = nobody server = /usr/sbin/sslwrap server_args = -cert /usr/local/include/sslwrap.pem -quiet -port 25 log_on_failure += USERID } service pop3s { disable = no flags = REUSE socket_type = stream wait = no user = nobody server = /usr/sbin/sslwrap server_args = -cert /usr/local/include/sslwrap.pem -quiet -port 110 log_on_failure += USERID }

inetd 의경우라면 pop3s 서비스에대해 inetd.conf 파일에아래와같이설정할수있다. pop3s stream tcp nowait nobody /usr/sbin/tcpd /usr/sbin/sslwrap -cert /usr/local/include/sslwrap.pem -port 110 이와같은방식으로다른서비스도아래와같이설정할수있다. https stream tcp nowait nobody /usr/sbin/tcpd /usr/sbin/sslwrap -cert /usr/local/include/sslwrap.pem -port 80 imaps stream tcp nowait nobody /usr/sbin/tcpd /usr/sbin/sslwrap -cert /usr/local/include/sslwrap.pem -port 143 telnets stream tcp nowait nobody /usr/sbin/tcpd /usr/sbin/sslwrap -cert /usr/local/include/sslwrap.pem -port 23 위와같이설정후 inetd 또는 xinetd 를재시작하면변경한내용이적용될것이다. 설정한포트가열렸는지아래와같이확인한다. # telnet localhost pop3s # tenlet localhost smtps 이제서버에서의설정은끝났으므로메일클라이언트프로그램에서설정할차례이다. 메일프로그램에서받는메일서버(pop3), 보내는메일서버(smtp) 를위에서설정한서버이름으로입력하고, 고급탭에서보내는메일서버와받는메일서버에아래그림과같이 보안연결 (SSL) 필요 를선택하면 465와 995 번포트가설정되는것을확인할수있다. < 그림> 아웃룩익스프레스설정 이제드디어모든설정이끝났다. 메일송수신이되는지테스트해보기바란다. 그런데, 메일프로그램에서보내고받기를클릭하면아래와같이처음프로그램을시작할때마다경고메시지가뜨게되어여간불편하지않을수없다.

< 그림> 공인된인증서가아닌경우경고화면 이는공인된인증서가아니라자기자신이사인한인증서를발급하였기때문이며이러한경우에는다음과같이추가적인작업을해주면이메시지가나타나지않도록할수있다. 먼저인증서파일인 /usr/local/include/sslwrap.pem 파일을열면 -----BEGIN RSA PRIVATE KEY-----로시작해서 -----END RSA PRIVATE KEY----- 로끝나는부분과, -----BEGIN CERTIFICATE----- 로시작해서 -----END CERTIFICATE----- 로끝나는부분이있는데, 이중에서 "-----BEGIN CERTIFICATE... END CERTIFICATE-----" 부분만복사해서 Windows 등의클라이언트 PC에 server.crt 라는파일로복사를한다. 그리고이파일에서오른쪽마우스를클릭하면 인증서설치 라는메뉴가보이는데, 여기에서 인증서설치 를실행한다. 이후나오는화면에서모두 다음 --> 다음 을선택후마침을선택하면 PC에서의설치가완료된다. 다음부터는자체적으로사인한인증서를사용하더라도경고화면이나오지않는것을확인할수있을것이다. 그럼. 실제로 pop3s를사용할때실제로암호화가되어스니핑할수없는지실제로테스트해보도록하자. 각종리눅스스니퍼프로그램을이용해도되지만여기에서는 tcpdump 를이용해테스트해보았다. 먼저아래와같이서버에서설정하여연결을캡처할수있도록준비하고 pop3 로메일을 받아보도록하자. # tcpdump -x host 211.1.1.1 > pop3.txt 이번에는암호화전송프로토콜인 pop3s로패킷을캡쳐할수있도록준비하고 pop3s 로 받아보도록하자. # tcpdump -x host 211.1.1.1 > pop3s.txt 이명령어는메일클라이언트프로그램을실행하는 211.1.1.1 로부터의패킷을 16진수로 캡처하여각각 pop3.txt와 pop3s.txt 라는파일로저장을한다는의미이다. 이후캡처한데 이터를 16 진수로표기하는아스키코드표로해석을하면된다. 16진수로표기하는아스키 표는 http://www.asciitable.com/ 를참고하기바란다. 또는아래처럼 16진수를아스키로변환해주는 trans.pl 프로그램을이용해서변환할수도 있다. #!/usr/bin/perl

while(<>){ s/ //g; s/([a-fa-f0-9][a-fa-f0-9])/pack("c",hex($1))/eg; print $_; } 위와같이작성후 perl trans.pl pop3.txt 또는 pop3s.txt를하면아래와같이덤프받은데이터를아스키로변환할수있다. 물론아래처럼깨끗하게변환은되지않지만 pop3.txt 파일의내용을읽을수있다는것을확인할수있을것이다. 반면에 pop3s.txt 파일을변환해보면암호화가되어거의어떤문자인지알아볼수없다는것을알수있을것이다. #pop3 를스니핑한예 +OK POP3 test1.tt.co.kr v2001.77 server ready user user1 +OK User name accepted, password please pass dkssud +OK Mailbox open, 2 messages #pop3s 를스니핑한예 E[u@@??Aj?@.? 霑 D57? P a?u?8?? 뿔?? ᇹ欠 4?Ti夫 栗 EFv@@??Aj?@.? 霑 w57? sslwrap를이용한방법에대해서는바란다. http://www.quiltaholic.com/rickk/sslwrap/ 를참고하기 (2) SSH의포트포워딩기능을이용한암호화 ssh 클라이언트와서버연결구간에는암호화통신을한다는것을알고있다. 이특성을활 용하여 ssh 에서제공하는포트포워딩기능을이용하면암호화가제공되지않는프로토콜 도쉽게암호화전송할수있다. 쉽게이야기하면 ssh 에서기존의서비스를캡슐로싸서 서비스한다고생각해도된다. 포트포워딩기능을이용해 ssh 클라이언트와 ssh 서버사이에암호화를위한터널을구성할수있는데, 이를구성하기위한방법은 로컬포트포워딩 과 원격포트포워딩 두가지방법이있다. 두방법모두거의유사한방법이므로여기에서는로컬포트포워딩방법에대해알아보도록하자.

ssh 클라이언트와 ssh 서버간에는암호화전송이되기때문에일단 tcp 연결을할기존의서버외에연결을할 ssh 클라이언트로사용할추가적인한대의서버가더필요하다. 아래와같이두대의서버가있다고하자. forward 서버는 ssh 클라이언트연결을하여클라이언트의연결을받아 ssh를이용하여 TCP 연결을포워딩할서버이고 www 서버가포워딩을받아실제로서비스를제공할서버이다. < 그림> ssh 포트포워딩서버구성도 위와같은환경에서하여야할일은먼저암호화를할포트에대해 ssh 터널을구성하는 것이다. 이는클라이언트( 즉 forward) 서버에서다음과같은형식으로 ssh 연결을하면된 다. ssh -L 로컬포트: 원격호스트: 원격포트:SSH서버호스트 위와같은환경에서는원격호스트와 SSH 서버호스트가같으므로 forward 서버에서단지 ssh -L 10110:www:110:www 와같이접속을하면된다. 아래는실제접속예이다. [root@forward /root]# ssh -L 10110:www:110 www root@www's password:xxxxxx <--- 암호입력 [root@www /root]# 이상태에서 forward 와 www 서버에서각각 netstat을해보면 forward 서버의경우 0 *:10110 *:* LISTEN foirward:47883 www:22 ESTABLISHED

와같이 10110번포트가리슨하고있으며 www 서버에 22번 ssh 포트로접속해있는상황을발견할수있을것이다. 그리고 www 서버의경우아래와같이 forward 서버의 ssh 연결이성립되어있는것을확인할수있다. www:22 forward:47883 ESTABLISHED 이상태에서외부에서 www 서버에 pop3d 연결을하려면바로 www서버에 110번으로연결하는것이아니라 forward 서버에 10110 번으로접속을하면된다. 아래와같이 forward 서버에 10110번포트로접속을하면 forward서버가아니라 www 서버의 110번포트가반응하는것을확인할수있다. # telnet forward 10110 Trying 211.1.1.2... Connected to forward. Escape character is '^]'. +OK POP3 www v2001.75 server ready 실제로아웃룩익스프레스등메일프로그램에서도받는메일서버(pop3) 에기존의 www 대신 forward 로입력하고 고급 탭에서도아래와같이기존의 110번포트대신에 10110 을입력한다. 그리고이와같은 ssh의포트포워딩방식으로 smtp 나 telnet, ftp 서비스도암호화전송할수있는데, 만약 smtp 서비스에대해기존의 25번대신 10125와같이포워딩하였을경우에는아래와같이포트를변경하여설정하면된다. < 그림> 포트포워딩시설정예. 이상태에서앞에서했던방법으로 tcpdump를이용하여스니핑을해서포트포워딩된패킷을캡처해보면암호화전송이되고있는것을확인할수있을것이다.

마치면서 TCP/IP가디자인될당시에는네트워크는그리복잡하지않았고상호간에신뢰할수있었기때문에그다지보안을고려하지않아 TCP/IP는그자체적으로매우많은보안적인결함을가지고있다. 앞에서밝힌것외에도다른많은보안적결함이있으며이를이용한많은공격들이인터넷상에존재한다. 이글을계기로늘사용하고있는 TCP/IP 프로토콜이그자체로얼마나보안적인취약점을안고있는지알수있는계기가되었기를바라며아울러실제적인방법이나기법보다는그작동원리에대해조금이나마알게되었기를바란다. 이외더많은정보에대해서는아래의사이트가도움이될것이다. 참고사이트 : http://packetstorm.decepticons.org/sniffers/ http://www.linuxsecurity.com/resource_files/network_security/sniffing-faq.html http://www.robertgraham.com/pubs/network-intrusion-detection.html http://www.certcc.or.kr/paper/tr2000/2000-07/tr2000-07.htm http://www.ietf.org/rfc/rfc0826.txt?number=826