Danh mục sản phẩm
Bài 77: Cấu Hình Bảo Mật Cơ Bản Trên Cisco IOS — Password, SSH, Local User
💡 Liên hệ thực tế
Một router hoặc switch Cisco vừa xuất xưởng, khi cắm điện lên, mặc định không có bất kỳ password nào — ai cắm được cáp console vào cũng có thể vào thẳng CLI, gõ enable là có toàn quyền cấu hình. Đây giống như một căn nhà mới xây chưa lắp khóa cửa: ai đi ngang cũng vào được.
Bài học hôm nay là bước "lắp khóa cửa đầu tiên" bắt buộc phải làm ngay khi đưa 1 thiết bị Cisco vào vận hành thực tế: đặt mật khẩu cho các cổng truy cập, mã hóa mật khẩu để không lộ dạng văn bản thuần trong file cấu hình, tạo tài khoản riêng cho từng quản trị viên thay vì dùng chung 1 password, và quan trọng nhất — chuyển từ Telnet (gửi mọi thứ dạng rõ) sang SSH (mã hóa toàn bộ phiên làm việc).
📘 Kiến thức cốt lõi
1. Các cổng truy cập cần đặt mật khẩu
| Cổng truy cập | Lệnh vào chế độ cấu hình | Mục đích |
|---|---|---|
| Console | line console 0 |
Truy cập trực tiếp qua cáp console — thường dùng khi mất kết nối mạng |
| AUX | line aux 0 |
Cổng phụ, ít dùng nhưng vẫn cần khóa nếu có trên thiết bị |
| VTY | line vty 0 4 (hoặc 0 15 với dòng thiết bị hỗ trợ nhiều phiên hơn) |
Truy cập từ xa qua Telnet/SSH |
| Privileged EXEC | enable secret <password> |
Mật khẩu vào chế độ có toàn quyền cấu hình (enable) |
⚠️ Lưu ý quan trọng: luôn dùng
enable secret(được băm bằng MD5 hoặc mạnh hơn) thay vì lệnhenable passwordđời cũ (lưu dạng gần như văn bản thuần) — nếu cả 2 cùng tồn tại trong cấu hình, IOS luôn ưu tiênenable secret.
2. Mã hóa password và chuẩn "secret" hiện đại
Theo mặc định, các password cấu hình bằng lệnh password (ví dụ trên line console/vty) được lưu dạng văn bản thuần (cleartext) trong running-config — đây chính là Type 0, ai xem được file cấu hình là đọc được password ngay (show running-config sẽ thấy dạng password 0 Cisco123). Lệnh service password-encryption áp mã hóa Type 7 cho toàn bộ các password dạng này.
Trên Cisco IOS, mỗi password/secret đều đi kèm 1 con số "Type" thể hiện cách nó được lưu trữ:
| Type | Thuật toán | Trạng thái khuyến nghị |
|---|---|---|
| 0 | Không mã hóa (cleartext) | ❌ Không bao giờ dùng — thấy password 0 ... trong config là dấu hiệu cần sửa ngay |
| 4 | Dự định PBKDF2, nhưng triển khai lỗi | ❌ Đã bị Cisco loại bỏ hoàn toàn — nếu gặp trong tài liệu cũ, coi là cảnh báo, không phải khuyến nghị |
| 5 | MD5 (đã cũ) | ⚠️ Dùng tạm khi thiết bị không hỗ trợ Type 8/9 |
| 7 | Obfuscation yếu (kiểu Vigenère) | ❌ Dễ giải mã ngược bằng công cụ có sẵn trên mạng |
| 8 | PBKDF2 (chuẩn, đã sửa lỗi Type 4) | ✅ Khuyến nghị |
| 9 | Scrypt | ✅ Khuyến nghị cao nhất |
💡 Ghi nhớ: Type 7 chỉ là mã hóa yếu (obfuscation) — có thể bị giải mã ngược bằng công cụ có sẵn trên mạng, không phải giải pháp bảo mật thực sự. Đối với
enable secretvàusername ... secret, IOS hiện đại hỗ trợ Type 8 (PBKDF2) và Type 9 (Scrypt) — nên ưu tiên dùng 2 loại này thay vì để mặc định Type 5.⚠️ Riêng Type 4 đáng chú ý vì là bài học kinh điển trong ngành: khoảng 2009-2010, Cisco giới thiệu Type 4 với dự định dùng thuật toán PBKDF2 để thay thế Type 5, nhưng đến năm 2013 phát hiện lỗi triển khai khiến Type 4 yếu hơn cả Type 5 mà nó định thay thế. Cisco đã loại bỏ hoàn toàn Type 4 khỏi IOS hiện đại — nếu học viên gặp tài liệu cũ nhắc đến Type 4, cần hiểu đây là cảnh báo cần tránh, không phải một lựa chọn trung gian hợp lệ giữa Type 5 và Type 8.
3. Local User Account — thay thế password dùng chung
Thay vì toàn bộ quản trị viên cùng dùng chung 1 password trên line VTY (không thể truy vết ai đã đăng nhập), nên tạo tài khoản riêng cho từng người:
Router(config)# username tuan privilege 15 secret 9 $9$abcXYZ... Router(config)# username hai privilege 5 secret 9 $9$ghkLMN...
Ở đây tuan là quản trị viên chính, được cấp privilege 15 (toàn quyền cấu hình), còn hai là kỹ thuật viên hỗ trợ, chỉ cần quyền hạn chế hơn nên được cấp privilege 5 — đủ để chạy các lệnh show kiểm tra tình trạng thiết bị nhưng chưa đủ quyền để cấu hình (mặc định phải từ privilege 15 mới vào thẳng chế độ Global Configuration). Đây chính là ví dụ thực tế cho nguyên tắc Least Privilege đã nhắc ở Bài 75 — mỗi người chỉ nên có đúng mức quyền cần thiết cho công việc của mình, không nên cấp privilege 15 tràn lan cho mọi tài khoản.
Sau đó áp dụng login local trên line để yêu cầu đăng nhập bằng tài khoản đã tạo, thay vì password dùng chung của cả line.
📎 Liên hệ lại kiến thức đã học: đây chính là hình thức Local AAA đơn giản đã nhắc ở Bài 76 — không cần server TACACS+/RADIUS, nhưng vẫn đảm bảo mỗi người có 1 tài khoản riêng, phục vụ Accounting/truy vết ở mức cơ bản.
4. Chống dò mật khẩu (brute-force) bằng login block-for
Router(config)# login block-for 120 attempts 3 within 60
Lệnh này khóa toàn bộ việc đăng nhập trong 120 giây nếu phát hiện 3 lần đăng nhập sai trong vòng 60 giây — hạn chế hiệu quả tấn công dò mật khẩu tự động.
5. SSH — thay thế Telnet để mã hóa phiên làm việc
Telnet gửi toàn bộ nội dung (bao gồm username/password) dưới dạng văn bản thuần qua mạng — dễ bị nghe lén bằng kỹ thuật MITM đã học ở các bài trước. SSH mã hóa toàn bộ phiên làm việc, là lựa chọn bắt buộc cho môi trường production.
Điều kiện để bật SSH trên Cisco IOS:
- Thiết bị phải có
hostnamekhác mặc định. - Phải cấu hình
ip domain name(SSH cần tên miền để tạo cặp khóa RSA). - Phải sinh cặp khóa RSA bằng
crypto key generate rsa. - Phải có ít nhất 1 tài khoản local (hoặc AAA server) để xác thực — SSH không hỗ trợ xác thực bằng password dạng line thông thường, bắt buộc phải dùng
login localhoặc AAA.
6. Cấu hình tổng hợp "thực chiến"
Router(config)# hostname R1 R1(config)# clock timezone ICT 7 R1(config)# ntp server 192.168.1.1 R1(config)# logging on R1(config)# ip domain name vnexperts.local R1(config)# crypto key generate rsa % modulus [512,4096]: 2048 R1(config)# ip ssh version 2 R1(config)# service password-encryption R1(config)# security passwords min-length 8 R1(config)# login block-for 120 attempts 3 within 60 R1(config)# enable secret 9 $9$abcXYZ... R1(config)# username tuan privilege 15 secret 9 $9$defUVW... R1(config)# line console 0 R1(config-line)# login local R1(config-line)# exec-timeout 5 0 R1(config-line)# exit R1(config)# line vty 0 4 R1(config-line)# login local R1(config-line)# transport input ssh R1(config-line)# exec-timeout 5 0 R1(config-line)# exit
Giải thích từng dòng lệnh:
hostname R1— đặt tên thiết bị, đồng thời là 1 trong các điều kiện nền tảng để sinh khóa SSH.clock timezone ICT 7— đặt múi giờ Việt Nam (UTC+7) để timestamp log chính xác.ntp server 192.168.1.1— đồng bộ thời gian với NTP server nội bộ (đã học ở Bài 37).logging on— bật ghi log hệ thống làm nền tảng ghi nhận sự kiện đăng nhập/cấu hình.ip domain name vnexperts.local— khai báo tên miền cho thiết bị; SSH cần thông tin này để tạo cặp khóa RSA gắn với hostname.crypto key generate rsa— sinh cặp khóa RSA (public/private) dùng để mã hóa phiên SSH; IOS sẽ hỏi độ dài khóa (modulus), nên chọn tối thiểu 2048 bit cho độ an toàn hiện nay.ip ssh version 2— ép thiết bị chỉ chấp nhận SSH version 2 (an toàn hơn version 1 đã lỗi thời và có nhiều lỗ hổng đã biết).service password-encryption— áp mã hóa Type 7 cho các password dạng cleartext còn lại trong cấu hình (ví dụ password trên console nếu có dùngpasswordthay vìsecret).security passwords min-length 8— bắt buộc mọi password mới cấu hình trên thiết bị phải có độ dài tối thiểu 8 ký tự.login block-for 120 attempts 3 within 60— khóa đăng nhập trong 120 giây nếu phát hiện 3 lần đăng nhập sai trong vòng 60 giây, chống dò mật khẩu tự động.enable secret 9 $9$abcXYZ...— đặt 1 mật khẩu dùng chung để vào chế độ Privileged EXEC (enable), dùng hash Type 9 (Scrypt) — dạng băm mạnh nhất hiện IOS hỗ trợ. Đây là mật khẩu ở cấp thiết bị, không gắn với từng user riêng biệt nhưusername ... secretbên dưới — ai biết mật khẩu này cũng vào đượcenable, nên không dùng để truy vết được chính xác cá nhân nào đã thao tác (muốn truy vết theo từng người phải dựa vào Accounting trong AAA ở Bài 76).- ⚠️ Trong ví dụ này, vì
line console 0vàline vty 0 4đã cấu hìnhlogin localkết hợp tài khoảntuancó sẵnprivilege 15, nên khi đăng nhập bằng tài khoảntuan, IOS sẽ vào thẳng chế độ Privileged EXEC mà không hỏi lạienable secretnữa. Lệnhenable secretkhi đó đóng vai trò như lớp dự phòng: dùng cho các tài khoản có privilege thấp hơn cần gõenableđể nâng quyền, hoặc trường hợp AAA/local user gặp sự cố và cần truy cập khẩn cấp bằng đúng mật khẩuenableđã đặt.username tuan privilege 15 secret 9 $9$defUVW...— tạo tài khoản local riêng cho quản trị viên têntuan, quyền cao nhất (privilege 15), mật khẩu băm Type 9.line console 0— vào chế độ cấu hình cổng console.login local— yêu cầu đăng nhập bằng tài khoản đã tạo ởusername, thay vì 1 password chung đặt trực tiếp trên line.exec-timeout 5 0— tự động đăng xuất phiên console nếu không thao tác gì sau 5 phút, tránh phiên bị bỏ ngỏ.line vty 0 4— vào chế độ cấu hình 5 phiên truy cập từ xa (VTY 0 đến 4).transport input ssh— chỉ cho phép SSH kết nối vào các line VTY này, chặn hoàn toàn Telnet.exec-timeout 5 0— áp dụng timeout tương tự cho phiên VTY.
💬 Hỏi & Đáp nhanh
❓ Nếu chỉ cấu hình enable password mà không cấu hình enable secret, có an toàn không?
❌ Không nên. enable password lưu gần như dạng văn bản thuần (chỉ được mã hóa yếu nếu bật service password-encryption), trong khi enable secret luôn được băm bằng thuật toán mạnh hơn (MD5 trở lên) ngay cả khi chưa bật service password-encryption.
❓ Nếu thấy trong running-config có dòng password 0 Cisco123 hay enable secret 5 $1$..., cần xử lý gì ngay?
⚠️ Cả 2 đều là dấu hiệu cần nâng cấp: password 0 là dạng cleartext hoàn toàn (Type 0) — cần đổi sang secret với Type 8/9 ngay lập tức; enable secret 5 tuy đã được băm nhưng dùng thuật toán MD5 đã cũ (Type 5) — nên chuyển sang Type 8/9 nếu thiết bị hỗ trợ. Tuyệt đối không nên thấy secret 4 ... trong config cũ rồi giữ nguyên vì tưởng "type 4 nằm giữa 5 và 8 nên chắc ổn" — đây chính là loại đã bị Cisco xác nhận yếu hơn Type 5 do lỗi triển khai.
❓ Có thể SSH vào router bằng password đặt trên line vty như Telnet không?
❌ Không. SSH bắt buộc xác thực qua tài khoản cụ thể (login local với username, hoặc AAA server) — không hỗ trợ xác thực chỉ bằng 1 password chung đặt trực tiếp trên line như Telnet.
❓ login block-for 120 attempts 3 within 60 có khóa luôn cả quản trị viên hợp lệ nếu họ gõ sai mật khẩu không?
✅ Có — đây là điểm cần cân nhắc: cơ chế này áp dụng chung cho mọi lượt đăng nhập, kể cả người dùng hợp lệ gõ sai quá số lần cho phép cũng sẽ bị khóa tạm thời trong thời gian cấu hình.
📝 Bài tập đánh giá
Câu 1: Vì sao nên ưu tiên enable secret thay vì enable password trên Cisco IOS?
- A.
enable secretcho phép nhiều người dùng chung 1 password - B.
enable secretluôn được băm (hash) bằng thuật toán mạnh, an toàn hơnenable passwordlưu gần như dạng văn bản thuần - C.
enable passwordkhông thể cấu hình được trên IOS hiện đại - D. Không có khác biệt, 2 lệnh hoàn toàn tương đương
Câu 2: Điều kiện nào sau đây là bắt buộc để bật SSH trên Cisco IOS?
- A. Chỉ cần cấu hình
transport input sshtrên line vty là đủ - B. Phải có
ip domain name, sinh cặp khóa RSA bằngcrypto key generate rsa, và có tài khoản local hoặc AAA để xác thực - C. SSH chỉ hoạt động khi đã tắt hoàn toàn Telnet trên toàn bộ thiết bị
- D. SSH không cần hostname khác mặc định
Câu 3: Vì sao Type 4 bị Cisco loại bỏ hoàn toàn khỏi IOS hiện đại, dù ban đầu được giới thiệu để thay thế Type 5?
- A. Vì Type 4 chạy quá chậm trên phần cứng router đời cũ
- B. Vì lỗi triển khai khiến Type 4 thực chất yếu hơn cả Type 5 mà nó định thay thế
- C. Vì Type 4 chỉ tương thích với switch, không tương thích với router
- D. Vì Type 4 trùng cú pháp lệnh với Type 7
👉 Đáp án:
Câu 1: B — enable secret luôn được lưu dưới dạng hash (MD5 trở lên, hoặc Type 8/9 trên IOS hiện đại), trong khi enable password gần như lưu dạng văn bản thuần nếu không bật thêm service password-encryption (và ngay cả khi bật, đó cũng chỉ là mã hóa yếu Type 7).
Câu 2: B — Để bật SSH, thiết bị cần có ip domain name và cặp khóa RSA (crypto key generate rsa) để làm nền tảng mã hóa, cùng với tài khoản local hoặc AAA server để xác thực người dùng — thiếu bất kỳ điều kiện nào SSH sẽ không hoạt động.
Câu 3: B — Type 4 được Cisco giới thiệu khoảng 2009-2010 với dự định dùng PBKDF2, nhưng năm 2013 phát hiện lỗi triển khai khiến thuật toán thực tế yếu hơn cả Type 5. Cisco sau đó loại bỏ Type 4 và giới thiệu đúng chuẩn PBKDF2 dưới tên Type 8, cùng Type 9 (Scrypt).
📚 Bài viết thuộc khóa học CCNA của VNExperts
🧭 Điều hướng
| ⬅️ Bài trước | 🏠 Mục lục khóa học | Bài kế tiếp ➡️ |
|---|---|---|
| Bài 76: AAA — Authentication, Authorization, Accounting | Mục lục khóa học CCNA | Bài 78: Port Security trên switch — chống tấn công MAC flooding |
