Linux tập 3: Hardening ("làm cứng") Linux.

Tổng quan.

"Làm cứng" hệ thống là 1 thuật ngữ, cũng là 1 công việc căn bản nhất mà System Admin cần phải làm ngay sau khi đã cài xong 1 thành phần nào đó. Thành phần đó có thể là Hệ điều hành, dịch vụ máy chủ. Hệ điều hành thì thường là Linux Server, Window Server; dịch vụ máy chủ thì có thể là Apache, NginX.

Đây là 1 giai đoạn công việc trong chuỗi các công việc nhằm mục đích bảo vệ hệ thống. Nếu làm tốt giai đoạn này, tỷ lệ hệ thống của bạn gặp sự cố (cả từ bên ngoài hay bên trong gây ra) sẽ được giảm thiểu xuống mức rất thấp. Các dịch vụ/ứng dụng nội bộ hoạt động ko xung đột; tin tặc bên ngoài cũng ko dễ dàng tìm thấy "attack surface" (tạm dịch là "bề mặt tấn công") để mà khai thác. Trong trường hợp có sự cố xảy ra, bạn sẽ nhanh chóng tìm ra nguyên nhân và cách ngăn chặn/khắc phục tạm thời; từ đó chuyên tâm cho việc khắc phục hoàn toàn sự cố và khôi phục hệ thống trở lại bình thường.

Về cụ thể, việc chuẩn hóa làm cứng các loại hệ thống, bạn có thể tìm thấy tài liệu chuẩn hóa ở website của CIS - Center of Internet Security. Tại đây, họ sẽ cung cấp cho bạn tài liệu chuẩn hóa cho từng hệ thống/thành phần cụ thể riêng. Các tài liệu này đã được xem là thước đo quy chuẩn chung của cả thế giới.

Trong bài viết này, tôi sẽ ko trình bày toàn bộ từng đề mục của tài liệu, mà mình chỉ trình bày KHÁI QUÁT NHỮNG GÌ CHUNG NHẤT mà chúng ta thật sự cần phải hiểu rõ vì sao cần phải làm như thế. Còn đi vào cụ thể, sách ở đó, ta mở ra mà xem; có vấn đề mới thì tự note lại phòng sau này gặp lại thì cứ thế mà làm. Ngoài ra, sẽ xuất hiện rất nhiều khái niệm mới, tôi cũng sẽ ko đi sâu vào giải thích từng khái niệm. Với những khái niệm quan trọng, kiểu j nó cũng được quan tâm và tôi cũng trình bày cụ thể vào những bài viết khác. Còn trong bài này, mục đích bạn cần đạt được là hiểu rõ: hardening là j, cần phải hardening những module lớn /nhỏ nào của Linux, vì sao phải hardening nó, hardening nó như thế nào.

Xin nhấn mạnh lại, bài viết chỉ trình bày KHÁI QUÁT, ko đi sâu vào cụ thể. Cũng như khi nói về phương pháp SOS (Sum of Squares) để chứng minh Bất đẳng thức, ta chỉ được trình bày thêm về các định lý để xử lý với các biểu thức SA, SB, SC; còn việc làm sao để đưa về các biểu thức đó thì người dạy sẽ ko đi sâu. (hôm trước đi nhậu đang xạo vs các sếp thì ko hiểu sao tổ lái sang phương pháp SOS để chứng minh BĐT xong, nên giờ lấy luôn nó làm ví dụ).

Thiết lập ban đầu.

Cấu hình lại các filesystem và các tệp tin hệ thống.

Điều đầu tiên cần làm là vô hiệu hóa các filesystems thông dụng. Việc vô hiệu hóa này sẽ giúp giảm "attack surface" cho hệ thống. Một số filesystems cần được vô hiệu hóa như: cramfs, freevxfs, iffs2, hfs, hfsplus, squashsf, udf, FAT.

Tiếp theo, cần phải phân vùng lại và chỉnh sửa các tùy chọn riêng cho những thư mục nhạy cảm như "/var", "/tmp", "/home", "/dev", và các thư mục con trong nó nếu cần thiết. Như tôi đã nói trong bài Linux tập 1, do các chức năng rất khoa học và chuyên biệt, nên các thư mục này rất nhạy cảm và cần nhận được sự quan tâm đặc biệt. Và đây chính là lúc ta cần làm điều đó; ngăn chặn các nguy cơ có thể thâm nhập, thỏa hiệp, khai thác từ những chức năng mà các thư mục này cung cấp.
  • Đầu tiên là họ các "temporary" là "/tmp" và "/var/tmp"; đây là những thư mục chứa các tệp tin tạm của hệ thống, và bất cứ "ai" (user, daemon, process, program, ...) cũng đều có thể ghi dữ liệu vào vị trí này. Do đó, ta cần phải mount từng thư mục này vào 1 phân vùng riêng để tránh việc ghi đầy dữ liệu vào thư mục này sẽ làm cạn kiệt bộ nhớ hệ thống.
  • Khi thực hiện mount, cần thêm tùy chọn "noexec" để ngăn chặn việc thực thi của bất kỳ tệp tin nào trong các thư mục này. Thêm vào đó, thêm tùy chọn "nodev" để ngăn chặn việc "ai đó" cố tình tạo ra các tệp tin thiết bị trong các thư mục này.
  • Cần thêm tùy chọn "nosuid" khi mount để ngăn chặn việc thực thi hợp lệ một tệp tin nào đó trong "/tmp" bởi một user nào đó không tạo ra tệp tin thực thi đó.

Các cấu hình và cài đặt bổ trợ khác.

Cấu hình các dịch vụ.


Cấu hình mạng.

Cấu hình lại các giao thức và thiết bị.

Cấu hình tường lửa.

Cấu hình Loging & Audit.


Điều khiển truy nhập, xác thực, ủy quyền.


Duy trì hệ thống.

Nhận xét

Bài đăng phổ biến từ blog này

Trên con đường tu đạo luôn cực kỳ theo đuổi!

C++ Con trỏ (Pointer) toàn thư: Phần 4: Con trỏ "đa cấp". Đánh nhau bằng con trỏ.

Vừa ngộ ra sự vi diệu của Padding Oracle Attack thì được tin crush hồi lớp 12 sắp cưới.