Làm chủ Firewall ESXi bằng esxcli: Từ quản trị thủ công sang tự động hóa

VMware tutorial - IT technology blog
VMware tutorial - IT technology blog

Tiếp cận Firewall ESXi: Đừng để giao diện Web đánh lừa

Nếu bạn đang quản trị một cluster vài chục host, việc dùng vSphere Client để chỉnh firewall từng cái một chẳng khác nào “đào đất bằng thìa”. Giao diện đồ họa (GUI) rất trực quan cho người mới. Nhưng khi hệ thống mở rộng, việc click chuột lặp đi lặp lại chỉ khiến bạn dễ nhầm lẫn và tốn thời gian.

Firewall trên ESXi có cơ chế rất riêng. Nó là bộ lọc stateless (không lưu trạng thái) dựa trên các service. Khác với iptables trên Linux, bạn không thể tùy tiện thêm rule bất kỳ mà phải làm việc dựa trên các Ruleset có sẵn.

  • vSphere Client: Phù hợp để kiểm tra nhanh hoặc sửa 1-2 rule lẻ tẻ.
  • esxcli: Công cụ tối thượng để tự động hóa. Nó giúp bạn cấu hình hàng loạt qua SSH hoặc script với độ chính xác tuyệt đối.

Tại sao esxcli là lựa chọn của dân chuyên nghiệp?

Lợi thế về tốc độ và tính nhất quán

Lợi thế lớn nhất của esxcli chính là khả năng tái sử dụng. Thay vì mất 5 phút đăng nhập web và tìm menu, mình chỉ mất 3 giây để paste một dòng lệnh. Trong môi trường production, mình thường lưu các lệnh này vào file .sh. Khi thêm host mới, mình chỉ cần chạy script là đảm bảo cấu hình khớp 100% với hệ thống hiện tại, loại bỏ hoàn toàn sai sót do thao tác tay.

Rào cản về cú pháp

Điểm trừ duy nhất là cú pháp của nó khá dài và khô khan. Chỉ cần gõ sai một ký tự trong ruleset-id, lệnh sẽ báo lỗi hoặc tệ hơn là bạn tự khóa mình khỏi host do chặn nhầm port SSH. Firewall ESXi mặc định rất chặt chẽ, bạn buộc phải tuân thủ các Service ID định sẵn thay vì tạo rule tự do như trên Cisco hay Fortinet.

Thực hành cấu hình Firewall bằng esxcli

Để bắt đầu, hãy bật SSH trên host và truy cập qua Terminal. Dưới đây là quy trình chuẩn mình thường áp dụng.

1. Kiểm tra “sức khỏe” Firewall

Trước khi thay đổi, hãy xem trạng thái hiện tại của hệ thống:

esxcli network firewall get

Thông thường, Default Action nên là DROPEnabled phải là true. Nếu firewall đang tắt, host của bạn đang phơi mình trước các rủi ro bảo mật. Hãy bật nó lên ngay:

esxcli network firewall set --enabled true

2. Quản lý các Ruleset (Danh sách dịch vụ)

Mọi dịch vụ trên ESXi (SSH, vMotion, Web Access) đều nằm trong một Ruleset. Để liệt kê tất cả, hãy dùng lệnh:

esxcli network firewall ruleset list

Bạn sẽ nhận được danh sách các cột NameEnabled. Hãy chú ý các ID quan trọng như sshServer hay vpxa (dành cho vCenter).

3. Đóng/Mở Port dịch vụ trong tích tắc

Giả sử bạn cần bật dịch vụ SSH để bảo trì từ xa:

# Bật dịch vụ SSH
esxcli network firewall ruleset set --enabled true --ruleset-id=sshServer

# Tắt Web Access (Chặn truy cập vSphere Client qua IP host)
esxcli network firewall ruleset set --enabled false --ruleset-id=webAccess

4. Giới hạn IP truy cập: Lớp bảo mật sống còn

Đây là phần quan trọng nhất để bảo vệ host. Theo mặc định, khi mở một port, ESXi sẽ mở cho toàn bộ thế giới. Điều này cực kỳ nguy hiểm nếu host có IP public hoặc nằm trong mạng nội bộ không an toàn.

Mình luôn áp dụng nguyên tắc “White-list”. Ví dụ: Chỉ cho phép máy trạm quản trị (192.168.1.50) và dải VLAN quản lý (10.10.10.0/24) truy cập SSH.

# Bước 1: Khóa quyền truy cập từ mọi IP
esxcli network firewall ruleset set --allowed-all false --ruleset-id=sshServer

# Bước 2: Chỉ định IP được phép
esxcli network firewall ruleset allowedip add --ip-address=192.168.1.50 --ruleset-id=sshServer
esxcli network firewall ruleset allowedip add --ip-address=10.10.10.0/24 --ruleset-id=sshServer

# Kiểm tra lại danh sách trắng
esxcli network firewall ruleset allowedip list --ruleset-id=sshServer

5. Vấn đề Port tùy chỉnh (Custom Port)

Bạn không thể dùng esxcli để tạo một port 8080 tùy ý. Firewall ESXi nạp cấu hình từ các file XML tại /etc/vmware/firewall/. Nếu cài ứng dụng bên thứ ba, bạn phải tạo file XML mới tại đây. Tuy nhiên, hãy cẩn thận: các file này sẽ mất sạch khi reboot host trừ khi bạn đóng gói chúng vào một VIB tùy chỉnh.

Kinh nghiệm xương máu từ thực tế vận hành

Sau nhiều năm quản lý hệ thống VMware, mình rút ra 3 quy tắc vàng để tránh rủi ro:

  • Đừng tự khóa mình: Trước khi áp dụng --allowed-all false, hãy đảm bảo IP bạn đang dùng đã được add vào danh sách cho phép.
  • Thử nghiệm song song: Luôn giữ một session SSH đang chạy và thử mở một session mới từ máy khác để kiểm tra rule. Nếu sai, bạn vẫn còn session cũ để sửa lỗi.
  • Tự động hóa có kiểm soát: Hãy gom các lệnh esxcli vào script Bash. Việc này giúp bạn triển khai 10 host nhanh như 1 host mà không sợ quên bất kỳ bước bảo mật nào.

Làm chủ esxcli không chỉ giúp công việc nhàn hơn mà còn khẳng định trình độ quản trị hệ thống của bạn. Chúc các bạn cấu hình hệ thống an toàn!

Share: