Quét virus, malware, trojan hiệu quả với ClamAV
Trong thế giới phát triển phần mềm ngày nay, bảo mật luôn là một yếu tố quan trọng không thể bỏ qua. Những mối đe dọa như virus, trojan và malware có thể ẩn nấp trong các tệp mã nguồn, tài nguyên hệ thống hoặc thậm chí trong các thư viện phần mềm mà chúng ta sử dụng hàng ngày.
Dù các giải pháp bảo mật thương mại hiệu quả nhưng chúng thường không phù hợp với dự án nhỏ hoặc công ty khởi nghiệp vì chi phí cao. Do đó, ClamAV – một giải pháp mã nguồn mở, miễn phí và dễ triển khai – trở thành lựa chọn lý tưởng. ClamAV cung cấp khả năng quét virus, malware và dễ tích hợp vào quy trình phát triển phần mềm.
Bài viết này sẽ giới thiệu về ClamAV, vai trò của nó trong bảo mật mã nguồn, cách sử dụng ClamAV trong môi trường Docker để tự động hóa và tối ưu quy trình quét mã nguồn.
Giới thiệu về ClamAV
ClamAV là một phần mềm quét virus mã nguồn mở nổi tiếng, được sử dụng rộng rãi trên các hệ thống Unix (Linux, macOS). Phần mềm này đặc biệt phù hợp với các máy chủ và môi trường không sử dụng hệ điều hành Windows. Ngoài ra, ClamAV không chỉ quét virus mà còn phát hiện malware, trojan và các mối đe dọa khác trong email, hệ thống tập tin và các luồng dữ liệu đầu vào khác.
Phần mềm này hiện được duy trì bởi Cisco Talos – nhóm nghiên cứu an ninh mạng trực thuộc Cisco. Nó cung cấp khả năng phát hiện malware hiệu quả. Tuy nhiên, ClamAV chủ yếu tập trung vào các mối đe dọa đã biết. Nó không được thiết kế để xử lý hiệu quả các mối đe dọa zero-day.
Vì sao bạn cần ClamAV?
- Phát hiện mã độc trong tài nguyên không đáng tin cậy: Mặc dù mã nguồn của ứng dụng, website hoặc hệ thống có thể không chứa virus trực tiếp, nhưng trong các thư viện hoặc tài nguyên phụ thuộc từ bên ngoài có thể tiềm ẩn malware hoặc trojan. Vì vậy ClamAV có thể giúp bạn phát hiện mã độc tiềm ẩn từ các file tải lên hoặc các phần mềm phụ thuộc.
- Chi phí thấp: ClamAV là phần mềm mã nguồn mở hoàn toàn miễn phí, do đó rất phù hợp với các dự án nhỏ hoặc các công ty không có ngân sách lớn cho các phần mềm bảo mật thương mại.
- Quét tự động hóa: Có thể dễ dàng được tích hợp vào các quy trình DevOps hoặc CI/CD để tự động quét mã nguồn hoặc các tệp tải lên của người dùng, từ đó giúp bảo vệ ứng dụng ngay từ giai đoạn phát triển.
- Cập nhật liên tục: ClamAV được duy trì và cập nhật thường xuyên, cung cấp cơ sở dữ liệu virus mới nhất. Nhờ đó nó luôn sẵn sàng để phát hiện các mối đe dọa mới.
Lợi ích khi sử dụng ClamAV
- Miễn phí và mã nguồn mở: Không cần chi phí bản quyền, dễ dàng triển khai và tùy chỉnh theo nhu cầu.
- Dễ sử dụng và tích hợp: ClamAV dễ tích hợp vào các công cụ và quy trình tự động.
- Phát hiện đa dạng các loại malware: ClamAV có thể quét nhiều loại file (từ mã nguồn, tệp nén đến email) và hỗ trợ nhiều hệ điều hành.
- Hỗ trợ đa nền tảng: Ngoài việc quét trên Linux, ClamAV còn hỗ trợ Windows và macOS, giúp bảo vệ hệ thống của bạn khỏi malware bất kể nền tảng sử dụng.
Hướng dẫn tạo Docker container sử dụng ClamAV để quét mã nguồn tự động
Trong hướng dẫn này, tôi sẽ trình bày cách build một Docker Container sử dụng ClamAV để quét mã nguồn. Việc này giúp bạn triển khai ClamAV dễ dàng và hiệu quả, đồng thời bảo vệ mã nguồn trong các môi trường phát triển.
Bước 1: Tạo Dockerfile cho ClamAV
Tạo một tệp Dockerfile để xây dựng một container chứa ClamAV. Trong tệp này, bạn sẽ cài đặt ClamAV và cấu hình môi trường để quét mã nguồn.
# Chọn image base từ clamav/clamav FROM clamav/clamav:latest # Cập nhật cơ sở dữ liệu virus khi build image RUN freshclam # Lệnh mặc định khi chạy container sẽ chạy freshclam và clamscan CMD freshclam && clamscan -r --bell -i /scan
Chú thích:
- -r: Quét đệ quy tất cả file và thư mục con trong /scan.
- –bell: Phát tiếng “chuông” (nếu được hỗ trợ) khi phát hiện virus.
- -i: Chỉ hiển thị các file bị nhiễm (ẩn các file sạch).
- /scan: Thư mục chứa mã nguồn hoặc file cần quét (được mount từ máy chủ).Dữ liệu từ các API.
Xem thêm: Mẹo Build Docker Images
Bước 2: Tạo file docker-compose.yml
File docker-compose.yml giúp bạn dễ dàng quản lý và triển khai container ClamAV trong môi trường phát triển.
services: clamav: build: context: . image: clamav-scanner container_name: clamav-scanner
Bước 3: Build Docker Image
Mở terminal và di chuyển đến thư mục chứa Dockerfile và docker-compose.yml, sau đó chạy lệnh để build Docker image.
docker compose build
Bước 4: Chạy Docker Container để quét mã nguồn
Sau khi build thành công, bạn có thể chạy Docker container để quét thư mục mã nguồn. Bạn cần mount thư mục chứa mã nguồn vào container để ClamAV có thể quét.
docker run --rm -v <full-path-source-code>:/scan clamav-scanner
Demo
1. Chuẩn bị data
Trong ví dụ này, cấu trúc thư mục của project-a bao gồm một file normal.txt và một thư mục eicar. Thư mục eicar chứa các file tải từ bộ kiểm tra malware của Eicar, bao gồm eicar_com.zip, eicar.com, eicar.txt, và eicarcom2.zip. Các file trong thư mục eicar đều được coi là virus, do đó khi quét, chúng sẽ bị phát hiện (found). Ngược lại, file normal.txt là file sạch và không hiển thị trong kết quả quét.
project-a/ ├── normal.txt └── eicar/ ├── eicar_com.zip ├── eicar.com ├── eicar.txt └── eicarcom2.zip
2. Cấu hình cronjobs ClamAV
Để thực hiện cấu hình cho hệ thống quét malware theo thời gian định kì cronjob thì ta làm như sau:
# crontab -e
0 0 * * * docker run --rm -v /var/opt/www/project-a:/scan clamav-scanner
Với nội dung cấu hình cronjob trên thì cứ mỗi ngày vào lúc 00 giờ sáng, ClamAV sẽ tiến hành quét malware, trojan ở thư mục /var/opt/www/project-a/
3. Kết quả sau khi scan
vuongtoan@DESKTOP-S0923Q3:~/www/clamav$ docker run --rm -v ./project-a:/scan clamav-scanner ClamAV update process started at Wed Dec 11 17:34:43 2024 daily.cld database is up-to-date (version: 27484, sigs: 2069620, f-level: 90, builder: raynman) main.cvd database is up-to-date (version: 62, sigs: 6647427, f-level: 90, builder: sigmgr) bytecode.cvd database is up-to-date (version: 335, sigs: 86, f-level: 90, builder: raynman) /scan/eicar/eicar.txt: Eicar-Signature FOUND /scan/eicar/eicarcom2.zip: Win.Test.EICAR_HDB-1 FOUND /scan/eicar/eicar_com.zip: Win.Test.EICAR_HDB-1 FOUND /scan/eicar/eicar.com: Eicar-Signature FOUND ----------- SCAN SUMMARY ----------- Known viruses: 8701412 Engine version: 1.4.1 Scanned directories: 2 Scanned files: 5 Infected files: 4 Data scanned: 0.00 MB Data read: 0.00 MB (ratio 0.00:1) Time: 19.253 sec (0 m 19 s) Start Date: 2024:12:11 17:34:43 End Date: 2024:12:11 17:35:02
Kết luận
ClamAV là một công cụ quét virus mạnh mẽ và miễn phí, giúp bảo vệ hệ thống khỏi các mối đe dọa. Hơn nữa, việc xây dựng Docker container với ClamAV giúp đơn giản hóa quá trình quét mã nguồn, đảm bảo mã của bạn không chứa malware, trojan hoặc các mối đe dọa bảo mật khác.
Điều này rất quan trọng trong môi trường phát triển để đảm bảo bảo mật cho các ứng dụng và hệ thống của bạn. Do đó, hãy thử tích hợp ClamAV vào quy trình phát triển của bạn để bảo vệ mã nguồn và ứng dụng một cách hiệu quả!
![]() | Vương Toàn PHP Developer |