> For the complete documentation index, see [llms.txt](https://docs.mosip.io/1.2.0/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mosip.io/1.2.0/mosip-docs-1.1.5/build-and-deploy/other-installation-guides/steps-to-install-clam-antivirus-version-0.101.0.md).

# Steps to Install Clam AntiVirus Version 0.101.0

ClamAV is a free, cross-platform and open-source antivirus software toolkit able to detect many types of malicious software, including viruses.

**Steps to install ClamAV in RHEL-7.5**

To install clamAV first we need to install EPEL Repository:

```
$ sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
```

After that we need to install ClamAV and its related tools.

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

After completion of above steps, we need to configure installed ClamAV. This can be done via editing /etc/clamd.d/scan.conf. In this file we have to remove Example lines. So that ClamAV can use this file's configurations. We can easily do it via running following command -

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

Another thing we need to do in this file is to define our TCP server type. Open this file using -

```
$ vim /etc/clamd.d/scan.conf
```

here this we need to uncomment line with #LocalSocket /var/run/clamd.scan/clamd.sock. Just remove # symbol from the beginning of the line.

Now we need to configure FreshClam so that it can update ClamAV db automatically. For doing that follow below steps -

First create a backup of original FreshClam Configuration file -

```
$ cp /etc/freshclam.conf /etc/freshclam.conf.bak
```

In this freshclam.conf file, Here also we need to remove Example line from the file. Run following command to delete all Example lines-

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

Test freshclam via running-

```
$ freshclam
```

After running above command you should see an output similar to this -

```
ClamAV update process started at Thu May 23 07:25:44 2019
.
.
.
.
main.cvd is up to date (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr)
Downloading daily-25584.cdiff [100%]
daily.cld updated (version: 25584, sigs: 1779512, f-level: 63, builder: raynman)
bytecode.cld is up to date (version: 331, sigs: 94, f-level: 63, builder: anvilleg)
Database updated (6345855 signatures) from database.clamav.net (IP: 104.16.218.84)
```

We will create a service of freshclam so that freshclam will run in the daemon mode and periodically check for updates throughout the day. To do that we will create a service file for freshclam -

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

And add below content -

```
[Unit]
Description = freshclam scanner
After = network.target

[Service]
Type = forking
ExecStart = /usr/bin/freshclam -d -c 4
Restart = on-failure
PrivateTmp = true
RestartSec = 20sec

[Install]
WantedBy=multi-user.target
```

Now save and quit. Also reload the systemd daemon to refresh the changes -

```
$ systemctl daemon-reload
```

Next start and enable the freshclam service -

```
$ systemctl start clam-freshclam.service

$ systemctl enable clam-freshclam.service
```

Now freshclam setup is complete and our ClamAV db is upto date. We can continue setting up ClamAV. Now we will copy ClamAV service file to system service folder.

```
$ mv /usr/lib/systemd/system/clamd@.service /usr/lib/systemd/system/clamd.service
```

Since we have changed the name, we need to change it at the file that uses this service as well -

```
$ vim /usr/lib/systemd/system/clamd@scan.service
```

Remove @ symbol from .include /lib/systemd/system/clamd\@.service line and save the file.

We will edit Clamd service file now -

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

Add following lines at the end of clamd.service file.

```
[Install]
WantedBy=multi-user.target
```

And also remove %i symbol from various locations (ex: Description and ExecStart options). Note that at the end of the editing the service file should look something like this -

```
[Unit]
Description = clamd scanner daemon
Documentation=man:clamd(8) man:clamd.conf(5) https://www.clamav.net/documents/
# Check for database existence
# ConditionPathExistsGlob=@DBDIR@/main.{c[vl]d,inc}
# ConditionPathExistsGlob=@DBDIR@/daily.{c[vl]d,inc}
After = syslog.target nss-lookup.target network.target

[Service]
Type = forking
ExecStart = /usr/sbin/clamd -c /etc/clamd.d/scan.conf
Restart = on-failure

[Install]
WantedBy=multi-user.target
```

Now finally start the ClamAV service.

```
$ systemctl start clamd.service
```

If it works fine, then enable this service and test the status of ClamAV service -

```
$ systemctl enable clamd.service

$ systemctl status clamd.service
```

Now in MOSIP we require ClamAV to be available on Port 3310. To expose ClamAV service on Port 3310, edit scan.conf

```
$ vi /etc/clamd.d/scan.conf
```

and Uncomment #TCPSocket 3310 by removing #. After that restart the clamd\@scan service -

```
$ systemctl restart clamd@scan.service
```

Since we are exposing ClamAV on 3310 port, we need to allow incoming traffic through this port. In RHEL 7 run below command to add firewall rule -

```
$ sudo firewall-cmd --zone=public --add-port=3310/tcp --permanent 
$ sudo firewall-cmd --reload
```

Reference link: [link](https://www.golinuxcloud.com/steps-install-configure-clamav-antivirus-centos-linux/)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.mosip.io/1.2.0/mosip-docs-1.1.5/build-and-deploy/other-installation-guides/steps-to-install-clam-antivirus-version-0.101.0.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
