Trang chủ Lập trình PHP - MySQL Quản lý file và dựng service quét mã độc định kỳ cho...

Quản lý file và dựng service quét mã độc định kỳ cho source-code sau khi deploy lên server

Gần đây tôi gặp 1 tình huống củ khoai. Chuyện là sếp yêu cầu làm 1 cái landing page bằng WordPress. Mọi chuyện chắc cũng bình thường nếu như tôi không phải là 1 thằng hoàn toàn không biết gì về WordPress.

May sao, 1 em gái xinh đẹp trong team có kinh nghiệm build theme WordPress trước đó. Mặc dù khả năng code của em có hạn nhưng vẫn tin tưởng giao em xây dựng website này. Tự phụ với cái trình PHP tự vọc tự vạch chắc cũng không có vấn đề gì về quản lý 1 website đã chạy.

Nhưng mà đời thì không như mơ, demo chả sao, deploy production 6h chiều 8h tối site bị hack tè le hột me. Đau khổ mất 1 phút rồi lại ngồi restone và chặn các PHP functions nguy hiểm lại.

Anh PM hôm sau, than trời nội dung vừa đẩy cả chiều hôm trước hôm sau die hết. Liệu lần này có bị nữa không. Nói thật, bản thân mình cũng ko dám chắc để trả lời. Bài toán đặt ra: Làm sao để kiểm soát được cái source này đây?

Hóc búa 1

Về bản chất, WordPress là open-source, nghĩa là mọi ngóc ngách, plugins của nó, đường dẫn tập tin, thư mục, nội dung như nào đã nằm tơ hơ trên mạng rồi. Bản thân lại không có kinh nghiệm quản lý WordPress và CHMOD nó. Nên bài toán đặt ra: Làm sao bảo toàn được các file source-code mà không bị ai can thiệp kể cả thằng đó là thằng dev cùng mình?

Sau vài đêm ôm gối nằm mơ thỉnh giáo các cao nhân, có vài cách khả dĩ như sau

Quản lý file dựa trên checkSum

Như anh em đã biết, mỗi 1 file đều có 1 cái checkSum riêng biệt, cái hash này là unique cho các tập tin. Vậy thì kịch bản khả dĩ như sau:

  1. Dựng 1 lệnh quét toàn bộ file trong hệ thống (đương nhiên các tập tin source thôi)
  2. Tính toán checkSum của từng file. Cái này đầy thư viện có sẵn (tham khảo: https://www.php.net/manual/en/function.md5-file.php)
  3. Tạo 1 cái SQLite DB -> chạy và insert vào đây. Tập tin này cần cấp quyền chỉ đọc và không được ghi, không được xóa
  4. Viết 1 file checkSum.php chẳng hạn, định kì chạy file này, tính toán checkSum của từng tập tin rồi so sánh với bản checkSum ban đầu -> ghi log.

Đến đây thì coi như là có công cụ giám sát rồi. Tuy nhiên thì nó vẫn chưa triệt để lắm. Thằng nào up mã độc lên đám source thì sao. Làm sao để quét cả nghìn tập tin bây giờ?

Nghĩ ngợi mất cả ngày. Tình cờ, thấy thằng VirusTotal cung cấp API, khá đủ tính năng. Ngồi ngâm cứu mất trọn 3 tiếng trong lúc đã hết 1 gói mì hảo hảo chua cay. Kịch bản có vẻ ổn hơn

  1. Viết command lấy danh sách tất cả các file (recursive) trong thư mc5
  2. Chạy vòng lặp lần lượt gọi tới API scan và getReport của VirusTotal
  3. Phân tích response_code của API trả về. Nếu đã có kết quả -> check thời gian lần cuối báo cáo. Hoặc nếu muốn thì reScan luôn
  4. getReport từ API report của VirusTotal
  5. Lấy dữ liệu từ API Report -> check xem có thằng nào warning không -> gửi email đến system admin hoặc dev tùy
  6. Set cho hệ thống tự chạy vào thời điểm nào ít người truy cập
  7. Tận hưởng thành quả

Okay, đến đây có vẻ đã xây được 1 con monitor ngon lành rồi. Phần còn lại dưới đây là source-code full không che mà mình đã build thành 1 thư viện hoàn chỉnh, có thể sử dụng composer để build: https://packagist.org/packages/nguyenanhung/dr-virus

Cách hướng dẫn sử dụng được viết chi tiết trong link packages.

Nguyễn An Hưng

Hung Nguyenhttps://nguyenanhung.com/
Bắt đầu là dân code dạo kiếm sống qua ngày, trời xui đất khiến thế nào bây giờ ngồi làm tech lead. Không code dạo nữa, chuyển sang chém gió dạo.

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây

- Advertisment -
Shopify

BÀI VIẾT MỚI

Cách chuyển đổi giao diện Facebook từ mới về giao diện cũ và ngược lại

Hôm rồi tự nhiên Facebook tự động chuyển giao diện đang dùng hiện tại (cũ) sang giao diện mới. OK! Hơi lạ, bất tiện...

12 Quy tắc viết email chuyên nghiệp không phải ai cũng biết

1. Tiêu đề email email rõ ràng, ngắn gọn, đúng trọng tâm. 2. Sử dụng một địa chỉ email chuyên nghiệp. 3. Nghĩ kỹ trước khi...

Hướng dẫn tạo hiệu ứng slow-motion với Instagram Reels

Sau khi cộng đồng công nghệ kêu gọi tẩy chay TikTok vì nghi ngờ ứng dụng này thu thập dữ liệu người dùng thì...

Amazon ra mắt Amazon Honeycode – Công cụ hỗ trợ người dùng tạo ứng dụng di động và web

Mới đây Amazon vừa thông báo ra mắt dịch Amazon Honeycode. Đây là một dịch vụ hỗ trợ người dùng tạo ra các ứng...

Điều gì sẽ xảy ra với cơ thể khi bạn trúng đạn

Chúng ta chắc hẳn đã xem khá nhiều bộ phim hành động mà trong đó nhân vật chính bị trúng đạn vào vai, vào...

BẠN XEM CHƯA

Nhận diện tiếng Trung trong PHP

Đang làm một dự án liên quan đến tiếng Trung Quốc. Cũng dự án này mà hôm rồi mình đã chia sẻ giải pháp...

Nếu một ngày bọn mình chẳng cưới nhau

Nếu một ngày bọn mình chẳng cưới nhau Anh vẫn thế thôi, lấy một cô vợ khác Gom những mảnh tình yêu vỡ nát Anh cất vào...

Bảo vệ toàn diện máy tính với Bullguard Premium Protection 2013

Có rất nhiều sản phẩm phần mềm hỗ trợ bạn trong việc bảo vệ những dữ liệu quan trong trên máy tính cũng như...

Khám phá và trải nghiệm vẻ đẹp hoang sơ của đảo Cù Lao Xanh – Quy Nhơn

Cù Lao Xanh là địa điểm du lịch thích hợp cho những ai yêu thích kiểu du lịch bụi, muốn khám phá, trải nghiệm...

Tắt “tai thỏ” trên một số smartphone Android đời mới

Sau khi Apple tung ra chiếc điện thoại iPhone X với màn hình có vùng khuyết màu đen ở sát cạnh trên của màn...