Участник:Clint/Черновики

Материал из Xgu.ru

Перейти к: навигация, поиск

Черновые заметки Сергея Черепенина.


3084013939314215976-1203278673_1203278718_poltawa.png


Therefore http://www.felipelopezfoundation.org/ Garcinia Cambogia Classification of garcinia cambogia style .

Содержание

[править] Добавление в initrd модулей SATA в Debian

Необходимо:

  • Создать каталог
    /lib/modules/verion_kernel/initrd
  • В него положить необходимые модули
  • Эти модули будут добавлены в initrd командой
mkinitrd -o /boot/initrd.img-2.6.15.2.mod 2.6.15.2
  • Изменить menu.lst
  • Проверить fstab

[править] Пересборка initrd

  • Создаём рабочий каталог
mkdir /tmp/NEW ; cd /tmp/NEW
  • Копируем необходимый образ initrd в каталог /tmp
cp /boot/initrd.img .. 
  • Смотрим что за файл:
file /boot/initrd.img 
/boot/initrd.img: gzip compressed data, was "initrd.img.cpio2", from Unix, last  modified: Thu Aug 10 17:19:31 2006
  • Отсюда видно, что файл сжат программой gzip, распаковываем его:
mv initrd.img initrd.img.gz
gzip -d initrd.img.gz
  • Снова смотрим что за файл:
file initrd.img
initrd.img: ASCII cpio archive (SVR4 with no CRC)
  • Это cpio архив, распаковываем:
cpio -iv < ../initrd.img
  • В каталоге /tmp/NEW будет создано дерево каталогов распакованного образа initrd, в каталог /tmp/NEW/lib копируем необходимые модули:
cp /lib/modules/версия ядра/kernel/drivers/нужный модуль.ko lib/
  • В файле /tmp/NEW/init необходимо добавить стороки для загрузки модуля:
vi init
>> echo "Loading нужный модуль.ko module"
>> insmod /lib/нужный модуль.ko
  • Сжимаем обратно образ. Сначала cpio:
find ./ | cpio -H newc -o > /boot/new-initrd.img
  • Потом gzip:
gzip /boot/new-initrd.img
  • Исправляем записи в конфигурационном файле grub:
vi /boot/grub/grub.conf


[править] Установка монитора виртуальных машин Xen

apt-get install libvncserver-dev bcc bin86 elks-libc zlib1g-dev
libgcrypt11-dev libcrypto++-dev libssl0.9.8 libcurl3-dev
python2.4-devlibxxf86misc-dev libxkbfile-dev qemu bzip2 ntpdate vim patch console-cyrillic
  • Отключение сообщений об ошибке usb-устройств
echo 1 1 1 1 > /proc/sys/kernel/printk

[править] Расходный материал

Из переписки:


> что я сделал?
> 1.apt-get install udev
> 2.в /etc/mkinitrd/mkinitrd.conf дописал yes
> BUSYBOX=yes
> 2а.что в файле /etc/mkinitrd/modules
>
>
> ahci
> ata_piix
> libata
> sata_mv
> sata_nv
> sata_promise
> sata_qstor
> sata_sil24
> sata_sil
> sata_sis
> sata_svw
> sata_sx4
> sata_via
> sata_vsc
> scsi_debug
> scsi_mod
> sd_mod
> sr_mod
>
> 2б.Что в каталоге /lib/modules/2.6.16.13-xen/initrd/
>
> ahci.ko
> ata_piix.ko
> libata.ko
> sata_mv.ko
> sata_nv.ko
> sata_promise.ko
> sata_qstor.ko
> sata_sil24.ko
> sata_sil.ko
> sata_sis.ko
> sata_svw.ko
> sata_sx4.ko
> sata_via.ko
> sata_vsc.ko
> scsi_debug.ko
> scsi_mod.ko
> sd_mod.ko
> sr_mod.ko
>
> 2в.depmod -a 2.6.16.13-xen
>
> 3.mkinitrd -o /boot/initrd-xen-test 2.6.16.13-xen
>
> 4.При попытке загрузится с него происходит та же ошибка - не могу примонтировать root
>
> 5.И теперь:
> mount -o loop -t cramfs /boot/initrd-xen-test /mnt/1
> dd if=/dev/zero of=/tmp/newimage count=31000 bs=512
> mkfs.etx2 /tmp/newimage
> mount -o loop /tmp/newimage /mnt/2
> rsync -auv /mnt/1/ /mnt/2/
> umount /mnt/1
> gzip -9 /tmp/newimage
> cp /tmp/newimage.gz /boot
> reboot
>

[править] Установка и настройка ftp-сервера proftpd с поддержкой MySQL

ОС Debian Etch Установка необходимых пакетов:

apt-get install proftpd mysql-server

Создание баз и таблиц в MySQL:

mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.0.45-Debian_1-log Debian etch distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| mysql              | 
+--------------------+
2 rows in set (0.00 sec)

mysql> create database proftpd;
Query OK, 1 row affected (0.00 sec)

mysql> use proftpd;
Database changed
mysql> CREATE TABLE users (
    -> userid VARCHAR(30) NOT NULL UNIQUE,
    -> passwd VARCHAR(80) NOT NULL,
    -> uid INTEGER UNIQUE,
    -> gid INTEGER,
    -> homedir VARCHAR(255),
    -> shell VARCHAR(255)
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> CREATE TABLE groups (
    -> groupname VARCHAR(30) NOT NULL,
    -> gid INTEGER NOT NULL,
    -> members VARCHAR(255)
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> insert into groups values('ftp','5001','');
Query OK, 1 row affected (0.00 sec)

mysql> insert into users values('test','testftp','5001','5001','/home/ftp/test','/sbin/nologin');
Query OK, 1 row affected (0.00 sec)


mysql> show tables
    -> ;
+-------------------+
| Tables_in_proftpd |
+-------------------+
| groups            | 
| users             | 
+-------------------+
2 rows in set (0.00 sec)

mysql> describe users
    -> ;
+---------+--------------+------+-----+---------+-------+
| Field   | Type         | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| userid  | varchar(30)  | NO   | PRI |         |       | 
| passwd  | varchar(80)  | NO   |     |         |       | 
| uid     | int(11)      | YES  | UNI | NULL    |       | 
| gid     | int(11)      | YES  |     | NULL    |       | 
| homedir | varchar(255) | YES  |     | NULL    |       | 
| shell   | varchar(255) | YES  |     | NULL    |       | 
+---------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

mysql> select * from users;
+--------+---------+------+------+----------------+---------------+
| userid | passwd  | uid  | gid  | homedir        | shell         |
+--------+---------+------+------+----------------+---------------+
| test   | testftp | 5001 | 5001 | /home/ftp/test | /sbin/nologin | 
+--------+---------+------+------+----------------+---------------+
1 row in set (0.00 sec)


Настройка proftpd:

egrep -v "^#|\ $" /etc/proftpd/proftpd.conf

Include /etc/proftpd/modules.conf
UseIPv6                         off
ServerName                      "Debian"
ServerType                      standalone
DeferWelcome                    off
MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    on
TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200
DisplayLogin                    welcome.msg
DisplayFirstChdir               .message
ListOptions                     "-l"
DenyFilter                      \*.*/
Port                            21
MaxInstances                    30
User                            proftpd
Group                           nogroup
Umask                           022  022
AllowOverwrite                  on
<IfModule mod_sql.c>
SQLBackend                      mysql
SQLConnectInfo proftpd@localhost:3306 root rootpass
SQLAuthTypes Backend PlainText
SQLUserInfo users userid passwd uid gid homedir shell
DefaultRoot ~
RequireValidShell off
SQLGroupInfo groups groupname gid members
SQLAuthenticate users groups
SQLLogFile /var/log/proftpd.log
</IfModule>
TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log
<IfModule mod_tls.c>
TLSEngine off
</IfModule>
<IfModule mod_quota.c>
QuotaEngine on
</IfModule>
<IfModule mod_ratio.c>
Ratios on
</IfModule>
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine        on
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine on
</IfModule>


Создание домашнего каталога для ftp пользователя:

sudo mkdir /home/ftp/test
sudo chown 5001:5001 /home/ftp/test
sudo touch /home/ftp/test/test_file

Проверка:

ftp 77.123.137.68
Connected to 77.123.137.68.
220 ProFTPD 1.3.0 Server (Debian) [77.123.137.68]
Name (77.123.137.68:clint): test
331 Password required for test.
Password:
230 User test logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful
150 Opening ASCII mode data connection for file list
-rw-r--r--   1 root     root            0 Aug 19 19:58 test_file
226 Transfer complete.
ftp> quit
221 Goodbye.

[править] Использование стандартной таблицы mysql.user

mysql> use mysql
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              | 
| db                        | 
| func                      | 
| help_category             | 
| help_keyword              | 
| help_relation             | 
| help_topic                | 
| host                      | 
| proc                      | 
| procs_priv                | 
| tables_priv               | 
| time_zone                 | 
| time_zone_leap_second     | 
| time_zone_name            | 
| time_zone_transition      | 
| time_zone_transition_type | 
| user                      | 
+---------------------------+
17 rows in set (0.00 sec)
  • Создание пользователя
create user 'ftptestuser'@'%';
  • Пароль
set password for 'ftptestuser'=PASSWORD('password');
  • Настройка proftpd на использование таблицы mysql.user

База mysql:

 
SQLConnectInfo mysql@localhost:3306 root password

Проверка пароля:

SQLAuthTypes Backend

Так как в таблице mysql.user отсутствуют поля для uid, gid, homedir, shell, то необходимо изменить следующее (если поле shell указано как null, то оно не используется):

SQLDefaultUID 5002
SQLDefaultGID 5002
SQLDefaultHomedir /home/ftp/test2

Таблица user и поля:

SQLUserInfo user user password null null null null

Так как в таблице mysql.user нет информации о группах, то отключаем использование информации о группах:

SQLAuthenticate users
  • Проверка:
ftp 77.123.137.68
Connected to 77.123.137.68.
220 ProFTPD 1.3.0 Server (Debian) [77.123.137.68]
Name (77.123.137.68:clint): ftptestuser
331 Password required for ftptestuser.
Password:
230 User ftptestuser logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/" is current directory.
ftp> ls
200 PORT command successful
150 Opening ASCII mode data connection for file list
-rw-r--r--   1 root     root            0 Aug 19 22:00 testfile_test2
226 Transfer complete.
ftp> quit
221 Goodbye.
  • Конфиг сервера:
egrep -v "^#|\ $" /etc/proftpd/proftpd.conf

Include /etc/proftpd/modules.conf
UseIPv6                         off
ServerName                      "Debian"
ServerType                      standalone
DeferWelcome                    off
MultilineRFC2228                on
DefaultServer                   on
ShowSymlinks                    on
TimeoutNoTransfer               600
TimeoutStalled                  600
TimeoutIdle                     1200
DisplayLogin                    welcome.msg
DisplayFirstChdir               .message
ListOptions                     "-l"
DenyFilter                      \*.*/
Port                            21
MaxInstances                    30
User                            proftpd
Group                           nogroup
Umask                           022  022
AllowOverwrite                  on

<IfModule mod_sql.c>
SQLBackend                      mysql
SQLConnectInfo mysql@localhost:3306 root password
SQLAuthTypes Backend PlainText
SQLDefaultUID 5002
SQLDefaultGID 5002
SQLDefaultHomedir /home/ftp/test2
SQLUserInfo user user password null null null null
DefaultRoot ~
RequireValidShell off
SQLAuthenticate users
SQLLogFile /var/log/proftpd/proftpd.log
</IfModule>

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

<IfModule mod_tls.c>
TLSEngine off
</IfModule>

<IfModule mod_quota.c>
QuotaEngine on
</IfModule>

<IfModule mod_ratio.c>
Ratios on
</IfModule>


<IfModule mod_delay.c>
DelayEngine on
</IfModule>

<IfModule mod_ctrls.c>
ControlsEngine        on
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>

<IfModule mod_ctrls_admin.c>
AdminControlsEngine on
</IfModule>

[править] Базовая настройка прокси-сервера squid

[править] Установка и начальная настройка

  • Настройка интерфейсов такова:
# ifconfig

eth0      Link encap:Ethernet  HWaddr AA:00:00:00:00:03
          inet addr:192.168.16.200  Bcast:192.168.16.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2749 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1766 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1656718 (1.5 MiB)  TX bytes:272841 (266.4 KiB)
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:763 errors:0 dropped:0 overruns:0 frame:0
          TX packets:763 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:333837 (326.0 KiB)  TX bytes:333837 (326.0 KiB)
  • Посмотрим, ведется ли прослушивание порта прокси-сервера:
# netstat -lnp | grep :3128 
  • Установка:
# apt-get install squid

Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Будут установлены следующие дополнительные пакеты:
  squid-common
Предлагаемые пакеты:
  squidclient squid-cgi logcheck-database resolvconf smbclient
НОВЫЕ пакеты, которые будут установлены:
  squid squid-common
обновлено 0, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 47 пакетов не обновлено.
Необходимо скачать 1061kБ архивов.
...
Выбор ранее не выбранного пакета squid-common.
(Чтение базы данных... на данный момент установлено 24580 файлов и каталогов.)
Распаковывается пакет squid-common (из файла .../squid-common_2.6.3-1_all.deb)...
Выбор ранее не выбранного пакета squid.
Распаковывается пакет squid (из файла .../squid_2.6.3-1_i386.deb)...
Настраивается пакет squid-common (2.6.3-1) ...
Настраивается пакет squid (2.6.3-1) ...
Creating squid spool directory structure
2006/10/12 17:00:34| Creating Swap Directories
Restarting Squid HTTP proxy: squid.

Еще раз проверяем прослушивание порта squid:

# netstat -lnp | grep :3128

tcp        0      0 0.0.0.0:3128            0.0.0.0:*               LISTEN     3394/(squid)

Промотрим файл конфигурации:

  • http_port - порт прослушивания, по умолчанию 3128, взможны другие варианты записи, в версии 2.3 можно указывать перед портом имя хоста или IP-адрес:
http_port 3128 
  • cache_mgr - Адрес электроннй почты администратора прокси-сервера, по умолчанию имеет значение webmaster
  • ftp_user - Описание пользователя для анонимного входа
  • hierarchy_stoplist (список строк - через пробел, - при встрече которых в URL, запрос будет направлен сразу напрямую, а не "по соседям"; по-умолчанию - "cgi-bin ?"):
 hierarchy_stoplist cgi-bin ?
  • Постараться не кэшировать эти файлы:
 
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
  • Размер кэша( В ЧЕМ?), количество каталогов первого уровня в каталоге /var/spool/squid и ворого уровня того же каталога
cache_dir ufs /var/spool/squid 100 16 256
  • Настройка логирования:
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log none
  • Программа аутентификации и путь к файлу с паролями:
auth_param basic program /usr/lib/squid/ncsa_auth /usr/etc/passwd
  • Ограничение на количество дочерних процессов:
auth_param basic children 5
  • Определение имени хоста и домена, которое будет указываться в заголовке окна аутентификации:
auth_param basic realm Squid proxy-caching web server
  • Оределение времени, в течении которго пара username:password действительны. По соображениям безопасности дефолтное значение 2 часа:
auth_param basic credentialsttl 2 hours
  • Определение чуствительности к регистру в имени пользователя:
auth_param basic casesensitive off
  • Дефолтные настройки определения срока жизни данных кэша squid. Данные описываются регулярными выражениями:
#Suggested default:
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
 * Запись вида 
refresh_pattern [-i] regex MIN_AGE(В ЧЕМ?) percent MAX_AGE[options]
  • Рекомендуемый минимум access листов:
#Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563      # https, snews
acl SSL_ports port 873          # rsync
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443 563     # https, snews
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl Safe_ports port 631         # cups
acl Safe_ports port 873         # rsync
acl Safe_ports port 901         # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
  • И рекомендуемый минимум правил доступа по access листам:
#Recommended minimum configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager
# Only allow purge requests from localhost
http_access allow purge localhost
http_access deny purge
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
  • Проверим - отвечает ли на интерфейсах squid:

# telnet 127.0.0.1 3128

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
^]
telnet> q
Connection closed.


# telnet 192.168.16.200 3128

Trying 192.168.16.200...
Connected to 192.168.16.200.
Escape character is '^]'.
^]
telnet> q
Connection closed.
  • Как видно - всё работает.
  • Проверяем: в настройках internet-browser`a необходимо указать прокси-сервер 127.0.0.1 на порту 3128 - выход в интернет имеется.Если прописать сейчас в качестве прокси-сервера адрес 192.168.16.200:3128 то работать ничего не будет. Это означает, что прокси -сервер в дефолтной конфигурации настроен на access localhost only!

[править] Администрирование прокси-сервера

[править] Разрешение доступа к сети Интернет пользователям сети

Для решения зтой задачи необходимо указвать явно в конфигурационном файле /etc/squid/squid.conf хосты или сети, которым разрешать доступ к Интернет.

  • Например, для раазрешения доступа к сети Интернет сети 192.168.16.0/24 необходимо вписать в /etc/squid/squid.conf следующие строки:
# vi /etc/squid/squid.conf

2577,2578c2577,2579
< #acl our_networks src 192.168.1.0/24 192.168.2.0/24
< #http_access allow our_networks
---
> acl our_networks src 192.168.16.0/24
> http_access allow our_networks

  • Даём:
 
squid -k reconfigure 

и проблема решена.

[править] Парольная аутентификация
  • Если есть необходимость устроить парольную аутентификацию пользователей сети 192.168.16.0/24 то необходимо немного модифицировать конфигурационный файл:
# vi /etc/squid/squid.conf

1799,1803c1799,1803
< #auth_param basic program <uncomment and complete this line>
< #auth_param basic children 5
< #auth_param basic realm Squid proxy-caching web server
< #auth_param basic credentialsttl 2 hours
< #auth_param basic casesensitive off
---
> auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
> auth_param basic children 5
> auth_param basic realm Squid proxy-caching web server
> auth_param basic credentialsttl 2 hours
> auth_param basic casesensitive off
  • Назначение этих строк описано выше.
  • Кроме этого необходимо:
 - назначить авторизацию acl листу;
 - определить группу пользователей для аутентификации.
# vi /etc/squid/squid.conf

> acl myacl proxy_auth REQUIRED
< http_access allow our_networks
---
> http_access allow our_networks myacl
  • Генерацию пар пользователь-пароль можно выполнить внешней программой htpasswd, которая входит в состав пакета apache2-utils:
htpasswd -c /etc/squid/passwd foo

New password:
Re-type new password:
Adding password for user foo
  • Теперь
     squid -k reconfigure 
    и после настойки броузера все должно работать.


[править] Ограничение доступа отдельным пользователям
  • Если необходимо запретить доступ отельным пользователям (в примере nouser), то необходимо ввести следующие строки в /etc/squid/squid.conf
acl deny_users proxy_auth nouser
http_access deny deny_users 

Или при объединении с другими acl:

acl deny_users proxy_auth nouser
acl no_google url_regex -i search
acl daytime time 08:00-17:00 
http_access deny deny_users no_google daytime

И пользователь nouser не сможет осуществлять поиск через google с 8 до 17 часов

[править] Ограничение доступа на определённые сайты и домены
  • Если существует необходимость ограничить доступ на определенные сайты, то нужно их описать:
# vi /etc/squid/squid.conf

> acl nomailru url_regex -i ^http://mail.ru
> http_access deny nomailru

  • Теперь
 
squid -k reconfigure 
и на mail.ru не зайти.
  • Есть возможность описывать запрещенные сайты группами - по доменам:
vi /etc/squid/squid.conf

50,51c50,53
> acl no_google_search dstdomain .google.com
> http_access deny no_google_search
  • И все попытки поиска в google завершатся неудачей для пользователя.


[править] Блокирование определённого трафика на примере редиректора rejik3
  • Наверняка может возникнуть необходимость блокирования определенного тррфика ( например сайты и файлы mp3 или порнографические сайты). Рассмотрим на примере программы http://rejik.ru/index.html

Инсталляция и настройка на сайте http://rejik.ru/index.html


  • И далее, принятым в операционной системе методом, устанавливаем необходимые программы:
# wget http://rejik.ru/download/redirector-3.2.1.tgz

--17:59:01--  http://rejik.ru/download/redirector-3.2.1.tgz
           => `redirector-3.2.1.tgz'
Распознаётся rejik.ru... 84.252.152.241
Устанавливается соединение с rejik.ru|84.252.152.241|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: 46.022 (45K) [application/x-tar]
100%[====================================>] 46.022        68.29K/s
17:59:02 (68.17 KB/s) - `redirector-3.2.1.tgz' сохранён [46022/46022]

# tar xvzfC redirector-3.2.1.tgz /usr/src

redirector-3.2.1/
redirector-3.2.1/tools/
redirector-3.2.1/tools/benchmark
redirector-3.2.1/tools/IN.gz
redirector-3.2.1/tools/kill-cache
redirector-3.2.1/AUTHORS
redirector-3.2.1/COPYING
redirector-3.2.1/INSTALL
redirector-3.2.1/Makefile
redirector-3.2.1/VERSION
...
redirector-3.2.1/prune_urls.c
redirector-3.2.1/redirect.c
redirector-3.2.1/redirector.c
redirector-3.2.1/redirector.conf.dist
redirector-3.2.1/run_make_cache.c
redirector-3.2.1/vars.h
redirector-3.2.1/write_cache.c
redirector-3.2.1/raw_change.c
redirector-3.2.1/pass.c
redirector-3.2.1/Log

# cd /usr/src/redirector-3.2.1/
# vi Makefile

3,4c3,4
< SQUID_USER=nobody
< SQUID_GROUP=nogroup
---
> SQUID_USER=proxy
> SQUID_GROUP=proxy

# apt-get install libpcre3-dev

Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Будут установлены следующие дополнительные пакеты:
  libc6-dev libpcre3 libpcrecpp0 linux-kernel-headers
Предлагаемые пакеты:
  glibc-doc manpages-dev
НОВЫЕ пакеты, которые будут установлены:
  libc6-dev libpcre3-dev libpcrecpp0 linux-kernel-headers
Пакеты, которые будут обновлены:
  libpcre3
...
Распаковывается замена для пакета libpcre3...
Выбор ранее не выбранного пакета libpcrecpp0.
Распаковывается пакет libpcrecpp0 (из файла .../libpcrecpp0_6.7-1_i386.deb)...
Выбор ранее не выбранного пакета libpcre3-dev.
Распаковывается пакет libpcre3-dev (из файла .../libpcre3-dev_6.7-1_i386.deb)...
Настраивается пакет linux-kernel-headers (2.6.17.10-3) ...
Настраивается пакет libc6-dev (2.3.6.ds1-4) ...
Настраивается пакет libpcre3 (6.7-1) ...
Настраивается пакет libpcrecpp0 (6.7-1) ...
Настраивается пакет libpcre3-dev (6.7-1) ..

# make

rm -f pass.o raw_change.o load_cache.o pcre.o parse_input.o init_vars.o check_urls.o run_make_cache.o new_url.o redirect.o err_mes.o now.o get_opt.o parse_urls.o cache2url.o ip.o id.o comparing.o  load_urls.o prune_urls.o write_cache.o need_cache_update.o err_mes.o now.o get_opt.o parse_urls.o cache2url.o ip.o id.o comparing.o  redirector make-cache OUT
gcc -Wall -I/usr/include -I/usr/local/include -I/usr/include/pcre -c pass.c
gcc -Wall -I/usr/include -I/usr/local/include -I/usr/include/pcre -c raw_change.c
raw_change.c: In function ‘raw_change’:
raw_change.c:25: warning: pointer targets in passing argument 1 of ‘strstr’ differ in signedness
raw_change.c:25: warning: pointer targets in passing argument 2 of ‘strstr’ differ in signedness
raw_change.c:25: warning: pointer targets in assignment differ in signedness
raw_change.c:33: warning: pointer targets in passing argument 1 of ‘strlen’ differ in signedness
raw_change.c:34: warning: pointer targets in passing argument 1 of ‘strlen’ differ in signedness
raw_change.c:35: warning: pointer targets in passing argument 1 of ‘strchr’ differ in signedness
...
redirector.c:51: warning: pointer targets in passing argument 1 of ‘fopen’ differ in signedness
redirector.c:53: warning: pointer targets in passing argument 1 of ‘sprintf’ differ in signedness
redirector.c:54: warning: pointer targets in passing argument 1 of ‘printf’ differ in signedness
redirector.c:69: warning: pointer targets in passing argument 1 of ‘fgets’ differ in signedness
redirector.c:78: warning: pointer targets in passing argument 1 of ‘sprintf’ differ in signedness
redirector.c:79: warning: pointer targets in passing argument 1 of ‘err_mes’ differ in signedness
redirector.c:133: warning: pointer targets in passing argument 2 of ‘parse_urls’ differ in signedness
redirector.c:136: warning: pointer targets in passing argument 1 of ‘sprintf’ differ in signedness
redirector.c:137: warning: pointer targets in passing argument 1 of ‘err_mes’ differ in signedness
gcc -Wall -I/usr/include -I/usr/local/include -I/usr/include/pcre -o make-cache make-cache.c -L/lib `pcre-config --libs` load_urls.o prune_urls.o write_cache.o need_cache_update.o err_mes.o now.o get_opt.o parse_urls.o cache2url.o ip.o id.o comparing.o

# make install
mkdir -p /usr/local/rejik3/tools
cp make-cache /usr/local/rejik3
cp redirector /usr/local/rejik3
cp redirector.conf.dist /usr/local/rejik3
echo "#!/bin/sh" > /usr/local/rejik3/tools/check-redirector
echo 'su proxy -c "echo \"http://sex.ru 127.0.0.1/- - GET\" | /usr/local/rejik3/redirector /usr/local/rejik3/redirector.conf;"' >> /usr/local/rejik3/tools/check-redirector
chmod 755  /usr/local/rejik3/tools/check-redirector
echo "#!/bin/sh" > /usr/local/rejik3/tools/set-permissions
echo 'chown -R proxy:proxy /usr/local/rejik3' >> /usr/local/rejik3/tools/set-permissions
chmod 755  /usr/local/rejik3/tools/set-permissions
cp tools/kill-cache /usr/local/rejik3/tools
chmod 755  /usr/local/rejik3/tools/kill-cache
cp tools/benchmark /usr/local/rejik3/tools
chmod 755  /usr/local/rejik3/tools/benchmark
cp tools/IN.gz /usr/local/rejik3/tools
chmod 644 /usr/local/rejik3/tools/IN.gz
chown -R proxy:proxy /usr/local/rejik3
chmod 770 /usr/local/rejik3
chmod 644 /usr/local/rejik3/redirector.conf.dist
chmod 755 /usr/local/rejik3/redirector
chmod 755 /usr/local/rejik3/make-cache

</pre>

  • Необходимо переименовать и поправить файл:
#mv /usr/local/rejik3/redirector.conf.dist /usr/local/rejik3/redirector.conf

#vi /usr/local/rejik3/redirector.conf

< error_log /usr/local/rejik3/redirector.err
< change_log /usr/local/rejik3/redirector.log
---
> error_log /var/log/squid/redirector.err
> change_log /var/log/squid/redirector.log

  • Таким образом настроена система журнализации редиректора.
  • Теперь необходим список сайтов для органиченя доступа пользователей сети:
#wget http://rejik.ru/download/banlists-2.x.x.tgz
-18:03:11--  http://rejik.ru/download/banlists-2.x.x.tgz
           => `banlists-2.x.x.tgz'
Распознаётся rejik.ru... 84.252.152.241
Устанавливается соединение с rejik.ru|84.252.152.241|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: 116.100 (113K) [application/x-tar]
100%[====================================>] 116.100      146.11K/s
18:03:12 (145.75 KB/s) - `banlists-2.x.x.tgz' сохранён [116100/116100]
  • И распаковываем в /usr/local/rejik3/:
# tar xvzfC banlists-2.x.x.tgz /usr/local/rejik3/

banlists/
banlists/porno/
banlists/porno/urls
banlists/banners/
banlists/banners/urls
banlists/banners/pcre
banlists/js/
banlists/js/urls
banlists/mp3/
banlists/mp3/pcre

  • Теперь необходимо поставить, если он еще не установлен в системе, веб-сервер apache:
# apt-get install apache

Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
Будут установлены следующие дополнительные пакеты:
  apache-common mime-support
Предлагаемые пакеты:
  apache-doc apache-ssl apache-perl
НОВЫЕ пакеты, которые будут установлены:
  apache apache-common mime-support
обновлено 0, установлено 3 новых пакетов, для удаления отмечено 0 пакетов, и 53 пакетов не обновлено.
Необходимо скачать 1270kБ архивов.
...
Настраивается пакет mime-support (3.37-1) ...
Настраивается пакет apache-common (1.3.34-4) ...
Настраивается пакет apache (1.3.34-4) ...
WARNING: local host name (;; connection timed out; no servers could be reached) is not qualified; see cf/README: WHO AM I?
/etc/mail/aliases: 5 aliases, longest 10 bytes, 79 bytes total
Creating config file /etc/apache/httpd.conf with new version
Creating config file /etc/apache/srm.conf with new version
Creating config file /etc/apache/access.conf with new version
Creating config file /etc/apache/modules.conf with new version
Starting apache 1.3 web server....

  • Проверяем:
# netstat -lnp | grep :80

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     6247/apache
  • И устанавливаем сами странички, которые будут нервировать пользователей:
# wget http://rejik.ru/download/www.tgz
--18:04:54--  http://rejik.ru/download/www.tgz
           => `www.tgz'
Распознаётся rejik.ru... 84.252.152.241
Устанавливается соединение с rejik.ru|84.252.152.241|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: 824 [application/x-tar]
100%[====================================>] 824           --.--K/s
18:04:54 (90.81 KB/s) - `www.tgz' сохранён [824/824]
  • Распаковываем в /var/www/:
# tar xvzfC www.tgz /var/www/

www/
www/1x1.gif
www/js.js
www/mp3.html
www/porno.html

Согласно /usr/local/rejik3/redirector.conf:

# mv /var/www/www /var/www/ban

Для корректного отображения символов страничек замены в /etc/apache/httpd.conf

# vi /etc/apache/httpd.conf

838c838,839
< AddDefaultCharset on
---
> AddDefaultCharset off
  • И далее:
# apachectl restart
  • Прописываем в squid наш redirector:
# vi /etc/squid/squid.conf

1519a1520,1522
> url_rewrite_program /usr/local/rejik3/redirector /usr/local/rejik3/redirector.conf
  • Проверяем:
# ls -l /usr/local/rejik3/

итого 100
drwxr-xr-x 6 nobody nogroup  4096 2006-10-12 21:40 banlists
-rwxr-xr-x 1 proxy  proxy   39108 2006-10-12 18:01 make-cache
-rwxr-xr-x 1 proxy  proxy   43897 2006-10-12 18:01 redirector
-rw-r--r-- 1 nobody nogroup  3046 2006-10-12 18:09 redirector.conf
-rw-r--r-- 1 proxy  proxy    3052 2006-10-12 18:01 redirector.conf.dist
drwxr-sr-x 2 proxy  proxy    4096 2006-10-12 18:01 tools
  • Такого быть не должно:
# chown -R proxy:proxy /usr/local/rejik3/
  • И
# ls -l /usr/local/rejik3/

итого 100
drwxr-xr-x 6 proxy proxy  4096 2006-10-12 21:40 banlists
-rwxr-xr-x 1 proxy proxy 39108 2006-10-12 18:01 make-cache
-rwxr-xr-x 1 proxy proxy 43897 2006-10-12 18:01 redirector
-rw-r--r-- 1 proxy proxy  3046 2006-10-12 18:09 redirector.conf
-rw-r--r-- 1 proxy proxy  3052 2006-10-12 18:01 redirector.conf.dist
drwxr-sr-x 2 proxy proxy  4096 2006-10-12 18:01 tools

  • Проверим доступность страничек замены запрещенных веб-сайтов:
#. /usr/local/rejik3/tools/check-redirector 
http://127.0.0.1/ban/porno.html 127.0.0.1/- - GET
  • Теперь не будем запускать squid демоном, а привяжем его к терминалу для отладки:
# squid -d 1 -N

2006/10/12 21:43:57| Starting Squid Cache version 2.6.STABLE3 for i386-debian-linux-gnu...
2006/10/12 21:43:57| Process ID 7486
2006/10/12 21:43:57| With 1024 file descriptors available
2006/10/12 21:43:57| Using epoll for the IO loop
2006/10/12 21:43:57| Performing DNS Tests...
2006/10/12 21:43:57| Successful DNS name lookup tests...
2006/10/12 21:43:57| DNS Socket created at 0.0.0.0, port 32799, FD 5
2006/10/12 21:43:57| Adding domain chubba.net from /etc/resolv.conf
2006/10/12 21:43:57| Adding nameserver 192.168.16.100 from /etc/resolv.conf
2006/10/12 21:43:57| helperOpenServers: Starting 5 'redirector' processes
...
  • Проверяем броузером...
  • Все работает
  • Ctrl+C
2006/10/12 21:44:21| Preparing for shutdown after 3 requests
2006/10/12 21:44:21| Waiting 0 seconds for active connections to finish
2006/10/12 21:44:21| FD 21 Closing HTTP connection
2006/10/12 21:44:22| Shutting down...
2006/10/12 21:44:22| FD 22 Closing ICP connection
2006/10/12 21:44:22| Closing unlinkd pipe on FD 20
2006/10/12 21:44:22| storeDirWriteCleanLogs: Starting...
2006/10/12 21:44:22|   Finished.  Wrote 67 entries.
2006/10/12 21:44:22|   Took 0.0 seconds (376404.5 entries/sec).
2006/10/12 21:44:22| Squid Cache (Version 2.6.STABLE3): Exiting normally.
Проверка работы редиректора
  • И только потом:
#/etc/init.d/squid start
  • Может возникнуть необходимость в добавлении новвых сайтов, обнаруженных Вами вручную в базу данных rejik`a:
#echo mp3.ru  >> /usr/local/rejik3/banlists/mp3/urls
  • Проверка --> см. рис. Проверка работы редиректора


[править] Выбор языка текста сообщений прокси-сервера
  • Для того, чтобы странички ошибок и сообщений прокси-сервера были на русском языке, то можно исправить значение по умолчанию:
# vi /etc/squid/squid.conf

64a65,66
> 
> error_directory /usr/share/squid/errors/Russian-koi8-r


[править] Ограничение скорости скачивания определенного трафика
  • Во-первых - необходимо описать файлы, скорость скачивания которых будет ограничиваться:
acl our url_regex \.iso$ \.avi$ \.mp3$
  • Для организации задержек используются пулы задержек, количество которых определяестя количеством типов файлов.
  • Создание пула --> Запись в /etc/squid/squid.conf:
delay_pools 1
delay_class 1 2
delay_parameters 1 -1/-1 8000/4000
  • В результате был создан пул 1, класса 2 с ограничением каждого пользователя скоростью 4000 байт/сек, причем первые 8000байт cкачиваются на полной скорости
  • И теперь в /etc/squid/squid.conf:
delay_access 1 allow our
delay_access 1 deny all
  • Теперь:
# squid -k reconfigure
  • И проверяем


[править] Организация иерархии запросов и кэширования
  • Для организации иерархии запросов и кэширования исмпользуется директива chache_peer:
cache_peer 10.0.1.1 parent   8080  3130  default login=foo:password no-query
  • То есть порт 8080 родительского прокси-сервера будет доступен через интерфейс 127.0.0.1 порта 3130 локального хоста с именем пользователа foo и password - это пароль. Опция no_query отключает ICP-запросы к родительскому кэшу, опция default сообщает о том,что сервер должен использоваться по умолчанию.
[править] Примерный файл конфигурации прокси-сервера squid

http_port 3128
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log none
hosts_file /etc/hosts
url_rewrite_program /usr/local/rejik3/redirector /usr/local/rejik3/redirector.conf
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563      # https, snews
acl SSL_ports port 873          # rsync
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443 563     # https, snews
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl Safe_ports port 631         # cups
acl Safe_ports port 873         # rsync
acl Safe_ports port 901         # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#acl nomailru url_regex -i ^http://mail.ru
#http_access deny nomailru
#acl no_google_search dstdomain .google.com
#http_access deny no_google_search
acl our_networks src 192.168.16.0/24
acl my_acl proxy_auth REQUIRED
http_access allow our_networks my_acl
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
coredump_dir /var/spool/squid
error_directory /usr/share/squid/errors/Russian-koi8-r

[править] Clamav

Черновик

sudo apt-get install clamav clamav-daemon
dpkg -l | egrep 'libcurl3|apache'

ii  apache                            1.3.34-4.1                           versatile, high-performance HTTP server
ii  apache-common                     1.3.34-4.1                           support files for all Apache webservers
ii  apache2-utils                     2.2.3-4                              utility programs for webservers
ii  libcurl3                          7.15.5-1                             Multi-protocol file transfer library
ii  libcurl3-dev                      7.15.5-1                             Transitional package to libcurl3-openssl-dev
ii  libcurl3-gnutls                   7.15.5-1                             Multi-protocol file transfer library
ii  libcurl3-openssl-dev              7.15.5-1                             Development files and documentation for libc


wget http://www.samse.fr/GPL/squidclamav/squidclamav-3.0.tar.gz
sudo tar xvzfC /old/install/squidclamav-3.0.tar.gz /usr/src

Password:
squidclamav/
squidclamav/squidclamav.c
squidclamav/squidclamav.h
squidclamav/clwarn.cgi.de_DE
squidclamav/clwarn.cgi.en_EN
squidclamav/clwarn.cgi.fr_FR
squidclamav/clwarn.cgi.pt_BR
squidclamav/depcomp
squidclamav/.deps/
squidclamav/.deps/lists.Po
squidclamav/.deps/config.Po
squidclamav/.deps/squidclamav.Po
squidclamav/.deps/main.Po
squidclamav/.deps/log.Po
squidclamav/Makefile.orig
squidclamav/aclocal.m4
squidclamav/config.status
squidclamav/log.c
squidclamav/log.h
squidclamav/README
squidclamav/configure
squidclamav/lists.c
squidclamav/lists.h
squidclamav/configure.in
squidclamav/config.guess
squidclamav/install-sh
squidclamav/config.sub
squidclamav/missing
squidclamav/squidclamav.conf.dist
squidclamav/mkinstalldirs
squidclamav/config.c
squidclamav/config.h
squidclamav/Makefile.am
squidclamav/Makefile.in
squidclamav/main.c
squidclamav/config.h.in
squidclamav/clwarn.cgi
squidclamav/paths.h
squidclamav/INSTALL
squidclamav/ChangeLog
squidclamav/COPYING
sudo ./configure

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for a BSD-compatible install... /usr/bin/install -c
checking for main in -lcurl... yes
checking how to run the C preprocessor... gcc -E
checking for egrep... grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/timeb.h usability... yes
checking sys/timeb.h presence... yes
checking for sys/timeb.h... yes
checking for unistd.h... (cached) yes
checking for size_t... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for function prototypes... yes
checking whether setvbuf arguments are reversed... no
checking return type of signal handlers... void
checking for ftime... yes
checking for gethostbyname... yes
checking for memset... yes
checking for regcomp... yes
checking for socket... yes
checking for strdup... yes
checking for strspn... yes
checking for strstr... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
sudo make 

make  all-am
make[1]: Entering directory `/usr/src/squidclamav'
if gcc -DHAVE_CONFIG_H -I. -I. -I.     -g -O2 -MT config.o -MD -MP -MF ".deps/config.Tpo" -c -o config.o config.c; \
        then mv -f ".deps/config.Tpo" ".deps/config.Po"; else rm -f ".deps/config.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I.     -g -O2 -MT lists.o -MD -MP -MF ".deps/lists.Tpo" -c -o lists.o lists.c; \
        then mv -f ".deps/lists.Tpo" ".deps/lists.Po"; else rm -f ".deps/lists.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I.     -g -O2 -MT log.o -MD -MP -MF ".deps/log.Tpo" -c -o log.o log.c; \
        then mv -f ".deps/log.Tpo" ".deps/log.Po"; else rm -f ".deps/log.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I.     -g -O2 -MT main.o -MD -MP -MF ".deps/main.Tpo" -c -o main.o main.c; \
        then mv -f ".deps/main.Tpo" ".deps/main.Po"; else rm -f ".deps/main.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I.     -g -O2 -MT squidclamav.o -MD -MP -MF ".deps/squidclamav.Tpo" -c -o squidclamav.o squidclamav.c; \
        then mv -f ".deps/squidclamav.Tpo" ".deps/squidclamav.Po"; else rm -f ".deps/squidclamav.Tpo"; exit 1; fi
gcc  -g -O2   -o squidclamav  config.o lists.o log.o main.o squidclamav.o  -lcurl 
make[1]: Leaving directory `/usr/src/squidclamav'
echo $?
0
sudo make install

make[1]: Entering directory `/usr/src/squidclamav'
test -z "/usr/local/bin" || mkdir -p -- "/usr/local/bin"
  /usr/bin/install -c 'squidclamav' '/usr/local/bin/squidclamav'
make[1]: Цель `install-data-am' не требует выполнения команд.
make[1]: Leaving directory `/usr/src/squidclamav'
sudo cp /usr/src/squidclamav/squidclamav.conf.dist /etc/squidclamav.conf
sudo touch /var/log/squid/squidclamav.log 

sudo chown proxy:proxy /var/log/squid/squidclamav.log

sudo cp /usr/src/squidclamav/clwarn.cgi /usr/lib/cgi-bin/
sudo egrep -v '#|^\ *$' /etc/squid/squid.conf

http_port 3128 
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
hosts_file /etc/hosts
redirect_program /usr/local/bin/squidclamav
redirect_children 15
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny to_localhost
http_access allow localhost
acl myacl proxy_auth REQUIRED
acl our_networks src 192.168.0.0/16 10.0.0.0/16
http_access allow our_networks
acl our_networks2 src 192.168.17.22
http_access allow our_networks2 myacl
redirector_access deny localhost
http_access deny all
http_reply_access allow all
icp_access allow all
cache_mgr clint@net.nt
cache_effective_group proxy
httpd_accel_no_pmtu_disc on
error_directory /usr/share/squid/errors/Russian-koi8-r
coredump_dir /var/spool/squid
sudo egrep -v '#|^\ *$' /etc/clamav/clamd.conf 

TCPSocket 65000
TCPAddr 10.0.17.1
FixStaleSocket true
User clamav
AllowSupplementaryGroups true
ScanMail true
ScanArchive true
ArchiveMaxRecursion 5
ArchiveMaxFiles 1000
ArchiveMaxFileSize 10M
ArchiveMaxCompressionRatio 250
ArchiveLimitMemoryUsage false
ArchiveBlockEncrypted false
MaxDirectoryRecursion 15
FollowDirectorySymlinks false
FollowFileSymlinks false
ReadTimeout 180
MaxThreads 12
MaxConnectionQueueLength 15
StreamMaxLength 10M
LogSyslog false
LogFacility LOG_LOCAL6
LogClean false
LogVerbose false
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /var/lib/clamav
TemporaryDirectory /tmp
SelfCheck 3600
Foreground false
Debug true
ScanPE true
ScanOLE2 true
ScanHTML true
DetectBrokenExecutables false
MailFollowURLs false
ArchiveBlockMax false
ExitOnOOM false
LeaveTemporaryFiles false
AlgorithmicDetection true
ScanELF true
NodalCoreAcceleration false
IdleTimeout 30
MailMaxRecursion 64
PhishingSignatures true
LogFile /var/log/clamav/clamav.log
LogTime true
LogFileUnlock false
LogFileMaxSize 0
sudo egrep -v '#|^\ *$' /etc/squidclamav.conf

logfile /var/log/squid/squidclamav.log
redirect http://10.0.17.1/cgi-bin/clwarn.cgi
debug 1
force 1
stat 1
clamd_ip 10.0.17.1
clamd_port 65000
timeout 60
regexi ^.*\.txt$
regexi ^.*\.com$
regexi ^.*\.zip$
export http_proxy=http\://10.0.17.1\:3128

echo $http_proxy 
http://10.0.17.1:3128
lynx http://www.eicar.org/download/eicar.com

SquidClamAv 3.0 : Virus detection
     __________________________________________________________________________________________________________________________________

   The requested URL http://www.eicar.org/download/eicar.com
   contains the virus : Eicar-Test-Signature

   This URL can not be dowloaded.

   Origin: 10.0.17.1 / -
     __________________________________________________________________________________________________________________________________

   Powered by SquidClamAv 3.0.



Команды: стрелки - перемещение, '?' - помощь, 'q' - выход, '<-' - назад.
Стрелки: Вверх, Вниз - перемещение. Вправо - переход по ссылке; Влево - возврат.
 H)elp O)ptions P)rint G)o M)Глав экран Q)uit /=поиск [delete]=список истории 


sudo tail -f /var/log/clamav/clamav.log

Thu Jun 14 19:22:23 2007 -> +++ Started at Thu Jun 14 19:22:23 2007
Thu Jun 14 19:22:23 2007 -> clamd daemon 0.90.1 (OS: linux-gnu, ARCH: i386, CPU: i486)
Thu Jun 14 19:22:23 2007 -> Log file size limit disabled.
Thu Jun 14 19:22:23 2007 -> Reading databases from /var/lib/clamav
Thu Jun 14 19:23:13 2007 -> Loaded 125655 signatures.
Thu Jun 14 19:23:13 2007 -> Bound to address 10.0.17.1 on tcp port 65000
Thu Jun 14 19:23:13 2007 -> Setting connection queue length to 15
Thu Jun 14 19:23:13 2007 -> Archive: Archived file size limit set to 10485760 bytes.
Thu Jun 14 19:23:13 2007 -> Archive: Recursion level limit set to 5.
Thu Jun 14 19:23:13 2007 -> Archive: Files limit set to 1000.
Thu Jun 14 19:23:13 2007 -> Archive: Compression ratio limit set to 250.
Thu Jun 14 19:23:13 2007 -> Archive support enabled.
Thu Jun 14 19:23:13 2007 -> Algorithmic detection enabled.
Thu Jun 14 19:23:13 2007 -> Portable Executable support enabled.
Thu Jun 14 19:23:13 2007 -> ELF support enabled.
Thu Jun 14 19:23:13 2007 -> Mail files support enabled.
Thu Jun 14 19:23:13 2007 -> Mail: Recursion level limit set to 64.
Thu Jun 14 19:23:13 2007 -> OLE2 support enabled.
Thu Jun 14 19:23:13 2007 -> PDF support disabled.
Thu Jun 14 19:23:13 2007 -> HTML support enabled.
Thu Jun 14 19:23:13 2007 -> Self checking every 3600 seconds.
Thu Jun 14 19:25:50 2007 -> stream 1278: Eicar-Test-Signature FOUND
Проверка работы редиректора
sudo tail -f /var/log/squid/squidclamav.log

Thu Jun 14 19:22:33 2007 [11748] LOG SquidClamav (PID 11748) started
Thu Jun 14 19:22:33 2007 [11751] LOG SquidClamav (PID 11751) started
Thu Jun 14 19:22:33 2007 [11752] LOG SquidClamav (PID 11752) started
Thu Jun 14 19:22:33 2007 [11753] LOG SquidClamav (PID 11753) started
Thu Jun 14 19:22:33 2007 [11754] LOG SquidClamav (PID 11754) started
Thu Jun 14 19:22:33 2007 [11749] LOG SquidClamav (PID 11749) started
Thu Jun 14 19:22:33 2007 [11756] LOG SquidClamav (PID 11756) started
Thu Jun 14 19:22:33 2007 [11757] LOG SquidClamav (PID 11757) started
Thu Jun 14 19:22:33 2007 [11758] LOG SquidClamav (PID 11758) started
Thu Jun 14 19:22:33 2007 [11755] LOG SquidClamav (PID 11755) started
Thu Jun 14 19:22:33 2007 [11759] LOG SquidClamav (PID 11759) started
Thu Jun 14 19:22:33 2007 [11763] LOG SquidClamav (PID 11763) started
Thu Jun 14 19:22:33 2007 [11764] LOG SquidClamav (PID 11764) started
Thu Jun 14 19:22:33 2007 [11765] LOG SquidClamav (PID 11765) started
Thu Jun 14 19:22:34 2007 [11760] LOG SquidClamav (PID 11760) started
Thu Jun 14 19:25:49 2007 [11748] DEBUG Request:http://www.eicar.org/download/eicar.com 10.0.17.1/- - GET
Thu Jun 14 19:25:49 2007 [11748] DEBUG regex matched: http://www.eicar.org/download/eicar.com
Thu Jun 14 19:25:49 2007 [11748] DEBUG Getting header for url http://www.eicar.org/download/eicar.com
Thu Jun 14 19:25:50 2007 [11748] DEBUG File size is 68.00
Thu Jun 14 19:25:50 2007 [11748] DEBUG Sending STREAM to clamd.
Thu Jun 14 19:25:50 2007 [11748] DEBUG Received port 1278 from clamd.
Thu Jun 14 19:25:50 2007 [11748] DEBUG Trying to connect to clamd [port: 1278].
Thu Jun 14 19:25:50 2007 [11748] DEBUG Scanning data received against clamd stream
Thu Jun 14 19:25:50 2007 [11748] DEBUG Sending data to clamd
Thu Jun 14 19:25:50 2007 [11748] DEBUG Write 68 bytes on 68 to socket
Thu Jun 14 19:25:50 2007 [11748] DEBUG Connection to clamd on port: 1278 closed.
Thu Jun 14 19:25:50 2007 [11748] DEBUG Reading clamd scan result.
Thu Jun 14 19:25:50 2007 [11748] DEBUG received from Clamd: stream: Eicar-Test-Signature FOUND
Thu Jun 14 19:25:50 2007 [11748] LOG Redirecting URL to: http://10.0.17.1/cgi-bin/clwarn.cgi?url=http://www.eicar.org/download/eicar.com&source=10.0.17.1/-&user=-&virus=stream: Eicar-Test-Signature FOUND

Thu Jun 14 19:25:50 2007 [11748] DEBUG End reading clamd scan result.
Thu Jun 14 19:25:50 2007 [11748] STAT Virus Scanning process time   0.108 second(s)
Thu Jun 14 19:25:50 2007 [11748] DEBUG Virus found send redirection to Squid.
Thu Jun 14 19:25:50 2007 [11748] STAT Total process time   0.226 second(s)
sudo apt-get install clamav-testfiles

Чтение списков пакетов... Готово
Построение дерева зависимостей... Готово
НОВЫЕ пакеты, которые будут установлены:
  clamav-testfiles
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 2 пакетов не обновлено.
Необходимо скачать 157kБ архивов.
После распаковки объем занятого дискового пространства возрастёт на 242kB.
Получено:1 http://debian.org.ua etch/main clamav-testfiles 0.90.1-2 [157kB]
Получено 157kB за 1s (144kB/c)           
Выбор ранее не выбранного пакета clamav-testfiles.
(Чтение базы данных... на данный момент установлено 183726 файлов и каталогов.)
Распаковывается пакет clamav-testfiles (из файла .../clamav-testfiles_0.90.1-2_all.deb)...
Настраивается пакет clamav-testfiles (0.90.1-2) ...
dpkg -L clamav-testfiles

/.
/usr
/usr/share
/usr/share/clamav-testfiles
/usr/share/clamav-testfiles/debugm.c
/usr/share/clamav-testfiles/clam.cab
/usr/share/clamav-testfiles/clam.exe
/usr/share/clamav-testfiles/clam.exe.bz2
/usr/share/clamav-testfiles/clam-v2.rar
/usr/share/clamav-testfiles/clam-v3.rar
/usr/share/clamav-testfiles/clam.zip
/usr/share/doc
/usr/share/doc/clamav-testfiles
/usr/share/doc/clamav-testfiles/AUTHORS
/usr/share/doc/clamav-testfiles/BUGS
/usr/share/doc/clamav-testfiles/FAQ
/usr/share/doc/clamav-testfiles/NEWS.Debian.gz
/usr/share/doc/clamav-testfiles/changelog.Debian.gz
/usr/share/doc/clamav-testfiles/copyright
/usr/share/doc/clamav-testfiles/changelog.gz
/usr/share/doc/clamav-testfiles/README.gz
/usr/share/doc/clamav-testfiles/README.Debian.gz
sudo cp /usr/share/clamav-testfiles/clam.zip /var/www/
lynx http://net.nt/clam.zip

SquidClamAv 3.0 : Virus detection
     __________________________________________________________________________________________________________________________________

   The requested URL http://net.nt/clam.zip
   contains the virus : ClamAV-Test-File

   This URL can not be dowloaded.

   Origin: 10.0.17.1 / -
     __________________________________________________________________________________________________________________________________

   Powered by SquidClamAv 3.0.


Команды: стрелки - перемещение, '?' - помощь, 'q' - выход, '<-' - назад.
Стрелки: Вверх, Вниз - перемещение. Вправо - переход по ссылке; Влево - возврат.
 H)elp O)ptions P)rint G)o M)Глав экран Q)uit /=поиск [delete]=список истории 

[править] Анализ логов прокси-сервера

  • tail -f /var/log/squid/access.log - просмотр в реальном времени процесс определения доступа к ресурсам сети Интернет
  • /var/log/squid/cache.log - логирование процесса кэширования
  • /var/log/squid/redirector.log - журнал работы редиректора
  • /var/log/squid/redirector.err - журнал ошибок редирекора

[править] Доплнительные источники

  • [1] - Squid (кеширующий прокси для http): установка, настройка и использование.
  • [2] - Как не получать рекламы через Internet
  • [3] - squid-faq-rus
  • [4] - Squid: Logfile Analysis

[править] MIMEDefang

Настройка yum

vi /etc/yum.repos.d/asplinux-updates.repo


[updates-released]
name=ASPLinux 11 - $basearch - Updates
# Moscow
#baseurl=http://download.asplinux.ru/$basearch/updates/11/
# Moscow2
#baseurl=http://download2.asplinux.ru/install/ftp/$basearch/updates/11/
# UA-IX only
#baseurl=ftp://ftp.asplinux.com.ua/pub/$basearch/updates/11/

#baseurl=http://download.asplinux.ru/$basearch/updates/11/
baseurl=ftp://ftp.asp-linux.com.ua/pub/$basearch/updates/11/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-asplinux

Далле обновим yum и поставим необходимые пакеты:

yum update yum
yum install clamav.i386
yum install clamav-milter
yum install spamassassin.i386
wget http://mimedefang.org/static/mimedefang-2.57.tar.gz
tar xvzfC ~user/Desktop/mimedefang-2.57.tar.gz /usr/src
cd /usr/src/mimedefang-2.57/redhat/
cp ~user/Desktop/mimedefang-2.57.tar.gz /usr/src/asplinux/SOURCES/mimedefang-2.57.tar.gz

rpmbuild mimedefang.spec
ошибка: Неудовлетворенные зависимости сборки:
        sendmail-devel > 8.12.0 нужен для mimedefang-2.57-1.i386
        perl-MIME-tools нужен для mimedefang-2.57-1.i386
        perl-IO-stringy нужен для mimedefang-2.57-1.i386
        perl-MailTools нужен для mimedefang-2.57-1.i386

yum install sendmail-devel.i386
yum install perl-MIME-tools.noarch
yum install perl-Archive-Zip.noarch
yum install perl-File-Scan.noarch

***
wget http://mailtools.anomy.net/dist/anomy-HTMLCleaner-1.26.tar.gz
tar xvzfC ~user/anomy-HTMLCleaner-1.26.tar.gz /usr/src
mv /usr/src/Anomy /usr/lib/perl5/5.8.6/
***
wget http://search.cpan.org/CPAN/authors/id/M/MH/MHARNISCH/Unix-Syslog-0.100.tar.gz
tar xvzfC ~user/Unix-Syslog-0.100.tar.gz /usr/src/
cd /usr/src/Unix-Syslog-0.100/
perl Makefile.PL
make test
make install
***
vim /usr/src/mimedefang-2.57/redhat/mimedefang.spec
> 129 %define with_antivirus 1
***
rpmbuild -bb mimedefang.spec 
****
rpm -Uhv --force /usr/src/asplinux/RPMS/i386/mimedefang*
ошибка: Неудовлетворенные зависимости:
        perl(Unix::Syslog) нужен для mimedefang-2.57-1.i386
[root@asp:redhat]# rpm -Uhv --nodeps /usr/src/asplinux/RPMS/i386/mimedefang*
Подготовка...     ########################################### [100%]
   1:mimedefang-debuginfo   ########################################### [ 33%]
   2:mimedefang             ########################################### [ 67%]

In order to complete the installation of mimedefang, you will need to add the 
following line to your sendmail mc file:

   INPUT_MAIL_FILTER(`mimedefang', `S=unix:/var/spool/MIMEDefang/mimedefang.sock, F=T, T=S:1m;R:1m;E:5m')

Use the sendmail-cf package to rebuild your /etc/mail/sendmail.cf file and 
restart your sendmail daemon.

   3:mimedefang-contrib     ########################################### [100%]


*******
vi /etc/mail/sendmail.mc
>112 dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
>166 INPUT_MAIL_FILTER(`mimedefang', `S=unix:/var/spool/MIMEDefang/mimedefang.sock, F=T, T=S:1m;R:1m;E:5m')
>167 define(`confINPUT_MAIL_FILTERS', `mimedefang')dnl
****



Что сделано!

[править] Анализ логов прокси-сервера

  • tail -f /var/log/squid/access.log - просмотр в реальном времени процесс определения доступа к ресурсам сети Интернет
  • /var/log/squid/cache.log - логирование процесса кэширования
  • /var/log/squid/redirector.log - журнал работы редиректора
  • /var/log/squid/redirector.err - журнал ошибок редирекора

[править] Доплнительные источники

  • [5] - Squid (кеширующий прокси для http): установка, настройка и использование.
  • [6] - Как не получать рекламы через Internet
  • [7] - squid-faq-rus

[править] MIMEDefang

Настройка yum

vi /etc/yum.repos.d/asplinux-updates.repo


[updates-released]
name=ASPLinux 11 - $basearch - Updates
# Moscow
#baseurl=http://download.asplinux.ru/$basearch/updates/11/
# Moscow2
#baseurl=http://download2.asplinux.ru/install/ftp/$basearch/updates/11/
# UA-IX only
#baseurl=ftp://ftp.asplinux.com.ua/pub/$basearch/updates/11/

#baseurl=http://download.asplinux.ru/$basearch/updates/11/
baseurl=ftp://ftp.asp-linux.com.ua/pub/$basearch/updates/11/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-asplinux

Далле обновим yum и поставим необходимые пакеты:

yum update yum
yum install clamav.i386
yum install clamav-milter
yum install spamassassin.i386
wget http://mimedefang.org/static/mimedefang-2.57.tar.gz
tar xvzfC ~user/Desktop/mimedefang-2.57.tar.gz /usr/src
cd /usr/src/mimedefang-2.57/redhat/
cp ~user/Desktop/mimedefang-2.57.tar.gz /usr/src/asplinux/SOURCES/mimedefang-2.57.tar.gz

rpmbuild mimedefang.spec
ошибка: Неудовлетворенные зависимости сборки:
        sendmail-devel > 8.12.0 нужен для mimedefang-2.57-1.i386
        perl-MIME-tools нужен для mimedefang-2.57-1.i386
        perl-IO-stringy нужен для mimedefang-2.57-1.i386
        perl-MailTools нужен для mimedefang-2.57-1.i386

yum install sendmail-devel.i386
yum install perl-MIME-tools.noarch
yum install perl-Archive-Zip.noarch
yum install perl-File-Scan.noarch

***
wget http://mailtools.anomy.net/dist/anomy-HTMLCleaner-1.26.tar.gz
tar xvzfC ~user/anomy-HTMLCleaner-1.26.tar.gz /usr/src
mv /usr/src/Anomy /usr/lib/perl5/5.8.6/
***
wget http://search.cpan.org/CPAN/authors/id/M/MH/MHARNISCH/Unix-Syslog-0.100.tar.gz
tar xvzfC ~user/Unix-Syslog-0.100.tar.gz /usr/src/
cd /usr/src/Unix-Syslog-0.100/
perl Makefile.PL
make test
make install
***
vim /usr/src/mimedefang-2.57/redhat/mimedefang.spec
> 129 %define with_antivirus 1
***
rpmbuild -bb mimedefang.spec 
****
rpm -Uhv --force /usr/src/asplinux/RPMS/i386/mimedefang*
ошибка: Неудовлетворенные зависимости:
        perl(Unix::Syslog) нужен для mimedefang-2.57-1.i386
[root@asp:redhat]# rpm -Uhv --nodeps /usr/src/asplinux/RPMS/i386/mimedefang*
Подготовка...     ########################################### [100%]
   1:mimedefang-debuginfo   ########################################### [ 33%]
   2:mimedefang             ########################################### [ 67%]

In order to complete the installation of mimedefang, you will need to add the 
following line to your sendmail mc file:

   INPUT_MAIL_FILTER(`mimedefang', `S=unix:/var/spool/MIMEDefang/mimedefang.sock, F=T, T=S:1m;R:1m;E:5m')

Use the sendmail-cf package to rebuild your /etc/mail/sendmail.cf file and 
restart your sendmail daemon.

   3:mimedefang-contrib     ########################################### [100%]


*******
vi /etc/mail/sendmail.mc
>112 dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
>166 INPUT_MAIL_FILTER(`mimedefang', `S=unix:/var/spool/MIMEDefang/mimedefang.sock, F=T, T=S:1m;R:1m;E:5m')
>167 define(`confINPUT_MAIL_FILTERS', `mimedefang')dnl
****



Что сделано!

[править] Временно(взможно) исправлено

В /usr/src/mimedefang-2.57/redhat/mimedefang.spec

%define dir_spool      /var/spool/MIMEDefang
%define dir_quarantine /var/spool/MD-Quarantine
%define dir_log        /var/log/mimedefang
%define user           defang
%define with_antivirus 0

[править] /etc/mail/mimedefang-filter

[root@asp:~]# cat /etc/mail/mimedefang-filter

[править] Описание....

114 sub filter_begin {
115     my($entity) = @_;
116     # ALWAYS drop messages with suspicious chars in headers
117     if ($SuspiciousCharsInHeaders) {
118         md_graphdefang_log('suspicious_chars');
119         action_quarantine_entire_message("Message quarantined because of         suspicious characters in headers");
120         # Do NOT allow message to reach recipient(s)
121         return action_discard();
122     }
123      md_copy_orig_msg_to_work_dir_as_mbox_file();
129      my($code, $category, $action) = message_contains_virus();
132      $FoundVirus = ($category eq "virus");
135      $FoundVirus = ($action eq "quarantine");
137     if ($FoundVirus) {
138         md_graphdefang_log('virus', $VirusName, $RelayAddr);
139         md_syslog('warning', "Discarding because of virus $VirusName");
140         return action_discard();
141     }
142 
143     if ($action eq "tempfail") {
144         action_tempfail("Problem running virus-scanner");
145         md_syslog('warning', "Problem running virus scanner: code=$code,         category=$category, action=$action");
146     }
147 }

[править] Описание

172 sub filter {
173     my($entity, $fname, $ext, $type) = @_;
174 
175     return if message_rejected(); # Avoid unnecessary work
176 
177     # Block message/partial parts
178     if (lc($type) eq "message/partial") {
179         md_graphdefang_log('message/partial');
180         action_bounce("MIME type message/partial not accepted here");
181         return action_discard();
182     }
183 
184     if (filter_bad_filename($entity)) {
185         md_graphdefang_log('bad_filename', $fname, $type);
186         action_quarantine($entity, "A known virus was discovered and del        eted. Virus-scanner messages follow:\n$VirusScannerMessages\n\n");
188     }
190     # eml is bad if it's not multipart
191     if (re_match($entity, '\.eml')) {
192         md_graphdefang_log('non_multipart');
193         action_quarantine($entity, "A known virus was discovered and del        eted. Virus-scanner messages follow:\n$VirusScannerMessages\n\n");
205     return action_accept();
206 }

[править] Описание

224 sub filter_multipart {
225     my($entity, $fname, $ext, $type) = @_;
226 
227     return if message_rejected(); # Avoid unnecessary work
228 
229     if (filter_bad_filename($entity)) {
230         md_graphdefang_log('bad_filename', $fname, $type);
231         action_notify_administrator("A MULTIPART attachment of type $typ        e, named $fname was dropped.\n");
232         action_quarantine($entity, "A known virus was discovered and del        eted. Virus-scanner messages follow:\n$VirusScannerMessages\n\n");
236     # eml is bad if it's not message/rfc822
237     if (re_match($entity, '\.eml') and ($type ne "message/rfc822")) {
238         md_graphdefang_log('non_rfc822',$fname);
239         action_quarantine($entity, "A known virus was discovered and del        eted. Virus-scanner messages follow:\n$VirusScannerMessages\n\n");
241 
242 }
244     # Block message/partial parts
245     if (lc($type) eq "message/partial") {
246         md_graphdefang_log('message/partial');
247         action_bounce("MIME type message/partial not accepted here");
248         return;
249     }
250 
251     return action_accept();
252 }

[править] Описание

266 sub defang_warning {
267     my($oldfname, $fname) = @_;
268     return
269         "An attachment named '$oldfname' was converted to '$fname'.\n" .
270         "To recover the file, right-click on the attachment and Save As\        n" .
271         "'$oldfname'\n";
272 }

[править] Описание

276 sub filter_end {
277     my($entity) = @_;
288     return if message_rejected();
291     if ($Features{"SpamAssassin"}) {
292         if (-s "./INPUTMSG" < 100*1024) {
296             my($hits, $req, $names, $report) = spam_assassin_check();
297             my($score);
298             if ($hits < 40) {
299                 $score = "*" x int($hits);
300             } else {
301                 $score = "*" x 40;
302             }
309             if ($hits >= $req) {
310                 action_change_header("X-Spam-Score", "$hits ($score) $na     mes");
311                 md_graphdefang_log('spam', $hits, $RelayAddr);
314                 action_add_part($entity, "text/plain", "-suggest",
315                                 "$report\n",
316                                 "SpamAssassinReport.txt", "inline");
317             } else {
318                 # Delete any existing X-Spam-Score header?
319                 action_delete_header("X-Spam-Score");
320             }
321         }
322     }
332     md_graphdefang_log('mail_in');
344 }
347 1;


[править] /etc/sysconfig/mimedefang

[root@asp:~]# egrep -v '#|^ *$' /etc/sysconfig/mimedefang
SPOOLDIR=/var/spool/MIMEDefang
SOCKET=$SPOOLDIR/mimedefang.sock
LOG_FILTER_TIME=yes
MX_USER=defang
MX_LOG=yes
LOOPBACK_RESERVED_CONNECTIONS=-1
MX_SOCKET=$SPOOLDIR/mimedefang-multiplexor.sock
MX_MINIMUM=2
ALLOW_NEW_CONNECTIONS_TO_QUEUE=yes
MX_MAXIMUM=10
MX_BUSY=600
SUBFILTER=/etc/mail/mimedefang-filter

[править] /etc/clamd.conf

[root@asp:~]# egrep -v '#|^ *$' /etc/clamd.conf
LogFile /var/log/clamav/clamd.log
LogFileMaxSize 1M
LogTime
LogSyslog
LogVerbose
PidFile /var/run/clamav/clamd.pid
TemporaryDirectory /tmp
DatabaseDirectory /var/lib/clamav
LocalSocket /var/spool/MIMEDefang/clamd.sock
FixStaleSocket
MaxConnectionQueueLength 30
MaxThreads 50
ReadTimeout 300
VirusEvent /usr/local/bin/send_sms 380676666666@2sms.kiyvstar.net "VIRUS ALERT: %v"
User defang
AllowSupplementaryGroups
Debug
LeaveTemporaryFiles
ScanPE
DetectBrokenExecutables
ScanOLE2
ScanMail
MailFollowURLs
ScanHTML
ScanArchive
ArchiveMaxFileSize 10M
ArchiveMaxRecursion 9
ArchiveMaxFiles 1500
ArchiveMaxCompressionRatio 250
ArchiveLimitMemoryUsage
ArchiveBlockEncrypted
ArchiveBlockMax

Перезапускаем:


[root@asp:~]# /etc/init.d/clamd restart
Stopping Clam AV daemon:                                   [ СБОЙ ]
Starting Clam AV daemon: LibClamAV debug: Setting /tmp as global temporary direc
tory
LibClamAV debug: Loading databases from /var/lib/clamav
LibClamAV debug: Loading /var/lib/clamav/daily.cvd
LibClamAV debug: in cli_cvdload()
LibClamAV debug: MD5(.tar.gz) = 2667d3188bb524ca5cb7f0c5fd165be8
LibClamAV debug: Decoded signature: 2667d3188bb524ca5cb7f0c5fd165be8
LibClamAV debug: Digital signature is correct.
LibClamAV debug: in cli_untgz()
LibClamAV debug: Unpacking /tmp/clamav-09d49669922f6331/COPYING
LibClamAV debug: Unpacking /tmp/clamav-09d49669922f6331/daily.db
LibClamAV debug: Unpacking /tmp/clamav-09d49669922f6331/daily.hdb
LibClamAV debug: Unpacking /tmp/clamav-09d49669922f6331/daily.ndb
LibClamAV debug: Unpacking /tmp/clamav-09d49669922f6331/daily.zmd
LibClamAV debug: Unpacking /tmp/clamav-09d49669922f6331/daily.fp
LibClamAV debug: Unpacking /tmp/clamav-09d49669922f6331/daily.info
LibClamAV debug: Loading databases from /tmp/clamav-09d49669922f6331
LibClamAV debug: Loading /tmp/clamav-09d49669922f6331/daily.db
LibClamAV debug: Initializing main node
LibClamAV debug: Initializing trie
LibClamAV debug: Initializing BM tables
LibClamAV debug: in cli_bm_init()
LibClamAV debug: BM: Number of indexes = 63744
LibClamAV debug: Loading /tmp/clamav-09d49669922f6331/daily.hdb
LibClamAV debug: Initializing md5 list structure
LibClamAV debug: Loading /tmp/clamav-09d49669922f6331/daily.ndb
LibClamAV debug: Loading /tmp/clamav-09d49669922f6331/daily.zmd
LibClamAV debug: Loading /tmp/clamav-09d49669922f6331/daily.fp
LibClamAV debug: Loading /var/lib/clamav/main.cvd
LibClamAV debug: in cli_cvdload()
LibClamAV debug: MD5(.tar.gz) = c6c0e5c39b28fdbc7f2e23ce1c5166fc
LibClamAV debug: Decoded signature: c6c0e5c39b28fdbc7f2e23ce1c5166fc
LibClamAV debug: Digital signature is correct.
LibClamAV debug: in cli_untgz()
LibClamAV debug: Unpacking /tmp/clamav-8774734a52b5bbee/COPYING
LibClamAV debug: Unpacking /tmp/clamav-8774734a52b5bbee/main.db
LibClamAV debug: Unpacking /tmp/clamav-8774734a52b5bbee/main.hdb
LibClamAV debug: Unpacking /tmp/clamav-8774734a52b5bbee/main.ndb
LibClamAV debug: Unpacking /tmp/clamav-8774734a52b5bbee/main.zmd
LibClamAV debug: Unpacking /tmp/clamav-8774734a52b5bbee/main.fp
LibClamAV debug: Unpacking /tmp/clamav-8774734a52b5bbee/main.info
LibClamAV debug: Loading databases from /tmp/clamav-8774734a52b5bbee
LibClamAV debug: Loading /tmp/clamav-8774734a52b5bbee/main.db
LibClamAV debug: Loading /tmp/clamav-8774734a52b5bbee/main.hdb
LibClamAV debug: Loading /tmp/clamav-8774734a52b5bbee/main.ndb
LibClamAV debug: Loading /tmp/clamav-8774734a52b5bbee/main.zmd
LibClamAV debug: Loading /tmp/clamav-8774734a52b5bbee/main.fp
                                                           [  ОК  ]

[править] /etc/mail/sendmail.mc


[root@asp:~]# egrep -v '^dnl|^ *$' /etc/mail/sendmail.mc
divert(-1)dnl
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for ASPLinux')dnl
OSTYPE(`linux')dnl
INPUT_MAIL_FILTER(`mimedefang', `S=unix:/var/spool/MIMEDefang/mimedefang.sock, F
=T, T=S:1m;R:1m;E:5m')
define(`confDEF_USER_ID',``8:12'')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confDONT_PROBE_INTERFACES',true)dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
define(`confTO_IDENT', `0')dnl
FEATURE(`no_default_msa',`dnl')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
EXPOSED_USER(`root')dnl
DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
FEATURE(`accept_unresolvable_domains')dnl
LOCAL_DOMAIN(`localhost.localdomain')dnl
MASQUERADE_DOMAIN(ukr.net)dnl
MAILER(smtp)dnl
MAILER(procmail)dnl


[править] Куда все попадает: /var/spool/MD-Quarantine/

[root@asp:~]# tree /var/spool/MD-Quarantine/
/var/spool/MD-Quarantine/
|-- qdir-2006-10-30-18.11.04-001
|   |-- HEADERS
|   |-- MSG.1
|   |-- PART.1.BODY
|   |-- PART.1.HEADERS
|   |-- RECIPIENTS
|   |-- SENDER
|   `-- SENDMAIL-QID
|-- qdir-2006-10-30-18.11.57-001
|   |-- HEADERS
|   |-- MSG.1
|   |-- PART.1.BODY
|   |-- PART.1.HEADERS
|   |-- RECIPIENTS
|   |-- SENDER
|   `-- SENDMAIL-QID
`-- qdir-2006-10-30-18.15.56-001
    |-- HEADERS
    |-- MSG.1
    |-- PART.1.BODY
    |-- PART.1.HEADERS
    |-- RECIPIENTS
    |-- SENDER
    `-- SENDMAIL-QID

3 directories, 21 files

[править] Просмотр прикрепленных файлов, попавших в карантин:

[root@asp:~]# cat /var/spool/MD-Quarantine/qdir-2006-10-30-18.15.56-001/PART.1.HEADERS 
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="Thunderbird Setup 1.5.0.4.exe"
Content-Transfer-Encoding: base64

и

[root@asp:~]# file /var/spool/MD-Quarantine/qdir-2006-10-30-18.15.56-001/PART.1.BODY 
/var/spool/MD-Quarantine/qdir-2006-10-30-18.15.56-001/PART.1.BODY: PE executable for MS Windows (GUI) Intel 80386 32-bit, UPX compressed

[править] Логи:

less /var/log/maillog

Oct 30 18:15:54 asp sendmail[10055]: k9UGFr4G010055: from=root, size=8558821, class=0, nrcpts=1, msgid=<20061030161552.GA10051@
asp.linux.nt>, relay=root@localhost
Oct 30 18:15:55 asp sendmail[10056]: k9UGFslK010056: from=<root@asp.linux.nt>, size=8558967