Danh sách loại trừ là nơi quý Khách hàng nói với Endpoint Security: “chỗ này đừng kiểm”. Nó cần thiết, vì không có nó thì một số phần mềm không chạy nổi. Nhưng nó cũng là chỗ dễ làm sai nhất trong cả dịch vụ, và làm sai thì tự tay mở một lối đi mà lớp bảo vệ không nhìn vào.
Bài này nói cách đặt loại trừ hẹp nhất có thể, và những kiểu loại trừ không nên đặt.
1. Vì sao cần loại trừ
Endpoint Security kiểm mọi tệp lúc đọc và lúc ghi. Với phần lớn tệp, việc này nhanh tới mức không ai nhận ra. Nhưng có vài loại tệp bị kiểm liên tục sẽ gây vấn đề thật:
| Loại | Vì sao |
|---|---|
| Tệp dữ liệu của cơ sở dữ liệu | Bị ghi liên tục, mỗi lượt ghi lại kích hoạt một lượt kiểm. Chậm rõ rệt |
| Tệp nhật ký đang được ghi | Tương tự, và tệp phình liên tục |
| Thư mục làm việc tạm của ứng dụng | Tạo rồi xoá hàng nghìn tệp mỗi phút |
| Ảnh đĩa của máy ảo, tệp sao lưu | Rất lớn, kiểm toàn bộ mất nhiều thời gian và không có ích |
| Hàng đợi của máy chủ thư | Nhiều tệp nhỏ, đổi liên tục |
Ngoài chậm, còn một hiện tượng nặng hơn: Endpoint Security giữ tệp lại trong lúc kiểm, và phần mềm đang cần tệp đó thì gặp lỗi. Cơ sở dữ liệu có thể hỏng bản ghi, hoặc dừng hẳn.
Nên loại trừ không phải chuyện làm cho máy nhanh hơn. Nhiều trường hợp nó là điều kiện để phần mềm chạy được.
2. Nguyên tắc: hẹp nhất có thể
Một loại trừ có bốn chiều có thể thu hẹp. Mỗi chiều thu hẹp được là bớt một phần diện tích bị bỏ ngỏ.
| Chiều | Rộng, nên tránh | Hẹp, nên dùng |
|---|---|---|
| Đường dẫn | Cả một ổ đĩa, cả /var |
Đúng thư mục dữ liệu của phần mềm đó |
| Phần mở rộng tệp | Mọi tệp trong thư mục | Chỉ các phần mở rộng mà phần mềm đó thật sự dùng |
| Tiến trình | Mọi tiến trình đọc ghi ở đó | Chỉ tiến trình của chính phần mềm đó |
| Loại việc được bỏ kiểm | Bỏ kiểm toàn bộ | Chỉ bỏ kiểm lúc đọc ghi, vẫn kiểm theo lịch |
Chiều thứ ba là chiều mạnh nhất và hay bị bỏ qua. Loại trừ theo tiến trình nghĩa là: thư mục này được bỏ kiểm khi tiến trình của cơ sở dữ liệu đọc ghi, nhưng nếu một tiến trình khác chạm vào cùng thư mục đó thì vẫn bị kiểm như thường.
Khác biệt rất lớn. Loại trừ chỉ theo đường dẫn thì bất cứ thứ gì đặt tệp vào đó cũng được yên, kể cả mã độc. Loại trừ theo đường dẫn kèm tiến trình thì chỉ đúng phần mềm hợp lệ được yên.
Chiều thứ tư cũng đáng làm: cho phép bỏ kiểm lúc đọc ghi để không ảnh hưởng tốc độ, nhưng vẫn quét theo lịch vào ban đêm. Khi đó mã độc nằm trong vùng loại trừ vẫn bị tìm thấy, chỉ là muộn hơn vài giờ thay vì không bao giờ.
3. Bốn kiểu loại trừ không nên đặt
Những kiểu này hay xuất hiện vì nó giải quyết vấn đề ngay, nhưng chúng mở cửa rộng tới mức làm lớp bảo vệ gần như vô nghĩa.
a. Loại trừ cả thư mục dữ liệu website
Thư mục chứa mã nguồn website là một trong những đích hay bị nhắm nhất, vì nó thường ghi được từ bên ngoài qua chức năng tải tệp lên. Loại trừ nguyên thư mục đó nghĩa là một tệp mã độc tải lên qua lỗ hổng của website sẽ không bị phát hiện.
Cách làm đúng khi website bị kiểm chậm: loại trừ hẹp theo thư mục bộ đệm và thư mục tạm, giữ nguyên việc kiểm ở thư mục tải tệp lên và thư mục mã nguồn. Thư mục tải tệp lên là nơi cần được kiểm nhất.
b. Loại trừ theo phần mở rộng trên toàn máy
Ví dụ loại trừ mọi tệp .php hoặc mọi tệp .sh ở bất cứ đâu. Mã độc chỉ cần mang đúng phần mở rộng đó là đi qua được.
c. Loại trừ thư mục tạm của hệ thống
Loại trừ /tmp hoặc thư mục tạm của Windows. Đây lại chính là nơi mã độc hay giải nén và chạy, vì mọi tiến trình đều ghi được vào đó.
d. Loại trừ cả ổ đĩa để xử lý một lỗi
Thường xảy ra lúc đang gấp: một phần mềm báo lỗi, chưa tìm ra nguyên nhân, nên loại trừ rộng cho xong rồi tính sau. Vấn đề là “tính sau” hiếm khi xảy ra, và loại trừ đó ở lại hàng năm.
Nếu buộc phải loại trừ rộng để dịch vụ chạy lại ngay, hãy làm hai việc kèm theo: ghi lại ngày và lý do, và đặt một mốc nhắc thu hẹp nó trong vòng một tuần.
4. Cách tìm ra cần loại trừ chỗ nào
Đừng đặt loại trừ theo phỏng đoán. Có cách tìm ra chính xác.
Bước 1: xem nhật ký của Endpoint Security. Phần mềm ghi lại các lượt chặn và các tệp bị giữ. Đọc danh sách này cho biết đúng đường dẫn nào đang bị ảnh hưởng, thay vì loại trừ cả nhánh thư mục để chắc.
Bước 2: tìm tệp nào đang bị đọc ghi nhiều nhất.
# Tien trinh nao doc ghi dia nhieu nhat
sudo iotop -o
# Tep nao dang duoc mo boi tien trinh cua co so du lieu
sudo lsof -p $(pgrep -o mysqld) | head -30
Bước 3: lấy đường dẫn chính thức từ chính phần mềm, đừng đoán.
# MySQL, MariaDB: thu muc du lieu that
mysql -e "SHOW VARIABLES LIKE 'datadir';"
# PostgreSQL
sudo -u postgres psql -c "SHOW data_directory;"
Bước 4: lấy đường dẫn của tiến trình, để loại trừ theo tiến trình chứ không chỉ theo thư mục.
# Duong dan day du cua tep chuong trinh dang chay
sudo readlink -f /proc/$(pgrep -o mysqld)/exe
Có bốn thông tin này thì đặt được một loại trừ hẹp: đúng thư mục, đúng phần mở rộng, đúng tiến trình.
5. Ví dụ: từ rộng về hẹp
Cùng một vấn đề, ba cách đặt. Bảng này cho thấy khoảng cách giữa chúng.
Vấn đề: máy chủ MySQL chậm hẳn sau khi cài Endpoint Security.
| Cách đặt | Nội dung | Diện tích bỏ ngỏ |
|---|---|---|
| Rộng | Loại trừ cả ổ đĩa chứa dữ liệu | Toàn bộ ổ đĩa, mọi tiến trình, mọi loại tệp |
| Vừa | Loại trừ thư mục dữ liệu MySQL | Một thư mục, nhưng mọi tiến trình ghi được vào đó đều yên |
| Hẹp | Loại trừ thư mục dữ liệu MySQL, chỉ các phần mở rộng MySQL dùng, chỉ khi tiến trình MySQL truy cập, và vẫn quét theo lịch ban đêm | Gần như không. Tệp lạ do tiến trình khác đặt vào vẫn bị kiểm |
Cách hẹp mất thêm mười lăm phút để dựng. Nó cũng là cách duy nhất trong ba cách không tạo ra một lỗ hổng thường trực.
6. Loại trừ là thứ cần rà lại, không phải đặt một lần
Danh sách loại trừ có xu hướng chỉ dài ra: mỗi lần có lỗi lại thêm một dòng, và không ai bỏ dòng nào. Sau hai năm, danh sách thường bao phủ phần lớn những chỗ quan trọng trên máy.
Đặt lịch rà lại, mỗi sáu tháng một lần. Với từng dòng, hỏi ba câu:
| Câu hỏi | Nếu câu trả lời là không |
|---|---|
| Phần mềm cần loại trừ này còn chạy trên máy không? | Xoá dòng đó |
| Có thu hẹp thêm được chiều nào trong bốn chiều ở mục 2 không? | Thu hẹp lại |
| Có biết ai đặt dòng này và vì sao không? | Thử bỏ nó đi trên môi trường thử nghiệm, xem có gì vỡ không |
Câu thứ ba hay dẫn tới việc xoá được vài dòng. Loại trừ không ai còn nhớ lý do thường là loại trừ đặt lúc gấp, cho một vấn đề đã hết từ lâu.
Kèm theo, nên ghi tài liệu cho từng dòng ngay lúc đặt: ngày, ai đặt, cho phần mềm nào, vì hiện tượng gì. Ghi một dòng lúc đặt tiết kiệm rất nhiều thời gian về sau.
7. Bảng kiểm trước khi thêm một dòng loại trừ
| Câu hỏi | Cần trả lời được trước khi thêm |
|---|---|
| Đã đọc nhật ký để biết đúng đường dẫn nào bị ảnh hưởng chưa? | Chưa thì làm mục 4 bước 1 |
| Đường dẫn này lấy từ cấu hình của phần mềm hay là phỏng đoán? | Phỏng đoán thì làm mục 4 bước 3 |
| Có giới hạn được theo tiến trình không? | Nếu được thì nên làm |
| Có giới hạn được theo phần mở rộng tệp không? | Nếu được thì nên làm |
| Thư mục này có ghi được từ bên ngoài không, ví dụ qua chức năng tải tệp lên của website? | Nếu có thì không nên loại trừ, phải tìm cách khác |
| Có giữ được việc quét theo lịch không? | Nếu được thì nên giữ |
| Đã ghi lại ngày và lý do chưa? | Ghi ngay, đừng để sau |
Hàng thứ năm là hàng quan trọng nhất. Thư mục mà người ngoài đặt tệp vào được là thư mục cần kiểm nhất, không phải thư mục nên bỏ kiểm.
8. Khi cần hỗ trợ
Quý Khách hàng gặp hiện tượng chậm hoặc lỗi sau khi triển khai Endpoint Security và chưa rõ nên loại trừ chỗ nào, hãy nhắn qua khung chat ở góc phải màn hình, gửi kèm:
- Tên phần mềm đang gặp vấn đề và nguyên văn thông báo lỗi.
- Phần nhật ký của Endpoint Security quanh thời điểm đó.
- Kết quả các lệnh ở mục 4.
Muốn rà lại cả danh sách loại trừ đang có thì cũng nhắn qua khung chat, đội ngũ kỹ thuật xem cùng và chỉ ra dòng nào thu hẹp được.
Hai bài liên quan: “Triển khai Endpoint Security: cài đặt và những ngày đầu” và “Endpoint Security báo phát hiện mối đe doạ: cần làm gì”.