Vấn đề: Ai cũng có thể cắm vào và truy cập mạng
Vài năm trước, tôi được gọi đến một công ty tầm trung để điều tra một vụ tấn công ransomware. Kẻ tấn công chỉ đơn giản là bước vào phòng họp, cắm laptop vào một cổng Ethernet bỏ trống, và dành ba ngày di chuyển ngang qua toàn bộ hệ thống mạng. Không một cảnh báo nào được kích hoạt. Không ai phát hiện ra cho đến khi các file server bắt đầu tự mã hóa dữ liệu.
Nguyên nhân gốc rễ đơn giản đến mức xấu hổ: hoàn toàn không có cơ chế kiểm soát tại biên mạng. Bất kỳ thiết bị nào — laptop cá nhân, Raspberry Pi lạ, tablet của nhà thầu — đều có thể kết nối vào bất kỳ cổng nào và lập tức truy cập tài nguyên nội bộ. Điều này không phải là hiếm gặp. Hầu hết mạng doanh nghiệp vẫn vận hành theo kiểu tin tưởng ngầm định: nếu bạn có thể cắm dây vào, bạn đã ở trong mạng.
Network Access Control giải quyết vấn đề này bằng cách buộc mạng phải thẩm vấn mọi thiết bị trước khi cấp quyền truy cập: Bạn là ai? Bạn có tuân thủ chính sách không? Bạn có được phép ở đây không? PacketFence là nền tảng NAC mã nguồn mở hàng đầu. Nó xử lý cả mạng có dây 802.1X lẫn mạng không dây thông qua RADIUS, gán VLAN, và captive portal.
Khởi động nhanh: Chạy PacketFence trong 5 phút
Cách nhanh nhất để đánh giá PacketFence là dùng virtual appliance ZEN (Zero Effort NAC) của họ. Tải về từ trang chính thức và import vào VirtualBox hoặc VMware. Máy ảo khởi động vào môi trường đã cấu hình sẵn với giao diện web trên cổng 1443 — không cần thiết lập thủ công.
Cấu hình Lab tối thiểu
Để kiểm thử triển khai thực tế, bạn cần tối thiểu:
- 1 server PacketFence (Ubuntu 22.04 hoặc RHEL 9, tối thiểu 4 vCPU / 8 GB RAM)
- 1 managed switch hỗ trợ 802.1X và RADIUS (Cisco, HP Aruba, Juniper đều dùng được)
- 1 máy client để kiểm thử (Windows hoặc Linux)
Cài đặt PacketFence trên Ubuntu 22.04:
# Thêm repository PacketFence
curl -sSL https://packagecloud.io/inverse-inc/PacketFence/gpgkey | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/packetfence.gpg
echo "deb https://packagecloud.io/inverse-inc/PacketFence/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/packetfence.list
sudo apt update
sudo apt install -y packetfence
# Chạy công cụ cấu hình
sudo /usr/local/pf/bin/pfcmd configurator run
Công cụ cấu hình sẽ hướng dẫn từng bước: gán interface, thiết lập database, và tạo thông tin đăng nhập admin ban đầu. Sau khi hoàn tất, truy cập giao diện quản trị tại https://<server-ip>:1443.
Tìm hiểu sâu: PacketFence kiểm soát truy cập như thế nào
Luồng xử lý RADIUS
Khi một thiết bị kết nối vào cổng switch hỗ trợ 802.1X hoặc SSID Wi-Fi, đây là những gì xảy ra theo từng bước:
- Switch gửi EAP-Request/Identity đến thiết bị đang kết nối
- Thiết bị phản hồi bằng thông tin xác thực (chứng chỉ, tên người dùng/mật khẩu, hoặc địa chỉ MAC)
- Switch chuyển tiếp RADIUS Access-Request đến PacketFence
- PacketFence kiểm tra trong database nội bộ, Active Directory, hoặc LDAP
- PacketFence phản hồi Access-Accept hoặc Access-Reject, kèm theo gán VLAN qua các thuộc tính RADIUS
- Switch đặt cổng vào đúng VLAN tương ứng
PacketFence sử dụng FreeRADIUS nội bộ kết hợp LDAP, được cấu hình tự động. Bạn hầu như không bao giờ phải chỉnh sửa trực tiếp các file cấu hình FreeRADIUS.
Cấu hình Switch làm Network Device
Trong giao diện quản trị PacketFence, vào Configuration → Network Devices → Switches và thêm switch của bạn. Đây là cấu hình tối thiểu tương đương cho switch Cisco IOS:
# Trên switch Cisco của bạn
aaa new-model
aaa authentication dot1x default group radius
aaa authorization network default group radius
dot1x system-auth-control
radius server PACKETFENCE
address ipv4 192.168.1.10 auth-port 1812 acct-port 1813
key YourSharedSecret
interface GigabitEthernet0/1
switchport mode access
dot1x port-control auto
authentication host-mode multi-auth
spanning-tree portfast
Quay lại PacketFence, đặt loại switch (Cisco Catalyst), RADIUS secret, và xác định VLAN nào ánh xạ với role nào. Các thuộc tính vendor-specific được xử lý sẵn — PacketFence đi kèm template tích hợp cho Aruba, Juniper, Extreme, Meraki, và hàng chục hãng khác.
VLAN Roles: Trọng tâm của chính sách NAC
PacketFence dùng roles để gán mức độ truy cập mạng. Các role mặc định gồm:
- registration — VLAN cách ly, chuyển hướng đến captive portal
- isolation — dành cho thiết bị không tuân thủ hoặc đáng ngờ
- default — truy cập bình thường sau xác thực
- Các role tùy chỉnh (guest, contractor, IoT, v.v.)
Ánh xạ mỗi role với một VLAN ID đã tồn tại trong hạ tầng mạng của bạn. Switch sau đó tự động đặt cổng vào đúng VLAN dựa trên phản hồi RADIUS từ PacketFence.
MAC Authentication Bypass cho thiết bị không hỗ trợ 802.1X
Máy in, camera IP, và cảm biến IoT không thể thực hiện 802.1X. PacketFence xử lý các thiết bị này thông qua MAB (MAC Authentication Bypass). Switch gửi địa chỉ MAC làm tên đăng nhập RADIUS, và PacketFence kiểm tra trong danh sách cho phép hoặc tự động đăng ký vào một role riêng.
# Thêm ngoại lệ MAB qua CLI PacketFence
/usr/local/pf/bin/pfcmd node add 00:1A:2B:3C:4D:5E category=iot status=reg
# Hoặc dùng REST API
curl -k -X POST https://localhost:9090/api/v1/nodes \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"mac": "00:1a:2b:3c:4d:5e", "category": "iot", "status": "reg"}'
Nâng cao: Tích hợp Active Directory và kiểm tra tuân thủ
Kết nối PacketFence với Active Directory
Hầu hết môi trường doanh nghiệp đã chạy Active Directory. PacketFence có thể join thẳng vào domain của bạn — vào Configuration → Active Directory Domains, sau đó định nghĩa nhóm AD nào ánh xạ với role PacketFence nào trong Configuration → Sources.
# Join domain AD (chạy trên server PacketFence)
/usr/local/pf/bin/pfcmd domain add EXAMPLE.COM \
--server dc1.example.com \
--username Administrator \
--password 'YourPassword'
Sau khi join, máy Windows dùng EAP-TLS hoặc PEAP-MSCHAPv2 sẽ xác thực trong suốt bằng thông tin đăng nhập domain. Không cần captive portal. Máy đã join domain chỉ cần kết nối là tự động vào đúng VLAN.
Quét kiểm tra tuân thủ Endpoint
PacketFence tích hợp với Nessus và OpenVAS để quét thiết bị trước khi cấp quyền truy cập đầy đủ. Thiết bị kết nối và được đặt vào VLAN quét. PacketFence kích hoạt quét Nessus. Dựa trên kết quả, thiết bị được chuyển sang VLAN bình thường hoặc bị cách ly.
Cấu hình scan engine tại Configuration → Compliance → Scan Engines, sau đó tạo profile scan on registration để áp dụng tự động khi thiết bị mới xuất hiện lần đầu.
Tích hợp Wi-Fi với Cisco WLC hoặc Aruba
Với mạng không dây, PacketFence đóng vai trò RADIUS server cho WLC (Wireless LAN Controller) của bạn. Trỏ xác thực RADIUS trên controller về IP của PacketFence. PacketFence sau đó trả về thuộc tính RADIUS Tunnel-Private-Group-ID để thông báo cho controller biết VLAN nào cần gán cho client. Nếu bạn muốn triển khai Wi-Fi doanh nghiệp chuẩn WPA3 với 802.1X trên hạ tầng Linux thuần, hostapd là lựa chọn bổ sung đáng cân nhắc song song với PacketFence.
# Ví dụ: Thuộc tính RADIUS reply PacketFence trả về để gán VLAN tunnel
# /usr/local/pf/conf/radiusd/packetfence-tunnel.conf
reply {
Tunnel-Type = VLAN
Tunnel-Medium-Type = IEEE-802
Tunnel-Private-Group-ID := "%{reply:PacketFence-Vlan}"
}
PacketFence cũng hỗ trợ gán VLAN động theo từng SSID và từng nhóm người dùng — khách được một VLAN, nhân viên được VLAN khác, tất cả từ cùng một hạ tầng AP vật lý.
Kinh nghiệm thực chiến
Bắt đầu với Monitor Mode, chưa cần Enforcement
Sai lầm lớn nhất tôi hay thấy là bật enforcement 802.1X trên toàn bộ mạng chỉ sau một đêm. Thiết bị hỏng loạn, helpdesk bị ngập ticket, và ban quản lý kéo phích cắm toàn bộ dự án.
Thay vào đó, hãy bắt đầu với PacketFence ở monitor mode. Nó ghi log những gì đáng lẽ nó sẽ làm mà không thực sự thay đổi VLAN. Chạy như vậy hai đến bốn tuần. Bạn sẽ phát hiện ra các thiết bị có vấn đề — máy in, điện thoại VoIP, máy trạm cũ chạy XP — và xây dựng danh sách ngoại lệ trước khi bất kỳ cổng nào đi vào thực tế.
Dùng DHCP Fingerprinting để tự động phân loại thiết bị
PacketFence kiểm tra DHCP option 55 (parameter request list) để tự động xác định loại thiết bị. iPhone trông khác với laptop Windows 11, khác với điện thoại IP Cisco 8800. Bật DHCP listener trên interface quản lý để PacketFence phân loại thiết bị mới mà không cần can thiệp thủ công:
# Bật DHCP listener trong pf.conf
[interface eth0]
type=management,dhcplistener
ip=192.168.1.10
mask=255.255.255.0
Cảnh báo và phát hiện thiết bị lạ
Có địa chỉ MAC không rõ trong mạng? PacketFence có thể phát hiện. Tạo một security event tại Configuration → Security Events với trigger detect trên MAC không xác định, sau đó cấu hình thông báo qua email hoặc Slack webhook. Điều này biến PacketFence từ một người gác cổng thụ động thành một điểm phát hiện xâm nhập layer-2 chủ động. Để có bức tranh toàn cảnh hơn về lưu lượng mạng, bạn có thể kết hợp với giám sát mạng tập trung bằng LibreNMS và SNMP.
Sao lưu và cân nhắc HA
Triển khai production cần một node dự phòng. Cơ chế clustering tích hợp dùng Corosync/Pacemaker với MariaDB Galera cluster chia sẻ. Nếu bạn cần xây dựng Floating IP với Keepalived và VRRP để đảm bảo high availability cho PacketFence, đây là bước nên thực hiện song song với thiết lập Galera. Ở mức tối thiểu, hãy chạy backup database hàng ngày:
# Sao lưu database PacketFence
mysqldump -u pf -p pf | gzip > /backups/pf_$(date +%F).sql.gz
# Sao lưu thư mục cấu hình
tar czf /backups/pf_conf_$(date +%F).tar.gz /usr/local/pf/conf/
Khi một node PacketFence bị sập, các phiên đang hoạt động vẫn tiếp tục — nhưng kết nối mới và xác thực lại sẽ thất bại. Hãy thiết kế hệ thống với tình huống lỗi này trong đầu ngay từ ngày đầu tiên.
Từ mạng phẳng đến vành đai được kiểm soát
NAC hiếm khi xuất hiện trong checklist bảo mật cho đến sau khi có sự cố. Đáng lẽ nó phải đứng đầu tiên. Vụ tấn công qua phòng họp tôi kể ở đầu bài đã bị chặn ngay lập tức chỉ với một triển khai PacketFence cơ bản — thiết bị đó sẽ rơi vào VLAN registration, kích hoạt cảnh báo MAC không xác định, và không có cách nào tiếp cận được các file server.
Đường cong học tập dốc hơn so với việc viết một firewall rule, nhưng tài liệu của PacketFence rất chắc chắn và forum cộng đồng rất sôi nổi. Bắt đầu với virtual appliance ZEN trong lab. Làm quen với VLAN roles và RADIUS flow. Sau đó triển khai dần ra các switch production từng phân đoạn một. Vài tuần triển khai cẩn thận và bạn sẽ thay thế được một mạng hoàn toàn phẳng, tin tưởng tất cả mọi người, bằng một mạng chủ động đặt câu hỏi với mọi thiết bị cố gắng kết nối — nền tảng thiết yếu của kiến trúc mạng Zero Trust.

