ClamAV는 오픈소스 기반의 안티바이러스 소프트웨어로, 리눅스 및 유닉스 기반 서버에서 악성코드 및 바이러스를 검사하는 용도로 사용됩니다. 특히 , 이메일 서버에서 악성 첨부파일을 탐지하거나, 웹서버에 업로드된 파일을 검사하는 데 유용합니다.
▣ ClamAV 설치 방법
- 패키지 목록 업데이트:
sudo apt update
- ClamAV 및 클라이언트 데몬 설치:
sudo apt install clamav clamav-daemon
➠ clamav-daemon 은 ClamAV의 백그라운드 서비스를 제공하여 주기적인 검사를 설정할 수 있게 합니다.
- 바이러스 테이터베이스 업데이트:
ClamAV는 설치 후 최신 바이러스 테이터베이스가 필요합니다. 이를 위해 아래 명령어를 실행하여 업데이트합니다.
(처음 설치하는 경우에는 업데이트를 진행하는 것이 좋습니다)
sudo freshclam
➠ sudo freshclam 명령어 실행 시 업데이트 오류가 발생하는 경우.
➠ 실행 중인 freshclam 프로세스 종료 후 다시 진행합니다.
sudo pkill freshclam
sudo freshclam
- 실시간 검사 설정:
ClamAV는 기본적으로 실시간 검사 기능을 제공하지 않지만, clamd 서비스를 통해 실시간 검사 대체 기능을 활용할 수 있습니다.
sudo systemctl start clamav-daemon
sudo systemctl enable clamav-daemon
➠ clamav-daemon은 파일이 추가되거나 변경될 때마다 검사하도록 트리거할 수 있습니다.
▣ ClamAV 실행 방법
- 기본 검사 명령어:
ClamAV의 clamscan 명령을 사용하여 특정 디렉토리나 파일을 검사할 수 있습니다.
sudo clamscan -r /path/to/scan
- -r : 하위 디렉토리까지 검사
- /path/to/scan : 검사할 디렉토리 또는 경로 지정
- 검사 결과를 로그 파일로 저장:
로그 파일에 결과를 저장하려면 –log 옵션을 사용합니다.
sudo clamscan -r /path/to/scan --log=/var/log/clamav/scan_result.log
- 전체 시스템 스캔 예시:
/sys, /proc, /dev 같은 특수 디렉토리는 스캔이 필요하지 않으므로 제외하는 것이 좋습니다.
sudo clamscan -r / --exclude-dir="^/sys|^/proc|^/dev" --log=/var/log/clamav/full_scan.log
- –exclude-dir 옵션을 사용해 스캔이 필요 없는 특수 디렉토리 제외.
➠ 전체 스캔을 진행할 때는, 스캔 시간이 오래 걸릴 수 있으니 이 점 참고하시기 바랍니다.
▣ 모니터링 방법
- 검사 로그 확인:
ClamAV의 로그 파일을 주기적으로 확인하여 악성 파일이 발견되었는지 모니터링할 수 있습니다. 기본 로그 파일은 (/var/log/clamav/clamav.log) 입니다.
sudo tail -f /var/log/clamav/clamav.log
- 데이터베이스 업데이트 상태 확인:
freshclam의 업데이트 로그 파일(/var/log/clamav/freshclam.log)을 주기적으로 확인하여, 데이터베이스가 최신 상태로 유지되고 있는지 모니터링합니다.
sudo cat /var/log/clamav/freshclam.log
▣ crontab을 이용한 주기적인 검사 및 결과 알림 설정
ClamAV는 자체적으로 주기적인 검사를 수행하는 스케줄링 기능이 없고, 메일 알림 기능도 기본적으로 지원하지 않습니다. 따라서 일반적으로 cron 작업을 사용해 주기적으로 검사하고, 검사 결과를 메일로 발송하는 방식을 사용합니다. 다만 clamd 데몬을 사용하여 클라이언트가 주기적으로 검사 요청을 보낼 수는 있습니다.
- 스크립트 작성:
아래와 같은 Bash 스크립트를 작성하여 검사 결과를 이메일로 발송할 수 있습니다.
#!/bin/bash
SCAN_DIR="/path/to/scan"
LOG_FILE="/var/log/clamav/scan_result.log"
EMAIL="your_email@example.com"
# clamscan 명령 실행
sudo clamscan -r "$SCAN_DIR" --log="$LOG_FILE"
# 검사 결과 email 발송
if [ -s "$LOG_FILE" ]; then
sudo cat "$LOG_FILE" | mail -s "ClamAV Scan Results" "$EMAIL"
fi
- 스크립트에 실행 권한을 부여합니다:
chmod +x /path/to/your_script.sh
- crontab을 이용해 실행:
예) 매주 월요일 오전 3시에 your_script.sh 스크립트를 실행하도록 설정
➠ crontab 편집을 위해 터미널에 다음 명령어를 입력합니다.
sudo crontab -e
➠ crontab 파일에 다음 줄을 추가합니다.
# 매주 월요일 03시에 your_script.sh 실행
0 3 * * 1 /path/to/your_script.sh
- 각 스크립트의 경로(/path/to/your_script.sh)는 실제 스크립트 파일의 위치로 변경해야 합니다.
➠ 파일을 저장하고 나가면 crontab 스케줄이 자동으로 적용됩니다.
이 설정으로 your_script.sh는 매주 월요일 오전 3시에 실행됩니다.
『 출처 – ChatGPT 』