Итак начнем. Предполагается что у Вас уже установлен и настроен сам Clamav.

Конфигурация clamd.conf

#Путь к логам
LogFile /var/log/clamav/clamd.log
#Максимальный размер лога
LogFileMaxSize 20M
LogTime yes
LogSyslog no
LogVerbose yes
ExtendedDetectionInfo yes
PidFile /var/run/clamav/clamd.pid
TemporaryDirectory /var/tmp
DatabaseDirectory /var/db/clamav
#Порт
TCPSocket 3310
#Адрес localhost
TCPAddr 127.0.0.1
#Путь к сокету
LocalSocket /var/run/clamav/clamd.sock
FixStaleSocket yes
MaxConnectionQueueLength 30
MaxThreads 20
ReadTimeout 120
CommandReadTimeout 5
SendBufTimeout 200
#Юзер от которого работает клам
User clamav
AllowSupplementaryGroups yes
AlgorithmicDetection yes
#Сканировать Pe-исполняемые файлы(венда)
ScanPE yes
#Сканировать Elf-исполняемые файлы(никсы)
ScanELF yes
DetectBrokenExecutables yes
#Сканировать Ole-формат(мелкософт офис)
ScanOLE2 yes
OLE2BlockMacros no
#Сканировать Pdf-чики
ScanPDF yes
#Сканировать Html-ки
ScanHTML yes
#Сканировать архивы
ScanArchive yes
MaxScanSize 50M
MaxFileSize 25M
MaxRecursion 10
MaxFiles 10000

Конфигурация freshclam.conf

DatabaseDirectory /var/db/clamav
#Путь к логам
UpdateLogFile /var/log/clamav/freshclam.log
#Максимальный размер лога
LogFileMaxSize 2M
LogTime yes
PidFile /var/run/clamav/freshclam.pid
DatabaseOwner clamav
AllowSupplementaryGroups yes
#Зеркало обновлений
DatabaseMirror database.clamav.net
ScriptedUpdates yes
CompressLocalDatabase no
Checks 24
NotifyClamd /usr/local/etc/clamd.conf

Теперь собираем proftpd

evil[~]make -C /usr/ports/ftp/proftpd config

я обираю с такими опциями:

WITH_BAN=true
WITH_CLAMAV=true
WITH_CTRLS=true
WITHOUT_EXEC=true
WITHOUT_HTMLDOCS=true
WITH_IFSESSION=true
WITHOUT_IPV6=true
WITHOUT_LDAP=true
WITHOUT_LDAP_TLS=true
WITH_MYSQL=true
WITH_NLS=true
WITHOUT_ODBC=true
WITH_OPENSSL=true
WITHOUT_PGSQL=true
WITH_QUOTA=true
WITHOUT_QUOTATAB_RADIUS=true
WITHOUT_SHAPER=true
WITHOUT_SQLITE=true
WITHOUT_RADIUS=true
WITHOUT_RATIO=true
WITH_README=true
WITH_REWRITE=true
WITHOUT_TLS_SHMCACHE=true
WITHOUT_TDS=true
WITHOUT_SFTP=true
WITHOUT_SFTP_SQL=true
WITHOUT_SFTP_PAM=true
WITHOUT_SITE_MISC=true
WITHOUT_SQL_PASSWD=true
WITHOUT_UNIQUE=true
WITHOUT_WRAP=true
WITHOUT_WRAP_FILE=true
WITHOUT_WRAP_SQL=true
evil[~]make -C /usr/ports/ftp/proftpd make install clean

Конфигурация proftpd.conf

ServerName                      "Super Ftp Server ;-)"
ServerType                      standalone
DefaultServer                   on
ScoreboardFile          /var/run/proftpd/proftpd.scoreboard
Port                            21
Umask                           022
MaxInstances                    30
CommandBufferSize       512
#Пользователь и группа от которых работает демон
User                            nobody
Group                           www
#Не требовать валидный шелл
RequireValidShell off
#Для усиления безопасности запрещаем подключаться на сервер как root
RootLogin off
#Запрещаем заливать файлы в имени которых первой идет точка
DenyFilter *.*/
# Против DDOS атаки
MaxInstances 8
#chroot-им всех пользователей в свои директории
DefaultRoot ~
#Перезапись существующих файлов
AllowOverwrite          on
#Разрешаем докачивать файлы
AllowStoreRestart on
#Подключаем антивирус
 
    ClamAV on
    ClamServer 127.0.0.1
    ClamPort 3310
    #Сокет не работает если пользователи в chroot-е
    ClamLocalSocket /var/run/clamav/clamd.sock
 
#Ограничения по времени
TimeoutIdle 180
TimeoutLogin 120
TimeoutNoTransfer 360
TimeoutStalled 640
 
SQLAuthTypes            Plaintext
SQLAuthenticate         users
#Подключения к серверу баз данных имя_пользователя@хост_сервера:порт имя_базы пароль_к_базе
SQLConnectInfo          ftp@localhost:3306 ftp ftppass
SQLUserInfo             `users_table` `username` `password` `uid` `gid` 
                        `homedir` `shell`
SQLLogFile      /var/log/proftpd.log
SQLLog          PASS            counter_login
SQLNamedQuery   counter_login   UPDATE "`last_login`=UNIX_TIMESTAMP(), 
                                `login_count`=`login_count`+1 WHERE 
                                `username`='%u'" `users_table`
SQLLog          ERR_PASS        counter_err
SQLNamedQuery   counter_err     UPDATE "`last_err_login`=UNIX_TIMESTAMP(), 
                                `err_login_count`=`err_login_count`+1 WHERE 
                                `username`='%U'" `users_table`
SQLLog          RETR,STOR               log_story_transfer
SQLNamedQuery   log_story_transfer      INSERT "'',
                                        UNIX_TIMESTAMP(),'%u',
                                        '%f', '%b', '%h', 
                                        '%a', '%m', '%T'" 
                                         `xfer_table`
SQLLOG          ERR_RETR,ERR_STOR,ERR_DELE,ERR_RMD,ERR_RNTO
                                         log_err_modify
SQLNamedQuery   log_err_modify          INSERT "'',
                                         UNIX_TIMESTAMP(),
                                         '%u', '%f', '%h', 
                                         '%a', '%m'" `xfer_errors`
Последнее изменение:
Опубликовано: