Bài số 2: Làm việc với DHCP
Bài này yêu cầu thiết lập cơ chế gán địa chỉ tự động cho các trạm bằng giao thức DHCP. Các bước thực hiện như sau:
- Bước 1: Cài đặt và thiết lập cấu hình DHCP server
- Bước 2: Thiết lập cấu hình DHCP client
- Bước 3: Bắt gói tin để tìm hiểu cơ chế hoạt động của giao thức DHCP
- Bước 4: Kịch bản tương tranh nhiều DHCP server
Bước 1: cài đặt & cấu hình DHCP server
DHCP server phổ biến trên hệ thống Linux là gói DHCP (phiên bản hiện tại là 4.1). Có thể dùng lệnh yum để tải về và cài đặt:
Cấu hình DHCP server được mô tả trong file /etc/dhcp/dhcpd.conf. DHCP server sẽ cũng cấp địa chỉ IP cho các máy trong cùng mạng vật lý của máy chủ. Trong cấu hình bên dưới, DHCP server sẽ cung cấp địa chỉ IP trong dải 192.168.2.10 đến 192.168.2.20 với cấu hình mạng 192.168.2.0/25. Như vậy, máy chủ DHCP này phải có 1 kết nối mạng vào mạng 192.168.2.0/25. Ngoài ra, nó cung cấp thêm địa chỉ Default Gateway là 192.168.2.1 và DNS server là 4.4.4.4 và 8.8.8.8.
> nano /etc/dhcp/dhcpd.conf subnet 192.168.2.0 netmask 255.255.255.128 { range 192.168.2.10 192.168.2.20; default-lease-time 86400; max-lease-time 86400; option routers 192.168.1.1; option domain-name-servers 4.4.4.4,8.8.8.8; }
Bước 2: thiết lập DHCP client
Trên Windows, cấu hình địa chỉ IP động chỉ IP động thông qua các cửa sổ thiết lập cấu hình IP cho từng kết nối mạng.
Trên Linux, các card mạng cấu hình địa chỉ IP động được thiết lập bằng file cấu hình /etc/sysconfig/network-scripts/ifcfg-ethX trong đó ethX là tên của card mạng. Ví dụ:
Với cấu hình như trên, khi khởi động trạm làm việc, card mạng eth2 sẽ tự động thực hiện giao thức DHCP để tìm kiếm DHCP server trên mạng và xin cấp địa chỉ IP.
Bước 3: Tương tác DHCP client-server
Khởi động service DHCP trên máy chủ:
Trên máy client, có thể dùng lệnh dhclient -r để giải phóng IP đã được gán cho card mạng khi khởi động. Sau khi giải phóng địa chỉ IP, dùng ifconfig để hiển thị thông tin card mạng sẽ không thấy địa chỉ IP nào được gán cho card mạng này nữa. Tiếp theo, sử dụng lệnh dhclient -v để yêu cầu thiết lập lại địa chỉ IP và lại dụng ifconfig để xem cấu hình card mạng với địa chỉ IP vừa được gán. Để kiểm tra thông số Default Gateway, sử dụng lệnh route -n để xem bảng routing. Default Gateway được thiết lập (cho mạng 0.0.0.0) là 192.168.2.1.
[root@C1 ~]# dhclient -r eth2 [root@C1 ~]# ifconfig eth2 eth2 Link encap:Ethernet HWaddr 08:00:27:D6:C1:02 inet6 addr: fec1::7/64 Scope:Site inet6 addr: fe80::a00:27ff:fed6:c102/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:63 errors:0 dropped:0 overruns:0 frame:0 TX packets:20 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5334 (5.2 KiB) TX bytes:2380 (2.3 KiB) [root@C1 ~]# dhclient -v eth2 Internet Systems Consortium DHCP Client 4.1.1-P1 Copyright 2004-2010 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth2/08:00:27:d6:c1:02 Sending on LPF/eth2/08:00:27:d6:c1:02 Sending on Socket/fallback DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 5 (xid=0x3ddd558b) DHCPOFFER from 192.168.2.2 DHCPREQUEST on eth2 to 255.255.255.255 port 67 (xid=0x3ddd558b) DHCPACK from 192.168.2.2 (xid=0x3ddd558b) bound to 192.168.2.10 -- renewal in 41397 seconds. [root@C1 ~]# ifconfig eth2 eth2 Link encap:Ethernet HWaddr 08:00:27:D6:C1:02 inet addr:192.168.2.10 Bcast:192.168.2.127 Mask:255.255.255.128 inet6 addr: fec1::7/64 Scope:Site inet6 addr: fe80::a00:27ff:fed6:c102/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:68 errors:0 dropped:0 overruns:0 frame:0 TX packets:24 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6198 (6.0 KiB) TX bytes:3148 (3.0 KiB) [root@C1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth2
Để bắt và phân tích gói tin DHCP, sử dụng file log của hệ thống Linux /etc/log/messages. Thực hiện chạy DHCP server và tiến hành giải phóng địa chỉ IP (dhclient -r) rồi cấp lại IP (dhclient -v) ở máy client như trên. Tại máy server, hiển thị thông tin log (lọc theo DHCP):
Chú ý rằng VirtualBox mặc định cũng thiết lập một máy chủ DHCP để tự động gán địa chỉ IP cho các máy ảo sử dụng card mạng kiểu Host-only. Có thể cấu hình DHCP của VirtualBox thông qua menu File/Preference… và chọn mục Network.
Bước 4: Kịch bản tương tranh nhiều DHCP server
Cũng trong mạng LAN hiện tại, thiết lập thêm một DHCP server tại địa chỉ IP 192.168.2.5 với các thông số sau:
[root@hack ~]# cat /etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.sample # see 'man 5 dhcpd.conf' # subnet 192.168.2.0 netmask 255.255.255.128 { range 192.168.2.40 192.168.2.50; default-lease-time 86400; max-lease-time 86400; option routers 192.168.2.13; option domain-name-servers 1.2.3.4; } [root@C0 ~]# service dhcpd start Starting dhcpd: [ OK ]
Có thể thấy DHCP server này cũng cung cấp dải địa chỉ IP trong mạng 192.168.2.0/25 nhưng gán các thông số Default Gateway và DNS Server khác với DHCP server trước. Khởi động cả hai DHCP server này và kết nối một DHCP Client vào mạng:
[root@C1 ~]# dhclient -r eth2 [root@C1 ~]# dhclient -v eth2 Internet Systems Consortium DHCP Client 4.1.1-P1 Copyright 2004-2010 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth2/08:00:27:d6:c1:02 Sending on LPF/eth2/08:00:27:d6:c1:02 Sending on Socket/fallback DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 7 (xid=0x3072be37) DHCPOFFER from 192.168.2.5 DHCPREQUEST on eth2 to 255.255.255.255 port 67 (xid=0x3072be37) DHCPACK from 192.168.2.5 (xid=0x3072be37) bound to 192.168.2.40 -- renewal in 39348 seconds. [root@C1 ~]# ifconfig eth2 eth2 Link encap:Ethernet HWaddr 08:00:27:D6:C1:02 inet addr:192.168.2.40 Bcast:192.168.2.127 Mask:255.255.255.128 inet6 addr: fec1::7/64 Scope:Site inet6 addr: fe80::a00:27ff:fed6:c102/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:68 errors:0 dropped:0 overruns:0 frame:0 TX packets:24 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6198 (6.0 KiB) TX bytes:3148 (3.0 KiB) [root@C1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.2.13 0.0.0.0 UG 0 0 0 eth2
Nhìn vào thông tin hiển thị log khi máy trạm nhận địa chỉ IP có thể thấy, một cách ngẫu nhiên, máy trạm nhận lời mời của DHCP server mới (thay vì sử dụng DHCP server cũ) và được gán địa chỉ IP cùng với các thông số cấu hình theo server này. Đây là điểm yếu của giao thức DHCP cho phép hacker đột nhập vào một trạm trong mạng và tự tạo ra DHCP server với cấu hình Gateway, DNS giả mạo để ăn cắp các thông tin người dùng trên mạng.