리눅스의 백신 ClamAV 를 CentOS7 에 설치하기

Posted by Everyharu
2016.10.29 15:51 IT/서버세팅

ClamAV는 리눅스진영에서도 사용이 가능한 오픈된 방식의 무료 백신이다. 물론 다른 운영체제에서도 사용이 가능하다.

하지만 윈도우를 쓰면 기본적인 GUI방식의 많은 무료 프로그램들이 있기에 별로 권장하지는 않는다.

기본적으로 서버에서 사용할만한 백신이라고 할 수 있다.

ClamAV 사이트 - http://www.clamav.net/




먼저 필자의 설치 기준은 언제나와 같이 CentOS7 의 Minimun 설치 기준이다.
기본 OS외에 vim과 groupinstall "Development Tools" 같은 몇가지 기본툴만 추가로 설치한 새 OS를 준비해서 설치를 진행했다.

1. 먼저 ClamAV를 EPEL 을 통해 설치하도록 하자.

yum install epel-release


2. 다음 ClamAV 를 설치한다.

yum install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd


3. ClamAV를 위한 SELinux 를 세팅해준다.

setsebool -P antivirus_can_scan_system 1

만약 이 단계를 건너뛴다면 Freshclam(백신DB업데이트관련)  은 Permission denied 구문을 보게 될 것이다.


4. /etc/clamd.d/ 에 가보면 scan.conf 파일 하나만 달랑 있을 것이다. share에 있는 템플릿을 복사해오자.

cp /usr/share/clamav/template/clamd.conf /etc/clamd.conf

복사한 템플릿에 예제 구문이 있다. 치환해주어야한다.

sed -i '/^Example/d' /etc/clamd.conf

만약 clamd.conf 에서 scanner를 루트로써 실행하고 싶거나 특정 유저로 설정하고 싶다면 다음의 두 구문이 있는곳을 건드려야 한다.
일단은 별다른 설정이 필요하지 않다면 기본적으로 아래와 같이 수정한다.

User clamscan

LocalSocket /var/run/clamd.scan/clamd.sock

scan을 위한 실행 sock을 가지고 있을 디렉토리 권한을 설정해준다.

chmod 755 /var/run/clamd.scan

sed 's/710/755/' /usr/lib/tmpfiles.d/clamd.scan.conf > /etc/tmpfiles.d/clamd.scan.conf

/etc/passwd 파일을 열어보면 알겠지만 이미 clamscan 이라는 유저가 추가가 되어있다.


5. Freshclam 을 Enable 해주자.

Freshclam 은 ClamAV 가 최신의 백신DB를 업데이트하도록 해준다.

이 설정파일은 /etc/freshclam.conf 에 있다;; 일단 백업본을 준비해주고 마찬가지로 사용할 파일에 Example 구문을 제거해주자.

cp /etc/freshclam.conf /etc/freshclam.conf.bak

sed -i '/^Example/d' /etc/freshclam.conf

이 외에도 SafeBrowsing 체크도 하고싶다면 freshclam.conf 파일에서 SafeBrowsing 부분의 주석을 제거해주면된다.

이제 systemd 로 실행되게끔 service 파일을 생성해 주어야 한다. 설정은 하루에 4번 업데이트를 체크하도록 하는 내용이다.


vim /usr/lib/systemd/system/clam-freshclam.service

# Run the freshclam as daemon
[Unit]
Description = freshclam scanner
After = network.target
[Service]
Type = forking
ExecStart = /usr/bin/freshclam -d -c 4
Restart = on-failure
PrivateTmp = true
[Install]
WantedBy=multi-user.target


설정이 다 되었으면 이제 enable 시키고 실행해보자.

systemctl enable clam-freshclam.service

systemctl start clam-freshclam.service

systemctl status clam-freshclam.service 를 통해 확인해보면 다음과 같이 active 됨을 알 수 있다.


6. 다른 서비스파일도 세팅하자.

ls -l /usr/lib/systemd/system/clam*

를 해보면 다음과 같은 결과를 볼 수 있다.

이 @ 이 붙어있는 서비스파일들을 바로 enable 시키려 하면 되지 않는다. 좀 더 설정이 필요하다.

우선 clamd@.service 파일들을 clamd.service 로 이름을 고치자.

mv /usr/lib/systemd/system/clamd\@.service /usr/lib/systemd/system/clamd.service

mv /usr/lib/systemd/system/clamd\@scan.service /usr/lib/systemd/system/clamd-scan.service

그리고 clamd@scan.service 에 있는 내용을 고친다.

vim /usr/lib/systemd/system/clamd-scan.service

.include /lib/systemd/system/clamd@.service

부분을

.include /lib/systemd/system/clamd.service

으로 고친다.

clamd.service 파일 내용도 고친다.

vim /usr/lib/systemd/system/clamd.service

[Unit]
Description = clamd scanner daemon
After = syslog.target nss-lookup.target network.target


[Service]
Type = simple
ExecStart = /usr/sbin/clamd -c /etc/clamd.conf --foreground=yes
Restart = on-failure
PrivateTmp = true


[Install]
WantedBy=multi-user.target


7. 이제 서비스를 실행해 보도록 하자.

우선 설정파일이 있는 디렉토리로 이동하여 enable 후 차례대로 시작해보자.

cd /usr/lib/systemd/system
systemctl enable clamd.service
systemctl enable clamd-scan.service
systemctl start clamd.service
systemctl start clamd-scan.service


8. 마지막으로 점검 해보자.

systemctl status clamd

systemctl status clamd-scan

둘다 무사히 active 되어야한다. 안된다면 다시한번 꼼꼼히 살펴보자.

그래도 안된다면 /var/log/messages 를 살펴보도록하자.

ps auxf | grep clam 을 했을 때 freshclam , clamd, clamd 가 뜨는게 정상적으로 설치가 된 것이다.



9. 체크해보자.

wget -O- http://www.eicar.org/download/eicar.com.txt | clamdscan -c /etc/clamd.conf -

여기서 wget의 -O- 는 다운받은 파일을 쓰지않고 바로 아웃풋으로 넘겨서 다음 파이프에서 사용할 수 있게 해준것이다.

실제로 전체검사같은걸로 사용할때는 clamscan /home 과 같은 형식으로 쓰면 되지만 디렉토리가 계정권한 밖에 있을땐 검사가 원활하지 않을 수 있으니 root로 검사하도록 한다. 주기적으로 검사가 필요하면 crontab 을 걸면되겠다.



P.S 만약 비공식 DB들도 추가하고 싶다면 다음글을 참고한다.

http://haru.kafra.kr/83




이 문서는 다음 문서를 참조하였으며 최신버전과 맞지 않는 부분은 필자가 임의 수정함.

- https://linux-audit.com/install-clamav-on-centos-7-using-freshclam/


P.S 

다운받은 data파일의 디폴트 경로는 /var/lib/clamav 를 찾아보세요.

이 댓글을 비밀 댓글로
  1. ClamAV 설치하는데 많은 도움이 되었네요...감사합니다.
    혹시 특정 파일이나 확장자 예외 처리하는 방법을 알수 있을까요??

    iyoun@daum.net
    • /etc/clamd.conf 파일의 내용에 보시면
      ExcludePath 라는 부분이 있습니다.
      해당 부분을 활용하시면 될 것 같습니다.
      입력형식은 정규식입니다.

      clamscan 을 활용하시려는 거라면
      clamscan --exclude='\.(jpg|jpeg|png|gif)$'
      처럼 exclude 옵션을 주시면됩니다.
      • 예외처리
      • 2018.02.26 09:00 신고
      clamscan --exclude='\.js$' 실행시 이부분은 예외처리가 잘되는데...
      clamd.conf파일 ExcludePath 부분을
      ExcludePath ^/\.js$/ 이렇게 추가시 예외처리가 안되는거 같습니다.
      검색시 예외옵션으로 사용하면 될꺼 같습니다.
      감사합니다.
      \
    • 음 제가 그부분은 써보지 않아서 확실치는 않지만 적으신 정규식은 잘못된 정규식으로 보입니다^^;
      • 예외처리
      • 2018.02.26 09:05 신고
      ExcludePath 부분 .js 앞에 원화(역슬러시) 댓글입력이 안되네요 ㅎ
    • Js 파일을 예외하시는거보면 js를 공부하시고 js문법에서 쓰이는 정규식과 혼동하시는게 아닌가 싶은데 문법에서 ^를 앞에 붙이는건 시작을 강제함을 의미합니다 더불어 마지막에 /도 쓰실필요가 없습니다
      그냥 \.js$ 정도로만 쓰면되지 싶네요
      • 예외처리
      • 2018.02.26 09:14 신고
      네 감사합니다.
    • 2018.02.19 09:08
    비밀댓글입니다
    • Solr 이란건 오픈소스 프로젝트중 하나일텐데 의심되는부분이 있다면 호스팅업체로 문의하시기 바랍니다
      클라우드가 아닌 웹호스팅을 통해 사용하시는 거라면 애초에 권한이 별로 없어서 문제가 발생해도 잡기 어렵습니다 호스팅업체에 문의하시면 해결해줄것이라고 생각됩니다