Kernun UTM can cooperate with the Dr.WEB or ClamAV antivirus programs
    and any other antivirus program that supports ICAP protocol, e.g. Kaspersky
    Anti-Virus for Proxy Server. This tutorial describes the configuration
    of Kernun UTM only (that is, not the installation and configuration of the
    antivirus programs). The complete configuration file is located in
    /usr/local/kernun/conf/samples/cml/antivirus.cml.
The ClamAV antivirus program can be installed either directly on Kernun UTM or on any other machine connected via the network. The administrator of Kernun UTM can choose either of two ways to transport files between Kernun UTM and ClamAV:
clamav-net: Files to be checked by
          the antivirus are sent to the antivirus via the TCP
          connection.
clamav-file: Files to be checked by
          the antivirus are stored on the local file system. This
          option can be only used if the antivirus program is running on the
          same machine as Kernun UTM. The directory where the files are
          stored is defined by the comm-dir element (which
          defaults to /data/tmp/antivirus). Kernun UTM does not
          create the directory (it must be explicitly created by the
          administrator), and proper permissions need to be set (i.e., the
          directory must be writable by proxy-user).
The IP address and the port the antivirus program listens on
          are specified in the section antivirus on the
          system level of Kernun UTM's configuration, as
          shown in Figure 5.56, “Configuration of the connection to the antivirus program” (we
          suppose ClamAV listens on localhost's port 3310). It is possible
          to limit the size (max-checked-size) of files
          scanned by the antivirus program. In the sample configuration, it
          is 1 MB. Larger files are not scanned and the antivirus module
          immediately reports the result as
          SKIPPED.
The Internet Content Adaptation Protocol (ICAP) is a lightweight HTTP-like protocol used to communicate with antivirus program. Kernun UTM makes use of it's Response Modification Mode to send data to be checked. Antivirus program sends back it's test results.
The IP address and the port the antivirus ICAP server listens
        on are specified in the section antivirus on the
        system level of Kernun UTM's configuration, as
        shown in Figure 5.57, “Configuration of the connection to the antivirus program via ICAP”
        (in this example it's 10.0.0.33 and standard
        ICAP port, 1344). The third parameter of
        connection item (/av/respmod
        in this example) is an URI of the antivirus' Response Modification
        Mode handler. Again, it is possible to limit the size
        (max-checked-size) of files scanned
        by the antivirus program.
      
There are five possible results of a check of content by the antivirus:
The antivirus has scanned the data and has not found any virus.
At least one virus has been found.
The antivirus has not scanned the data. Either the
            antivirus itself has decided not to scan, or the file has been
            larger than the limit specified by
            max-checked-size. No virus has been found, but
            the antivirus has not confirmed that the data is
            virus-free.
The proxy has received a result from the antivirus, but does not understand it. It is not known whether there is any virus in the data, or not.
The proxy cannot communicate with the antivirus. This is usually caused by the antivirus not running or by misconfigured antivirus connection in the proxy.
The antivirus program can be used for online scanning of the
      content transferred via ftp-proxy,
      http-proxy, imap4-proxy,
      pop3-proxy and smtp-proxy. There is a
      slight difference between mail-processing proxies
      (imap4-proxy, pop3-proxy and
      smtp-proxy) and the other two
      (http-proxy and ftp-proxy). In the
      latter case, a special functionality is implemented that prevents clients
      from reaching a timeout while very long files are being scanned. The
      client is fed with chunks of the file at specified intervals until the
      scanning of the file is completed.
Document scanning for the HTTP and FTP proxies is configured in
      their doc-acl. The antivirus item
      specifies the name of the antivirus section to be used.
      The interval, chunk and
      limit items can be used optionally to specify that
      if scanning takes more than a certain time (5 seconds in the example),
      a chunk of the (as yet unscanned) file of a certain size (up to 2,000 bytes)
      is to be sent to the client at a certain interval (5 seconds). By default,
      only documents for which the antivirus returns the result
      free are passed by the proxy. The
      doc-acl.accept-antivirus-status item can be used to specify
      additional result codes, for which the checked data are to be passed, in
      addition to free.
We will describe two variants of smtp-proxy
        configuration, differing in the way they handle
        infected mail. In this section, we show the case
        when infected mail is discarded, i.e. not sent to the
        recipient(s), but stored in quarantine.
In smtp-proxy, the item
      use-antivirus is used to define antivirus.
      Infected mail is detected in the mail-acl
      sections. One of them, a mail-acl accepting all
      e-mails (MAILOK), already exists in the
      Kernun UTM configuration. We will create more to process messages
      with various antivirus scan results (see Figure 5.59, “Discarding infected messages in the SMTP proxy”).
      When smtp-proxy processes mail, the first
      matching ACL is used. We must therefore place new
      mail-acl sections before the existing
      MAILOK.
The first added mail-acl,
      VIRUS, discards infected mail
      and puts it in quarantine. Its only entry condition is
          virus-status. It is matched if the
          virus-status of the message is
          found (i.e., it contains a document that
          is infected by a virus). We define three actions:
          discard the message (i.e., the sender
          is not returned an error), deny it
          (the message is not sent to the addressee) and store the
          e-mail in quarantine.
The quarantine directory must be defined (the
          quarantine item in the
          smtp-proxy section) and created in the file
          system (e.g.,
          /usr/local/kernun/root/var/quarantine,
          keeping in mind the smtp-proxy runs in
          chroot), and writable by kernun-user. For more
          information about ways of handling mail stored in quarantine,
          see quarc.sh(1).
There are two more mail-acl sections.
        AV-ERROR reports a transient error to the client if
        the the antivirus is unable to check the message. The client can retry
        sending the mail later. AV-UNKNOWN discards and
        quarantines the message if the antivirus does not scan it or if the
        proxy cannot understand the antivirus' reply.
Contrary to the previous example, this section
            describes a way to prevent infected mail from being discarded.
            This example refers to smtp-proxy SMTP-2,
            which is marked hidden in the sample file[36].
This time,
            smtp-proxy removes the infected documents from
            the message and delivers the e-mail to the addressee, sending a BCC copy to
            a special (administrator's) e-mail
            address. Moreover, the subject is changed to make it obvious that a
            virus was removed from the message.
            smtp-proxy also stores infected mail in
            quarantine. The configuration is depicted in Figure 5.60, “Replacing infected documents in the SMTP proxy”
The removal of infected document is ensured by creating a
          special doc-acl DOC-INFECTED section that matches
          the infected documents. We place it in front of the existing
          doc-acl DOCOK in order to match before the
          more generic doc-acl DOCOK. The entry condition
          virus-status found limits the acl
          scope to the infected documents (documents marked by the
          antivirus program as containing a virus).  We add the action item
          replace so that the matched (and therefore
          infected) document is replaced by the given file.  The
          administrator must explicitly create this file if it does
          not exist. Because the proxy is configured to run in chroot
          environment, the file must be stored in the particular
          subdirectory of the directory specified as
          chroot-dir (in this case,
          /usr/local/kernun/root/etc/shared/error_documents/).
The special behavior for infected e-mails (i.e., the
          messages that contain an infected document) is defined in
          mail-acl VIRUS. The entry condition
          virus-status found limits the acl scope to
          infected e-mails. The accept item specifies
          that the e-mail should be delivered to the addressee. We specify that
          the message is to be stored in the quarantine, that a BCC copy be sent to a
          special e-mail address (the copy-to item) and that
          the subject be prefixed with a specified text (the
          prefix-subject item).
Like in SMTP, there is an additional
        mail-acl AV-ERROR that returns a transient error
        to the client if the mail cannot be checked by the antivirus.
        Finally, doc-acl REPLACE-AV-UNKNOWN replaces
        documents that are skipped by the antivirus.
In this section, we show the POP3 and the IMAP4 proxies configured to replace infected documents. See the Figure 5.61, “Replacing infected documents in the POP3 proxy” and Figure 5.62, “Replacing infected documents in the IMAP4 proxy”
First, we instruct Kernun UTM to scan the documents transferred
      through the proxy with the antivirus by specifying
      the item use-antivirus. The item is specified
      directly in command-acl for the POP3 proxy, whereas
      for IMAP4 proxy, it is specified separately for the
      download and for the upload
      case.
In the second-level acl (mail-acl MAILOK), we
      specify that all e-mails should be accepted. In the third-level
      acl, we specify that we want to replace infected
      (doc-acl REPLACE-INFECTED) and unscanned
      (doc-acl REPLACE-AV-UNKNOWN) documents, and to accept
      all other documents (DOCOK)[37].