🐹 CentOS 7: Установка и настройка ProFTPd.

Содержание:

1. Постановка задачи.
2. Описание программы.
3. Установка программы.
4. Logging — включаем ведение логов FTP-сервера.
5. Настройка ротации логов.
6. Оригиналы источников информации.


1. Постановка задачи.

Ситуация: Имеется у меня большая коллекция разных интересных программ для компьютера. Коллекция большая! Скидывать друзьям то одно, то другое мне надоело и решил я сделать единый репозиторий для всех друзей, но с личной парольной аутентификацией и контролем доступа каждого лично. Мало ли кто из них свой логин и пароль разбазарит по всему городу. Еще требуется, чтобы кто-нибудь кривыми лапками не вырезал безвозвратно файлы на свой компьютер или подкинуть на сервер чего лишнего.

Задача: Организовать FTP хранилище с виртуальными пользователями и парольной аутентификацией. Запретить изменение файлов в каталогах и запись новых, а скачивание не ограничивать ничем.

2. Описание программы

ProFTPD (Professional FTP Daemon) — FTP-сервер для Linux и UNIX-подобных операционных систем.

ProFTPD использует лишь один конфигурационный файл proftpd.conf, который располагается по умолчанию в CentOS 7 тут /etc/proftpd.conf. Сервер может быть настроен для работы нескольких виртуальных хостов, также поддерживает chroot.

3. Установка программы

Первым делом проверим имеется ли она уже на сервере?

# whereis proftpd

В ответ тишина… Значит не имеется… Будем ставить!

Для установки данной программы нам потребуется подключить репозиторий EPEL, файловый менеджер Midnight Commander, утилиты Net Tools :

# yum -y install epel-release

# yum -y install mc net-tools

Ставим сам пакет proftpd из репозитория:

# yum -y install proftpd proftpd-utils
# systemctl start proftpd
# systemctl enable proftpd

Проверим старт сервиса:

# systemctl status proftpd -l

Ответ:

Снова проверим очевидный факт наличия программы:

# whereis proftpd

Ответ:

Проверить на каком порту повисла ProFTPd можно командой:

# netstat -tan | grep LIST | grep 21

Ответ:

Создадим резервную копию файла конфигурации программы:

# cp /etc/proftpd.conf /etc/proftpd.conf.original

Открываем файл конфигурации/etc/proftpd.conf:

# mcedit /etc/proftpd.conf

Добавляем туда строки:

AuthUserFile /etc/ftpd.passwd
RequireValidShell off
AuthPAM off
RootLogin off
#UseFtpUsers on
PassivePorts 30000 35000

Проверяем или есть настройка закрыть пользователя в его домашней директории чтобы не мог видеть другие каталоги в системе:

DefaultRoot ~

Найти и закомментировать настройку AuthOrder в конфиге /etc/proftpd.conf.

Добавить в таком виде:

LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c

Таким образом мы отключили другие способы авторизации, оставили только через наш файл виртуальных пользователей.

На этом редактирование конфига и закончили, нужно создать файл /etc/ftpd.passwd:

# touch /etc/ftpd.passwd

Добавить пользователей.

# ftpasswd --passwd --name ftpuser --uid 1001 --home /home/user/project/somefolder/ --shell /bin/false --file /etc/ftpd.passwd

Нужно будет два раза ввести пароль пользователя, после чего все данные запишутся в файл /etc/ftpd.passwd.

Синтаксис:

  • --name ftpuser имя виртуального пользователя.
  • --uid 1001 указывается ID пользователя в системе под которым будет логиниться виртуальный созданный пользователь.
  • --home /home/user/project/somefolder/ указали папку, в которую пользователь будет иметь доступ и не сможет выйти выше благодаря настройке «DefaultRoot ~»

Ограничим права доступа на файл с пользователями:

# chgrp nobody /etc/ftpd.passwd
# chmod 640 /etc/ftpd.passwd

Если используется firewalld в системе, открываем нужные порты:

firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --add-port=30000-35000/tcp --permanent
firewall-cmd --reload

Если используется iptables в системе, открываем нужные порты:

# mcedit /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 30000:35000 -j ACCEPT

Перезапустим службу iptables:

# systemctl restart iptables

Перезапустим службу proftpd:

# systemctl restart proftpd

Минимальная настройка FTP-сервера proftpd готова c авторизацией через файл proftpd.conf и виртуальными пользователями.

4. Logging — включаем ведение логов FTP-сервера.

Очень полезно вести логирование захода пользователей на сервер. Если кто-то из них теряет свой пароль и пароль уходит в массы, но потом масса посторонних людей начинает ошиваться в файлохранилище. Таким образом можно отследить кто виновник такой ситуации.

Создаём сами файлы логов:

# touch /var/log/proftpd/proftpd.log
# touch /var/log/proftpd/xfer.log
# touch /var/log/proftpd/access.log
# touch /var/log/proftpd/auth.log

Редактируем файл конфигурации /etc/proftpd.conf.

В него добавляем строки:

# mcedit /etc/proftpd.conf

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»

SystemLog /var/log/proftpd/proftpd.log
TransferLog /var/log/proftpd/xfer.log
ExtendedLog /var/log/proftpd/access.log ALL
ExtendedLog /var/log/proftpd/auth.log AUTH auth

Уровень логгирования устанавливается опцией DebugLevel, уровни от 0 до 9, где 9 — наиболее подробное логирование:

DebugLevel 0

Перезапустим службу proftpd:

# systemctl restart proftpd

Через некоторое время можно смотреть кто, где и когда был в гостях на сервере:

# tail -f /var/log/proftpd/proftpd.log

Ответ:

или

# tail -f /var/log/proftpd/auth.log

Ответ:

5. Настройка ротации логов.

Последний штрих в настройке ftp-сервера — ротация логов!

Если этого не сделать, то через какое-то, обычно продолжительное, время возникает проблема в связи с огромным размером log-файла.

У нас уже будет файл конфигурации logrotate для proFTPd, который был создан во время установки — /etc/logrotate.d/proftpd.

Приведем его к следующему виду:

/var/log/proftpd/*.log /var/log/xferlog {
    create 0644 root root
    size=10M
    rotate 10
    compress
    missingok
    notifempty
    sharedscripts
    postrotate
        systemctl reload proftpd.service
    endscript
}

Я предлагаю ротировать файлы логов по достижению ими размера в 10 Мб, сжимать после ротации и хранить 10 архивов с логом.

6. Оригиналы источников информации.

  1. unixblog.org.ua «Установка proftpd на Centos 7, авторизация через AuthUserFile.»
  2. rtfm.co.ua «ProFTPD: logging — включаем ведение логов FTP-сервера.»
  3. forum.ubuntu.ru «Уровень логирования proftpd — запись переходов.»
  4. serveradmin.ru «Настройка web сервера nginx, php-fpm, php7 на CentOS 8» от 28.02.2020.

Читайте также: