Cấu hình xác thực 802.1X cho mạng dây trên Linux với wpa_supplicant: Khóa chặt cổng LAN

Network tutorial - IT technology blog
Network tutorial - IT technology blog

Cứ cắm dây mạng là vào thẳng core network?

Tuần trước, đối tác sang phòng họp công ty mình trao đổi dự án. Trong lúc chờ slide trình chiếu, một bạn kỹ thuật bên họ tiện tay rút sợi cáp mạng LAN cắm ở máy in rồi gắn thẳng vào laptop cá nhân. Chỉ mất đúng 3 giây, laptop nhận ngay IP 192.168.10.85 từ DHCP server và ping thông toàn bộ dải server nội bộ.

Văn phòng mình có 50 nhân sự và một cụm máy chủ nhỏ. Tình huống đó khiến mình lạnh gáy. Một vị khách vô tình hay ai đó cố ý chỉ cần tìm được ổ cắm âm tường ở góc khuất là có thể chạy Nmap quét sạch tài nguyên nội bộ. Dân văn phòng hay bảo: “Wi-Fi có WPA3 Enterprise rồi, lo gì?”. Trớ trêu thay, cổng mạng dây lại bị bỏ ngỏ 100%.

Vì sao switch mặc định cho phép mọi thiết bị truy cập?

Cổng mạng trên tường hoạt động hệt như ổ cắm điện: cứ cắm phích là có dòng điện chạy qua. Switch Layer 2 thông thường hễ nhận tín hiệu điện áp từ card mạng là chuyển port sang trạng thái Forwarding. Nó chuyển tiếp ngay gói tin DHCP Discover mà chẳng buồn hỏi máy đó là của ai.

Hai lỗ hổng cốt lõi gồm:

  • Không định danh ở cổng vật lý: Switch không phân biệt nổi laptop cấp phát cho nhân viên với máy tính lạ mang từ ngoài vào.
  • Phòng thủ sai tầng: Mật khẩu Windows hay quyền truy cập folder chỉ bảo vệ ở Layer 7. Một khi đã ngồi chung dải broadcast, kẻ tấn công dễ dàng chạy ARP spoofing nghe lén dữ liệu hoặc khai thác lỗ hổng SMB chưa vá.

So sánh các giải pháp kiểm soát cổng mạng LAN

Trước khi chốt phương án, dân sysadmin thường cân nhắc 3 cách tiếp cận sau:

1. Khóa cổng bằng MAC (Port Security)

Switch ghi nhớ danh sách MAC hợp lệ. Thiết bị có MAC lạ cắm vào sẽ bị chuyển port sang trạng thái err-disable ngay lập tức.

  • Ưu điểm: Cấu hình nhanh trên switch, không cần đụng vào máy trạm.
  • Nhược điểm: MAC spoofing quá dễ. Kẻ tấn công chỉ cần nhìn tem dán dưới đáy máy in hoặc gõ tcpdump bắt gói tin vài giây là giả mạo được ngay.

2. Chia VLAN khách và shutdown cổng thừa

Admin chủ động tắt cổng ở phòng họp hoặc gán cố định vào VLAN Guest chỉ có lối ra Internet.

  • Ưu điểm: Cô lập nhanh vùng rủi ro.
  • Nhược điểm: Tốn công vận hành khi nhân viên đổi chỗ ngồi. Ngoài ra, cách này vô dụng nếu ai đó rút cáp từ máy bàn của nhân viên ra dùng ké.

3. Kiểm soát truy cập bằng chuẩn IEEE 802.1X

Đây là tiêu chuẩn chuẩn mực nhất. Khi cắm cáp, switch khóa cổng ở trạng thái Unauthorized và chỉ cho qua duy nhất các gói tin EAPOL (EAP over LAN). Máy trạm phải gửi thông tin đăng nhập hoặc chứng chỉ số về máy chủ RADIUS xác thực. RADIUS duyệt xong, switch mới mở cổng cho truyền dữ liệu.

Triển khai 802.1X với wpa_supplicant trên Linux

Nhiều người lầm tưởng wpa_supplicant chỉ phục vụ bắt sóng Wi-Fi. Thực tế công cụ này hỗ trợ mạng có dây rất mượt thông qua driver wired.

Bước 1: Cài đặt gói phần mềm

Cài đặt gói dịch vụ trên các bản phân phối phổ biến:

# Trên Ubuntu / Debian
sudo apt update && sudo apt install -y wpa_supplicant

# Trên RHEL / Rocky Linux
sudo dnf install -y wpasupplicant

Kiểm tra tên giao diện mạng dây thực tế:

ip -br link

Giả sử cổng mạng dây cần cấu hình là eth0 (hoặc enp3s0).

Bước 2: Viết file cấu hình xác thực

Tùy theo kiến trúc máy chủ RADIUS (FreeRADIUS hoặc Windows NPS), bạn chọn một trong hai phương án dưới đây.

Phương án A: Xác thực bằng tài khoản Active Directory (PEAP/MSCHAPv2)

Tạo file cấu hình tại /etc/wpa_supplicant/8021x.conf:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root
ap_scan=0

network={
    key_mgmt=IEEE8021X
    eap=PEAP
    identity="nv_nguyenvana"
    password="MatKhauBaoMat123@"
    phase2="auth=MSCHAPV2"
    ca_cert="/etc/ssl/certs/company-ca.pem"
}

Lưu ý kỹ thuật: Thông số ap_scan=0 là bắt buộc đối với mạng dây. Dòng này yêu cầu tiến trình không kích hoạt tính năng quét sóng Wi-Fi ngầm.

Phương án B: Xác thực bằng chứng chỉ số cá nhân (EAP-TLS)

EAP-TLS triệt tiêu nguy cơ lộ mật khẩu và chống tấn công Man-in-the-Middle triệt để:

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=root
ap_scan=0

network={
    key_mgmt=IEEE8021X
    eap=TLS
    identity="workstation-dev-01"
    ca_cert="/etc/ssl/certs/company-ca.pem"
    client_cert="/etc/ssl/certs/client.crt"
    private_key="/etc/ssl/private/client.key"
    private_key_passwd="PassphraseNeuCo"
}

Phân quyền nghiêm ngặt để khóa truy cập đọc trộm file:

sudo chmod 600 /etc/wpa_supplicant/8021x.conf
sudo chown root:root /etc/wpa_supplicant/8021x.conf

Bước 3: Chạy test chế độ debug

Đừng vội chạy ngầm. Hãy chạy trực tiếp bằng dòng lệnh sau để xem chi tiết quá trình bắt tay EAP:

sudo wpa_supplicant -i eth0 -D wired -c /etc/wpa_supplicant/8021x.conf -d

Ý nghĩa các cờ lệnh:

  • -i eth0: Giao diện card mạng cần xác thực.
  • -D wired: Buộc tiến trình dùng driver mạng dây thay vì driver Wi-Fi (nl80211).
  • -c ...: Trỏ đến file cấu hình vừa tạo.
  • -d: Bật log debug chi tiết.

Khi màn hình console in ra dòng CTRL-EVENT-EAP-SUCCESS, switch đã cấp quyền truy cập. Bạn chỉ cần mở terminal khác và xin cấp IP:

sudo dhclient eth0

Bước 4: Thiết lập tự động khởi chạy với systemd

Tạo systemd template service tại /etc/systemd/system/[email protected] để tự động kết nối mỗi khi cắm dây:

[Unit]
Description=802.1X Wired Authentication for %I
After=network.target
Before=network-online.target

[Service]
ExecStart=/sbin/wpa_supplicant -c /etc/wpa_supplicant/8021x.conf -D wired -i %I
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Kích hoạt service gắn với interface mạng tương ứng:

sudo systemctl daemon-reload
sudo systemctl enable --now [email protected]

Từ giờ, mỗi lần cắm cáp mạng, Linux sẽ tự gửi bản tin EAPOL để mở port. Dù ai đó rút dây cắm sang máy lạ, switch sẽ lập tức cô lập cổng chỉ trong tích tắc.

Share: