리눅스의 백신 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 |
[CentOS] Phantomjs 설치하기(폰트와 함께) (0) | 2016.07.15 |
Nginx에서 이미지 무단도용(링크) 막기 (0) | 2016.06.23 |
[ESXi] CentOS7 디스크 용량 확장하기 (0) | 2016.06.21 |