Ubuntu 22.04 Server / 백신 프로그램 ClamAV 설치 및 사용법

Ubuntu 22.04 Server에서 ClamAV를 설치하려면 clamav와 clamav-freshclam 패키지를 설치하고, 바이러스 진단 데이터베이스를 업데이트한 뒤 clamscan으로 원하는 파일이나 디렉터리를 검사합니다. 이 방법은 요청할 때 실행하는 검사이며, 설치만으로 실시간 감시가 켜지는 것은 아닙니다.

ClamAV와 검사 전 준비

ClamAV는 악성코드를 탐지하는 오픈 소스 도구 모음입니다. freshclam은 탐지에 쓰이는 데이터베이스를 업데이트하고, clamscan은 실행할 때 데이터베이스를 읽어 지정한 대상을 검사합니다. clamscan은 별도의 검사 데몬 clamd가 실행 중이지 않아도 됩니다.

이 글은 Ubuntu 22.04 Server의 패키지와 systemd 서비스 기준입니다. 패키지 저장소와 진단 데이터베이스에 접근할 네트워크 연결, 설치를 위한 sudo 권한, 데이터베이스와 검사에 필요한 디스크 공간 및 메모리가 필요합니다. 운영 서버에서는 검사 범위와 부하를 고려하여 한가한 시간에 실행하세요.

ClamAV 설치하기

패키지 목록을 갱신하고 검사 도구와 업데이트 도구를 설치합니다.

sudo apt update
sudo apt install clamav clamav-freshclam

설치가 끝나면 버전과 업데이트 서비스 상태를 확인합니다.

clamscan --version
systemctl status clamav-freshclam --no-pager

서비스가 실행 중이면 자동 업데이트가 동작하도록 구성된 것입니다. 상태에 오류가 있거나 서비스가 없다면 아래의 업데이트 및 문제 해결 부분을 확인하세요. 설치된 버전과 데이터베이스 상태에 따라 출력은 다릅니다.

진단 데이터베이스 업데이트하기

검사 전에 최신 데이터베이스가 필요합니다. clamav-freshclam 서비스가 실행 중이라면 백그라운드에서 업데이트하므로 먼저 상태와 최근 기록을 확인하세요.

systemctl status clamav-freshclam --no-pager
journalctl -u clamav-freshclam -n 30 --no-pager

수동 업데이트가 필요하고 서비스가 실행 중이었다면, 두 업데이트 프로세스가 같은 로그나 데이터베이스를 동시에 사용하지 않도록 서비스를 잠시 중지한 다음 실행합니다.

sudo systemctl stop clamav-freshclam
sudo freshclam

업데이트 성공 여부와 관계없이 원래 실행 중이던 서비스는 다시 시작하고 상태를 확인합니다. 서비스가 원래 중지된 상태였다면 임의로 시작하지 말고 기존 운영 설정을 따르세요.

sudo systemctl start clamav-freshclam
systemctl status clamav-freshclam --no-pager

다운로드 실패나 오래된 버전 경고가 나오면 인터넷·DNS·프록시 설정과 패키지 업데이트 상태를 확인하세요. 반복 요청 제한이나 오류에 대한 설명은 ClamAV의 FreshClam 문제 해결 문서를 참고할 수 있습니다.

파일과 디렉터리 검사하기

예를 들어 현재 사용자의 다운로드 디렉터리를 하위 디렉터리까지 검사하려면 다음과 같이 실행합니다. 실제 검사할 경로로 바꾸세요.

clamscan -r "$HOME/Downloads"

-r은 하위 디렉터리도 검사합니다. 파일 하나를 검사하려면 clamscan /path/to/file처럼 파일 경로를 지정합니다. 출력이 많다면 탐지 항목만 표시하는 --infected를 추가할 수 있습니다.

clamscan -r --infected "$HOME/Downloads"

검사 계정이 읽지 못하는 파일은 검사할 수 없으므로 권한 오류를 확인하세요. 다른 사용자의 파일을 포함하는 /home처럼 관리자 권한이 필요한 범위는 권한과 영향을 검토한 뒤 sudo clamscan -r /home으로 검사할 수 있습니다. 전체 파일 시스템을 검사하면 시간이 오래 걸리고 다른 파일 시스템까지 포함될 수 있으므로 범위를 먼저 확인하세요.

검사 결과 읽기

출력 끝의 SCAN SUMMARY에서 검사한 파일 수와 Infected files를 확인합니다. FOUND가 붙은 항목은 탐지된 파일과 탐지명을 나타냅니다. 읽기 오류나 크기 제한 등으로 검사하지 못한 항목이 있으면 탐지 수가 0이어도 모든 파일이 안전하다고 판단할 수 없습니다.

명령 직후 echo $?로 종료 상태를 확인하면 0은 탐지 없음, 1은 탐지, 2는 오류를 뜻합니다. 다른 명령을 먼저 실행하면 확인할 값이 바뀝니다. 자세한 옵션과 종료 상태는 Ubuntu 22.04 clamscan 매뉴얼에서 확인할 수 있습니다.

탐지된 파일을 처리할 때

탐지는 오탐일 수도 있으므로 파일 경로와 탐지명을 기록하고, 해당 파일의 용도와 출처를 확인하세요. 중요한 서비스 파일이나 사용자 데이터를 즉시 삭제하면 서비스 중단이나 데이터 손실이 생길 수 있습니다. 접근을 제한하고 조직의 사고 대응 절차에 따라 추가 분석과 백업 확인 후 처리하는 것이 좋습니다.

--move=DIRECTORY는 탐지 파일을 지정한 디렉터리로 옮기고 --remove는 삭제합니다. 두 옵션은 실제 파일을 변경하므로 기본 검사에는 넣지 마세요. 이동이 필요한 경우에는 검사 범위 밖의 접근이 제한된 격리 위치, 쓰기 권한, 복구 방법과 서비스 영향을 먼저 검토하세요. --copy는 복사본을 만들지만 원본은 그대로 남습니다. ClamAV 검사 문서도 오탐 가능성 때문에 자동 삭제에 주의를 권합니다.

업데이트나 검사가 실패할 때

  • 데이터베이스를 찾지 못함: 업데이트 서비스의 기록과 네트워크 연결을 확인하고 데이터베이스 다운로드가 완료된 뒤 다시 검사합니다.
  • 로그 잠금 오류: 다른 freshclam 프로세스가 실행 중인지 확인합니다. 수동 업데이트 시 실행 중인 서비스를 중지했다면 작업 후 다시 시작하세요.
  • 권한 오류 또는 검사 누락: 파일 읽기 권한과 오류 메시지를 확인하고 필요한 범위에서만 권한을 높입니다. 암호화된 파일이나 설정된 크기 제한도 검사 범위에 영향을 줄 수 있습니다.

ClamAV는 유용한 탐지 도구지만 모든 악성코드를 찾는다는 보장은 없습니다. 정기적인 업데이트, 백업, 접근 제어와 함께 사용하고, 실시간 감시가 필요하다면 별도의 구성과 운영 방식을 검토하세요.