The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Создание FTP сервера на базе ProFTPd с проверкой на вирусы через ClamAV (ftp virus clamav)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: ftp, virus, clamav,  (найти похожие документы)
From: Фомичев Алексей <axx@interwave.ru.> Newsgroups: email Date: Mon, 10 Feb 2006 14:31:37 +0000 (UTC) Subject: Создание FTP сервера на базе ProFTPd с проверкой на вирусы через ClamAV Настройка связки ClamAV и ProFTPd Введение В последнее время наблюдается бурный рост так называемых домашних сетей. Многие, (да что там многие) практически все провайдеры предоставляют службы для обмена файлами. Но среди общей массы пользователей встречаются такие, которые не останавливаются на достигнутом. Видите ли подавай им собственные ресурсы, рассчитанные на пользователей сети и обеспечивающей кучу дополнительных функций и удобств. Так на пример в домашних локальных сетях очень часто встречаются такие службы, как собственные почтовые, игровые, файловые и прочие сервера обычно работающие на старых (или не очень), выделенных специально для этого компьютерах с режимом работы по схеме 24х8, хотя не редко можно встретить и рабочие станции с аналогичными службами, но работающие с перерывами, так сказать когда владелец дома. Речь в этой маленькой заметке пойдет о FTP сервере ProFTPd его базовой настройке для предоставления анонимного доступа пользователей домашней сети и сетей имеющих пиринговые отношения с ней. Но мой рассказ был бы совсем не отличим от десятков подобных, если бы повествовал только об настройке ProFTPd. Большинство серверов работающих с этой замечательной службой имеют возможность как скачки так и закачки файлов и как возможность - получение в папку Upload какого-либо вредоносного программного кода. Но как известно демон ProFTPd является модульным и поддерживает интеграцию с широко известным, свободно распространяемом антивирусом ClamAV. К тому же, если на нашем предполагаемом сервере так же закрутить почту, то можно попутно проверять проходящий почтовый трафик на вирусы. Чтож, если вам нравиться эта идея, тогда поехали. Итак, цель данной статьи - показать небольшие хитрости в настройке связки FTP сервера ProFTPd и антивируса ClamAV для предоставления доступа пользователям домашних локальных сетей к FTP поднятому на домашнем сервере, c установленной на нем source-based операционной системе Gentoo Linux. Так же в этой заметке не будет описано никаких вариантов получения доступа кроме анонимного, т.к. в большинстве случаев этого достаточно. Единственное что будет ограничивать доступ к службе - IP адрес клиента. Это необходимо сделать, для того чтобы к нашему серверу не подключались люди из Интернета (в случае реального IP) и сетей с которыми не установлены пиринговые соглашения нашего провайдера (и как результат - платный трафик). Будем считать, что ваш сервер собран, настроен и на нем уже крутится Gentoo, но не установлен ни ClamAV, ни ProFTPd. Что ж, это вполне нормально, начнем мы собственно с установки и настройки антивируса. В Gentoo это достаточно просто и практически не требует огромного количества серого вещества: emerge - pv clamav Проверяем опции с которыми собирается ClamAV, смотрим все ли нас устраивает и если все нормально, то просто повторяем команду без ключей "-pv" Далее просто ждем пока антивирус не скачается, соберется и инсталлируется, о чем на будет дополнительно сообщено на экране. Все нормально ??? Тогда приступаем к его конфигурированию и запуску. Тут в принципе наука то же не особенно большая. Смотрим в файл конфига и внимательно читаем комментарии к опциям. Мне кажется что этого будет достаточно для запуска службы: /etc/clamd.conf LogFile /var/log/clamav/clamd.log LogTime LogVerbose PidFile /var/run/clamav/clamd.pid TemporaryDirectory /tmp DatabaseDirectory /var/lib/clamav LocalSocket /var/run/clamav/clamd FixStaleSocket MaxConnectionQueueLength 30 User clamav AllowSupplementaryGroups ScanArchive ArchiveMaxRecursion 2 ScanRAR ArchiveMaxFileSize 50M ArchiveMaxFiles 15000 Обратите внимание, я намеренно не стал запускать ClamAV на TCP порту, т.к считаю что во многих случаях это упрощает работу, но если вам необходимо проверять вирусы с удаленных машин или вам хочется поморочиться с TCP, то конечно, какие могут быть вопросы, ваша система, что хотите то с ней и делайте :) Но все же я бы дал маленькую рекомендацию: Если вы уж и собрались запускать службу на TCP порту и если не собираетесь предоставлять ее внешним пользователям, так хотя бы запускайте ее на "локальной петле". Это будет на много безопасней. Таааак, теперь нам необходимо ежедневно и по графику обновлять антивирусные базы. Что же делать ? Но и тут разработчики ClamAV пошли нам на встречу, создав демон FreshClam, который по заданному графику будет обновлять вирусную информацию. Обычно он идет в комплекте с антивирусом и собирается из исходных текстов вместе с ClamAV, а значит нам всего лишь нужно подправить файл конфигурации. /etc/freshclam.conf DatabaseDirectory /var/lib/clamav UpdateLogFile /var/log/clamav/freshclam.log PidFile /var/run/clamav/freshclam.pid DatabaseOwner clamav DatabaseMirror database.clamav.net Checks 24 Обратите внимание, я привожу в пример строки файла конфигурации без комментариев. Это делается намеренно по двум причинам. Первая причина - чтобы не раздувать наше маленькое повествование, ну и вторая причина - это то что все строки в оригинальном файле freshclam.conf очень подробно описаны (правда на английском (если вы на нем не читаете, то что вы забыли в Linux ??? )) Все, приступаем к запуску. /etc/init.d/clamd start * Caching service dependencies ... [OK] * Starting clamd ... [OK] * Starting freshclam ... [OK] Если видим эту картину, то все у нас замечательно и оба демона запустились. Для того чтобы до конца убедиться что все работает смотрим логи и видим там: /var/log/clamav Thu Feb 2 10:10:37 2006 -> +++ Started at Thu Feb 2 10:10:37 2006 Thu Feb 2 10:10:37 2006 -> clamd daemon 0.88 (OS: linux-gnu, ARCH: i386, CPU: i386) Thu Feb 2 10:10:37 2006 -> Log file size limited to 1048576 bytes. Thu Feb 2 10:10:37 2006 -> Verbose logging activated. Thu Feb 2 10:10:37 2006 -> Running as user clamav (UID 101, GID 408) Thu Feb 2 10:10:37 2006 -> Reading databases from /var/lib/clamav Thu Feb 2 10:10:44 2006 -> Protecting against 43895 viruses. Thu Feb 2 10:10:44 2006 -> Unix socket file /var/run/clamav/clamd Thu Feb 2 10:10:44 2006 -> Setting connection queue length to 30 Thu Feb 2 10:10:44 2006 -> Listening daemon: PID: 21378 Thu Feb 2 10:10:44 2006 -> Archive: Archived file size limit set to 52428800 bytes. Thu Feb 2 10:10:44 2006 -> Archive: Recursion level limit set to 8. Thu Feb 2 10:10:44 2006 -> Archive: Files limit set to 15000. Thu Feb 2 10:10:44 2006 -> Archive: Compression ratio limit set to 250. Thu Feb 2 10:10:44 2006 -> Archive support enabled. Thu Feb 2 10:10:44 2006 -> Archive: RAR support enabled. Thu Feb 2 10:10:44 2006 -> Portable Executable support enabled. Thu Feb 2 10:10:44 2006 -> Mail files support enabled. Thu Feb 2 10:10:44 2006 -> OLE2 support enabled. Thu Feb 2 10:10:44 2006 -> HTML support enabled. Thu Feb 2 10:10:44 2006 -> Self checking every 1800 seconds. Ну и как контрольный выстрел в голову: netstat -l Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 3419811 /var/run/clamav/clamd Ура, вроде все заработало !!! И конечно же добавляем все это в автозагрузку: rc-update add clamav default Теперь настала пора разбираться с ProFTPd. Тут нас ждут не совсем приятные сюрпризы. Дело в том что модуль, который проверяет файлы проходящие по FTP протоколу с/на нашу машину писался сторонними разработчиками и по этому добавление его в в систему вызовет некоторые проблемы. Что за проблемы спросите вы ??? Все очень просто, обычно для установки пакетов в Gentoo используется команда emerge, которая выполняет комплекс действий, таких как скачивание, проверка контрольных сумм, распаковка, сборка и прочие действия. В нашем же случае модуль не входит в пакет и следовательно не будет скомпилирован вместе с демоном. Простая добавка его в архив с дистрибутивом вызовет несовпадение контрольных сумм Не беда воскликнут люди привыкшие работать с FreeBSD, скачаем сырцы, соберем демон ручной работы, напишем стартовые скрипты сами и будем счастливы !!! Но это не наш метод. Все это конечно правильно и контролируемо, но я например считаю себя немного лентяем. Зачем делать руками, если за тебя может многое сделать система. И так самое интересное. В одной консоли собираем ProFTPd по умолчанию !!! emerge -pv proftpd Добавляем или убираем все необходимые параметры и записываем их на бумажку, т.к. потом они нам понадобятся. Среди них я бы на всякий случай включил +pam и +mysql, пущай будут, мало ли что нам понадобиться. Например аутентифицировать привилегированных пользователей или что-нибудь хранить в базе, статистику или еще чего. Открываем вторую консоль. Обратите внимание, началась ли сборка в первой консоле и если процесс прошел стадию скачивания, то во второй консоли идем в директорию /usr/portage/distfiles и находим там архив с сырцами ProFTPd. Копируем его во временно созданную папку, распаковываем и читаем инструкцию по установке. После этого идем на сайт демона, в раздел дополнительных модулей и ищем модуль mod_clamav. Либо сразу идем по ссылке: http://www.uglyboxindustries.com/mod_clamav.html и тянем его оттуда. По инструкции, для сборки с ProFTPd с какими-либо модулями они должны быть помещены в папку /contrib в директории куда распаковали архив дистрибутива. После чего можно приступить к конфигурированию и сборке. И так в папке с распакованным дистрибутивом....... ./configure --help > configure.hlp Смотрим что там внутри, вспоминаем ключики которые мы записали на бумажку в предыдущем абзаце и смотрим как правильно все это подключить. Получилось вот что: ./configure --with-modules=mod_ratio:mod_auth_pam:mod_tls:mod_readme:mod_wrap: \\ mod_sql: mod_sql_mysql:mod_clamav \ --with-includes=/usr/include/mysql --enable-ncurses Вот такая длиннющая строка, остальное если мне не изменяет память должно само срастись :) После завершения работы скрипта конфигурации как всегда делаем make. Далее сборка и по ее завершению мы получаем демон с вкомпилированным в него дополнительным модулем. Так, смотрим на первую консоль. Что видим ??? Ага, сборка по умолчанию закончилась, пакет установился и с виду все нормально. Отлично, теперь необходимо пойти в каталог с демоном, а это: /usr/sbin/proftpd и сделать его копию в какую-нибудь папку. Вернемся во вторую консоль и посмотрим, не закончился ли процесс сборки. Так, закончился, очень хорошо. Теперь нужно взять из папки собранный в ручную демон, который находится в корне каталога с распакованным дистрибутивом и заменить им демон собранный на автопилоте и на всякий случай нами забэкапленный. Отлично, теперь мы имеем демон работающий с нестандартным модулем, стартовые скрипты по умолчанию для данного демона, установленные по нужным папкам библиотеки и прочий хлам. Что еще осталось ??? Добавить ProFTPd в автозагрузку и исправить файл конфигурации. Первое: rc-update add proftpd default Второе. Тут все зависит от того что нам нужно, а нужен нам всего лишь анонимный вход и права на папки Download - только чтение и Upload - чтение и запись. Так же список разрешенных диапазонов IP адресов и сеток. В моем случае это выглядит примерно так: ServerName "My FTP Server" ServerType standalone DefaultServer on Port 21 Umask 022 MaxInstances 30 TimeoutLogin 120 TimeoutIdle 600 TimeoutNoTransfer 900 TimeoutStalled 3600 User ftp Group ftp UseReverseDNS off ScoreboardFile /var/run/proftpd/proftpd TransferLog /var/log/proftpd/xferlog.legacy LogFormat default "%h %l %u %t \"%r\" %s %b" LogFormat auth "%v [%P] %h %t \"%r\" %s" LogFormat write "%h %l %u %t \"%r\" %s %b" <Limit LOGIN> Order allow,deny Allow from xxx.xxx.xxx.xxx/xx # Пишим IP адреса кому можно подключаться. Deny from all </Limit> <Global> AllowOverwrite yes IdentLookups off ExtendedLog /var/log/proftpd/access.log WRITE,READ write ExtendedLog /var/log/proftpd/auth.log AUTH auth </Global> <IfModule mod_clamav.c> # Включаем проверку ClamAV on </IfModule> <Anonymous /usr/ftp> #Делаем анонимный вход корневая папка /usr/ftp User ftp Group ftp UserAlias anonymous ftp RequireValidShell no MaxClients 5 <Limit CWD DIRS READ LIST> AllowAll </Limit> <Limit WRITE> DenyAll </Limit> <Directory /usr/ftp/upload/*> #Папка Upload и права на нее <Limit READ RETR GET WRITE STOR CWD MKD RMD DELE> AllowAll </Limit> <Limit READ> DenyAll </Limit> </Directory> <Directory /usr/ftp/download/*> # Папка Download и права на нее <Limit READ CWD RETR CWD> AllowAll </Limit> <Limit WRITE> DenyAll </Limit> </Directory> </Anonymous> Вот такой не сложный конфиг. Что еще можно добавить ??? Наверное больше ничего, хотя да, нужно же запустить демон и проверить его работоспособность !!! /etc/init.d/proftpd start * Starting proftpd ... - mod_clamav/0.3: info: loaded 44059 virus patterns [OK] Вооооо, теперь все запустилось !!! Модуль нашел ClamAV и даже подцепил его базы !!! Отлично, на этом я думаю можно закончить мое повествование. Буду рад любым замечаниям и комментариям, которые сразу же будут включены в статью. С уважением. Фомичев Алексей Любая перепечатка и распространение статьи возможна только со ссылкой на автора. Все комментарии и предложения желательно отправлять на электронный адрес <axx@interwave.ru.>

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.3, StSphinx, 16:16, 10/02/2006 [ответить] [смотреть все]
  • +/
    На сколько живуче решение при интенсивном траффике и больших объемах закачек(например RAR архив объемом в 4 G)?
     
  • 1.4, Bregor, 19:21, 10/02/2006 [ответить] [смотреть все]
  • +/
    А man ebuild не судьба почитать?..
    И не морщить мозг с заменой оригинального демона самосборным, etc...
     
     
  • 2.8, ComP, 01:56, 12/02/2006 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    Есть способ проще..... скажи как...
     
  • 2.10, Den, 12:23, 13/02/2006 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    если ставить так как предлагает автор то после установки нескольких десятков пак... весь текст скрыт [показать] [показать ветку]
     
  • 1.5, Jura, 02:58, 11/02/2006 [ответить] [смотреть все]  
  • +/
    А Вы вирус загрузить или  скачать пробовали?
    Прекрасно дает и upload и download для файла на который, скажем, clamscan ругается.

    Кроме того, присутсвует mod_clamav/0.4, который умеет работать с clamd. Так вот она умеет только "Cant write to the ClamAVd socket" говорить.

     
     
  • 2.6, Jura, 03:01, 11/02/2006 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Забыл добавить Для mod_clamav 0 3 clamd не нужен, он с ним не работает Он рабо... весь текст скрыт [показать] [показать ветку]
     
  • 2.7, cadmi, 15:54, 11/02/2006 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    как выяснилось, некоторого количества серого вещества процесс установки все же... весь текст скрыт [показать] [показать ветку]
     
  • 1.9, max, 03:48, 12/02/2006 [ответить] [смотреть все]  
  • +/
    Надеюсь прочитав статью все вспомнят и про безопасность самого FTP сервера

    DenyFilter \*.*/
    DefaultRoot ~

     
  • 1.11, SeRj, 11:41, 05/03/2006 [ответить] [смотреть все]  
  • +/
    Кто нить знает как победить этот:
    mod_clamav/0.4,:error: Cant write to the ClamAVd socket:32"
     
     
  • 2.12, vadim, 14:06, 01/04/2006 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Есть такая проблема, сам искал решение И оно есть Читайте http www uglyboxin... весь текст скрыт [показать] [показать ветку]
     
  • 1.13, Slaker, 09:57, 26/05/2006 [ответить] [смотреть все]  
  • +/
    Проблема с "mod_clamav/0.4,:error: Cant write to the ClamAVd socket:32" решается довольно просто :)
    В clamd.conf
    ReadTimeout 300
     
  • 1.14, Юрий, 18:07, 31/08/2006 [ответить] [смотреть все]  
  • +/
    А можно ли фтп-папку расположить на диске с FAT32?
     
  • 1.15, PIV, 13:39, 14/09/2006 [ответить] [смотреть все]  
  • +/
    В mod_clamav/0.4 проблема с chroot+Far:
    копирую фаром файл test.com (вирус) копируется
    (если копировать с линукса, с помощью mc этот вирус ловится )

    в логах вот ето
    mod_clamav/0.4: error: "/home/ftp/incoming//incoming/test.com: lstat() failed. ERROR"

    /home/ftp - ето DefaultRoot
    файл находится /home/ftp/incoming/test.com


    поставил mod_clamav/0.3 данной проблемы нет

    ЗЫ: proftpd 1.3.0

     
  • 1.16, Аноним, 19:18, 30/11/2006 [ответить] [смотреть все]  
  • +/
    +1
    как лечить не нашел =(
     
     
  • 2.17, Necotyan, 16:35, 01/10/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Если в лоб - то так --- modules mod_clamav c orig Sat Sep 29 15 34 01 2007 ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.19, roman_ssh, 11:39, 27/11/2007 [^] [ответить] [смотреть все]  
  • +/
    респект то Necotyan, реально помогло, проверял на mod_clamav/0.5, работает 100%
     
  • 1.18, linuxing, 11:11, 23/11/2007 [ответить] [смотреть все]  
  • +/
    error: Cant write to the ClamAVd socket: 9
    fix:
    add clamav user to ftp group
    (the ftp group is used to run proftpd program)

    www.linuxfly.org

     
  • 1.20, dread, 17:54, 07/12/2007 [ответить] [смотреть все]  
  • +/
    Preparing to chroot to directory '/opt/ftp'
    mod_clamav/0.5: error: /opt/ftp/promice.zip: lstat() failed. ERROR

    А вот мне не помогло

     
     
  • 2.21, roman_ssh, 05:40, 10/12/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >Preparing to chroot to directory '/opt/ftp'
    >mod_clamav/0.5: error: /opt/ftp/promice.zip: lstat() failed. ERROR
    >
    >А вот мне не помогло

    1. Работает ли proftpd без mod_clamav?
    2. Проверьте права, от кого запускается proftpd, clamd.

    P.S.
    У меня подобная ошибка вылетает когда на папку (в вашем случае) /opt/ftp/ нет прав на запись.

     
     
  • 3.22, dread, 15:16, 11/12/2007 [^] [ответить] [смотреть все]  
  • +/
    >[оверквотинг удален]
    >>mod_clamav/0.5: error: /opt/ftp/promice.zip: lstat() failed. ERROR
    >>
    >>А вот мне не помогло
    >
    >1. Работает ли proftpd без mod_clamav?
    >2. Проверьте права, от кого запускается proftpd, clamd.
    >
    >P.S.
    >У меня подобная ошибка вылетает когда на папку (в вашем случае) /opt/ftp/
    >нет прав на запись.

    1 Работает
    2 proftpd работает от никого clamd от clamav

    Не у одного ни у другого нет прав туда писать ..

     
     
  • 4.23, roman_ssh, 06:45, 12/12/2007 [^] [ответить] [смотреть все]  
  • +/
    gt оверквотинг удален А у их групп есть права вот моё, работает root bsd ... весь текст скрыт [показать]
     
  • 1.25, filled0, 16:19, 08/02/2010 [ответить] [смотреть все]  
  • +/
    При попытке загрузить вирус поверх нормального файла, оригинальный файл затирается файлом нулевого размера или просто запрещает загрузку ?
     
     
  • 2.26, Абракодабра, 10:46, 25/02/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ну ты бы еще лет через десять спросил :)
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor