proFTPd. Встановлення та налаштування ftp-сервера.

proFTPd logo
proFTPd потужний і в той же час досить простий в налаштуванні ftp-сервер для unix-систем. Крок за кроком розглянемо його встановлення та початкове налаштування в операційній системі Ubuntu. При збиранні образ котрий збирається повинен за розрядністю співпадати з системою на якій проводиться збирання. Отже за порядком:

  • Встановлюємо сам сервер:
sudo apt-get install proftpd
  • Додаємо у файл /etc/shells запис /bin/false

  • Створюємо домашню теку та теки для завантаження та вивантаження файлів та корегуємо права доступу до них:

sudo mkdir -p /home/ftp/download /home/ftp/upload
sudo chmod 755 /home/ftp
sudo chmod 755 /home/ftp/download
sudo chmod 777 /home/ftp/upload
  • Створюємо нового користувача з іменем ftp_user та домашньою текою /home/ftp. Для більшої безпеки вкажемо що даний користувач не матиме жодної командної оболонки, для цього використаємо значення додане до файлу /etc/shells в пункті 2 та задаємо пароль для користувача ftp_user:
sudo useradd ftp_user -p your_password -d /home/ftp -s /bin/false
sudo passwd ftp_user
  • Відкриваємо в текстовому редакторі файл конфігурації самого сервера:
sudo nano /etc/proftpd/proftpd.conf

Надалі поле для творчості досить широке. Розглянемо у найпростішому вигляді два можливих варіанти - анонімний доступ та доступ з авторизацією через введення пароля.

  • Варіант анонімного доступу:
ServerName          "proFTPd Server"
ServerType          standalone
DefaultServer       on
Port                21
Umask               022	022
MaxInstances        30
TimeoutLogin        120
TimeoutIdle         600
TimeoutNoTransfer   900
TimeoutStalled      3600
User                ftp
Group               nogroup
UseReverseDNS       off
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"

ServerIdent on "You're at proFTPd server"

            <Limit LOGIN>
                Order allow,deny
                Allow from all
                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>

            <Anonymous /home/ftp>
                User                        ftp
                Group                       nogroup
                UserAlias                   anonymous ftp
                RequireValidShell           no
                MaxClients                  5

                <Limit CWD DIRS READ LIST>
                    AllowAll
                </Limit>

                <Limit WRITE>
                    DenyAll
                </Limit>

                <Directory /home/ftp/upload/*>
                    <Limit READ RETR GET WRITE STOR CWD MKD RMD DELE>
                        AllowAll
                    </Limit>
                    <Limit READ>
                        DenyAll
                    </Limit>
                </Directory>

                <Directory /home/ftp/download/*>
                    <Limit READ CWD RETR CWD>
                        AllowAll
                    </Limit>
                    <Limit WRITE>
                        DenyAll
                    </Limit>
                </Directory>

            </Anonymous>
  • Варіант авторизованого доступу:
ServerName          "proFTPd Server"
ServerType          standalone
DefaultServer       on
Port                21
Umask               022	022
MaxInstances        30
TimeoutLogin        120
TimeoutIdle         600
TimeoutNoTransfer   900
TimeoutStalled      3600
User		    nobody
Group               nogroup
#UseReverseDNS                   off
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"

AllowOverwrite		on
AuthAliasOnly		on
MaxLoginAttempts	5
DefaultRoot		~
ServerIdent on "You're at proFTPd server"
AllowStoreRestart	on
PersistentPasswd        off
MaxClients		8
MaxClientsPerHost	8
MaxClientsPerUser	8
MaxHostsPerUser		8
UseFtpUsers		off
ExtendedLog		/var/log/ftp.log
RequireValidShell	off
RootLogin		off
ShowSymlinks            off
DeferWelcome            on
MultilineRFC2228	on
DisplayLogin		welcome.msg
DisplayChdir		.message
ListOptions		"-l"


UserAlias ftp ftp_user

<Limit LOGIN>
AllowUser ftp_user
DenyALL
</Limit>

<Directory /home/ftp>
Umask 022 022
AllowOverwrite off
    <Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
    DenyAll
    </Limit>
</Directory>

<Directory /home/ftp/download/*>
Umask 022 022
AllowOverwrite off
    <Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>
    DenyAll
    </Limit>
</Directory>

<Directory /home/ftp/upload/*>
Umask 022 022
AllowOverwrite on
    <Limit READ RMD>
          DenyAll
        </Limit>

        <Limit STOR CWD MKD DELE>
          AllowAll
        </Limit>
</Directory>

Перевірити правильність файлу конфігурації після внесення до нього змін можна скориставшись командою

sudo proftpd -td5

Після цього необхідно перезапустити сервер скориставшись командою

sudo /etc/init.d/proftpd restart

Якщо виникає необхідність змонтувати в директорію доступу інші теки, потрібно скористатися командою

sudo mount --bind /яку/теку/змонтувати /home/download/куди/змонтувати