1. DHCP 서비스를 사용할 때 흔히 발생하는 문제 DHCP 서버를 구축하면 클라이언트에 IP 주소, 서브넷 마스크, 기본 게이트웨이, DNS 서버 등 네트워크 파라미터를 자동으로 할당할 수 있어 네트워크 구성이 간소화되고 관리 효율이 높아집니다. 다만 DHCP 서비스 관리에는 몇 가지 문제가 있으며, 대표적인 것은 다음과 같습니다.
·DHCP Server 사칭
·DHCP Server에 대한 DoS ***, 예컨대 DHCP 고갈 ***
·일부 사용자가 IP 주소를 임의로 지정해 IP 주소 충돌 발생
1) DHCP Server 사칭 DHCP 서버와 클라이언트 사이에는 인증 메커니즘이 없기 때문에 네트워크에 DHCP 서버를 아무렇게나 추가하면 그 서버가 클라이언트에 IP 주소와 기타 네트워크 파라미터를 할당할 수 있습니다. 그 DHCP 서버가 잘못된 IP 주소와 기타 네트워크 파라미터를 할당하게 되면 네트워크에 매우 큰 피해를 줄 수 있습니다.
2) DHCP Server에 대한 서비스 거부 ***
일반적으로 DHCP 서버는 클라이언트가 보낸 DHCP 요청 패킷의 CHADDR(즉 Client MAC address) 필드를 검사해 클라이언트의 MAC 주소를 판단합니다. 정상적인 경우 이 CHADDR 필드는 요청 패킷을 보낸 클라이언트의 실제 MAC 주소와 동일합니다. ***자는 MAC을 위조하는 방식으로 DHCP 요청을 보낼 수 있지만, 이러한 ***는 Cisco 스위치의 포트 보안(Port Security) 기능으로 막을 수 있습니다. 포트 보안 기능(Port Security)은 각 포트에서 고유한 MAC 주소 하나만 사용하도록 제한할 수 있습니다. 하지만 ***자가 DHCP 요청 패킷의 출발지 MAC 주소는 바꾸지 않고 DHCP 패킷의 CHADDR 필드를 변조해 ***를 수행하면 포트 보안은 효과가 없습니다. DHCP 서버는 서로 다른 CHADDR 값을 서로 다른 클라이언트에서 온 요청으로 인식하므로, ***자는 위조된 CHADDR을 가진 DHCP 요청을 대량으로 보내 DHCP 서버의 주소 풀을 고갈시킬 수 있고, 그 결과 다른 정상 사용자에게 네트워크 주소를 제공할 수 없게 됩니다. 이것이 DHCP 고갈 ***입니다. DHCP 고갈 ***는 순수한 DoS ***일 수도 있고, 위조된 DHCP 서버와 함께 사용될 수도 있습니다. 정상 DHCP 서버가 마비되면 ***자는 위조 DHCP 서버를 세워 LAN 내 클라이언트에 주소를 제공하고, 클라이언트가 정보를 가로채려는 악성 컴퓨터로 정보를 전달하도록 만들 수 있습니다. 심지어 DHCP 요청 패킷의 출발지 MAC 주소와 CHADDR 필드가 모두 정확하더라도, DHCP 요청 패킷은 브로드캐스트 패킷이므로 대량으로 전송하면 네트워크 대역폭을 고갈시켜 또 다른 형태의 서비스 거부 ***가 됩니다.
3) 클라이언트가 IP 주소를 임의로 지정 클라이언트가 반드시 DHCP 서비스를 사용해야 하는 것은 아니며, 정적으로 지정하는 방식으로 IP 주소를 설정할 수 있습니다. 임의로 지정하면 네트워크에서 IP 주소가 충돌할 가능성이 크게 높아집니다.
2. DHCP Snooping 기술 소개
DHCP 스누핑(DHCP Snooping)은 DHCP 보안 기능입니다. Cisco 스위치는 VLAN별로 DHCP 스누핑 기능을 활성화할 수 있습니다. 이 기능을 통해 스위치는 2계층 VLAN 영역 내의 모든 DHCP 패킷을 가로챌 수 있습니다.
DHCP 스누핑은 스위치 포트를 두 가지로 구분합니다.
·비신뢰 포트: 일반적으로 PC, 네트워크 프린터 등 단말 장치를 연결하는 포트
·신뢰 포트: 정상 DHCP 서버를 연결한 포트 또는 집선 스위치를 연결하는 업링크 포트
DHCP 스누핑 기능을 켜면 스위치는 사용자 포트(비신뢰 포트)가 DHCP 요청만 보낼 수 있도록 제한하고, 사용자 포트에서 들어오는 그 밖의 모든 DHCP 패킷(예: DHCP Offer 패킷 등)은 폐기합니다. 또한 사용자 포트에서 들어오는 모든 DHCP 요청이 통과 허용되는 것은 아니며, 스위치는 DHCP 요청 패킷의 (헤더에 있는) 출발지 MAC 주소와 (내용에 있는) DHCP 클라이언트의 하드웨어 주소(즉 CHADDR 필드)를 비교해 두 값이 동일한 요청 패킷만 전달하고 그렇지 않으면 폐기합니다. 이렇게 해서 DHCP 고갈 ***를 방지합니다.
신뢰 포트는 모든 DHCP 패킷을 수신할 수 있습니다. 스위치에서 정상 DHCP 서버에 연결된 포트만 신뢰 포트로 설정하고 나머지 포트를 비신뢰 포트로 설정하면, 사용자가 DHCP 서버를 위조해 네트워크를 ***하는 것을 막을 수 있습니다. DHCP 스누핑 기능은 포트의 DHCP 패킷 속도를 제한할 수도 있습니다. 각 비신뢰 포트에서 속도를 제한하면 정상 DHCP 요청 패킷을 이용한 브로드캐스트 ***를 막을 수 있습니다.
DHCP 스누핑의 또 하나의 매우 중요한 역할은 DHCP 스누핑 바인딩 테이블(DHCP Snooping Binding)을 만드는 것입니다. 비신뢰 포트에 연결된 클라이언트가 정상적인 DHCP Offer를 받으면, 스위치는 DHCP 스누핑 바인딩 테이블에 바인딩 항목을 자동으로 추가합니다. 항목에는 해당 비신뢰 포트 클라이언트의 IP 주소, MAC 주소, 포트 번호, VLAN 번호, 임대 기간 등의 정보가 포함됩니다. 예:
Switch#show ip dhcp snooping binding
MacAddress IpAddress Lease(sec) Type VLAN Int
00:0F:1F:C5:10:08 192.168.10.131 682463 dhcp-snooping 10 FastEthernet0/1
이 DHCP 스누핑 바인딩 테이블은 IP 소스 가드(IPSG)와 동적 ARP 검사(DAI)를 추가로 구축하기 위한 근거를 제공합니다. 설명:
I. 비신뢰 포트는 클라이언트의 DHCP 요청 패킷만 통과시키는데, 이는 DHCP 패킷에 한해서만 그렇습니다. 다른 비 DHCP 패킷은 정상적으로 전달될 수 있습니다. 즉 클라이언트는 IP 주소를 정적으로 지정하는 방식으로 비신뢰 포트를 통해 네트워크에 접속할 수 있습니다. 정적 클라이언트는 DHCP 패킷을 보내지 않으므로 DHCP 스누핑 바인딩 테이블에도 해당 정적 클라이언트의 기록이 남지 않습니다.
신뢰 포트의 클라이언트 정보는 DHCP 스누핑 바인딩 테이블에 기록되지 않습니다. 클라이언트가 신뢰 포트에 연결되어 있으면 정상적인 DHCP 방식으로 IP 주소를 받았더라도 DHCP 스누핑 바인딩 테이블에 그 클라이언트의 기록이 없습니다. 클라이언트가 동적으로 IP를 받는 방식으로만 네트워크에 접속하도록 요구하려면 IPSG와 DAI 기술을 사용해야 합니다.
II. 스위치는 고속 전달을 위해 일반적으로 패킷의 2계층 프레임 헤더만 검사하고 목적지 MAC 주소를 확인한 뒤 바로 전달하며 패킷 내용은 검사하지 않습니다. DHCP 스누핑은 본질적으로 스위치가 DHCP 패킷의 내용 부분까지 검사하도록 하는 것이며, DHCP 패킷은 더 이상 프레임 헤더만 검사받지 않습니다.
III. DHCP 스누핑 바인딩 테이블은 DHCP *** 방어에 쓰일 뿐만 아니라 이후의 IPSG 및 DAI 기술에 동적 데이터베이스 지원을 제공합니다.
DHCP-SNOOPING 구성
DHCP-snooping 구성 작업
DHCP-snooping의 작업은 DHCP 패킷을 판별해 위조된 DHCP 서버가 DHCP 서비스를 제공하는 것을 막고, 인터페이스에서 MAC 주소와 IP 주소의 대응 바인딩 관계를 유지하는 것입니다. MAC 주소와 IP 주소의 대응 바인딩에 따라 DAI(동적 ARP 감시)와 IP source guard 기능을 수행할 수 있습니다. DHCP-snooping 기능은 주로 DHCP 패킷 스누핑, MAC 주소와 IP 주소의 대응 바인딩 테이블 동적 유지 관리를 포함하며, 2계층 스위치는 비신뢰 포트에서 이러한 대응 바인딩 관계를 만족하지 않는 패킷을 필터링해 불법 사용자의 네트워크 ***를 방지합니다.
·DHCP-snooping 기능 켜기/끄기
·VLAN에서 DHCP-snooping 활성화
·인터페이스를 DHCP 신뢰 인터페이스로 구성
·VLAN에서 DAI 기능 활성화
·인터페이스를 ARP 감시 신뢰 인터페이스로 구성
·VLAN에서 IP 소스 주소 감시 기능 활성화
·인터페이스를 IP 소스 주소 감시 신뢰 인터페이스로 구성
·DHCP-snooping 바인딩 백업용 TFTP 서버 구성
·DHCP-snooping 바인딩 백업 파일 이름 구성
·DHCP-snooping 바인딩 백업 시간 간격 구성
·바인딩 관계 수동 추가
·DHCP-snooping 모니터링 및 유지 관리
·DHCP-snooping 구성 예시
Switch(config)#ip dhcp snooping //DHCP Snooping 기능 켜기
Switch(config)#ip dhcp snooping vlan 10 //DHCP Snooping 기능이 적용될 VLAN 설정
Switch(config)#ip dhcp snoopiing verify mac-address //비신뢰 포트에서 수신한 DHCP 요청 패킷의 출발지 MAC과 CHADDR 필드가 동일한지 검사해 DHCP 고갈 ***를 방지, 이 기능은 기본적으로 켜져 있음.
Switch(config-if)#ip dhcp snooping trust //인터페이스를 DHCP 스누핑 기능의 신뢰 인터페이스로 구성, 모든 인터페이스는 기본적으로 비신뢰 인터페이스
Switch(config-if)#ip dhcp snoopiing limit rate 15 //비신뢰 포트의 DHCP 패킷 속도를 초당 15개로 제한(기본값이 초당 15개), 이 명령을 설정하지 않으면 show ip dhcp snooping 결과에 해당 명령이 없는 포트가 표시되지 않음, 선택 가능한 속도 범위는 1-2048
권장 사항: 포트의 DHCP 패킷 속도 제한을 구성한 뒤에는 다음 두 명령을 함께 구성하는 것이 좋습니다.
Switch(config)#errdisable recovery cause dhcp-rate-limit //DHCP 패킷 속도 제한 때문에 비활성화된 포트가 err-disable 상태에서 자동으로 복구되도록 함, 30초가 지나야 복구됨
Switch(config)#ip dhcp snooping information option //스위치가 비신뢰 포트에서 수신한 DHCP 패킷에 Option 82를 삽입할지 설정, 기본값은 켜짐 상태
Swtich(config)#ip dhcp snooping information option allow-untrusted //집선 스위치가 비신뢰 포트에서 수신한, 액세스 스위치가 보낸 옵션 82가 포함된 DHCP 패킷을 수신하도록 설정
Switch#ip dhcp snooping binding 000f.1fc5.1008 vlan 10 192.168.10.131 interface fa0/2 expiry 692000 //특권 모드 명령: DHCP 스누핑 바인딩 항목을 수동으로 추가, expiry는 시간 값으로 스누핑 바인딩의 lease(임대 기간)
Switch(config)#ip dhcp snooping database flash:dhcp_snooping.db //DHCP 스누핑 테이블을 flash에 저장, 파일 이름은 dhcp_snooping.db
Swtich(config)#ip dhcp snooping database tftp://192.168.2.5/Switch/dhcp_snooping.db //사전에 도달 가능한지 확인할 것. URL에서 Switch는 tftp 서버 아래의 폴더이며, 저장된 파일 이름은 dhcp_snooping.db이고, 저장 위치를 변경하면 즉시 ‘쓰기’ 작업이 수행됨.
Swtich(config)#ip dhcp snooping database write-delay 30 //DHCP 스누핑 바인딩 테이블이 갱신된 후 30초를 기다렸다가 파일에 기록, 기본값은 300초, 선택 범위는 15-86400초
Switch(config)#ip dhcp snooping database timeout 60 //DHCP 스누핑 바인딩 테이블 쓰기 작업이 실패하면 다시 쓰기를 시도하고 60초 후에 시도를 중단, 기본값은 300초, 선택 범위는 0-86400초
설명: 실제로 DHCP 스누핑 바인딩 테이블이 변경되면 먼저 write-delay 시간만큼 기다린 뒤 쓰기 작업을 수행합니다. 쓰기 작업이 실패하면(예: tftp 서버 도달 불가) 이어서 timeout 시간만큼 기다리며 그 시간 동안 계속 재시도합니다. timeout 시간이 지나면 쓰기 시도를 중단합니다. 그러나 스누핑 바인딩 테이블은 이미 변경된 상태이므로 다시 write-delay 시간을 기다린 뒤 쓰기 작업을 수행하는 과정을 반복하며, 쓰기 작업이 성공할 때까지 계속됩니다.
Switch#renew ip dhcp snooping database flash:dhcp_snooping.db //특권 레벨 명령: 저장된 데이터베이스 파일에서 DHCP 스누핑 테이블을 즉시 읽어옴.
DHCP Snooping 상태 표시
Switch#show ip dhcp snooping //현재 DHCP 스누핑의 각 옵션과 각 포트의 구성 상태 표시
Switch#show ip dhcp snooping binding //현재 DHCP 스누핑 바인딩 테이블 표시
Switch#show ip dhcp snooping database //DHCP 스누핑 바인딩 데이터베이스 관련 정보 표시
Switch#show ip dhcp snooping statistics //DHCP 스누핑 동작 통계 표시
Switch#clear ip dhcp snooping binding //DHCP 스누핑 바인딩 테이블 삭제, 주의: 이 명령은 단일 항목을 삭제할 수 없고 모든 항목만 삭제할 수 있음
Switch#clear ip dhcp snooping database statistics //DHCP 스누핑 바인딩 데이터베이스 카운터 초기화
Switch#clear ip dhcp snooping statistics //DHCP 스누핑 동작 통계 카운터 초기화
DHCP Snooping 예시
1) 단일 스위치(DHCP 서버와 DHCP 클라이언트가 동일 VLAN에 위치)
환경: Windows 2003 DHCP 서버와 클라이언트가 모두 Vlan 10에 위치, 서버는 F0/1에, 클라이언트는 F0/2에 연결
ip dhcp snoopiing vlan 10
ip dhcp snooping
!
int f0/1
switchport access vlan 10
spanning-tree portfast
ip dhcp snooping trust
!
int f0/2
switchport access vlan 10
spanning-tree portfast
ip dhcp snooping limit rate 15
설명:
·이 예시에서 스위치는 클라이언트의 DHCP 요청 패킷에 옵션 82 정보를 삽입합니다. no ip dhcp snooping information option 명령을 구성해 옵션 82 정보를 삽입하지 않도록 선택할 수도 있습니다. 두 경우 모두 가능합니다.
·클라이언트 포트에는 spanning-tree portfast 명령 구성을 권장합니다. 이렇게 하면 해당 포트가 스패닝 트리 계산에 참여하지 않아 포트 시작 시간이 줄고, 포트 시작 시간이 길어져 클라이언트가 IP 주소를 받지 못하는 상황을 방지할 수 있습니다.
·DHCP 스누핑 기능을 켠 VLAN은 해당 VLAN의 3계층 인터페이스가 생성되어 있을 필요가 없습니다.







