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"
Далее просто ждем пока антивирус не скачается, соберется и
инсталлируется, о чем на будет дополнительно сообщено на экране. Все
нормально ??? Тогда приступаем к его конфигурированию и запуску. Тут в
принципе наука то же не особенно большая. Смотрим в файл конфига и
внимательно читаем комментарии к опциям. Мне кажется что этого будет
достаточно для запуска службы:
Обратите внимание, я намеренно не стал запускать ClamAV на TCP порту,
т.к считаю что во многих случаях это упрощает работу, но если вам
необходимо проверять вирусы с удаленных машин или вам хочется
поморочиться с TCP, то конечно, какие могут быть вопросы, ваша система,
что хотите то с ней и делайте :) Но все же я бы дал маленькую
рекомендацию: Если вы уж и собрались запускать службу на TCP порту и
если не собираетесь предоставлять ее внешним пользователям, так хотя бы
запускайте ее на "локальной петле". Это будет на много безопасней.
Таааак, теперь нам необходимо ежедневно и по графику обновлять
антивирусные базы. Что же делать ? Но и тут разработчики ClamAV пошли
нам на встречу, создав демон FreshClam, который по заданному графику
будет обновлять вирусную информацию. Обычно он идет в комплекте с
антивирусом и собирается из исходных текстов вместе с ClamAV, а значит
нам всего лишь нужно подправить файл конфигурации.
Обратите внимание, я привожу в пример строки файла конфигурации без
комментариев. Это делается намеренно по двум причинам. Первая причина -
чтобы не раздувать наше маленькое повествование, ну и вторая причина -
это то что все строки в оригинальном файле freshclam.conf очень подробно
описаны (правда на английском (если вы на нем не читаете, то что вы
забыли в Linux ??? ))
Если видим эту картину, то все у нас замечательно и оба демона
запустились. Для того чтобы до конца убедиться что все работает смотрим
логи и видим там:
/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
Смотрим что там внутри, вспоминаем ключики которые мы записали на
бумажку в предыдущем абзаце и смотрим как правильно все это подключить.
Получилось вот что:
Вот такая длиннющая строка, остальное если мне не изменяет память должно
само срастись :) После завершения работы скрипта конфигурации как всегда
делаем 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>
<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>
Вот такой не сложный конфиг. Что еще можно добавить ??? Наверное больше
ничего, хотя да, нужно же запустить демон и проверить его
работоспособность !!!
Вооооо, теперь все запустилось !!! Модуль нашел ClamAV и даже подцепил
его базы !!!
Отлично, на этом я думаю можно закончить мое повествование. Буду рад
любым замечаниям и комментариям, которые сразу же будут включены в
статью.
С уважением.
Фомичев Алексей
Любая перепечатка и распространение статьи возможна только со ссылкой на
автора. Все комментарии и предложения желательно отправлять на
электронный адрес <axx@interwave.ru.>
653 Прочтений • [Создание FTP сервера на базе ProFTPd с проверкой на вирусы через ClamAV (ftp virus clamav)] [08.05.2012] [Комментариев: 0]