PPP over Ethernet 개요 김학용 http://hakyongkim.net contents Ⅰ. PPP 개요 Ⅱ. PPPoE 개요및실험 Ⅲ. 요약및맺음말
PPP 개요 PPP 의필요성 PPP 의구성및동작 LCP 절차 PAP/CHAP 절차 IPCP 절차 PPP 상태천이도 PPP 패킷형식 3 PPP 의필요성! 사용자에대한개별적인인증 " 과금 " 사용자별서비스제어! 동적인 IP 주소할당 ppp 서버기능부 1 모뎀 ppp client 모뎀 인증서버 NAS Internet 모뎀 DHCP 서버 2 모뎀 ppp client NAS: Network Access Server 공중망에서의 PPP 활용 (ADSL 모뎀환경 ) 4
PPP 의구성및동작! PPPoE Discovery " PPPoE의경우이과정을먼저수행 " PPP 서버의 MAC 주소를찾아냄! LCP (Link Control Protocol) " 송수신단간의최대프레임길이결정 " 인증프로토콜종류결정! PAP/CHAP " User ID와 PW를사용해서인증과정수행 " PAP: Password Authentication Protocol " CHAP: Challenge Handshaking Authentication Protocol! IPCP (IP Control Protocol)! Network Layer 프로토콜에대한설정값할당! 서버로부터동적 IP, DNS, Default Gateway 할당받음 5 LCP 절차! 인증프로토콜종류및최대프레임길이협상 " Configuration Request, NACK, Reject, ACK 사용 ppp client ppp server 인증프로토콜종류 1. config-req (Aut Aut=PAP, Aut=CHAP, MRU=1500) 2. config-rej (Aut ( Aut=CHAP) 3. config-req (Aut Aut=PAP, MRU=1500) 최대패킷길이협상 4. config-nak (MRU=1492) 5. config-req (Aut Aut=PAP, MRU=1492) 6. config-ack (Aut( Aut=PAP, MRU=1492) 6
PAP 절차! User ID 와 PW 사용해서인증절차수행 " Plain Text PW 사용 " 점대점연결에서사용하기때문에보안문제없음 ppp client ppp server 사용자인증 1. PAPreq 2. User ID= HKIM HKIM,, password= asd1234 asd1234 7 IPCP 절차! Network Layer 에대한설정값할당 " Dynamic IP, DNS, Default Gateway ppp client ppp server 네트웍계층프로토콜에대한설정값할당 1. config-req (LocIP LocIP=0.0.0.0, PDNS=0.0.0.0, SDNS=0.0.0.0, PNBNS=0.0.0.0, SNBNS=0.0.0.0) 2. config-req(locip req(locip=211.55.98.35) 3. config-rej(pnbns=0.0.0.0, SNBNS=0.0.0.0) 4. config-ack(locip ACK(LocIP=211.55.98.35) 5. config-req(locip req(locip=0.0.0.0, PDNS=0.0.0.0, SDNS=0.0.0.0) 6. config-nack(locip NACK(LocIP=211.104.160.61,. PDNS=168.126.63.1, SDNS=168.126.63.2) 7. config-req(locip req(locip=211.104.160.61, PDNS=168.126.63.1, SDNS=168.126.63.2) 8. config-ack(locip ACK(LocIP=211.104.160.61,. PDNS=168.126.63.1, SDNS=168.126.63.2) NAS 는자신의 IP 주소를전송 PNBNS, SNBNS 는제공하지않음을통보 PNBNS, SNBNS 를제외한 Req 를송신. 8
PPP 상태천이도 초기화상태로써, 캐리어가감지되면 Establish 상태로천이 최대수신가능프레임길이, 인증프로토콜등을협상. 성공하면인증과정으로천이. 인증절차수행. 성공시네트웍상태로천이. 실패시터미네잇상태로천이. Link Dead Establish Opened Authenticate Fail Fail Success/ None Down Terminate Closing Network Terminate Req. 나 Terminate ACK 패킷교환하여 PPP 링크단절시킴. LCP Echo Request 와 Reply 패킷을사용하여 PPP 링크유지시킴 네트웍계층프로토콜에대한설정값을결정 9 PPP 패킷의형식 LL Frame Header (n) Protocol ID (2) PPP Payload (n) LL Frame Trailer (n) Ethernet AAL5 HDLC Value C021 C023 Protocol Name Link Control Protocol (LCP) PW Auth. Protocol (PAP) C025 Link Quality Request (LQR) C223 Challenge Handshake Auth. Protocol (CHAP) 0021 IP 0023 OSI Network Layer 002B IPX 0031 Bridging PDU 003F NetBIOS Framing 00CF PPP NLPID 8021 IP Control Protocol (IPCP) 8031 Bridging NCP (BCP) 10
LCP 패킷형식 LL Frame Header (n) Protocol ID = C021 Code ID Length (2) LCP Conf. Option (n) LL Frame Trailer (n) Code 1 LCP의종류 Configure-Request Type Length Data (m) 2 Configure-ACK 3 4 5 6 7 Configure-NACK Configure-Reject Terminate-Request Terminate-ACK Code-Reject Type 00 01 03 Reserved Name Maximum Receive Unit (MRU) Authentication Protocol Data Default=1500 C023: PAP, C223: CHAP 8 Protocol-Reject 04 Quality Protocol 9 Echo-Request 05 Magic Number 4 bytes 10 Echo-Reply 07 Protocol Field Compression 11 Discard-Request 08 Address and Control Field Compression 0d Callback 11 Multilink MRU 11 PAP 및 CHAP 형식! PAP 패킷형식 LL Frame Header (n) Protocol ID = C023 Code ID Length (2) Peer ID Length Peer ID String (n) Password Length Password String (n) LL Frame Trailer (n) 1: Authentication Request 2: Authentication ACK 3: Authentication NACK! CHAP 패킷형식 LL Frame Header (n) Protocol ID = C223 Code ID Length (2) CHAP data (n) LL Frame Trailer (n) 1: Challenge 2: Response 3: Success 4: Fail Challenge Value or Hash Value 12
IPCP 패킷형식 LL Frame Header (n) Protocol ID = 8021 Code ID Length (2) IPCP Conf. Option (n) LL Frame Trailer (n) Code 1 2 3 4 5 6 7 IPCP의종류 Configure-Request Configure-ACK Configure-NACK Configure-Reject Terminate-Request Terminate-ACK Code-Reject Type Type 2 3 0x81 (129) 0x82 (130) 0x83 (131) 0x84 (132) Length Data (m) IP Compression Protocol IP Address Name Primary DNS Address Primary NBNS Address Secondary DNS Address Secondary NBNS Address 13 PPPoE 개요및실험 PPPoE 의필요성 PPPoE 의프레임형식 PPPoE Discovery 과정 PPPoE 실험환경 PPPoE 실험결과및패킷구조 14
PPPoE 의필요성! LAN 에서사용자의엄격환관리가필요한경우 " 외부로의과도한트래픽을발생시키는사용자 " 해킹을하는불법사용자를색출하기원할때 " 사용자별로차별화된서비스를제공하고자할때 Internet 1 2 non ppp clients LAN 환경에서의인증절차가없는일반적인경우 1 2 인증서버 POP 서버 DHCP 서버 Internet ppp client non ppp client LAN 환경에서의인증절차가있는경우 15 PPPoE 의프레임형식 Dest MAC Add (6) Src MAC Add (6) EtherType (2) Ver=1 (4b) Type=1 (4b) Code (2) Session PPPoE Payload ID (2) Length (2) TagType (2) TagValue Length (2) 8863: Discovery 과정에서사용 8864: Session 상태에서사용 09 = PPPoE Active Discovery Initiation (PADI) 07 = PPPoE Active Discovery Offer (PADO) 19 = PPPoE Active Discovery Request (PADR) 65 = PPPoE Active Discovery Session-Confirm (PADS) 00 = PPPoE Session 16
PPPoE Discovery client NAS NAS 의 MAC 주소를알아내기위해 PAID 전송 적합한 NAS 를선택해서해당 NAS 에게 PADR 을전송 PAD Initiation PAD Request PAD Offer PAD Session-Confirm ( 여러개의 ) NAS 는자신의 MAC 주소를알려줌 PADS 로 PPPoE 연결이성공한것을확인시킴 17 PPPoE 실험환경 PPPoE/PPP Server Hub eth1 eth0: 192.169.0.10 외부망 192.169.0.10 PPPoe/PPP Client (Linux Client) User Name Password e-watch Web Server IP=192.169.0.11 GW=192.169.0.10 18
PADI 의예 PPPoE Discovery 과정 PPPoE Discovery 는 4 단계로구성되며처음에클라이언트가 PAD Initiation 패킷을보냄으로써시작된다. PPPoE Discovery 과정이끝나기전까지는세션이설정되지않아 Session ID=0 상태가유지된다. 세션이설정될때마다 Session ID 는 1 씩증가한다. 19 PADO 의예 PPPoE Discovery 과정 클라이언트의 PADI 에대해 AC 서버는 PAD Offer 패킷으로응답한다. PADO 패킷에는 AC 서버의이름과 AC- Cookie Tag 값이포함되어있다. AC-Cookie Tag 값은 AC 가 Denial of Service (DoS) 공격을피하기위해사용한다. 즉, 클라이언트가 PAD Request 할때이값을포함하지않고있으면, 허락되지않은 Request 로간주하여폐기하게된다. 만약이런과정을거치지않으면악의적인사용자가엄청난양의 PAD Request 패킷만을전송함으로써 AC 서버가다른서비스를거부하게되는 (DoS) 현상을일으킬수있게된다. 20
PADR 의예 PPPoE Discovery 과정 PADO 과정에서 AC 서버가클라이언트에게제공한 AC-Cookie Tag 값이그대로포함되어있다. 이값이없는 PADR 패킷이도착하면, 서버는그대로버림으로써만일에발생할수있는 DoS 공격을막게된다. 21 PADS 의예 PPPoE Discovery 과정 PPPoE Session 상태로진입했으므로 Session ID 가 0 이아닌값이됐다. 실험에서는세션이생길때마다세션 ID 값이 1 씩증가하는것을확인할수있었다. 22
MRU Decision Request LCP 과정 LCP 과정은 MRU (Maximum Receive Unit) 과인증프로토콜을결정하는것으로구성된다. 먼저클라이언트는자산의 MRU 를서버에알리게된다. 23 MRU Decision ACK LCP 과정 AC 서버가 MRU 를 1492 로해도좋음을클라이언트에게알린다. 24
CHAP Decision Request LCP 과정 서버는자신이 CHAP 인증을사용함을클라이언트에게알린다. 25 CHAP Decision ACK LCP 과정 클라이언트가인증방식에대해 ACK 를보낸다. 26
CHAP Server Request LCP 과정 서버는 Challenge Value (CV) 를클라이언트에보내면서 ID 와 PW 를요청하게된다. 27 CHAP Client Response LCP 과정 ID 는삼성이며, 사용자 PW, CHAP challenge value (CV), ID Value 를 MD5 를사용해서 Hash Value 를만든다. 28
CHAP Success LCP 과정 인증성공 29 Server 의 Local IP IPCP 과정 서버가자신의 Local IP 주소가 10.0.0.1 임을알려준다. 30
Client 의 L3 Conf. Info. Request IPCP 과정 클라이언트가자신의 Local IP, PDNS, SDNS 를요청한다. 서버는 PDNS 와 SDNS 에대해리젝트로응답한다. 31 Client 의 Local IP 요청및 Server 의 NACK IPCP 과정 클라이언트는다시 Local IP 를요청하고그에대한응답으로 168.219.137.18 을할당받는다. 32
Client 의 Local IP Request 및 Server 의 Confirm IPCP 과정 서버로부터할당받은 Local IP 주소가맞으며사용해도되는지를다시확인한다. 33 ECHO Request and Reply LCP 과정 PPP 세션이설정되면 Echo Request 와 Reply 를주기적으로보냄으로써세션이살아있음을알리게된다. 34
Terminate Request and Reply LCP 과정 사용자가 PPP 세션을종료하고자하면 Terminate Request 를보내게되고그에대한 ACK 를통해세션이종료된다. 세션의종료는중요한과정이므로클라이언트와서버사이에서특수한데이터를사용하게된다. 35 PADT (PAD Terminate) PPPoE Discovery 과정 여전히처음의 PPPoE Discovery 과정에사용된값과동일한값을사용하고있다. 36
요약및맺음말 PPPoE 의필요성 PPPoE 의프레임형식 PPPoE Discovery 과정 PPPoE 실험환경 PPPoE 실험결과및패킷구조 37 요약및맺음말 PPP 는클라이언트와서버가점대점 (Point-to-Point) 로연결되는환경에서사용자인증및동적주소할당과같은목적을위해개발된프로토콜이다. 사용자인증을통해과금은물론, 사용자에따라서비스에대한액세스제어를함으로써차등화된서비스를제공할수도있다. PPP 는 LCP, PAP/CHAP, IPCP 와같은세개의과정으로구성된다. LCP 과정에서는최대프레임크기및인증방식을결정하며, PAP/CHAP 과정에서는인증과정이수행된다. IPCP 과정에서는 Local IP, DNS, NetBios Name Server 와같은 Network Layer 설정값을서버로부터할당받게된다. PPPoE 는 Ethernet 환경에서 PPP 를사용하도록한것으로, LAN 환경에서사용자의내부 / 외부네트웍접속권한및서비스액세스를제어할수있도록해준다. PPP 서버의 MAC 주소를찾는 PPPoE Discovery 과정을거친후, LCP, PAP/CHAP, IPCP 의과정을거치게된다. LAN 환경에서는사용자 Password 가암호화되는 CHAP 를사용하는것이더욱바람직하다. 38
김학용삼성네트웍스컨설팅팀 http://hakyongkim.net hakyongkim.net 39