Tôi cần một lời khuyên chung về thiết lập ClamAV (v1.02+) trong môi trường Docker.
Tôi có nhiều vùng chứa chạy trên Linux (hiện tại là Ubuntu 18.04 LTS) xuất các thư mục liên tục của chúng dưới /var/lib/datastore/tenant_files
thư mục con. Một số ứng dụng chạy bên trong vùng chứa cho phép tải lên tài liệu mà tôi muốn ClamAV quét trong đó.
Hiện tại tôi đã đưa ra cấu hình sau:
LocalSocket /var/run/clamav/clamd.ctl
FixStaleSocket true
LocalSocketGroup clav
LocalSocketMode 666
# TemporaryDirectory không được đặt thành mặc định /tmp tại đây để ghi đè
# có thể mặc định với các biến môi trường TMPDIR/TMP/TEMP
người dùng
ScanMail đúng
ScanArchive đúng
ArchiveBlockEncrypted sai
MaxDirectoryRecursion 15
FollowDirectorySymlinks sai
FollowFileSymlinks sai
Thời gian chờ đọc 180
Chủ đề tối đa 12
MaxConnectionQueueLength 15
Nhật kýSyslog sai
LogRotate đúng
Cơ sở đăng nhập LOG_LOCAL6
LogClean sai
ĐăngVerbose sai
PreludeEnable không
PreludeAnalyzerName ClamAV
Cơ sở dữ liệuDirectory/var/lib/clamav
Cơ sở dữ liệu chính thứcChỉ sai
Tự kiểm tra 3600
tiền cảnh sai
Gỡ lỗi sai
ScanPE đúng
MaxEmbeddedPE 10M
QuétOLE2 đúng
ScanPDF đúng
QuétHTML đúng
Tối đaHTMLChuẩn hóa 10M
MaxHTMLNoTags 2M
MaxScriptChuẩn hóa 5M
MaxZipTypeRcg 1M
QuétSWF đúng
ThoátOnOOM sai
LeaveTemporaryFiles sai
Phát hiện thuật toán đúng
ScanELF đúng
Thời gian chờ nhàn rỗi 30
CrossFilesystem đúng
Lừa đảoChữ ký thật
PhishingScanURL đúng
Lừa đảoAlwaysBlockSSLMismatch false
Lừa đảoAlwaysBlockCloak sai
PartitionIntersection sai
Phát hiệnPUA sai
ScanPartialMessages sai
HeuristicScanPrecedence sai
StructuredDataDetection sai
LệnhReadTimeout 30
GửiBufTimeout 200
Hàng đợi tối đa 100
ExtendedDetectionInfo đúng
OLE2BlockMacros sai
AllowAllMatchScan đúng
ForceToDisk sai
Vô hiệu hóaKiểm tra sai
TắtCache sai
MaxScanTime 120000
Kích thước quét tối đa 100M
Kích thước tệp tối đa 25M
Đệ quy tối đa 16
Tệp tối đa 10000
Phân vùng tối đa 50
MaxIconsPE 100
PCREMmatchGiới hạn 10000
PCRERecMatchLimit 5000
PCREMMaxKích thước tệp 25M
ScanXMLDOCS đúng
QuétHWP3 đúng
MaxRecHWP3 16
StreamMaxLength 25M
LogFile /var/log/clamav/clamav.log
LogTime đúng
LogFileUnlock sai
LogFileMaxSize 0
mã byte đúng
Bytecode Bảo mật TrustSigned
Thời gian chờ mã byte 60000
OnAccessMaxFileSize 5M
Loại trừPath ^/proc
Loại trừPath ^/sys
Đường dẫn loại trừ ^/dev
Loại trừPath ^/snap
ExcludePath ^/var/lib/lxcfs/cgroup
ExcludePath ^/var/lib/datastore/quarantine
OnAccessIncludePath/var/lib/datastore/tenant_files
OnAccessExcludeUnameclav
OnAccessPrevent có
OnAccessExcludeRootUID sai
VirusEvent /etc/clamav/virus-event.bash
đây là phần tổng hợp của một số bài báo tìm thấy trên internet và tài liệu từ trang ClamAV. tôi cũng có tiếng kêu
dịch vụ được thiết lập như vậy:
# /etc/systemd/system/clamonacc.service
[Đơn vị]
Mô tả=ClamAV On Access Scanner
Yêu cầu=clamav-daemon.service
Sau=clamav-daemon.service syslog.mục tiêu mạng.mục tiêu
[Dịch vụ]
Loại = đơn giản
Người dùng = root
ExecStartPre=/bin/bash -c "trong khi [ ! -S /var/run/clamav/clamd.ctl ]; ngủ 1; xong"
ExecStart=/usr/sbin/clamonacc -F --config-file=/etc/clamav/clamd.conf --log=/var/log/clamav/clamonacc.log
[Cài đặt]
WantedBy=multi-user.target
Bây giờ nếu tôi đặt ClamAV chạy với tư cách người dùng root, nó sẽ hoạt động, nhưng tôi nhận thấy một số vòng lặp không thể đoán trước khi quét các tệp do root sở hữu (như được mô tả đây). Chạy như ngao
người dùng hoạt động, nhưng chỉ dành cho người dùng thông thường không phải root và một số vùng chứa vẫn đang chạy các quy trình của họ bên trong với tư cách là người dùng root bên trong và điều đó chuyển thành các tệp do người dùng root sở hữu trên điểm cuối đã xuất.
Tôi đã nghĩ đến việc sử dụng ACL nhưng vì có thể có khá nhiều tệp (tính bằng hàng triệu) nên có thể hơi quá mức cần thiết. Bạn nghĩ sao? Tôi có nên buộc quyền sở hữu các tệp đối với GID của ngao
hay cái gì khác?
Chưa kể tôi phải đặt ClamAV ở chế độ khiếu nại vì nó thường không chặn tệp bị nhiễm và tôi không muốn mở tệp đó với tư cách người dùng root.