C-icap 1.3 (Кто-нибудь настраивал?)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian

C-icap 1.3

Сообщение technotrance »

Здравствуйте!
Кто-нибудь настраивал свежую версию c-icap 1.3 ?
Squid-3.1.8-2.fc13
Clamav-0.96.1-1300.fc13

В конфиге сквида добавил вот эти строчки:

Код: Выделить всё

icap_enable on
# включить icap

 icap_preview_enable on
 icap_preview_size 128
 icap_send_client_ip on

 icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344

 icap_service service_resp respmod_precache bypass=0 icap://127.0.0.1:1344

adaptation_access service_req allow all
adaptation_access service_resp allow all
# всех проверяем на вирусы


Вот конфиг c-icap:

Код: Выделить всё

#
# This file contains the default settings for c-icap
#
#


# TAG: PidFile
# Format: PidFile pid_file
# Description:
#    The file to store the pid of the main process of the c-icap server.
# Default:
#    PidFile /var/run/c-icap/c-icap.pid
PidFile /var/run/c-icap/c-icap.pid

# TAG: CommandsSocket
# Format: CommandsSocket socket_file
# Description:
#    The path of file to use as control socket for c-icap
# Default:
#    CommandsSocket /var/run/c-icap/c-icap.ctl
CommandsSocket /var/run/c-icap/c-icap.ctl

# TAG: Timeout
# Format: Timeout seconds
# Description:
#    The time in seconds after which a connection without activity
#    can be cancelled.
# Default:
#    Timeout 300
Timeout 300

# TAG: MaxKeepAliveRequests
# Format: MaxKeepAliveRequests number
# Description:
#    The maximum number of requests can be served by one connection
#    Set it to -1 for no limit
# Default:
#    MaxKeepAliveRequests 100
MaxKeepAliveRequests 100

# TAG: KeepAliveTimeout
# Format: KeepAliveTimeout seconds
# Description:
#    The maximum time in seconds waiting for a new requests before a
#    connection will be closed.
#    If the value is set to -1, there is no timeout.
# Default:
#    KeepAliveTimeout 600
KeepAliveTimeout 600

# TAG: StartServers
# Format: StartServers number
# Description:
#    The initial number of server processes. Each server process
#    generates a number of threads, which serve the requests.
# Default:
#    StartServers 3
StartServers 3

# TAG: MaxServers
# Format: MaxServers number
# Description:
#    The maximum allowed number of server processes.
# Default:
#    MaxServers 10
MaxServers 10

# TAG: MinSpareThreads
# Format: MinSpareThreads number
# Description:
#    If the number of the available threads is less than number,
#    the c-icap server starts a new child.
# Default:
#    MinSpareThreads     10
MinSpareThreads     10

# TAG: MaxSpareThreads
# Format: MaxSpareThreads number
# Description:
#    If the number of the available threads is more than number then
#    the c-icap server kills a child.
# Default:
#    MaxSpareThreads     20
MaxSpareThreads     20

# TAG: ThreadsPerChild
# Format:  ThreadsPerChild number
# Description:
#    The number of threads per child process.
# Default:
#    ThreadsPerChild     10
ThreadsPerChild     10

# TAG: MaxRequestsPerChild
# Format: MaxRequestsPerChild number
# Description:
#    The maximum number of requests that a child process can serve.
#    After this number has been reached, process dies. The goal of this
#    parameter is to minimize the risk of memory leaks and increase the
#    stability of c-icap. It can be disabled by setting its value to 0.
# Default:
#    MaxRequestsPerChild  0
MaxRequestsPerChild  0

# TAG: Port
# Format: Port port
# Description:
#    The port number that the c-icap server uses to listen to requests.
# Default:
#    Port 1344
Port 1344

# TAG: User
# Format: User username
# Description:
#    The user owning c-icap's processes. By default, the owner is the
#    user who runs the program.
# Default:
#    No value
# Example:
User nobody

# TAG: Group
# Format: Group groupname
# Description:
#    The group of users owning c-icap's processes, which, by default
#    is the group of the current user.
# Default:
#    No value
# Example:
Group nobody

# TAG: ServerAdmin
# Format: ServerAdmin admin_mail
# Description:
#    The Administrator of this server. Used when displaying information
#    about this server (logs, info service, etc)
# Default:
#    No value
ServerAdmin you@your.address

# TAG: ServerName
# Format: ServerName aServerName
# Description:
#    A name for this server. Used when displaying information about this
#    server (logs, info service, etc)
# Default:
#    No value
ServerName YourServerName

# TAG: TmpDir
# Format: TmpDir dir
# Description:
#    dir is the location of temporary files.
# Default:
#    TmpDir /var/tmp
TmpDir /var/tmp

# TAG: MaxMemObject
# Format: MaxMemObject bytes
# Description:
#    The maximum memory size in bytes taken by an object which
#    is processed by c-icap . If the size of an object's body is
#    larger than the maximum size a temporary file is used.
# Default:
#    MaxMemObject 131072
MaxMemObject 131072

# TAG: DebugLevel
# Format: DebugLevel level
# Description:
#    The level of debugging information to be logged.
#    The acceptable range of levels is between 0 and 10.
# Default:
#    DebugLevel 1
DebugLevel 5

# TAG: ModulesDir
# Format: ModulesDir dir
# Description:
#    The location of modules
# Default:
#    ModulesDir /usr/local/c-icap/lib/c_icap
ModulesDir /usr/local/c-icap/lib/c_icap

# TAG: ServicesDir
# Format: ServicesDir dir
# Description:
#    The location of services
# Default:
#    ServicesDir /usr/local/c-icap/lib/c_icap
ServicesDir /usr/local/c-icap/lib/c_icap

# TAG: TemplateDir
# Format: TemplateDir dir
# Description:
#    The location of the text templates used by c-icap and its services,
#    categorized by language and services/modules
# Default:
#    No value
# Example:
TemplateDir /usr/local/c-icap/share/c_icap/templates/

# TAG: TemplateDefaultLanguage
# Format: TemplateDefaultLanguage lang
# Description:
#    Sets the default language to use for text templates
# Default:
#    TemplateDefaultLanguage en
TemplateDefaultLanguage en

#TemplateReloadTime 360
#TemplateCacheSize 20
#TemplateMemBufSize 8192

# TAG: LoadMagicFile
# Format: LoadMagicFile path
# Description:
#    Load a c-icap magic file. A magic file contains various
#    data type definitions. Look inside default c-icap.magic file
#    for more informations.
#    It can be used more than once to use multiple magic files.
# Default:
#    LoadMagicFile /usr/local/c-icap/etc/c-icap.magic
LoadMagicFile /usr/local/c-icap/etc/c-icap.magic

# TAG: RemoteProxyUsers
# Format: RemoteProxyUsers onoff
# Description:
#    Set it to on if you want to use username provided by the proxy server.
#    This is the recomended way to use users in c-icap.
#    If the RemoteProxyUsers is off and c-icap configured to use users or
#    groups the internal authentication mechanism will be used.
# Default:
#    RemoteProxyUsers off
RemoteProxyUsers off

# TAG: RemoteProxyUserHeader
# Format: RemoteProxyUserHeader Header
# Description:
#    Used to specify the icap header used by the proxy server to send
#    the authenticated client username to c-icap server
# Default:
#    RemoteProxyUserHeader X-Authenticated-User
RemoteProxyUserHeader X-Authenticated-User

# TAG: RemoteProxyUserHeaderEncoded
# Format: RemoteProxyUserHeaderEncoded onoff
# Description:
#    Set it to off if the RemoteProxyUserHeader is not base64 encoded
# Default:
#    RemoteProxyUserHeaderEncoded on
RemoteProxyUserHeaderEncoded on

# TAG: AuthMethod
# Format: AuthMethod Method Authenticator
# Description:
#    Used to define the internal authentication mechanism to use. This
#    feature is not well tested and may cause problems. It is better to use
#    RemoteProxyUser configuration.
#    Method is the authentication method to use (basic, digest, etc).
#    Currently only basic authentication method is implemented as build in
#    module
#    Authenticator currently can only be "basic_simple_db"
#    It can be considered as a user/password store and can be
#    implemented as external module. The basic_simple_db is implemented as
#    build it module
# Default:
#    No set
# Example:
#    AuthMethod basic basic_simple_db

# TAG: basic.Realm
# Format: basic.Realm ARealm
# Description:
#    Specify the basic method realm
# Default:
#    basic.Realm "Basic authentication"
# Example:
#    basic.Realm "c-icap server authentication"

# TAG: basic_simple_db.UsersDB
# Format: basic_simple_db.UsersDB LookupTable
# Description:
#    Specify the lookup table where the usernames/passwords pairs
#    are stored. The paswords must be unencrypted
#    For more information about c-icap lookup tables read c-icap server
#    manual page
# Default:
#    No value
# Example:
#    basic_simple_db.UsersDB hash:/usr/local/c-icap/etc/c-icap-users.txt

# TAG: GroupSourceByGroup
# Format: GroupSourceByGroup LookupTable
# Description:
#    Defines a lookup table where the groups of users are stored indexed
#    by group. It can be used more than once.
#    For more information about c-icap lookup tables read c-icap server
#    manual page
# Default:
#    No set
# Example:
#    GroupSourceByGroup hash:/usr/local/c-icap/etc/c-icap-groups.txt

# TAG: GroupSourceByUser
# Format: GroupSourceByUser LookupTable
# Description:
#    Defines a lookup table where the groups of users are stored indexed
#    by user. It can be used more than once.
#    For more information about c-icap lookup tables read c-icap server
#    manual page
# Default:
#    No set
# Example:
#    GroupSourceByUser hash:/usr/local/c-icap/etc/c-icap-user-groups.txt

# TAG: acl
# Format: acl name type[{param}] value1 [value2] [...]
# Description:
#    Supported acl types are:
#        acl aclname service service1 ...
#             The servicename
#        acl aclname type OPTIONS|RESPMOD|REQMOD ...
#             The icap method
#        acl aclname port port1 ...
#             The icap server port
#        acl aclname src ip1/netmask1 ...
#             The client ip address
#        acl aclname srvip ip1/netmask1 ...
#             The c-icap server ip address
#        acl aclname icap_header{HeaderName} value1 ...
#             Matches the icap header HeaderName with value1 ...
#             The values are in regex form: /avalue/
#        acl aclname icap_resp_header{HeaderName} value1 ...
#             The icap response header
#             The values are in regex form: /avalue/
#        acl aclname http_req_header{HeaderName} value1 ...
#             The http request header
#             The values are in regex form: /avalue/
#        acl aclname http_resp_header{HeaderName} value1 ...
#             The http response header
#             The values are in regex form: /avalue/
#        acl aclname data_type type1 ...
#             The data type as recognized by the internal data type
#             recognizer. The types are defined in c-icap.magic file
#        acl aclname auth username|* ...
#             The authenticated users. Using * instead of username means
#             all users.
#        acl aclname group group1 ...
#             if the user of request belongs to given groups
# Default:
#    None set
# Examples:
#    acl OPTIONS type OPTIONS
#    acl RESPMOD type RESPMOD
#    acl REQMOD  type REQMOD
#    acl ALLREQUESTS type OPTIONS RESPMOD REQMOD
#    acl XHEAD icap_header{X-Test}  /value/
#    acl ECHO service echo
#    acl localnet src 192.168.1.0/255.255.255.0
#    acl localhost src 127.0.0.1/255.255.255.255
#    acl all src 0.0.0.0/0.0.0.0

acl ALLREQUESTS type OPTIONS RESPMOD REQMOD
acl localsquid src 127.0.0.1
acl externalnet src 0.0.0.0/0.0.0.0

# TAG: icap_access
# Format: icap_access allow|deny [!]acl1 ...
# Description:
#    Allowing or denying ICAP access based on defined access lists
# Default:
#    None set
# Example:
#    icap_access deny XHEAD
#    #Allow OPTIONS method for all:
#    icap_access allow localnet OPTIONS
#    #Require authentication for all users from local network:
#    icap_access allow AUTH localnet
#    icap_access deny all

icap_access allow localsquid ALLREQUESTS
icap_access allow localsquid
icap_access allow AUTH localsquid
icap_access allow externalnet ALLREQUESTS
icap_access allow externalnet
# icap_access deny externalnet

# TAG: client_access
# Format: client_access allow|deny acl1 [acl2] [...]
# Description:
#    Allowing or denying connections on c-icap based on
#    defined access lists. Only the acl types src, srvip and port
#    can be used.
# Default:
#    None set
# Example:
#    client_access allow all

# TAG: LogFormat
# Format: LogFormat Name Format
# Description:
#    Name is a name for this log format.
#    Format is a string with embedded % format codes. % format codes
#    has the following form:
#        % [-] [width] [{argument}] formatcode
#        if - is specified then the output is left aligned
#        if width specified then the field is exactly width size
#        some formatcodes support arguments given as {argument}
#
#    Format codes:
#           %a:  Remote IP-Address
#           %la: Local IP Address
#           %lp: Local port
#           %>a: Http Client IP Address. Only supported if the proxy
#                   client supports the "X-Client-IP" header
#           %<A: Http Server IP Address. Only supported if the proxy
#                   client supports the "X-Server-IP" header
#           %ts: Seconds since epoch
#           %tl: Local time. Supports optional strftime format argument
#           %tg: GMT time. Supports optional strftime format argument
#           %>ho: Modified Http request header. Supports header name
#                    as argument
#           %huo: Modified Http request url
#           %<ho: Modified Http reply header. Supports header name
#                    as argument
#           %iu: Icap request url
#           %im: Icap method
#           %is: Icap status code
#           %>ih: Icap request header. Supports header name
#                    as argument
#           %<ih: Icap response header. Supports header name
#                    as argument
#           %Ih: Http bytes received
#           %Oh: Http bytes sent
#           %Ib: Http body bytes received
#           %Ob: Http body bytes sent
#           %I: Bytes received
#           %O: Bytes sent
#           %bph: The first 5 bytes of the body preview data. Non
#                    printable characters printed in hex form.
#                    Supports the number of bytes to output as argument.
#           %un: Username
# Default:
#    None set
# Example:
#    LogFormat myFormat "%tl, %a %im %iu %is %I %O %Ib %Ob %{10}bph"

# TAG: ServerLog
# Format: ServerLog LogFile
# Description:
#    the file used by the build-in logger file_logger to
#    store debugging information, errors and other
#    information about the c-icap server.
# Default:
#    ServerLog /usr/local/c-icap/var/log/server.log
ServerLog /usr/local/c-icap/var/log/server.log

# TAG: AccessLog
# Format: AccessLog LogFile [LogFormat] [[!]acl1] [[!]acl2] [...]
# Description:
#    LogFile is a file where to log access information.
#    LogFormat is the log format to use. If ommited c-icap uses:
#         "%tl, %la %a %im %iu %is"
#    Also acls can be used to select certain requests to be logged.
#    This directive can be used more than once to specify more than
#    one access log files
# Default:
#    AccessLog /usr/local/c-icap/var/log/access.log
# Example:
#    AccessLog /usr/local/c-icap/var/log/access.log MyFormat all
AccessLog /usr/local/c-icap/var/log/access.log

# TAG: Logger
# Format: Logger LoggerName
# Description:
#    Specify wich logger to use. By default uses the build in "file_logger" which
#    uses files for access and server logging.
# Default:
#    Logger file_logger
# Example:
Logger file_logger

# TAG: Module
# Format: Module Type ModuleFile
# Description:
#    Load an external module/plugin to c-icap.
#    ModuleFile is the filename of the module. If no full path given then c-icap
#    searche in path defined by the ModulesDir configuration parameter.
#    Type is the type of the external module and can be one of the following:
#    - "logger" for modules implement a logger
#    - "common" for general purpose modules
# Default:
#
# Example:
Module logger sys_logger.so

# TAG: Service
# Format: Service aName ServiceFile
# Description:
#    It loads the service ServiceFile. The argument aName used
#    as alias name for the service
# Default:
#
# Example:
Service echo_service srv_echo.so

# TAG: ServiceAlias
# Format: ServiceAlias AliasName ServiceName[?param1=value1&param2=value2...]
# Description:
#    Used to define an alias name for a service.
# Default:
#
# Example:
ServiceAlias avscan srv_clamav?allow204=on&sizelimit=off&mode=simple


#
# TAG: General configuration parameters for all services
# Description:
#    PreviewSize: The preview data size to advertise to the icap client
#    MaxConnections: The client should not use more than MaxConnections
#            for this service.
#    TransferPreview: The list of file extensions, seperated by commas,
#             for which the client should send preview data.
#    TransferIgnore: The list of file extensions that should not be sent
#            to the icap server
#    TransferComplete: The list of file extensions that should be sent
#              in their entirety, without preview, to the icap server
# Example:
#    echo.PreviewSize 512
#    echo.TransferIgnore gif, jpeg


######################################################
# External modules comming with core c-icap server
#
# Module: echo
# Description:
#    Simple test service
# Example:
#    Service echo srv_echo.so
#Service echo srv_echo.so

# Module: sys_logger
# Description:
#    Add support for logging access and server events to syslog server
#    Use "Module" configuration parameter to load this module and "Logger"
#    to make it default logger for the c-icap.
# Example:
#    Module logger sys_logger.so
#    Logger sys_logger


# TAG: sys_logger.Prefix
# Format: sys_logger.Prefix string
# Description:
#     string is be presented in every syslog message.
# Default:
#    sys_logger.Prefix "C-ICAP:"

# TAG: sys_logger.Facility
# Format: sys_logger.Facility daemon|user|local1|local2|local3|local4|local5|local6|local7
# Description:
#    specifies the facility type of syslog.
# Default:
#    sys_logger.Facility daemon

# TAG: sys_logger.access_priority
# Format: sys_logger.access_priority alert|crit|debug|emerg|err|info|notice|warning
# Description:
#    determines  the  importance  of the access log message
# Default:
#    sys_logger.access_priority info

# TAG: sys_logger.server_priority
# Format: sys_logger.server_priority alert|crit|debug|emerg|err|info|notice|warning
# Description:
#    determines  the  importance  of the server log message
# Default:
#    sys_logger.server_priority crit

# TAG: sys_logger.LogFormat
# Format: sys_logger.LogFormat LOGFORMAT
# Description:
#    The log format to use. If no log format defined then
#    the following will be used:
#        "%la %a %im %iu %is"
# Default:
#    None set
# Example:
#    Logformat BasicFormat "%la %a %im %iu %is"
#    sys_logger.LogFormat BasicFormat

# TAG: sys_logger.access
# Format: sys_logger.access [!]acl1 ...
# Description:
#    Allow selecting ICAP requests to be logged using acls.
#    By default all requests will be logged.
# Default:
#    None set
# Example:
#    sys_logger.access all

# End module: sys_logger

# Module: bdb_tables
# Description:
#    Add support for Berkeley DB based lookup tables. The format for
#    bdb path of the lookup table is:
#        bdb:/path/to/bdb
#    Use the c-icap-mkbdb utility to build Berkeley DB c-icap lookup tables
# Example:
#    Module common bdb_tables.so

# End module: bdb_tables

# Module: dnsbl_tables
# Description:
#    Add support for dns lookup tables. Can be used to access
#    dns block lists. The dnsbl lookup table path definition is:
#        dnsbl:domainname
#    For example the lookup table  for accessing the black.uribl.com
#    dns black list is:
#        dnsbl:black.uribl.com
# Example:
#    Module common dnsbl_tables.so

# End module: dnsbl_tables

# Module: ldap_module
# Description:
#    Add LDAP support to c-icap. The user can use LDAP based lookup tables
#    using the following lookup table path:
#          ldap://[username:password@]ldapserver?base?attr1,attr2?filter
#    The filter can contain the "%s" formating code which will be replaced by
#    the search key
#    Examples of supported ldap urls:
#         ldap://ldap.chtsanti.net?o=chtsanti?cn,uid?uid=%s
#         ldap://cn=Directory Manager:Apassword@ldap.chtsanti.net?o=chtsanti?mermberUid?(&(objectClass=posixGroup)(cn=%s))
#
#    WARNING: is not enough tested it may contain bugs!
# Example:
#    Module common ldap_module.so

# End module: ldap_module


При запуске клиента вроде всё нормально:

Код: Выделить всё

# ./c-icap-client
ICAP server:localhost, ip:127.0.0.1, port:1344

OPTIONS:
        Allow 204: Yes
        Preview: 1024
        Keep alive: Yes

ICAP HEADERS:
        ICAP/1.0 200 OK
        Methods: RESPMOD, REQMOD
        Service: C-ICAP/0.1.3 server - Echo demo service
        ISTag: CI0001-XXXXXXXXX
        Transfer-Preview: *
        Options-TTL: 3600
        Date: Mon, 08 Nov 2010 07:39:17 GMT
        Preview: 1024
        Allow: 204
        X-Include: X-Authenticated-User, X-Authenticated-Groups
        Encapsulated: null-body=0


И даже вроде как виря ловит, если дать такую команду:

Код: Выделить всё

# ./c-icap-client -f /mnt/my_configs/clamav/test-virus/eicar.com
ICAP server:localhost, ip:127.0.0.1, port:1344

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*[root@linrouter1 bin]#

Хоть и крокозябрами отображает...

А вот squid не видит c-icap и всё тут...
Ошибка протокола ICAP.

Система вернула: [No Error]

Это означает, что какой-то этап связи по протоколу ICAP не удался.

Возможные проблемы:

Сервер ICAP недоступен

Получен недопустимый ответ от сервера ICAP.


Помогите, пожалуйста, найти ошибку....
Спасибо сказали:
us127
Сообщения: 15
ОС: Debian Squeeze

Re: C-icap 1.3

Сообщение us127 »

У меня в сквиде 3.1.6 так:

Код: Выделить всё

#icap_enable on
#icap_preview_enable on
#icap_preview_size 128
#icap_send_client_ip on
#icap_service         service_avi_req reqmod_precache 0 icap://localhost:1344/srv_clamav
#icap_service         service_avi respmod_precache 1 icap://localhost:1344/srv_clamav
#icap_class           class_antivirus service_avi
#icap_class           class_antivirus service_avi_req
#icap_access          class_antivirus allow all
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian

Re: C-icap 1.3

Сообщение technotrance »

Странно... Сделал, как у Вас, и заработало...
А как же тогда документация?
http://wiki.squid-cache.org/Features/ICAP?...ht=%28c-icap%29
Спасибо сказали:
Аватара пользователя
technotrance
Сообщения: 280
ОС: Fedora, FreeBSD, CentOS, Debian

Re: C-icap 1.3

Сообщение technotrance »

А нет, стоп, стоп...
Ступил я, сильно ступил... Тут, похоже, вовсе не в сквиде дело. Дело в самом c-icap. Не распознаёт он вирус... Т.е. связка clamav+c-icap не работает :(
Спасибо сказали: