본문 바로가기
모의해킹 침해대응 과정/Liunx 관리

DHCP server / day 23

by 알거음슴 2021. 4. 27.

DHCP(Dynamic Host Configuration Protocol)

네트워크 관리자들이 조직 내 네트워크 상에서 IP 및 네트워크 서비스 (IP, netmask, DNS, Gateway)등 여러 설정을 관리 할당할 수 있는 서버이다. 효율적인 IP 관리와 보안적인측면 최근에는 노트북/핸드폰 같은 무선AP 관리에 많은 활용이 되고있다.

 BOOTP 라는 protocol 의 일부를 가져와 만들어진것이 DHCP이다.

 

[참고] IP 주소의 종류

 고정 IP : IP 를 직접 설정한 IP

 유동 IP : IP 를 DHCP server로 부터 부여받은 경우

 사설 IP : 라우팅이 안되는 IP  (NAT 를 통해 사설을 공인으로 변경 시 공인망 이용가능) 

 공인 IP : 라우팅이 되는 IP 

 

동작 원리 

 1. 같은 네트워크 내 존재 시. (DHCP DORA 과정)

1) Client --> Server  :  (Discover)

 Client 에서 DHCP 서버가 있는지 찾기위해 동작

2) Server --> Client  :  (Offer)

 discover 받은 server는 할당 가능한 ip의 유무를 확인 (ARP, ICMP) 이후 할당가능한 네트워크 서비스 정보를 담은 dhcpoffer 를 전달한다.

3) Client --> Server  :  (Request) 

offer 로 받은 네트워크 서비스 정보를 적용 후 사용의사를 알리는 request를 server 에게 전송

4) Server --> Client  :  (Acknowledge)

 request를 받은 server는 사용허가를 전달, client는 보내준정보를 받아서 설정하게 된다.

 

 2. 다른 네트워크 에 존재 시. (일반 가정)

위 과정과 동일하나. client와 server 사이에 BOOTP Relay server 가 존재한다. 말그대로 정보를 중간에 전달하는 역할을 진행하며, DORA 과정내 client 와 server의 소통을 중간에서 중계하는 역할을 해준다.

 

 

DHCPserver 구성

 1) DHCP Server

패키지: dhcp

데몬 & 포트 & 프로토콜: dhcpd(67/udp)

주 설정 파일: /etc/dhcp/dhcpd.conf  (/usr/share/doc/dhcp-server/dhcpd.conf.example)

서브 설정 파일:

서비스: dhcpd.service

 2) DHCP Client

패키지: dhcp-client

명령 & 포트 & 프로토콜: dhclient(68/udp)

주 설정 파일: /etc/dhcp/dhclient.conf

서브 설정 파일: /etc/dhcp/dhclient.d/

스크립트: /etc/NetworkManager/dispatcher.d/11-dhclient

 

 1. 설정 파일 분석

매개변수 : 지시자와 값으로 이루어져잇는 형태.

선언 : {}로 묶여져있는 현태

 /etc/dhcp/dhcpd.conf 파일분석

 *기본적으로 /usr/share/doc/dhcp-server/dhcpd.conf.example을 참조하게됨, 자료를 가져와서 편집

option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
 * 클라이언트에 제공되는 도메인 이름과 도메인 서버 목록

default-lease-time 600;
max-lease-time 7200;
 * 임대 기간 설정(단위: ), 최대 임대 기간 설정(단위: )

# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;
 * 동적 DNS 설정 여부 지정 ( none : 활용안함 / DNSserver 를 지정하면 활용 )

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
 * DHCP 로그 메시지를 보낼때 메시지 종류 지정 ( local7 : /log/messges )

subnet 10.152.187.0 netmask 255.255.255.0 {
}
 * 서비스를 제공하지 않을 네트워크 지정 ( {} 내 값이 없음 )

# This is a very basic subnet declaration.
subnet 10.254.239.0 netmask 255.255.255.224 {
range 10.254.239.10 10.254.239.20;
option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}
* 가장 기본적인 서브네트워크 선언 ( IP, netmask, gateway )

subnet 10.254.239.32 netmask 255.255.255.224 {

range dynamic-bootp 10.254.239.40 10.254.239.60;

option broadcast-address 10.254.239.31;

option routers rtr-239-32-1.example.org;

* BOOTP 클라이언트에게 동적 주소를 제공하기 위한 선언

host passacaglia {

hardware ethernet 0:0:c0:5d:bd:95;

filename "vmunix.passacaglia";

server-name "toccata.example.com";

* 특정 MAC 주소를 가진 클라이언트에게 부팅 이미지를 제공하기 위한 설정

# set.

host fantasia {

hardware ethernet 08:00:07:26:c0:a5;

fixed-address fantasia.example.com;

}

* 특정 MAC 주소를 가진 클라이언트에게 고정으로 IP 주소를 할당하기 위한 설정

 

class "foo" {

match if substring (option vendor-class-identifier, 0, 4) = "SUNW";

}

shared-network 224-29 {

subnet 10.17.224.0 netmask 255.255.255.0 {

option routers rtr-224.example.org;

}

subnet 10.0.29.0 netmask 255.255.255.0 {

option routers rtr-29.example.org;

}

pool {

allow members of "foo";

range 10.17.224.10 10.17.224.250;

}

pool {

deny members of "foo";

range 10.0.29.10 10.0.29.230;

}

}

* 복잡한 형태의 네트워크 구성 정보 설정

[참고] 주요 선언 예시

 서브넷 선언(Subnet Declaration)

subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.254;
option subnet-mask 255.255.255.0;

option domain-name "example.com";
option domain-name-servers 192.168.1.1;

option time-offset -18000; # Eastern Standard Time

range 192.168.1.10 192.168.1.100;

}

 공유 네트워크 선언(Shared-network Declaration)

shared-network name {
option domain-name "test.redhat.com";
option domain-name-servers ns1.redhat.com, ns2.redhat.com;
option routers 192.168.0.254;
... more parameters for EXAMPLE shared-network ...
subnet 192.168.1.0 netmask 255.255.252.0 {
...parameters for subnet...
range 192.168.1.1 192.168.1.254;
}
subnet 192.168.2.0 netmask 255.255.252.0 {
...parameters for subnet....
range 192.168.2.1 192.168.2.254;
}
}

DHCP 서버를 통한 고정 IP 설정(Static IP Address using DHCP)

host linux140 {
option host-name "linux140.example.com";
hardware ethernet 00:A0:78:8E:9E:AA;
fixed-address 192.168.1.4;
}

 

 /etc/dhcp/dhclient.conf 파일분석

* 기본적으로 /usr/share/doc/dhcp-client/dhclient.conf.example 을 참조하게됨, 자료를 가져와서 편집

request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, host-name;
require subnet-mask, domain-name-servers;
 * 해당 내용의 값을 요청하게 됨.

 

[실습] DHCP server 구축 및 유동IP 요청

 * /var/lib/dhcpd/dhcpd.leases : DHCP의 네트워크 서비스 제공 이력 확인 파일.

[실습] DHPC server 구축 및 고정IP 요청

 * NIC 카드를 추가하여 dhcp 를 받아올 수 있게 설정한다.

'모의해킹 침해대응 과정 > Liunx 관리' 카테고리의 다른 글

SSH server / day 22  (0) 2021.04.26
NTP server / day 22  (0) 2021.04.26
Log server / day 21  (0) 2021.04.23
SAMBA server / day 21  (0) 2021.04.23
NFS server / day 20  (0) 2021.04.22