пятница, 31 декабря 2010 г.

Proftpd+ClamAV - установка и настройка в Debian/Ubuntu

Установка и настройка ftp сервера ProFTPd с антивирусной проверкой (ClamAV). Используемые дистрибутивы: Debian Lenny/Squeeze и Ubuntu 10.04. Для авторизации используется пара логин и пароль.
Начнем с установки ftp сервера
  1. aptitude install proftpd-basic
на вопрос отвечаем как standalone (при запуске proftpd через inetd вы получаете экономию памяти (выбираем его, если сервером будет пользоваться малое количество людей), при запуске как standalone мы получаем большую гибкость (к примеру виртуальные хосты))
Редактируем файл /etc/shells
  1. nano /etc/shells
добавляем (если ее нет, конечно) строчку /bin/false
Создаем каталоги для хранения и закачки файлов
  1. mkdir /home/ftp/public
  2. mkdir /home/ftp/upload

И выставляем им нужные права (папка /home/ftp была создана автоматически при установке proftpd, public — только чтение, upload — чтение и запись)
  1. chmod 755 /home/ftp
  2. chmod 755 /home/public
  3. chmod 777 /home/upload

Создаём группу (ftp2) и присваиваем данной группе конкретного пользователя (userftp)
  1. ftpasswd --group --name=ftp2 --gid=50 --member=userftp --file /etc/proftpd/ftpd.group

Создаем самого пользователя
  1. ftpasswd --passwd --name=userftp --home=/home/ftp --shell=/bin/false --uid=1003 --file /etc/proftpd/ftpd.passwd
придумываем ему пароль
Собственно мы можем создавать столько пользователей, сколько нужно, но если нам нужна гибкость работы, с большим количеством пользователей — смотрим в сторону ldap.

Приступим к установке ClamAV
  1. aptitude install clamav clamav-daemon

Запускаем dpkg-reconfigure и отвечаем на вопросы
  1. dpkg-reconfigure clamav-base
не стоит запускать ClamAV на TCP порту
если нет нужды проверять на вирусы удаленные машины

Для обновления антивирусной базы данных у нас автоматически (при установке clamav) установлена утилита clamav-freshclam
Для перезапуска ClamAV выполняем
  1. /etc/init.d/clamav-daemon restart
для диагностики смотрим логи /var/log/clamav
Настраиваем ftp сервер
  1. nano /etc/proftpd/proftpd.conf

AllowOverwrite on

RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
AuthGroupFile /etc/proftpd/ftpd.group

# Don't use IPv6 support by default.
UseIPv6 off

ServerName «ftp-server»
ServerType standalone
DeferWelcome on

# При возникновении у пользователей жалоб на длительную авторизацию
UseReverseDNS off
IdentLookups off

MultilineRFC2228 on
DefaultServer on
ShowSymlinks off

TimeoutNoTransfer 600
TimeoutStalled 100
TimeoutIdle 2200

DisplayChdir .message
ListOptions "-l"

TimeoutLogin 20

# Для усиления безопасности запрещаем подключаться на сервер как root

RootLogin off

# Создаём журналы
ExtendedLog /var/log/ftp.log
TransferLog /var/log/xferlog
SystemLog /var/log/syslog.log

#Еще одна, нужная для усиления безопасности, опция — запрещает заливать на сервер файлы начинающиеся с точки
DenyFilter \*.*/

#Используем файл /etc/ftpusers, в нём перечислены те пользователи, которым запрещено входить на сервер
UseFtpUsers on

#Разрешаем докачивать файлы
AllowStoreRestart on

# Задаём порт, на котором будет работать сервер, в большинстве случаев подойдет стандартный 21-ый порт
Port 21

# Против DDOS атаки
MaxInstances 8

# Сервер запускается и работает под этим пользователем и группой
User nobody
Group nogroup

Umask 022 022

MaxClients 8
MaxClientsPerHost 8
MaxClientsPerUser 8
MaxHostsPerUser 8

# Сообщение после успешного захода на сервер
AccessGrantMsg «Welcome to Server»

#Идентификатор сервера, показывается всем при заходе на сервер
ServerIdent on «Hello»

#Домашний каталог
DefaultRoot /home/ftp

#Запираем всех в домашнем каталоге, чтобы не могли просмотреть каталоги выше
DefaultRoot ~

MaxLoginAttempts 5
#VALID LOGINS
AllowUser user
DenyALL


Umask 022 022
AllowOverwrite on

# Включаем проверку антивирусом

ClamAV on

#Против DDOS атаки
MaxInstances 8

#Сервер запускается и работает под этим пользователем и группой
User nobody
Group nogroup

Umask 022 022

MaxClients 8
MaxClientsPerHost 8
MaxClientsPerUser 8
MaxHostsPerUser 8

# Сообщение после успешного захода на сервер
AccessGrantMsg «Welcome to Server»
#Идентификатор сервера, показывается всем при заходе на сервер
ServerIdent on «Hello»

Перезапускаем сервер
  1. /etc/init.d/proftpd start

Вот собственно и все.