리눅스의 백신 ClamAV 를 CentOS7 에 설치하기
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들도 추가하고 싶다면 다음글을 참고한다.
이 문서는 다음 문서를 참조하였으며 최신버전과 맞지 않는 부분은 필자가 임의 수정함.
- https://linux-audit.com/install-clamav-on-centos-7-using-freshclam/
P.S
다운받은 data파일의 디폴트 경로는 /var/lib/clamav 를 찾아보세요.
'IT > 서버세팅' 카테고리의 다른 글
Can't create temporary directory 에러를 만났을 때 (0) | 2016.10.29 |
---|---|
ClamAV 비공식 DB 사용하기 (0) | 2016.10.29 |
리눅스의 백신 ClamAV 를 CentOS7 에 설치하기 (12) | 2016.10.29 |
[CentOS] Phantomjs 설치하기(폰트와 함께) (0) | 2016.07.15 |
Nginx에서 이미지 무단도용(링크) 막기 (0) | 2016.06.23 |
[ESXi] CentOS7 디스크 용량 확장하기 (0) | 2016.06.21 |
혹시 특정 파일이나 확장자 예외 처리하는 방법을 알수 있을까요??
iyoun@daum.net
ExcludePath 라는 부분이 있습니다.
해당 부분을 활용하시면 될 것 같습니다.
입력형식은 정규식입니다.
clamscan 을 활용하시려는 거라면
clamscan --exclude='\.(jpg|jpeg|png|gif)$'
처럼 exclude 옵션을 주시면됩니다.
clamd.conf파일 ExcludePath 부분을
ExcludePath ^/\.js$/ 이렇게 추가시 예외처리가 안되는거 같습니다.
검색시 예외옵션으로 사용하면 될꺼 같습니다.
감사합니다.
\
그냥 \.js$ 정도로만 쓰면되지 싶네요
클라우드가 아닌 웹호스팅을 통해 사용하시는 거라면 애초에 권한이 별로 없어서 문제가 발생해도 잡기 어렵습니다 호스팅업체에 문의하시면 해결해줄것이라고 생각됩니다
업데이트중은 아니셨을지..
아니면 서버사양이 너무 낮은건 아니셨을지
그런 원인은 너무 다양해요 ㅎㅎ
ClamAV에 대해서 질문이 있어서 댓글을 남깁니다. 만약에 스켄을 하고 나서 검역소에 파일이 있고 그 파일은 정상파일이고 오탐일 경우에 그 파일을 다시 원래 위치로 옮기는 방법이 따로 없나요?