리눅스/리눅스 패키지

리눅스 필수 설치 패키지 - clamav와 clamtk

씨실과 날실 2018. 10. 22. 10:00


안내

이 글의 기존 내용은 당시 LTS 버전이었던 우분투 18.04를 기반으로 작성되었으나 새로운 LTS 버전인 20.04가 배포되었기에 그에 맞춰 내용을 업데이트합니다.

컴퓨터 초기 세팅을 완료하고 나서 가장 먼저 설치하는 프로그램은 보통 안티바이러스 혹은 백신 프로그램입니다.

리눅스에도 유무료의 안티바이러스 패키지들이 여럿 존재하는데요. 그 중 가장 대표적인 바이러스 검사 툴킷인 ClamAV를 소개하고자 합니다.

ClamAV

이 ClamAV는 사실 메일 서버 등에 상주하면서 이메일 등으로 전파되는 바이러스 내지 악성코드를 잡아내는 서버형 안티바이러스 패키지였습니다. 그래서 DB가 빈약한 편입니다.

이 ClamAV는 정확히는 바이러스를 치료해주지는 않습니다. 바이러스를 검사하고 발견한 경우 그것을 격리하는 정도까지의 기능만 합니다.

clamav의 공식 웹사이트는 http://www.clamav.net/입니다.

이곳에서 최신 버전을 다운받아 설치하셔도 됩니다만 저는 우분투 저장소를 통해 설치하고 실행하는 법을 알려드리고자 합니다.

터미널을 열어

study@study-VirtualBox:~$ sudo apt install clamav

라고 입력해줍니다. 그러면 아래와 같은 안내가 뜰 것입니다.


우분투 20.04에서 설치 진행 과정

study@study-VirtualBox:~$ sudo apt install clamav
[sudo] study의 암호: 
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음의 추가 패키지가 설치될 것입니다 :
  clamav-base clamav-freshclam libclamav9 libmspack0 libtfm1
제안하는 패키지:
  clamav-docs libclamunrar9
다음 새 패키지를 설치할 것입니다:
  clamav clamav-base clamav-freshclam libclamav9 libmspack0 libtfm1
0개 업그레이드, 6개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
1,171 k바이트 아카이브를 받아야 합니다.
이 작업 후 4,013 k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] 

y를 입력하여 설치를 진행합니다.

우분투 20.04에서는 기본적으로 보통 5~6개의 패키지가 같이 설치될 것입니다.

기본적으로 clamav clamav-base clamav-freshclam libclamav9 libtfm1 패키지들이 설치되며 추가로 libmspack0 패키지가 설치될 수 있습니다.

그외에 제안 패키지로 clamav-docs와 libclamunrar9  이렇게 두 가지 패키지를 알려주는데요. 이것들은 필수 설치 패키지는 아니므로 기본 설치 패키지들을 설치 후에 따로 설치 하셔도 되고, 그냥 설치하지 않고 넘어가도 됩니다.


우분투 18.04에서 설치 진행 과정

우분투 18.04에서는 기본적으로 총 8개의 패키지가 같이 설치될 것입니다.

그외에 제안 패키지로 clamav-docs libclamunrar7 이렇게 두 가지 패키지를 알려주는데요. 이것들은 필수 설치 패키지는 아니므로 기본 설치 패키지들을 설치 후에 따로 설치 하셔도 되고, 그냥 설치하지 않고 넘어가도 됩니다.

위의 내용을 확인하시고 y를 눌러줍니다. 그러면 설치가 됩니다.


clamav 기본 사용법

이제 이 clamav를 사용해 봅시다.


clamav 악성코드 DB 업데이트

이 clamav는 자동적으로 업데이트되므로 따로 업데이트 명령을 내려줄 필요는 없습니다. 그러나 굳이 수동으로 업데이트를 하겠다면 다음과 같이 입력해줍니다.

study@study-VirtualBox:~$ sudo service clamav-freshclam stop
study@study-VirtualBox:~$ sudo freshclam
그러면 아래와 같은 형식으로 업데이트 내용을 알려줍니다.

study@study-VirtualBox:~$ sudo service clamav-freshclam stop
study@study-VirtualBox:~$ sudo freshclam
Mon Jun 29 10:30:52 2020 -> ClamAV update process started at Mon Jun 29 10:30:52 2020
Mon Jun 29 10:30:52 2020 -> daily.cvd database is up to date (version: 25857, sigs: 2895961, f-level: 63, builder: raynman)
Mon Jun 29 10:30:52 2020 -> main.cvd database is up to date (version: 59, sigs: 4564902, f-level: 60, builder: sigmgr)
Mon Jun 29 10:30:52 2020 -> bytecode.cvd database is up to date (version: 331, sigs: 94, f-level: 63, builder: anvilleg)
study@study-VirtualBox:~$

완료가 되면 다시 아래의 명령을 입력해주면 됩니다.

study@study-VirtualBox:~$ sudo service clamav-freshclam start


감염파일 격리 디렉터리 생성

악성코드를 검사하기 전 발견된 감염파일을 격리할 디렉터리를 만들어 주어야 합니다.

study@study-VirtualBox:~$ cd /
study@study-VirtualBox:/$ sudo mkdir virus

이제 virus라는 디렉토리가 최상위에 만들어졌습니다. 제대로 만들어 졌는지 확인해 봅시다. 확인하는 방법은 두 가지입니다. 터미널에서 확인하는 방법과 노틸러스(파일) 앱에서 확인하는 방법입니다.

먼저 터미널에서 확인해봅시다.

일단 명령을 내리는 위치가 virus 디렉토리가 있는 곳이어야 합니다.

study@study-VirtualBox:/$ 
이곳에서 다음의 명령어를 칩니다.

study@study-VirtualBox:/$ ls

그럼 아래와 같이 virus 디렉토리가 생긴 것을 확인할 수 있습니다.


이제 노틸러스에서 확인해봅시다.

노틸러스를 열어 좌 하단에 있는 다른 위치를 눌러줍니다. 그후 상단에 있는 컴퓨터를 클릭해줍니다.

virus 폴더가 생긴 것을 확인하실 수 있습니다.


악성코드 검사

이제 악성코드를 검사해봅시다.

전체 검사 명령어는 아래와 같습니다.

study@study-VirtualBox:~$ clamscan -r /


리눅스의 경우 보통은 각 계정의 소유 및 권한 폴더를 검사하는 것으로 끝내는 경우도 있습니다.

study@study-VirtualBox:~$ clamscan -r /home

그럼 검사가 완료된 후 다음과 같이 보고서가 나올 겁니다.


study@study-VirtualBox:~$ clamscan -r /home
/home/study/.cache/ibus/bus/registry: OK
/home/study/.cache/event-sound-cache.tdb.0d0bf09ce353427fad64704d138a5936.x86_64-pc-linux-gnu: OK
/home/study/.cache/update-manager-core/meta-release-lts: OK
/home/study/.cache/fontconfig/CACHEDIR.TAG: OK
/home/study/.cache/fontconfig/c0939e10-77d0-4d8f-b2bf-dd16aaba1173-le64.cache-7: OK
/home/study/.cache/tracker/last-crawl.txt: OK
/home/study/.cache/tracker/ontologies.gvdb: OK
/home/study/.cache/tracker/meta.db-wal: OK
/home/study/.cache/tracker/first-index.txt: OK
/home/study/.cache/tracker/db-version.txt: OK
/home/study/.cache/tracker/meta.db-shm: OK
/home/study/.cache/tracker/locale-for-miner-apps.txt: OK
/home/study/.cache/tracker/db-locale.txt: OK
/home/study/.cache/tracker/parser-version.txt: OK
/home/study/.cache/tracker/meta.db: OK
/home/study/.cache/ubuntu-report/ubuntu.20.04: OK
/home/study/.cache/gstreamer-1.0/registry.x86_64.bin: OK
/home/study/.local/share/keyrings/user.keystore: OK
/home/study/.local/share/keyrings/login.keyring: OK
/home/study/.local/share/xorg/Xorg.0.log: OK
/home/study/.local/share/xorg/Xorg.0.log.old: OK
/home/study/.local/share/evolution/addressbook/system/contacts.db: OK
/home/study/.local/share/evolution/calendar/system/calendar.ics: OK
/home/study/.local/share/gvfs-metadata/trash:: OK
/home/study/.local/share/gvfs-metadata/trash:-dea3bbef.log: OK
/home/study/.local/share/gvfs-metadata/home: OK
/home/study/.local/share/gvfs-metadata/home-fda16991.log: OK
/home/study/.local/share/gvfs-metadata/root-a91a6a61.log: OK
/home/study/.local/share/gvfs-metadata/root: OK
/home/study/.local/share/gnome-shell/gnome-overrides-migrated: Empty file
/home/study/.local/share/gnome-shell/application_state: OK
/home/study/.local/share/session_migration-ubuntu: OK
/home/study/.local/share/recently-used.xbel: OK
/home/study/.local/share/tracker/data/tracker-store.journal: OK
/home/study/.local/share/tracker/data/tracker-store.ontology.journal: OK
/home/study/.local/share/gnome-settings-daemon/input-sources-converted: Empty file
/home/study/.local/share/icc/edid-bfaae50f62f5f9d1304b762f2be7d435.icc: OK
/home/study/.local/share/icc/edid-33d524c378824a7b78c6c679234da6b1.icc: OK
/home/study/.local/share/icc/edid-fd05aa8549442ed45a402cbd77670773.icc: OK
/home/study/.config/ibus/bus/0d0bf09ce353427fad64704d138a5936-unix-0: OK
/home/study/.config/dconf/user: OK
/home/study/.config/evolution/sources/system-proxy.source: OK
/home/study/.config/gtk-3.0/bookmarks: OK
/home/study/.config/pulse/0d0bf09ce353427fad64704d138a5936-default-sink: OK
/home/study/.config/pulse/cookie: OK
/home/study/.config/pulse/0d0bf09ce353427fad64704d138a5936-device-volumes.tdb: OK
/home/study/.config/pulse/0d0bf09ce353427fad64704d138a5936-default-source: OK
/home/study/.config/pulse/0d0bf09ce353427fad64704d138a5936-stream-volumes.tdb: OK
/home/study/.config/pulse/0d0bf09ce353427fad64704d138a5936-card-database.tdb: OK
/home/study/.config/enchant/ko_KR.dic: Empty file
/home/study/.config/enchant/ko_KR.exc: Empty file
/home/study/.config/gedit/accels: OK
/home/study/.config/gnome-initial-setup-done: OK
/home/study/.config/user-dirs.dirs: OK
/home/study/.config/user-dirs.locale: OK
/home/study/.vboxclient-draganddrop.pid: OK
/home/study/.sudo_as_admin_successful: Empty file
/home/study/.vboxclient-display.pid: OK
/home/study/.bash_history: OK
/home/study/.bashrc: OK
/home/study/.vboxclient-clipboard.pid: OK
/home/study/.fontconfig/CACHEDIR.TAG: OK
/home/study/.fontconfig/c0939e10-77d0-4d8f-b2bf-dd16aaba1173-le64.cache-7: OK
/home/study/.profile: OK
/home/study/.vboxclient-seamless.pid: OK
/home/study/.bash_logout: OK

----------- SCAN SUMMARY -----------
Known viruses: 7474908
Engine version: 0.102.3
Scanned directories: 83
Scanned files: 61
Infected files: 0
Data scanned: 2.61 MB
Data read: 5.25 MB (ratio 0.50:1)
Time: 20.603 sec (0 m 20 s)
study@study-VirtualBox:~$ 

보시면 다음과 같은 항목들이 보고서에 나옵니다.

  • 알려진 바이러스 수
  • clamav 엔진 버전
  • 스캔된 디렉토리 수
  • 스캔된 파일 수
  • 감염된 파일 수
  • 스캔된 데이터 용량
  • 실제 검사 용량
  • 검사 시간


home 디렉토리와 그 하위 디렉토리를 검사하고, 감염된 파일은 virus 디렉토리로 이동시키는 명령어는 다음과 같습니다.

study@study-VirtualBox:~$ clamscan -r /home --move=/virus


home 디렉토리와 그 하위 디렉토리를 검사하고, 감염된 파일은 삭제하는 명령어는 다음과 같습니다.

study@study-VirtualBox:~$ clamscan -r /home --move


보다 자세한 도움말은 다음을 칩니다.

study@study-VirtualBox:~$ clamscan -h


study@study-VirtualBox:~$ clamscan -h

                       Clam AntiVirus: Scanner 0.102.3
           By The ClamAV Team: https://www.clamav.net/about.html#credits
           (C) 2020 Cisco Systems, Inc.

    clamscan [options] [file/directory/-]

    --help                -h             Show this help
    --version             -V             Print version number
    --verbose             -v             Be verbose
    --archive-verbose     -a             Show filenames inside scanned archives
    --debug                              Enable libclamav's debug messages
    --quiet                              Only output error messages
    --stdout                             Write to stdout instead of stderr. Does not affect 'debug' messages.
    --no-summary                         Disable summary at end of scanning
    --infected            -i             Only print infected files
    --suppress-ok-results -o             Skip printing OK files
    --bell                               Sound bell on virus detection

    --tempdir=DIRECTORY                  Create temporary files in DIRECTORY
    --leave-temps[=yes/no(*)]            Do not remove temporary files
    --gen-json[=yes/no(*)]               Generate JSON description of scanned file(s). JSON will be printed and also-
                                         dropped to the temp directory if --leave-temps is enabled.
    --database=FILE/DIR   -d FILE/DIR    Load virus database from FILE or load all supported db files from DIR
    --official-db-only[=yes/no(*)]       Only load official signatures
    --log=FILE            -l FILE        Save scan report to FILE
    --recursive[=yes/no(*)]  -r          Scan subdirectories recursively
    --allmatch[=yes/no(*)]   -z          Continue scanning within file after finding a match
    --cross-fs[=yes(*)/no]               Scan files and directories on other filesystems
    --follow-dir-symlinks[=0/1(*)/2]     Follow directory symlinks (0 = never, 1 = direct, 2 = always)
    --follow-file-symlinks[=0/1(*)/2]    Follow file symlinks (0 = never, 1 = direct, 2 = always)
    --file-list=FILE      -f FILE        Scan files from FILE
    --remove[=yes/no(*)]                 Remove infected files. Be careful!
    --move=DIRECTORY                     Move infected files into DIRECTORY
    --copy=DIRECTORY                     Copy infected files into DIRECTORY
    --exclude=REGEX                      Don't scan file names matching REGEX
    --exclude-dir=REGEX                  Don't scan directories matching REGEX
    --include=REGEX                      Only scan file names matching REGEX
    --include-dir=REGEX                  Only scan directories matching REGEX

    --bytecode[=yes(*)/no]               Load bytecode from the database
    --bytecode-unsigned[=yes/no(*)]      Load unsigned bytecode
    --bytecode-timeout=N                 Set bytecode timeout (in milliseconds)
    --statistics[=none(*)/bytecode/pcre] Collect and print execution statistics
    --detect-pua[=yes/no(*)]             Detect Possibly Unwanted Applications
    --exclude-pua=CAT                    Skip PUA sigs of category CAT
    --include-pua=CAT                    Load PUA sigs of category CAT
    --detect-structured[=yes/no(*)]      Detect structured data (SSN, Credit Card)
    --structured-ssn-format=X            SSN format (0=normal,1=stripped,2=both)
    --structured-ssn-count=N             Min SSN count to generate a detect
    --structured-cc-count=N              Min CC count to generate a detect
    --scan-mail[=yes(*)/no]              Scan mail files
    --phishing-sigs[=yes(*)/no]          Enable email signature-based phishing detection
    --phishing-scan-urls[=yes(*)/no]     Enable URL signature-based phishing detection
    --heuristic-alerts[=yes(*)/no]       Heuristic alerts
    --heuristic-scan-precedence[=yes/no(*)] Stop scanning as soon as a heuristic match is found
    --normalize[=yes(*)/no]              Normalize html, script, and text files. Use normalize=no for yara compatibility
    --scan-pe[=yes(*)/no]                Scan PE files
    --scan-elf[=yes(*)/no]               Scan ELF files
    --scan-ole2[=yes(*)/no]              Scan OLE2 containers
    --scan-pdf[=yes(*)/no]               Scan PDF files
    --scan-swf[=yes(*)/no]               Scan SWF files
    --scan-html[=yes(*)/no]              Scan HTML files
    --scan-xmldocs[=yes(*)/no]           Scan xml-based document files
    --scan-hwp3[=yes(*)/no]              Scan HWP3 files
    --scan-archive[=yes(*)/no]           Scan archive files (supported by libclamav)
    --alert-broken[=yes/no(*)]           Alert on broken executable files (PE & ELF)
    --alert-encrypted[=yes/no(*)]        Alert on encrypted archives and documents
    --alert-encrypted-archive[=yes/no(*)] Alert on encrypted archives
    --alert-encrypted-doc[=yes/no(*)]    Alert on encrypted documents
    --alert-macros[=yes/no(*)]           Alert on OLE2 files containing VBA macros
    --alert-exceeds-max[=yes/no(*)]      Alert on files that exceed max file size, max scan size, or max recursion limit
    --alert-phishing-ssl[=yes/no(*)]     Alert on emails containing SSL mismatches in URLs
    --alert-phishing-cloak[=yes/no(*)]   Alert on emails containing cloaked URLs
    --alert-partition-intersection[=yes/no(*)] Alert on raw DMG image files containing partition intersections
    --nocerts                            Disable authenticode certificate chain verification in PE files
    --dumpcerts                          Dump authenticode certificate chain in PE files

    --max-scantime=#n                    Scan time longer than this will be skipped and assumed clean
    --max-filesize=#n                    Files larger than this will be skipped and assumed clean
    --max-scansize=#n                    The maximum amount of data to scan for each container file (**)
    --max-files=#n                       The maximum number of files to scan for each container file (**)
    --max-recursion=#n                   Maximum archive recursion level for container file (**)
    --max-dir-recursion=#n               Maximum directory recursion level
    --max-embeddedpe=#n                  Maximum size file to check for embedded PE
    --max-htmlnormalize=#n               Maximum size of HTML file to normalize
    --max-htmlnotags=#n                  Maximum size of normalized HTML file to scan
    --max-scriptnormalize=#n             Maximum size of script file to normalize
    --max-ziptypercg=#n                  Maximum size zip to type reanalyze
    --max-partitions=#n                  Maximum number of partitions in disk image to be scanned
    --max-iconspe=#n                     Maximum number of icons in PE file to be scanned
    --max-rechwp3=#n                     Maximum recursive calls to HWP3 parsing function
    --pcre-match-limit=#n                Maximum calls to the PCRE match function.
    --pcre-recmatch-limit=#n             Maximum recursive calls to the PCRE match function.
    --pcre-max-filesize=#n               Maximum size file to perform PCRE subsig matching.
    --disable-cache                      Disable caching and cache checks for hash sums of scanned files.

Pass in - as the filename for stdin.

(*) Default scan settings
(**) Certain files (e.g. documents, archives, etc.) may in turn contain other
   files inside. The above options ensure safe processing of this kind of data.

study@study-VirtualBox:~$ 

ClamTK

ClamTK는 ClamAV를 GUI로 사용할 수 있도록 도와주는 도구입니다.

아래의 내용은 2020년 6월 29일자 기준으로 작성되었습니다.

공식 사이트는 https://gitlab.com/dave_m/clamtk/wikis/Home 입니다..

특기할 점은 우분투 18.04 저장소를 통해 설치하는 ClamTK는 버전이 5.25이고 해당 버전에서는 홈페이지 주소를 https://dave-theunsub.github.io/clamtk/로 소개하고 있는데 최신 버전인 6.01을 설치하여 확인해보면 홈페이지 주소가 https://gitlab.com/dave_m/clamtk/wikis/Home로 바뀐 것을 알 수 있습니다..

study@study-VirtualBox:~$ sudo apt install clamtk


study@study-VirtualBox:~$ sudo apt install clamtk
[sudo] study의 암호: 
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음의 추가 패키지가 설치될 것입니다 :
  gnome-icon-theme libcommon-sense-perl libencode-perl libjson-perl
  libjson-xs-perl libtext-csv-perl libtext-csv-xs-perl
  libtypes-serialiser-perl
제안하는 패키지:
  cabextract clamtk-gnome
다음 새 패키지를 설치할 것입니다:
  clamtk gnome-icon-theme libcommon-sense-perl libencode-perl libjson-perl
  libjson-xs-perl libtext-csv-perl libtext-csv-xs-perl
  libtypes-serialiser-perl
0개 업그레이드, 9개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
11.6 M바이트 아카이브를 받아야 합니다.
이 작업 후 28.0 M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] y
받기:1 http://mirror.kakao.com/ubuntu focal/universe amd64 libtext-csv-perl all 2.00-1 [101 kB]
받기:2 http://mirror.kakao.com/ubuntu focal/main amd64 libjson-perl all 4.02000-2 [80.9 kB]
받기:3 http://mirror.kakao.com/ubuntu focal/universe amd64 gnome-icon-theme all 3.12.0-3 [9,620 kB]
받기:4 http://mirror.kakao.com/ubuntu focal/universe amd64 clamtk all 6.02-1 [160 kB]
받기:5 http://mirror.kakao.com/ubuntu focal/main amd64 libcommon-sense-perl amd64 3.74-2build6 [20.1 kB]
받기:6 http://mirror.kakao.com/ubuntu focal/main amd64 libtypes-serialiser-perl all 1.0-1 [12.1 kB]
받기:7 http://mirror.kakao.com/ubuntu focal/main amd64 libjson-xs-perl amd64 4.020-1build1 [83.7 kB]
받기:8 http://mirror.kakao.com/ubuntu focal/universe amd64 libencode-perl amd64 3.02-1 [1,378 kB]
받기:9 http://mirror.kakao.com/ubuntu focal/universe amd64 libtext-csv-xs-perl amd64 1.41-1 [109 kB]
내려받기 11.6 M바이트, 소요시간 1초 (9,091 k바이트/초)
Selecting previously unselected package libtext-csv-perl.
(데이터베이스 읽는중 ...현재 189042개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../0-libtext-csv-perl_2.00-1_all.deb ...
Unpacking libtext-csv-perl (2.00-1) ...
Selecting previously unselected package libjson-perl.
Preparing to unpack .../1-libjson-perl_4.02000-2_all.deb ...
Unpacking libjson-perl (4.02000-2) ...
Selecting previously unselected package gnome-icon-theme.
Preparing to unpack .../2-gnome-icon-theme_3.12.0-3_all.deb ...
Unpacking gnome-icon-theme (3.12.0-3) ...
Selecting previously unselected package clamtk.
Preparing to unpack .../3-clamtk_6.02-1_all.deb ...
Unpacking clamtk (6.02-1) ...
Selecting previously unselected package libcommon-sense-perl.
Preparing to unpack .../4-libcommon-sense-perl_3.74-2build6_amd64.deb ...
Unpacking libcommon-sense-perl (3.74-2build6) ...
Selecting previously unselected package libtypes-serialiser-perl.
Preparing to unpack .../5-libtypes-serialiser-perl_1.0-1_all.deb ...
Unpacking libtypes-serialiser-perl (1.0-1) ...
Selecting previously unselected package libjson-xs-perl.
Preparing to unpack .../6-libjson-xs-perl_4.020-1build1_amd64.deb ...
Unpacking libjson-xs-perl (4.020-1build1) ...
Selecting previously unselected package libencode-perl:amd64.
Preparing to unpack .../7-libencode-perl_3.02-1_amd64.deb ...
Unpacking libencode-perl:amd64 (3.02-1) ...
Selecting previously unselected package libtext-csv-xs-perl.
Preparing to unpack .../8-libtext-csv-xs-perl_1.41-1_amd64.deb ...
Unpacking libtext-csv-xs-perl (1.41-1) ...
libcommon-sense-perl (3.74-2build6) 설정하는 중입니다 ...
gnome-icon-theme (3.12.0-3) 설정하는 중입니다 ...
update-alternatives: using /usr/share/icons/gnome/scalable/places/debian-swirl.s
vg to provide /usr/share/icons/gnome/scalable/places/start-here.svg (start-here.
svg) in auto mode
libencode-perl:amd64 (3.02-1) 설정하는 중입니다 ...
libtypes-serialiser-perl (1.0-1) 설정하는 중입니다 ...
libjson-perl (4.02000-2) 설정하는 중입니다 ...
libtext-csv-perl (2.00-1) 설정하는 중입니다 ...
libjson-xs-perl (4.020-1build1) 설정하는 중입니다 ...
libtext-csv-xs-perl (1.41-1) 설정하는 중입니다 ...
clamtk (6.02-1) 설정하는 중입니다 ...
Processing triggers for mime-support (3.64ubuntu1) ...
Processing triggers for gnome-menus (3.36.0-1ubuntu1) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for desktop-file-utils (0.24-1ubuntu3) ...
study@study-VirtualBox:~$ 

터미널에서 위 명령을 실행하면  ClamTK가 설치가 됩니다. 그러나 우분투 저장소에 올라가 있는 버전은 최신 버전이 아닙니다.(ClamTK 5.25) 따라서 최신 버전을 사용하고 싶으신 분들은 공식 사이트에서 다운받아 설치하시기 바랍니다.

설치를 하면 위 그림처럼 ClamTK 아이콘이 생깁니다. 이 아이콘을 눌러 실행하면 아래와 같은 창이 뜹니다.

위 그림은 굉장히 직관적이기 때문에 사용법은 생략하도록 하겠습니다. CLI가 익숙하지 않은 분들께는 이 ClamTK가 굉장히 도움이 될 것입니다.

위 그림은 우분투 20.04 저장소에서 설치한 ClamTK의 바이러스 검사기 메인 창 모습입니다.


참고로 ClamTK는 애드온 프로그램도 있습니다. 파일이나 폴더를 마우스 오른쪽 버튼으로 눌러 컨텍스트 메뉴로 검사할 수 있는 간단한 플러그인입니다. 리눅스의 데스크톱 환경에 맞춰 설치하면 되는데 우분투의 경우 기본 데스크톱 환경이 gnome이므로 clamtk-gnome을 설치하시면 됩니다.

study@study-VirtualBox:~$ sudo apt install clamtk-gnome


주의

Ubuntu 20.04에서는 위 명령어를 통해 애드온 프로그램을 설치하더라도 컨텍스트 메뉴가 나타나지 않습니다.

아마도 버그인 것으로 보입니다.