Kỹ năng nền của người làm bảo mật gồm ba nhóm: hiểu mạng đủ để biết một kết nối bình thường trông thế nào, hiểu hệ điều hành đủ để biết ai đang chạy cái gì với quyền gì, và đọc nhật ký đủ tốt để dựng lại chuyện đã xảy ra theo thời gian. Thêm vào đó là một kỹ năng viết: kể lại điều mình thấy cho người khác hiểu và tin.
Các nhóm này nghe quen, nhưng người mới hay học chúng như kiến thức thi cử: thuộc tên tầng, thuộc số cổng. Bài này đi theo hướng khác: với mỗi nhóm, mức "đủ dùng" trong công việc bảo mật cụ thể là gì, và tự kiểm bằng cách nào.
Mạng máy tính: hiểu đường đi của một lần kết nối
Mức tối thiểu là bạn kể được chuyện gì xảy ra khi một nhân viên mở trình duyệt và gõ tên miền của ngân hàng. Máy hỏi DNS địa chỉ IP của tên miền; máy mở kết nối TCP tới cổng 443 của địa chỉ đó; hai bên bắt tay, thoả thuận mã hoá TLS, máy kiểm chứng chỉ có đúng tên miền và do tổ chức đáng tin cấp không; sau đó mới gửi yêu cầu HTTP. Mỗi bước là một chỗ có thể bị lợi dụng: tên miền giả gần giống, máy chủ DNS bị đổi trong bộ phát Wi-Fi, chứng chỉ không khớp mà người dùng vẫn bấm bỏ qua.
Người làm bảo mật cần thêm vài khái niệm: địa chỉ nội bộ khác địa chỉ công khai thế nào, NAT trong bộ phát Wi-Fi làm gì, tường lửa chặn theo chiều vào khác chiều ra ra sao, vì sao một máy văn phòng tự nhiên kết nối ra ngoài lúc ba giờ sáng là điều đáng hỏi. Bạn không cần thuộc hết số cổng, nhưng cần biết những cổng phổ biến dùng cho dịch vụ gì để nhận ra cái lạ.
Cách tự kiểm: trong mạng lab của mình, bắt gói tin khi mở một trang web, rồi chỉ vào từng gói và nói nó thuộc bước nào. Làm được điều đó mà không cần nhìn tài liệu là bạn đã qua mức nền.
Hệ điều hành: tài khoản, quyền, tiến trình và dịch vụ
Phần lớn sự cố cuối cùng đều quy về câu hỏi: tài khoản nào đã làm gì, với quyền gì. Vì vậy hiểu hệ điều hành ở góc bảo mật là hiểu mô hình quyền. Trên Linux, đó là người dùng, nhóm, quyền đọc ghi chạy trên tệp, tài khoản quản trị và cơ chế nâng quyền tạm thời. Trên Windows, đó là tài khoản cục bộ và tài khoản miền, nhóm quản trị, kiểm soát tài khoản người dùng khi chạy chương trình cần quyền cao.
Tiếp theo là tiến trình và dịch vụ. Bạn cần biết xem máy đang chạy những gì, tiến trình nào sinh ra tiến trình nào, dịch vụ nào tự khởi động cùng máy, tác vụ nào được hẹn giờ. Những chỗ tự khởi động và tác vụ hẹn giờ là nơi phần mềm độc hại thích ẩn mình để sống sót qua lần khởi động lại, nên người làm phòng thủ phải biết chúng nằm đâu và trạng thái bình thường của chúng trông thế nào.
Cuối cùng là cập nhật và cấu hình mặc định. Rất nhiều vụ xâm nhập không cần kỹ thuật cao mà chỉ khai thác máy chưa vá hoặc dịch vụ để mật khẩu mặc định. Người nắm hệ điều hành tốt sẽ nhìn một máy mới cài và liệt kê được những gì cần tắt, cần đổi, cần cập nhật trước khi đưa vào dùng.
Nhật ký nằm ở đâu và trả lời câu hỏi nào
Đọc nhật ký bắt đầu bằng việc biết nguồn nào ghi lại loại sự việc nào. Bảng dưới là bản đồ khởi đầu; tên và vị trí cụ thể thay đổi theo phiên bản, nên kiểm tài liệu của hệ thống bạn đang dùng.
| Nguồn nhật ký | Ghi lại gì | Câu hỏi nó giúp trả lời |
|---|---|---|
| Nhật ký xác thực của hệ điều hành | Đăng nhập thành công, thất bại, nâng quyền | Ai đã vào máy, từ đâu, lúc nào; có ai thử mật khẩu liên tục không |
| Nhật ký sự kiện bảo mật của Windows | Đăng nhập, tạo tài khoản, đổi nhóm, xoá nhật ký | Có tài khoản lạ được thêm vào nhóm quản trị không |
| Nhật ký máy chủ web | Từng yêu cầu: địa chỉ, đường dẫn, mã trả về, thời điểm | Có ai dò hàng loạt đường dẫn quản trị hay tệp sao lưu không |
| Nhật ký tường lửa và bộ phát Wi-Fi | Kết nối được cho phép hay bị chặn | Máy nào trong mạng đang kết nối ra ngoài bất thường |
| Nhật ký DNS | Tên miền mà các máy hỏi | Có máy nào liên tục hỏi tên miền lạ, sinh ngẫu nhiên không |
| Nhật ký tài khoản đám mây và email | Đăng nhập, quy tắc chuyển tiếp thư, chia sẻ tệp | Có ai tạo quy tắc tự chuyển thư ra ngoài sau khi chiếm hộp thư không |
Một sự việc thường để dấu ở nhiều nguồn cùng lúc. Kỹ năng thật nằm ở chỗ ghép chúng lại: lần đăng nhập lạ trong nhật ký xác thực, vài phút sau là kết nối ra ngoài trong nhật ký tường lửa, rồi một quy tắc chuyển thư mới trong nhật ký email.
Đọc một đoạn nhật ký theo năm bước
Ví dụ giả định: nhật ký xác thực của một máy chủ nhỏ cho thấy rất nhiều dòng đăng nhập thất bại trong đêm, sau đó có một dòng thành công. Cách đọc có phương pháp:
- Xác định khung thời gian và múi giờ. Nhật ký có thể ghi theo giờ quốc tế; nhầm múi giờ là kể sai cả câu chuyện.
- Đếm và nhóm. Bao nhiêu lần thất bại, từ bao nhiêu địa chỉ, nhắm vào những tên tài khoản nào. Nhiều tên tài khoản phổ biến từ một địa chỉ khác hẳn nhiều lần thử một tài khoản thật từ nhiều địa chỉ.
- Tìm điểm chuyển. Lần đăng nhập thành công đến từ đâu, vào tài khoản nào, có cùng địa chỉ với chuỗi thất bại không.
- Đi tiếp theo thời gian. Sau lần thành công đó, tài khoản làm gì: nâng quyền, tạo tài khoản mới, cài tác vụ hẹn giờ, kết nối ra ngoài.
- Viết kết luận có mức độ chắc chắn. Phân biệt điều thấy trực tiếp trong nhật ký với điều suy luận, và ghi rõ còn thiếu dữ liệu gì để khẳng định.
Bước năm là chỗ người mới hay bỏ qua: viết "máy chủ đã bị hack" khi bằng chứng mới chỉ cho thấy "có một lần đăng nhập thành công từ địa chỉ chưa từng thấy". Hai câu đó dẫn tới hai mức phản ứng rất khác nhau.
Kịch bản, dòng lệnh và kỹ năng viết
Một ngôn ngữ kịch bản là đủ ở giai đoạn đầu. Python hoặc Bash giúp bạn lọc hàng nghìn dòng nhật ký, đếm, so sánh hai danh sách, tự động hoá việc kiểm lặp lại. Bạn không cần thành lập trình viên, nhưng cần đọc hiểu một kịch bản ngắn và tự viết được kịch bản vài chục dòng.
Dòng lệnh là ngôn ngữ chung của nghề. Nhiều máy chủ không có giao diện đồ hoạ, và khi xử lý sự cố bạn thường chỉ có một cửa sổ dòng lệnh. Thoải mái với việc tìm tệp, lọc nội dung, xem tiến trình, xem kết nối mạng bằng dòng lệnh giúp bạn bình tĩnh trong lúc gấp.
Viết rõ là kỹ năng kỹ thuật, không phải kỹ năng mềm. Một phát hiện không được hiểu thì không được sửa. Báo cáo tốt nêu chuyện gì xảy ra, ảnh hưởng tới ai, bằng chứng nào, việc cần làm theo thứ tự ưu tiên, bằng câu mà quản lý không chuyên vẫn đọc được.
AI giúp nhanh hơn nhưng không thay nền. Chatbot có thể giải thích một dòng nhật ký lạ hay viết nháp kịch bản lọc, nhưng bạn phải đủ nền để nhận ra khi nó giải thích sai. Trước khi dán nhật ký thật vào chatbot, hãy thay địa chỉ IP, tên máy, tên người dùng bằng nhãn giả.
Mật mã ở mức người làm nghề cần nắm
Băm khác mã hoá. Băm biến dữ liệu thành một chuỗi cố định và không đảo ngược được; mã hoá thì giải ngược được nếu có khoá. Mật khẩu trong hệ thống tử tế được lưu dạng băm có thêm muối, chứ không mã hoá. Hiểu điều này giúp bạn biết vì sao một vụ lộ cơ sở dữ liệu lưu mật khẩu dạng chữ thường là lỗi thiết kế nghiêm trọng.
Khoá đối xứng và khoá công khai giải quyết hai bài toán khác nhau. Khoá đối xứng nhanh, dùng để mã hoá khối dữ liệu lớn; cặp khoá công khai và khoá riêng dùng để trao đổi khoá an toàn và ký số. Kết nối HTTPS dùng cả hai: khoá công khai lúc bắt tay, khoá đối xứng cho phần dữ liệu sau đó.
Chứng chỉ số là lời bảo lãnh, không phải lời khen. Chứng chỉ chỉ xác nhận khoá công khai thuộc về tên miền nào; trang lừa đảo vẫn có thể có ổ khoá trên thanh địa chỉ. Người làm bảo mật cần giải thích điều này cho người dùng thường, vì nhiều người vẫn tin ổ khoá nghĩa là trang an toàn.
Không tự chế thuật toán. Ở mức nghề nghiệp phổ thông, việc của bạn là chọn và cấu hình đúng các chuẩn đã được kiểm định, giữ khoá cẩn thận, không phải sáng tạo cách mã hoá mới.
Bài tự kiểm: bạn đã có nền chưa
Trả lời được phần lớn các câu dưới đây bằng lời của mình, không tra cứu, là dấu hiệu nền tảng đã chắc. Câu nào còn lúng túng là chỗ cần quay lại.
- Vì sao trình duyệt cảnh báo khi chứng chỉ không khớp tên miền, và bấm bỏ qua cảnh báo đó có thể dẫn tới gì?
- Một máy trong mạng văn phòng có địa chỉ nội bộ; làm sao nó truy cập được Internet, và vì sao từ ngoài khó kết nối thẳng vào nó?
- Tệp cấu hình chứa mật khẩu cơ sở dữ liệu nên có quyền thế nào, ai được đọc?
- Nếu muốn biết một chương trình có tự chạy lại sau khi khởi động máy không, bạn sẽ xem ở những chỗ nào?
- Một trăm lần đăng nhập thất bại vào một trăm tên tài khoản khác nhau nói lên điều gì khác so với một trăm lần thất bại vào cùng một tài khoản?
- Bạn sẽ viết một câu kết luận thế nào khi chỉ có nhật ký tường lửa mà không có nhật ký của chính máy bị nghi?
Các câu này cố ý không hỏi tên lệnh hay số cổng. Thứ được kiểm là khả năng giải thích cơ chế, vì cơ chế thì bền còn công cụ thì đổi liên tục.
Câu hỏi thường gặp
Có cần học thuộc mô hình bảy tầng OSI không?
Biết các tầng giúp bạn và đồng nghiệp nói cùng ngôn ngữ, ví dụ "lỗi ở tầng ứng dụng hay tầng mạng". Nhưng thuộc tên tầng không quan trọng bằng việc hiểu một gói tin cụ thể đi qua những lớp đóng gói nào. Hãy học mô hình qua thực hành bắt gói tin thay vì học thuộc bảng.
Nên dùng công cụ quản lý nhật ký tập trung ngay từ đầu không?
Khi học, hãy đọc nhật ký thô trước để hiểu từng dòng có nghĩa gì. Công cụ tập trung nhật ký rất hữu ích khi có nhiều máy, nhưng nếu dùng sớm, bạn dễ chỉ biết nhìn biểu đồ mà không hiểu dữ liệu gốc. Sau khi quen nhật ký thô, dựng thử một hệ thống tập trung nhỏ trong lab là bước tiếp theo hợp lý.
Học mạng có cần thiết bị thật không?
Không bắt buộc. Máy ảo và phần mềm mô phỏng mạng đủ cho phần lớn nội dung nền. Thiết bị thật như một bộ phát Wi-Fi cũ hay một bộ chuyển mạch nhỏ giúp bạn quen giao diện quản trị và cáp nối, nhưng nên dùng trong mạng riêng tách khỏi mạng gia đình.
Đọc nhật ký mà thấy quá nhiều dòng thì bắt đầu từ đâu?
Bắt đầu bằng câu hỏi chứ không bằng dữ liệu. Xác định bạn muốn biết điều gì, ví dụ ai đăng nhập vào máy này trong đêm qua, rồi lọc đúng loại sự kiện và khung thời gian đó. Đếm và nhóm trước khi đọc từng dòng; con số thường chỉ ra chỗ bất thường nhanh hơn mắt.
Dán nhật ký vào chatbot để nhờ phân tích có được không?
Được với nhật ký trong lab của bạn. Với nhật ký từ nơi làm việc, chỉ làm khi quy định công ty cho phép và sau khi đã che địa chỉ IP, tên máy, tên tài khoản, đường dẫn nội bộ. Kết luận của chatbot là gợi ý để bạn kiểm tiếp, không phải kết luận của bạn.