- 전체
- C/C++ 일반
- C/C++ 수학
- C/C++ 그래픽
- C/C++ 자료구조
- C/C++ 인공지능
- C/C++ 인터넷
- wxWidget
- GTK+
- UNIX or LINUX programming
- 리눅스 마스터 - 국가공인자격
- VC++/ MFC
- C#/CLI/.NET
- QT/기타UI
- Boost lib
- 오픈소스 C 분석자료
- MSA (마이크로서비스), Docker, kubernetes
- WSL(windows subsystem linux)
리눅스 마스터 - 국가공인자격 [무료 리눅스 linux 백신, 안티바이러스] 무료 리눅스 백신 ClamAV 이용 및 문제 해결법
2021.02.01 12:00
[무료 리눅스 linux 백신, 안티바이러스] 무료 리눅스 백신 ClamAV 이용 및 문제 해결법
리눅스 서버 사용자는 적지만 매우 중요한 데이타를 담고 있기 때문에 컴퓨터 바이러스나 멀웨어로부터 안전하게 보호할 수 있는 안전 장치가 필요합니다. 이를 위한 무료 리눅스 백신 중 가장 평가가 좋은 ClamAV 이용 방법에 대해서 알아보겠습니다.
바이러스는 사용자가 많을수록 많기 때문에 윈도우즈 사용 시 백신 설치가 아주 중요합니다. 컴퓨터 바이러스들이 기승을 부리면서 한때는 한 컴퓨터안에 여러가지 백신을 설치해 놓는 것이 유행이다시피 한적도 있습니다.
그러나 바이러스나 멀웨어라는 것이 특정 패턴을 가지고 있다보니 바이러스나 멀웨에에 대한 체계적인 데이타베이스를 가진 프로그램 하나면 충분하고 여러가지 백신 사용은 오히려 문제 발생 소지가 크다는 지적도 있기 때문에 요즘엔 윈도우즈10에서 기본 제공 프로그램을 일반적으로 사용합니다.
여러 유료 백신 프로그램들이 있지만 마이크로소프트에서 제공하는 기본 보안 프로그램도 나쁘지 않다는 평가가 많기 때문이죠.
상대적으로 사용자가 적은 리눅스 서버도 마찬가지입니다. 리눅스 서버는 상대적으로 이러한 바이러스 공격이 적다는 평가를 받아 왔습니다.
리룩스 취약점이 상대적으로 적고 사용자가 상대적으로 적기 때문에 바이러스로 이익을 얻을 수 있는 이익이 상대적으로 적기 때문일까요? 그럼에도 불구하고 이러한 공격이 상대적으로 적다는 것이지 없는 것은 아니므로 대비가 필요합니다.
그래서 우분투 서버에서 제반 바이러스 및 멀웨어를 탐지하고 스캔할 수 있는 솔류션으로 ClamAV를 선택하고 이를 활용하는 방업을 알아 보도록 하겠습니다.
리눅스 백신 ClamAV란?
ClamAV(Clam AntiVirus)는 시스코 시스템즈에서 지원하는 오픈소스 소프트웨어 기반 바이러스 검사 소프트웨어입니다. 오픈 소스에서 보듯 철저히 무료로 사용할 수 있습니다.
이는 유닉스뿐 아니라, AIX, BSD, HP-UX, 리눅스, OS X, 오픈VMS, OSF, 솔라리스 그리고 마이크로소프트 윈도우즈에서도 실행되는 크로스 플랫폼 소프트웨어로 알려져 있습니다.
원래는 메일 서버에서 이메일 내 바이러스 검사를 위해서 개발한 것인데 이후 바이러스를 비롯한 멀웨어 등 수많은 종류의 악성 소프트웨어를 찾아내는 소프트웨어로 발전했습니다.
ClamAV 데이타 센터는 ClamAV.net에 있는데 전 세계에서 발생하는 바이러스 구조에 대한 방대한 자료를 확보하고 있으며 주기적으로 업데이트 및 공개하고 있습니다.
위에서 설명했듯이 메일 검색에서 시작해서 그만큼 날리지가 쌓여서인지 메일 게이트웨이 검색 소프트웨어의 오픈 소스 표준으로 사용됩니다.
또한 무료 바이러스 백신 프로그앰으로 다른 유료 백신들과도 비교될 정도로 무료 백신으로서는 안정성과 인지도를 가지고 있습니다.
ClamAV 설치 및 이용 방법
우분투에서 ClamAV 설치는 아주 간단합니다. 예전에는 복잡한 과정을 거쳤는데 지금은 apt-get 명령으로 간단히 실행할 수 있습니다.
sudo apt-get install clamavCode language: PHP (php)
그러면 아래와 같은 메세지가 나오면서 설치되기 시작합니다.
~# apt-get install clamav Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: clamav-base clamav-freshclam libclamav9 libtfm1 Suggested packages: clamav-docs libclamunrar9 The following NEW packages will be installed: clamav clamav-base clamav-freshclam libclamav9 libtfm1 0 upgraded, 5 newly installed, 0 to remove and 3 not upgraded. Need to get 1,133 kB of archives. After this operation, 3,915 kB of additional disk space will be used. Do you want to continue? [Y/n] YCode language: PHP (php)
다음으로는 바이러스 데이타베이스 업데이트를 실시합니다.
sudo freshclamCode language: PHP (php)
바이러스 검사는 clamscan 명령을 사용합니다.
가본적인 명령 포맷은 아래와 같습니다.
sudo clamscan -r -i DIRECTORYCode language: PHP (php)
예를들어 home디렉토리의 하위디렉토리까지 검사한다면 아래 명령을 사용합니다. 옵션 -r은 하위 폴더까지 모두 검사한다는 것입니다.
clamscan -r /home Code language: PHP (php)
위는 검사만 한 경우인데요. 검사 후 바이러스 감염 파일 발견 시 특정 폴더로 이동시키는 경우 아래 명령을 사용합니다.
검사 결과 바이러스 감염된 파일이 있으면 /virus 폴더로 강제 이동시키는 옵션입니다.
clamscan -r /home --move=/virus Code language: PHP (php)
바이러스 검사에는 많은 시간이 걸립니다. 저는 시간이 많이 걸려 검사 명령을 내리고는 잤습니다. 최소 2시간이상 걸리는 듯 하더군요.
검사가 모두 끝나면 아래와 같은 검사 요약을 출력해 줍니다.
----------- SCAN SUMMARY ----------- Known viruses: 7336539 Engine version: 0.102.3 Scanned directories: 58145 Scanned files: 478294 Infected files: 0 Total errors: 52481 Data scanned: 20653.49 MB Data read: 57326.96 MB (ratio 0.36:1) Time: 3070.948 sec (51 m 10 s)ClamAV 바이러스 정의 업데이트 시 에러 해결
ClamAV는 기본적으로 사용자 id를 clamav를 사용합니다.
그런데 서버 hostname이 인증되지 않아서인지 설치도중 ‘clamav’라는 사용자가 없다는 메세지가 나오며 오랬동안 설치를 멈추는 현상이 발생합니다.
그리고 local host name이 인증되지 않았다는 메세지를 뿜어냅니다. 아래와 같은 메세지..
id: ‘clamav’: no such user WARNING: local host name (etrend) is not qualified; see cf/README: WHO AM I?Code language: PHP (php)
시간이 지나면 나머지를 알아서 설치합니다. 그러나 데이타베이스를 업데이트하기 위해 freshclam 명령을 주면 에러 메세지를 보입니다.
~# sudo freshclam ERROR: /var/log/clamav/freshclam.log is locked by another process ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log). ERROR: initialize: libfreshclam init failed. ERROR: Initialization error!Code language: PHP (php)
이 경우 아래와 같은 명령어를 사용해서 문제를 해결합니다.
sudo lsof /var/log/clamav/freshclam.log sudo pkill -15 -x freshclam sudo /etc/init.d/clamav-freshclam stop sudo freshclam sudo /etc/init.d/clamav-freshclam startCode language: PHP (php)
크론탭에서 매일 자동 실행 명령 추가
그리고 이 프로그램은 서버에 상주하면서 실시간 모니터링하지 않기 때문에 주기적으로 실행시켜서 모니터링 비슷한 효과를 내는 것이 필요합니다.
리눅스에서는 이를 위한 크론 기능이 활성화 되어 있으니 이를 활용하면 아쉬운대로 사용할만 합니다.
우선 sh 파일을 만듭니다. 저는 바이러스 데이타베이스 업데이트하는 freshclam 명령이 잘 먹히지 않아서 매번 이를 해결하는 프로세스를 주가했습니다.
nano clamav.shCode language: PHP (php)
여기에 아래와 같은 내용을 추가합니다.
#!/bin/sh # 바이러스 데이타베이스 업데이트 lsof /var/log/clamav/freshclam.log pkill -15 -x freshclam /etc/init.d/clamav-freshclam stop freshclam /etc/init.d/clamav-freshclam start # ClamAV 검사 (1회/일) clamscan -r /Code language: PHP (php)
그 다음에는 이 파일에 권한을 부여합니다.
chmod +x clamav.shCode language: PHP (php)
그 다음에는 크론에 이 파일 실행을 추가해야 겠죠?
이는 아시다시피 crontab -e 명령을 사용합니다.
crontab -eCode language: PHP (php)
크랜탭에서 아래 내용을 추가해 줍니다. 매일 새벽 4시 15분에 위에서 정의한 clamav.sh를 실행하라는 명령입니다.
15 04 * * * clamav.shCode language: PHP (php)
크론을 시작합니다.
service cron start Code language: PHP (php)
크론이 제대로 작동하는지 한번 확인해 봅니다.
service cron statusCode language: PHP (php)
그러면 아래와 같이 크론이 active되고 있다고 나오면 OK입니다.
# service cron status ● cron.service - Regular background program processing daemon Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2020-06-22 23:06:34 KST; 2 days ago Docs: man:cron(8) Main PID: 823 (cron) Tasks: 1 (limit: 4620) Memory: 600.9M CGroup: /system.slice/cron.service └─823 /usr/sbin/cron -f
[출처] https://happist.com/573610/%EB%AC%B4%EB%A3%8C-%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%B0%B1%EC%8B%A0-clamav-%EC%9D%B4%EC%9A%A9-%EB%B0%8F-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0%EB%B2%95
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 13 |
[WSL2] 외부에서 WSL2 접속하기 (feat. 포트포워딩)
| 졸리운_곰 | 2024.12.01 | 306 |
| 12 |
[WSL2] Windows 11 WSL2 이용한 SSH & RStudio Server 설치 및 내·외부에서 접속
| 졸리운_곰 | 2023.11.06 | 336 |
| 11 |
[WSL2] Windows 11 WSL2 이용한 Python Jupyter 설치 및 내·외부에서 접속
| 졸리운_곰 | 2023.11.06 | 320 |
| 10 |
[WSL2] WSL2 외부 접속 설정
| 졸리운_곰 | 2023.06.26 | 368 |
| 9 |
[WSL2] Mysql 자동실행 설정하기
| 졸리운_곰 | 2023.06.25 | 275 |
| 8 |
[WSL2] 윈도우에서 linux 사용 (WSL 2), xwindows GUI 설정
| 졸리운_곰 | 2023.01.28 | 374 |
| 7 |
[WSL2] Windows 11의 WSL2에서 리눅스 X Window 응용프로그램 실행하기
| 졸리운_곰 | 2023.01.28 | 285 |
| 6 |
[WSL2] WSL에서의 Jupyter notebook 사용하기.
| 졸리운_곰 | 2022.11.27 | 476 |
| 5 | [WSL] WSL 배포판 복사하기 | 졸리운_곰 | 2022.10.30 | 312 |
| 4 | [WSL] 백업방법, WSL 내보내기, 가져오기 [WSL2] 내보내기 및 가져오기 | 졸리운_곰 | 2022.10.30 | 274 |
| 3 |
[WSL] WSL2[4] - SSH 접속하기
| 졸리운_곰 | 2022.09.25 | 369 |
| 2 |
[WSL] WSL2 딥러닝 환경 구축하기 (CUDA, CuDNN, Anaconda)
| 졸리운_곰 | 2022.09.04 | 385 |
| 1 |
[WSL] WSL에서의 Jupyter notebook 사용하기.
| 졸리운_곰 | 2022.09.04 | 339 |

